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 Thu Jun 21 18:44:48 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
118 case "$inksh/$needksh" in
125 case "$inksh/$avoidksh" in
131 case "$inksh/$needksh-$avoidksh-" in
134 (I see you are using the Korn shell. Some ksh's blow up on $me,
135 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
141 echo "(Feeding myself to $newsh $reason.)"
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
154 *bash*) CDPATH='.' ;;
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
476 d_old_pthread_create_joinable=''
477 old_pthread_create_joinable=''
564 d_stdio_ptr_lval_nochange_cnt=''
565 d_stdio_ptr_lval_sets_cnt=''
747 inc_version_list_init=''
766 ignore_versioned_solibs=''
825 d_perl_otherlibdirs=''
843 d_nv_preserves_uv_bits=''
942 d_stdio_stream_array=''
943 stdio_stream_array=''
953 ccflags_uselargefiles=''
954 ldflags_uselargefiles=''
955 libswanted_uselargefiles=''
1001 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1004 : We must find out about Eunice early
1006 if test -f /etc/unixtovms; then
1007 eunicefix=/etc/unixtovms
1009 if test -f /etc/unixtovms.exe; then
1010 eunicefix=/etc/unixtovms.exe
1017 : set useposix=false in your hint file to disable the POSIX extension.
1019 : set useopcode=false in your hint file to disable the Opcode extension.
1021 : Trailing extension. Override this in a hint file, if needed.
1023 : Extra object files, if any, needed on this platform.
1026 : Possible local include directories to search.
1027 : Set locincpth to "" in a hint file to defeat local include searches.
1028 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1029 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1031 : no include file wanted by default
1036 : change the next line if compiling for Xenix/286 on Xenix/386
1037 xlibpth='/usr/lib/386 /lib/386'
1038 : Possible local library directories to search.
1039 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1040 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1042 : general looking path for locating libraries
1043 glibpth="/lib /usr/lib $xlibpth"
1044 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1045 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1046 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1048 : Private path used by Configure to find libraries. Its value
1049 : is prepended to libpth. This variable takes care of special
1050 : machines, like the mips. Usually, it should be empty.
1053 : default library list
1055 : some systems want to use only the non-versioned libso:s
1056 ignore_versioned_solibs=''
1058 ccflags_uselargefiles=''
1059 ldflags_uselargefiles=''
1060 libswanted_uselargefiles=''
1061 : set usemultiplicity on the Configure command line to enable multiplicity.
1062 : set usesocks on the Configure command line to enable socks.
1063 : set usethreads on the Configure command line to enable threads.
1064 usereentrant='undef'
1065 : full support for void wanted by default
1068 : List of libraries we want.
1069 : If anyone needs -lnet, put it in a hint file.
1070 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1071 libswanted="$libswanted dld ld sun m c cposix posix"
1072 libswanted="$libswanted ndir dir crypt sec"
1073 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1074 : We probably want to search /usr/shlib before most other libraries.
1075 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1076 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1077 glibpth="/usr/shlib $glibpth"
1078 : Do not use vfork unless overridden by a hint file.
1081 : Find the basic shell for Bourne shell scripts
1085 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1088 if test -f "$xxx"; then
1091 : Build up a list and do a single loop so we can 'break' out.
1092 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1093 for xxx in sh bash ksh pdksh ash; do
1095 try="$try ${p}/${xxx}"
1099 if test -f "$xxx"; then
1102 elif test -f "$xxx.exe"; then
1113 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1115 Usually it's in /bin/sh. How did you even get this far?
1116 Please contact me (Perl Maintainers) at perlbug@perl.org and
1117 we'll try to straighten this all out.
1123 : see if sh knows # comments
1124 if `$sh -c '#' >/dev/null 2>&1`; then
1128 test -f $xcat || xcat=/usr/bin/cat
1129 echo "#!$xcat" >sharp
1133 if test -s today; then
1136 echo "#! $xcat" > sharp
1140 if test -s today; then
1148 echo "Your $sh doesn't grok # comments--I will strip them later on."
1151 echo "exec grep -v '^[ ]*#'" >spitshell
1153 $eunicefix spitshell
1154 spitshell=`pwd`/spitshell
1156 echo "I presume that if # doesn't work, #! won't work either!"
1161 : figure out how to guarantee sh startup
1163 '') startsh=${sharpbang}${sh} ;;
1175 : echo "Yup, it does."
1177 echo "Hmm... '$startsh' does not guarantee sh startup..."
1178 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1183 : Save command line options in file UU/cmdline.opt for later use in
1184 : generating config.sh.
1185 cat > cmdline.opt <<EOSH
1186 # Configure command line arguments.
1193 cat >>cmdline.opt <<EOSH
1194 config_arg$argn='$arg'
1196 argn=`expr $argn + 1`
1199 : produce awk script to parse command line options
1200 cat >options.awk <<'EOF'
1202 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1204 len = length(optstr);
1205 for (i = 1; i <= len; i++) {
1206 c = substr(optstr, i, 1);
1207 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1218 if (substr(str, 1, 1) != "-") {
1219 printf("'%s'\n", str);
1223 for (i = 2; i <= len; i++) {
1224 c = substr(str, i, 1);
1226 printf("-%s\n", substr(str, i));
1232 printf("'%s'\n", substr(str, i + 1));
1245 : process the command line options
1246 set X `for arg in "$@"; do echo "X$arg"; done |
1247 sed -e s/X// | awk -f options.awk`
1252 : set up default values
1262 rm -f optdef.sh posthint.sh
1263 cat >optdef.sh <<EOS
1269 while test $# -gt 0; do
1271 -d) shift; fastread=yes;;
1272 -e) shift; alldone=cont;;
1276 if test -r "$1"; then
1279 echo "$me: cannot read config file $1." >&2
1284 -h) shift; error=true;;
1285 -r) shift; reuseval=true;;
1286 -s) shift; silent=true; realsilent=true;;
1287 -E) shift; alldone=exit;;
1288 -K) shift; knowitall=true;;
1289 -O) shift; override=true;;
1290 -S) shift; silent=true; extractsh=true;;
1295 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1296 echo "$me: ignoring -D $1" >&2
1299 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1300 *) echo "$1='define'" >> optdef.sh;;
1307 *=) echo "$1" >> optdef.sh;;
1309 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1310 echo "$me: ignoring -U $1" >&2
1312 *) echo "$1='undef'" >> optdef.sh;;
1323 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1327 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1328 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1334 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1335 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1336 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1337 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1338 *) xxx=`echo $yyy|sed 's!:.*!!'`
1339 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1345 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1347 echo "$yyy=''" >> posthint.sh ;;
1352 echo "$yyy='$zzz'" >> posthint.sh ;;
1354 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1356 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1361 echo "$yyy=$zzz" >> posthint.sh ;;
1362 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1366 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1369 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1377 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1378 [-U symbol] [-U symbol=] [-A command:symbol...]
1379 -d : use defaults for all answers.
1380 -e : go on without questioning past the production of config.sh.
1381 -f : specify an alternate default configuration file.
1382 -h : print this help message and exit (with an error status).
1383 -r : reuse C symbols value if possible (skips costly nm extraction).
1384 -s : silent mode, only echoes questions and essential information.
1385 -D : define symbol to have some value:
1386 -D symbol symbol gets the value 'define'
1387 -D symbol=value symbol gets the value 'value'
1388 -E : stop at the end of questions, after having produced config.sh.
1389 -K : do not use unless you know what you are doing.
1390 -O : let -D and -U override definitions from loaded configuration file.
1391 -S : perform variable substitutions on all .SH files (can mix with -f)
1392 -U : undefine symbol:
1393 -U symbol symbol gets the value 'undef'
1394 -U symbol= symbol gets completely empty
1395 -A : manipulate symbol after the platform specific hints have been applied:
1396 -A symbol=value append " "value to symbol
1397 -A append:symbol=value append value to symbol
1398 -A define:symbol=value define symbol to have value
1399 -A clear:symbol define symbol to be ''
1400 -A define:symbol define symbol to be 'define'
1401 -A eval:symbol=value define symbol to be eval of value
1402 -A prepend:symbol=value prepend value to symbol
1403 -A undef:symbol define symbol to be 'undef'
1404 -A undef:symbol= define symbol to be ''
1405 -V : print version number and exit (with a zero status).
1412 case "$fastread$alldone" in
1415 case "$extractsh" in
1418 if test ! -t 0; then
1419 echo "Say 'sh Configure', not 'sh <Configure'"
1429 true) exec 1>/dev/null;;
1432 : run the defines and the undefines, if any, but leave the file out there...
1435 : create the posthint manipulation script and leave the file out there...
1440 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1441 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1442 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1443 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1444 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1447 : Some greps do not return status, grrr.
1448 echo "grimblepritz" >grimble
1449 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1451 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1457 : the following should work in any shell
1461 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1462 cat >contains <<'EOSS'
1463 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1468 : Find the path to the source tree
1471 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1475 *) src=`cd ../$src && pwd` ;;
1488 if test -f $rsrc/Configure && \
1489 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1491 : found it, so we are ok.
1494 for src in . .. ../.. ../../.. ../../../..; do
1495 if test -f ../$src/Configure && \
1496 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1507 Sorry, I can't seem to locate the source dir for $package. Please start
1508 Configure with an explicit path -- i.e. /some/path/Configure.
1516 echo "Sources for $package found in \"$src\"." >&4
1520 : script used to extract .SH files with variable substitutions
1521 cat >extract <<'EOS'
1523 echo "Doing variable substitutions on .SH files..."
1524 if test -f MANIFEST; then
1525 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1527 echo "(Looking for .SH files under the source directory.)"
1528 set x `(cd $src; find . -name "*.SH" -print)`
1532 0) set x `(cd $src; echo *.SH)`; shift;;
1534 if test ! -f $src/$1; then
1540 while test $name; do
1541 if test ! -d "$name"; then
1542 create="$name $create";
1543 name=`echo $name | sed -e "s|^[^/]*$||"`;
1544 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1549 for file in $create; do
1558 dir=`expr X$file : 'X\(.*\)/'`
1559 file=`expr X$file : 'X.*/\(.*\)'`
1560 (cd $dir && . ./$file)
1570 dir=`expr X$file : 'X\(.*\)/'`
1571 file=`expr X$file : 'X.*/\(.*\)'`
1572 (set x $dir; shift; eval $mkdir_p)
1582 if test -f $src/config_h.SH; then
1583 if test ! -f config.h; then
1584 : oops, they left it out of MANIFEST, probably, so do it anyway.
1590 : extract files and exit if asked to do so
1591 case "$extractsh" in
1593 case "$realsilent" in
1597 case "$config_sh" in
1598 '') config_sh='config.sh';;
1601 echo "Fetching answers from $config_sh..."
1604 test "$override" && . ./optdef.sh
1608 echo "Extraction done."
1613 : Eunice requires " " instead of "", can you believe it
1616 echo "Beginning of configuration questions for $package."
1618 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1620 : first determine how to suppress newline on echo command
1622 echo "Checking echo to see how to suppress newlines..."
1623 (echo "hi there\c" ; echo " ") >.echotmp
1624 if $contains c .echotmp >/dev/null 2>&1 ; then
1635 echo $n "The star should be here-->$c"
1639 : Now test for existence of everything in MANIFEST
1641 if test -f $rsrc/MANIFEST; then
1642 echo "First let's make sure your kit is complete. Checking..." >&4
1643 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1646 for filelist in x??; do
1647 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1649 if test -s missing; then
1653 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1655 You have the option of continuing the configuration process, despite the
1656 distinct possibility that your kit is damaged, by typing 'y'es. If you
1657 do, don't blame me if something goes wrong. I advise you to type 'n'o
1658 and contact the author (perlbug@perl.org).
1661 echo $n "Continue? [n] $c" >&4
1665 echo "Continuing..." >&4
1669 echo "ABORTING..." >&4
1674 echo "Looks good..."
1677 echo "There is no MANIFEST file. I hope your kit is complete !"
1682 : Find the appropriate value for a newline for tr
1683 if test -n "$DJGPP"; then
1686 if test X"$trnl" = X; then
1687 case "`echo foo|tr '\n' x 2>/dev/null`" in
1691 if test X"$trnl" = X; then
1692 case "`echo foo|tr '\012' x 2>/dev/null`" in
1693 foox) trnl='\012' ;;
1696 if test X"$trnl" = X; then
1699 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1705 : compute the number of columns on the terminal for proper question formatting
1710 : set up the echo used in my read
1711 myecho="case \"\$xxxm\" in
1712 '') echo $n \"\$rp $c\" >&4;;
1714 '') echo $n \"[\$xxxm] $c\";;
1716 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1718 echo $n \"[\$xxxm] $c\" >&4
1720 echo $n \"\$rp [\$xxxm] $c\" >&4
1726 : now set up to do reads with possible shell escape and default assignment
1732 case "\$fastread" in
1733 yes) case "\$dflt" in
1736 case "\$silent-\$rp" in
1741 *) case "\$silent" in
1742 true) case "\$rp" in
1747 while expr "X\$ans" : "X!" >/dev/null; do
1751 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1759 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1768 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1773 echo "(OK, I'll run with -d after this question.)" >&4
1776 echo "*** Sorry, \$1 not supported yet." >&4
1786 echo "*** Substitution done -- please confirm."
1788 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1793 echo "*** Error -- try again."
1800 case "\$ans\$xxxm\$nostick" in
1812 : create .config dir to save info across Configure sessions
1813 test -d ../.config || mkdir ../.config
1814 cat >../.config/README <<EOF
1815 This directory created by Configure to save information that should
1816 persist across sessions for $package.
1818 You may safely delete it if you wish.
1821 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1823 $define|true|[yY]*) ;;
1824 *) case "$xversion" in
1827 *** WHOA THERE!!! ***
1829 This is an UNSTABLE DEVELOPMENT release.
1830 The version of this $package distribution is $xversion, that is, odd,
1831 (as opposed to even) and that signifies a development release.
1832 If you want a maintenance release, you want an even-numbered version.
1834 Do ***NOT*** install this into production use.
1835 Data corruption and crashes are possible.
1837 It is most seriously suggested that you do not continue any further
1838 unless you want to help in developing and debugging Perl.
1840 If you *still* want to build perl, you can answer 'y' now,
1841 or pass -Dusedevel to Configure.
1844 rp='Do you really want to continue?'
1848 [yY]) echo >&4 "Okay, continuing."
1849 usedevel="$define" ;;
1850 *) echo >&4 "Okay, bye."
1860 case "$versiononly" in
1861 '') versiononly="$define" ;;
1863 case "$installusrbinperl" in
1864 '') installusrbinperl="$undef" ;;
1869 : general instructions
1872 user=`(logname) 2>/dev/null`
1874 '') user=`whoami 2>&1`;;
1876 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1879 rp='Would you like to see the instructions?'
1890 This installation shell script will examine your system and ask you questions
1891 to determine how the perl5 package should be installed. If you get
1892 stuck on a question, you may use a ! shell escape to start a subshell or
1893 execute a command. Many of the questions will have default answers in square
1894 brackets; typing carriage return will give you the default.
1896 On some of the questions which ask for file or directory names you are allowed
1897 to use the ~name construct to specify the login directory belonging to "name",
1898 even if you don't have a shell which knows about that. Questions where this is
1899 allowed will be marked "(~name ok)".
1903 dflt='Type carriage return to continue'
1907 The prompter used in this script allows you to use shell variables and
1908 backticks in your answers. You may use $1, $2, etc... to refer to the words
1909 in the default answer, as if the default line was a set of arguments given to a
1910 script shell. This means you may also use $* to repeat the whole default line,
1911 so you do not have to re-type everything to add something to the default.
1913 Everytime there is a substitution, you will have to confirm. If there is an
1914 error (e.g. an unmatched backtick), the default answer will remain unchanged
1915 and you will be prompted again.
1917 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1918 the questions and use the computed defaults (or the previous answers if there
1919 was already a config.sh file). Type 'Configure -h' for a list of options.
1920 You may also start interactively and then answer '& -d' at any prompt to turn
1921 on the non-interactive behaviour for the remainder of the execution.
1927 Much effort has been expended to ensure that this shell script will run on any
1928 Unix system. If despite that it blows up on yours, your best bet is to edit
1929 Configure and run it again. If you can't run Configure for some reason,
1930 you'll have to generate a config.sh file by hand. Whatever problems you
1931 have, let me (perlbug@perl.org) know how I blew it.
1933 This installation script affects things in two ways:
1935 1) it may do direct variable substitutions on some of the files included
1937 2) it builds a config.h file for inclusion in C programs. You may edit
1938 any of these files as the need arises after running this script.
1940 If you make a mistake on a question, there is no easy way to back up to it
1941 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1942 files. Configure will offer to let you do this before it runs the SH files.
1945 dflt='Type carriage return to continue'
1947 case "$firsttime" in
1948 true) echo $user >>../.config/instruct;;
1952 : find out where common programs are
1954 echo "Locating common programs..." >&4
1967 if test -d \$dir/\$thing; then
1973 for thisthing in \$dir/\$thing; do
1974 : just loop through to pick last item
1976 if test -f \$thisthing; then
1979 elif test -f \$dir/\$thing.exe; then
1980 if test -n "$DJGPP"; then
1981 echo \$dir/\$thing.exe
1983 : on Eunice apparently
2034 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2035 pth="$pth /lib /usr/lib"
2036 for file in $loclist; do
2040 if test -f "$xxx"; then
2043 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2044 xxx=`./loc $file $file $pth`
2047 '') xxx=`./loc $file $file $pth`;;
2048 *) xxx=`./loc $xxx $xxx $pth`;;
2054 echo $file is in $xxx.
2057 echo $file is in $xxx.
2060 echo "I don't know where '$file' is, and my life depends on it." >&4
2061 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2067 echo "Don't worry if any of the following aren't found..."
2069 for file in $trylist; do
2073 if test -f "$xxx"; then
2076 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2077 xxx=`./loc $file $file $pth`
2080 '') xxx=`./loc $file $file $pth`;;
2081 *) xxx=`./loc $xxx $xxx $pth`;;
2087 echo $file is in $xxx.
2090 echo $file is in $xxx.
2093 echo "I don't see $file out there, $say."
2100 echo "Substituting grep for egrep."
2106 echo "Substituting cp for ln."
2112 echo "Hopefully test is built into your sh."
2115 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2116 echo "Using the test built into your sh."
2124 echo "Hopefully echo is built into your sh."
2129 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2130 $echo $n "hi there$c" >foo1
2131 echo $n "hi there$c" >foo2
2132 if cmp foo1 foo2 >/dev/null 2>&1; then
2133 echo "They are compatible. In fact, they may be identical."
2140 They are not compatible! You are probably running ksh on a non-USG system.
2141 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2142 have echo built in and we may have to run some Bourne shell scripts. That
2143 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2146 $echo $n "The star should be here-->$c"
2156 cat <<'EOSC' >>checkcc
2161 int main(int argc, char *argv[]) {
2165 if $cc -o try $ccflags $ldflags try.c; then
2168 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2174 case "`$cc -v -c try.c 2>&1`" in
2177 if $test X"$trygcc" = Xyes; then
2178 if gcc -o try -c try.c; then
2180 echo "You seem to have a working gcc, though." >&4
2181 rp="Would you like to use it?"
2183 if $test -f myread; then
2186 if $test -f UU/myread; then
2189 echo "Cannot find myread, sorry. Aborting." >&2
2194 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2198 if $test X"$despair" = Xyes; then
2200 You need to find a working C compiler.
2201 Either (purchase and) install the C compiler supplied by your OS vendor,
2202 or for a free C compiler try http://gcc.gnu.org/
2203 I cannot continue any further, aborting.
2213 : determine whether symbolic links are supported
2216 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2217 echo "Symbolic links are supported." >&4
2220 echo "Symbolic links are NOT supported." >&4
2225 : determine whether symbolic links are supported
2229 echo "Checking how to test for symbolic links..." >&4
2231 if $test "X$issymlink" = X; then
2232 sh -c "PATH= test -h sym" >/dev/null 2>&1
2233 if test $? = 0; then
2237 if $test "X$issymlink" = X; then
2238 if $test -h >/dev/null 2>&1; then
2239 issymlink="$test -h"
2240 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2243 if $test "X$issymlink" = X; then
2244 if $test -L sym 2>/dev/null; then
2245 issymlink="$test -L"
2248 if $test "X$issymlink" != X; then
2249 echo "You can test for symbolic links with '$issymlink'." >&4
2251 echo "I do not know how you can test for symbolic links." >&4
2255 *) echo "No symbolic links, so not testing for their testing..." >&4
2261 case "$mksymlinks" in
2264 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2267 *) case "$lns:$issymlink" in
2268 *"ln -s:"*"test -"?)
2269 echo "Creating the symbolic links..." >&4
2270 echo "(First creating the subdirectories...)" >&4
2272 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2274 test -z "$directory" && break
2278 if test ! -d t/base; then
2279 echo "Failed to create the subdirectories. Aborting." >&4
2282 echo "(Then creating the symlinks...)" >&4
2283 awk '{print $1}' $src/MANIFEST | while true; do
2285 test -z "$filename" && break
2286 if test -f $filename; then
2287 if $issymlink $filename; then
2291 if test -f $filename; then
2292 echo "$filename already exists, not symlinking."
2294 ln -s $src/$filename $filename
2298 if test ! -f t/base/commonsense.t; then
2299 echo "Failed to create the symlinks. Aborting." >&4
2304 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2313 case "$usecrosscompile" in
2315 $echo "Cross-compiling..."
2318 *-*-gcc) # A cross-compiling gcc, probably.
2319 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2321 # leave out ld, choosing it is more complex
2323 ranlib=$targetarch-ranlib
2324 $echo 'extern int foo;' > try.c
2325 set X `$cc -v -E perl.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2327 if $test $# -gt 0; then
2329 incpth="$echo $incpth|$sed 's/^ //'"
2330 echo "Guessing incpth $incpth" >&4
2332 j=`$echo $i|$sed 's,/include$,/lib,'`
2333 if $test -d $j; then
2337 libpth="$echo $libpth|$sed 's/^ //'"
2338 echo "Guessing libpth $libpth." >&4
2343 case "$targetarch" in
2344 '') echo "Targetarch not defined." >&4; croak=y ;;
2345 *) echo "Using targetarch $targetarch." >&4 ;;
2348 '') echo "Incpth not defined." >&4; croak=y ;;
2349 *) echo "Using incpth $incpth." >&4 ;;
2352 '') echo "Libpth not defined." >&4; croak=y ;;
2353 *) echo "Using libpth $libpth." >&4 ;;
2356 '') for i in $incpth; do
2357 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2359 echo "Guessing usrinc $usrinc." >&4
2364 '') echo "Usrinc not defined." >&4; croak=y ;;
2367 *) echo "Using usrinc $usrinc." >&4 ;;
2369 case "$targethost" in
2370 '') echo "Targethost not defined." >&4; croak=y ;;
2371 *) echo "Using targethost $targethost." >&4
2376 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2379 /*) run=$src/Cross/run
2380 targetmkdir=$src/Cross/mkdir
2382 from=$src/Cross/from
2384 *) pwd=`$test -f ../Configure & cd ..; pwd`
2386 targetmkdir=$pwd/Cross/mkdirkrun
2388 from=$pwd/Cross/from
2391 case "$targetrun" in
2392 '') targetrun=ssh ;;
2397 case "$targetfrom" in
2398 '') targetfrom=scp ;;
2402 from=$from-$targetfrom
2403 case "$targetdir" in
2405 echo "Guessing targetdir $targetdir." >&4
2408 case "$targetuser" in
2410 echo "Guessing targetuser $targetuser." >&4
2413 case "$targetfrom" in
2417 case "$targetrun" in
2429 '') cwd=$targetdir ;;
2433 if $test ! -f \$exe.xok; then
2437 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2440 *) echo "Unknown targetrun '$targetrun'" >&4
2444 case "$targetmkdir" in
2446 cat >$targetmkdir <<EOF
2448 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2451 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2463 $targetmkdir \`dirname \$f\`
2464 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2467 $targetmkdir $targetdir/\`dirname \$f\`
2468 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2481 $mkdir -p $targetdir/\`dirname \$f\`
2482 $cp \$f $targetdir/\$f || exit 1
2485 $targetmkdir $targetdir/\`dirname \$f\`
2486 $cp \$f $targetdir/\$f || exit 1
2493 *) echo "Unknown targetto '$targetto'" >&4
2497 case "$targetfrom" in
2504 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2509 cp) cat >$from <<EOF
2514 cp $targetdir/\$f . || exit 1
2519 *) echo "Unknown targetfrom '$targetfrom'" >&4
2523 if $test ! -f $run; then
2524 echo "Target 'run' script '$run' not found." >&4
2528 if $test ! -f $to; then
2529 echo "Target 'to' script '$to' not found." >&4
2533 if $test ! -f $from; then
2534 echo "Target 'from' script '$from' not found." >&4
2538 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2542 Using '$run' for remote execution, and '$from' and '$to'
2543 for remote file transfer.
2549 usecrosscompile='undef'
2554 : see whether [:lower:] and [:upper:] are supported character classes
2556 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2558 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2562 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2563 # (0xc9 and 0xd1), therefore that is a nice testing point.
2564 if test "X$up" = X -o "X$low" = X; then
2565 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2571 if test "X$up" = X -o "X$low" = X; then
2572 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2578 if test "X$up" = X -o "X$low" = X; then
2579 case "`echo IJ | od -x 2>/dev/null`" in
2581 echo "Hey, this might be EBCDIC." >&4
2582 if test "X$up" = X -o "X$low" = X; then
2583 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2584 ij) up='[A-IJ-RS-Z]'
2589 if test "X$up" = X -o "X$low" = X; then
2590 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2600 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2602 echo "Using $up and $low to convert case." >&4
2605 echo "I don't know how to translate letters from upper to lower case." >&4
2606 echo "Your tr is not acting any way I know of." >&4
2610 : set up the translation script tr, must be called with ./tr of course
2614 '[A-Z][a-z]') exec $tr '$up' '$low';;
2615 '[a-z][A-Z]') exec $tr '$low' '$up';;
2622 : Try to determine whether config.sh was made on this system
2623 case "$config_sh" in
2625 myuname=`$uname -a 2>/dev/null`
2626 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2627 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2628 # because the A-Z/a-z are not consecutive.
2629 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2630 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2631 newmyuname="$myuname"
2633 case "$knowitall" in
2635 if test -f ../config.sh; then
2636 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2637 eval "`grep myuname= ../config.sh`"
2639 if test "X$myuname" = "X$newmyuname"; then
2647 : Get old answers from old config file if Configure was run on the
2648 : same system, otherwise use the hints.
2651 if test -f config.sh; then
2653 rp="I see a config.sh file. Shall I use it to set the defaults?"
2656 n*|N*) echo "OK, I'll ignore it."
2657 mv config.sh config.sh.old
2658 myuname="$newmyuname"
2660 *) echo "Fetching default answers from your old config.sh file..." >&4
2668 : Older versions did not always set $sh. Catch re-use of such
2678 if test ! -f config.sh; then
2681 First time through, eh? I have some defaults handy for some systems
2682 that need some extra help getting the Configure answers right:
2685 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2687 : Half the following guesses are probably wrong... If you have better
2688 : tests or hints, please send them to perlbug@perl.org
2689 : The metaconfig authors would also appreciate a copy...
2690 $test -f /irix && osname=irix
2691 $test -f /xenix && osname=sco_xenix
2692 $test -f /dynix && osname=dynix
2693 $test -f /dnix && osname=dnix
2694 $test -f /lynx.os && osname=lynxos
2695 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2696 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2697 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2698 $test -f /bin/mips && /bin/mips && osname=mips
2699 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2700 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2701 $test -d /usr/apollo/bin && osname=apollo
2702 $test -f /etc/saf/_sactab && osname=svr4
2703 $test -d /usr/include/minix && osname=minix
2704 if $test -d /MachTen -o -d /MachTen_Folder; then
2706 if $test -x /sbin/version; then
2707 osvers=`/sbin/version | $awk '{print $2}' |
2708 $sed -e 's/[A-Za-z]$//'`
2709 elif $test -x /usr/etc/version; then
2710 osvers=`/usr/etc/version | $awk '{print $2}' |
2711 $sed -e 's/[A-Za-z]$//'`
2717 $test -f /sys/posix.dll &&
2718 $test -f /usr/bin/what &&
2719 set X `/usr/bin/what /sys/posix.dll` &&
2720 $test "$3" = UWIN &&
2724 if $test -f $uname; then
2732 umips) osname=umips ;;
2735 [23]100) osname=mips ;;
2736 next*) osname=next ;;
2738 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2739 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2742 elif $test -f /etc/kconfig; then
2744 if test "$lns" = "$ln -s"; then
2746 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2748 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2755 if test -n "$DJGPP"; then
2764 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2766 'not found') osvers="$4"."$3" ;;
2767 '<3240'|'<>3240') osvers=3.2.0 ;;
2768 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2769 '=3250'|'>3250') osvers=3.2.5 ;;
2773 bsd386) osname=bsd386
2776 cygwin*) osname=cygwin
2779 *dc.osx) osname=dcosx
2785 domainos) osname=apollo
2791 dynixptx*) osname=dynixptx
2792 osvers=`echo "$4"|sed 's/^v//'`
2794 freebsd) osname=freebsd
2796 genix) osname=genix ;;
2798 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2814 netbsd*) osname=netbsd
2817 news-os) osvers="$3"
2819 4*) osname=newsos4 ;;
2823 next*) osname=next ;;
2824 nonstop-ux) osname=nonstopux ;;
2825 POSIX-BC | posix-bc ) osname=posix-bc
2828 powerux | power_ux | powermax_os | powermaxos | \
2829 powerunix | power_unix) osname=powerux
2835 solaris) osname=solaris
2837 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2844 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2848 titanos) osname=titanos
2857 ultrix) osname=ultrix
2860 osf1|mls+) case "$5" in
2863 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2866 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2869 hp*) osname=hp_osf1 ;;
2870 mips) osname=mips_osf1 ;;
2873 unixware) osname=svr5
2879 $2) case "$osname" in
2883 : svr4.x or possibly later
2893 if test -f /stand/boot ; then
2894 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2895 if test -n "$INITPROG" -a -f "$INITPROG"; then
2896 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2897 if test -n "$isesix"; then
2905 *) if test -f /etc/systemid; then
2907 set `echo $3 | $sed 's/\./ /g'` $4
2908 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2910 elif $test -f $src/hints/sco_$1_$2.sh; then
2912 elif $test -f $src/hints/sco_$1.sh; then
2917 '') : Still unknown. Probably a generic Sys V.
2926 *) case "$osname" in
2927 '') : Still unknown. Probably a generic BSD.
2935 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2936 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2937 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2940 $rm -f UU/kernel.what
2941 elif test -d c:/.; then
2948 case "$targetarch" in
2951 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2956 : Now look for a hint file osname_osvers, unless one has been
2957 : specified already.
2960 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2961 : Also try without trailing minor version numbers.
2962 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2963 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2964 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2965 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2968 *) case "$osvers" in
2971 *) if $test -f $src/hints/$file.sh ; then
2973 elif $test -f $src/hints/$xfile.sh ; then
2975 elif $test -f $src/hints/$xxfile.sh ; then
2977 elif $test -f $src/hints/$xxxfile.sh ; then
2979 elif $test -f $src/hints/$xxxxfile.sh ; then
2981 elif $test -f "$src/hints/${osname}.sh" ; then
2990 if $test -f Policy.sh ; then
2993 none) dflt="Policy" ;;
2994 *) dflt="Policy $dflt" ;;
2999 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3003 if $test -f Policy.sh ; then
3006 There's also a Policy hint file available, which should make the
3007 site-specific (policy) questions easier to answer.
3014 You may give one or more space-separated answers, or "none" if appropriate.
3015 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3016 is a good thing. DO NOT give a wrong version or a wrong OS.
3020 rp="Which of these apply, if any?"
3023 for file in $tans; do
3024 if $test X$file = XPolicy -a -f Policy.sh; then
3026 $cat Policy.sh >> UU/config.sh
3027 elif $test -f $src/hints/$file.sh; then
3028 . $src/hints/$file.sh
3029 $cat $src/hints/$file.sh >> UU/config.sh
3030 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3033 : Give one chance to correct a possible typo.
3034 echo "$file.sh does not exist"
3036 rp="hint to use instead?"
3038 for file in $ans; do
3039 if $test -f "$src/hints/$file.sh"; then
3040 . $src/hints/$file.sh
3041 $cat $src/hints/$file.sh >> UU/config.sh
3042 elif $test X$ans = X -o X$ans = Xnone ; then
3045 echo "$file.sh does not exist -- ignored."
3052 : Remember our hint file for later.
3053 if $test -f "$src/hints/$file.sh" ; then
3063 echo "Fetching default answers from $config_sh..." >&4
3067 cp $config_sh config.sh 2>/dev/null
3077 test "$override" && . ./optdef.sh
3079 : Restore computed paths
3080 for file in $loclist $trylist; do
3081 eval $file="\$_$file"
3086 Configure uses the operating system name and version to set some defaults.
3087 The default value is probably right if the name rings a bell. Otherwise,
3088 since spelling matters for me, either accept the default or answer "none"
3095 ''|' '|none) dflt=none ;;
3096 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3099 *) dflt="$osname" ;;
3101 rp="Operating system name?"
3105 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3111 ''|' '|none) dflt=none ;;
3112 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3113 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3115 ''|' ') dflt=none ;;
3120 *) dflt="$osvers" ;;
3122 rp="Operating system version?"
3132 : who configured the system
3133 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3134 cf_by=`(logname) 2>/dev/null`
3137 cf_by=`(whoami) 2>/dev/null`
3139 "") cf_by=unknown ;;
3143 : set up the script used to warn in case of inconsistency
3150 echo "*** WHOA THERE!!! ***" >&4
3151 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3152 rp=" Keep the $hint value?"
3155 y) td=$was; tu=$was;;
3159 : function used to set $1 to $val
3160 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3162 $define$undef) . ./whoa; eval "$var=\$td";;
3163 $undef$define) . ./whoa; eval "$var=\$tu";;
3164 *) eval "$var=$val";;
3167 case "$usethreads" in
3168 $define|true|[yY]*) dflt='y';;
3173 Perl can be built to take advantage of threads on some systems.
3174 To do so, Configure can be run with -Dusethreads.
3176 Note that threading is a highly experimental feature, and
3177 some known race conditions still remain. If you choose to try
3178 it, be very sure to not actually deploy it for production
3179 purposes. README.threads has more details, and is required
3180 reading if you enable threads.
3182 If this doesn't make any sense to you, just accept the default '$dflt'.
3184 rp='Build a threading Perl?'
3187 y|Y) val="$define" ;;
3193 case "$usethreads" in
3197 As of 5.5.640, Perl has two different internal threading implementations,
3198 the 5.005 version (5005threads) and an interpreter-based version
3199 (ithreads) that has one interpreter per thread. Both are very
3200 experimental. This arrangement exists to help developers work out
3201 which one is better.
3203 If you're a casual user, you probably don't want interpreter-threads
3204 at this time. There doesn't yet exist a way to create threads from
3205 within Perl in this model, i.e., "use Thread;" will NOT work.
3207 : Default to ithreads unless overridden on command line or with
3210 case "$use5005threads" in
3211 $define|true|[yY]*) dflt='n';;
3213 case "$useithreads" in
3214 $undef|false|[nN]*) dflt='n';;
3216 rp='Use interpreter-based ithreads?'
3219 y|Y) val="$define" ;;
3224 : Now set use5005threads to the opposite value.
3225 case "$useithreads" in
3226 $define) val="$undef" ;;
3233 useithreads="$undef"
3234 use5005threads="$undef"
3238 case "$useithreads$use5005threads" in
3242 You cannot have both the ithreads and the 5.005 threads enabled
3243 at the same time. Disabling the 5.005 threads since they are
3244 much less stable than the ithreads.
3247 use5005threads="$undef"
3251 case "$d_oldpthreads" in
3252 '') : Configure tests would be welcome here. For now, assume undef.
3254 *) val="$d_oldpthreads" ;;
3260 case "$usethreads" in
3261 "$define"|true|[yY]*)
3262 : Look for a hint-file generated 'call-back-unit'. If the
3263 : user has specified that a threading perl is to be built,
3264 : we may need to set or change some other defaults.
3265 if $test -f usethreads.cbu; then
3266 echo "Your platform has some specific hints for threaded builds, using them..."
3270 (Your platform doesn't have any specific hints for threaded builds.
3271 Assuming POSIX threads, then.)
3279 Perl can be built so that multiple Perl interpreters can coexist
3280 within the same Perl executable.
3283 case "$useithreads" in
3286 This multiple interpreter support is required for interpreter-based threads.
3290 *) case "$usemultiplicity" in
3291 $define|true|[yY]*) dflt='y';;
3295 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3296 rp='Build Perl for multiplicity?'
3299 y|Y) val="$define" ;;
3307 : make some quick guesses about what we are up against
3309 $echo $n "Hmm... $c"
3319 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3320 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3322 echo "Looks kind of like an OSF/1 system, but we'll see..."
3324 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3325 xxx=`./loc addbib blurfl $pth`
3326 if $test -f $xxx; then
3327 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3331 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3332 echo "Looks kind of like an extended USG system, but we'll see..."
3334 echo "Looks kind of like a USG system, but we'll see..."
3338 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3339 echo "Looks kind of like a BSD system, but we'll see..."
3343 echo "Looks kind of like a Version 7 system, but we'll see..."
3346 case "$eunicefix" in
3349 There is, however, a strange, musty smell in the air that reminds me of
3350 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3354 : it so happens the Eunice I know will not run shell scripts in Unix format
3358 echo "Congratulations. You aren't running Eunice."
3362 : Detect OS2. The p_ variable is set above in the Head.U unit.
3363 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3364 : semicolon as a patch separator
3369 I have the feeling something is not exactly right, however...don't tell me...
3370 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3371 (Or you may be running DOS with DJGPP.)
3376 if test -f /xenix; then
3377 echo "Actually, this looks more like a XENIX system..."
3382 echo "It's not Xenix..."
3387 if test -f /venix; then
3388 echo "Actually, this looks more like a VENIX system..."
3395 echo "Nor is it Venix..."
3398 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3399 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3406 rp="Use which C compiler?"
3409 : Look for a hint-file generated 'call-back-unit'. Now that the
3410 : user has specified the compiler, we may need to set or change some
3412 if $test -f cc.cbu; then
3418 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3424 printf("%s\n", __VERSION__);
3426 printf("%s\n", "1");
3432 if $cc -o try $ccflags $ldflags try.c; then
3433 gccversion=`$run ./try`
3434 case "$gccversion" in
3435 '') echo "You are not using GNU cc." ;;
3436 *) echo "You are using GNU cc $gccversion."
3442 echo "*** WHOA THERE!!! ***" >&4
3443 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3444 case "$knowitall" in
3446 echo " You'd better start hunting for one and let me know about it." >&4
3452 case "$gccversion" in
3453 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3455 case "$gccversion" in
3456 '') gccosandvers='' ;;
3457 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3458 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3460 case "$gccosandvers" in
3461 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3462 $osname$osvers) ;; # looking good
3463 $osname*) cat <<EOM >&4
3465 *** WHOA THERE!!! ***
3467 Your gcc has not been compiled for the exact release of
3468 your operating system ($gccosandvers versus $osname$osvers).
3470 In general it is a good idea to keep gcc synchronized with
3471 the operating system because otherwise serious problems
3472 may ensue when trying to compile software, like Perl.
3474 I'm trying to be optimistic here, though, and will continue.
3475 If later during the configuration and build icky compilation
3476 problems appear (headerfile conflicts being the most common
3477 manifestation), I suggest reinstalling the gcc to match
3478 your operating system release.
3482 *) gccosandvers='' ;; # failed to parse, better be silent
3490 case "$gccversion" in
3492 *) case "$ccflags" in
3494 *) ccflags="$ccflags -Wall" ;;
3499 : see how we invoke the C preprocessor
3501 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3502 cat <<'EOT' >testcpp.c
3508 if test ! -f cppstdin; then
3509 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3510 # AIX cc -E doesn't show the absolute headerfile
3511 # locations but we'll cheat by using the -M flag.
3512 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
3514 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3517 echo "Keeping your $hint cppstdin wrapper."
3520 wrapper=`pwd`/cppstdin
3524 if $test "X$cppstdin" != "X" && \
3525 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3526 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3528 echo "You used to use $cppstdin $cppminus so we'll use that again."
3530 '') echo "But let's see if we can live without a wrapper..." ;;
3532 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3533 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3535 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3538 echo "(However, $cpprun $cpplast does not work, let's see...)"
3546 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3553 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3554 $cc -E <testcpp.c >testcpp.out 2>&1; \
3555 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3556 echo "Yup, it does."
3559 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3560 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3561 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3562 echo "Yup, it does."
3565 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3566 $cc -P <testcpp.c >testcpp.out 2>&1; \
3567 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3568 echo "Yipee, that works!"
3571 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3572 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3573 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3574 echo "At long last!"
3577 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3578 $cpp <testcpp.c >testcpp.out 2>&1; \
3579 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3583 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3584 $cpp - <testcpp.c >testcpp.out 2>&1; \
3585 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3586 echo "Hooray, it works! I was beginning to wonder."
3589 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3590 $wrapper <testcpp.c >testcpp.out 2>&1; \
3591 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3597 rp="No dice. I can't find a C preprocessor. Name one:"
3601 $x_cpp <testcpp.c >testcpp.out 2>&1
3602 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3603 echo "OK, that will do." >&4
3605 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3620 echo "Perhaps can we force $cc -E using a wrapper..."
3621 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3622 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3628 echo "Nope, we'll have to live without it..."
3642 "$wrapper"|'cppstdin') ;;
3643 *) $rm -f $wrapper;;
3645 $rm -f testcpp.c testcpp.out
3647 : decide how portable to be. Allow command line overrides.
3648 case "$d_portable" in
3650 *) d_portable="$define" ;;
3653 : set up shell script to do ~ expansion
3659 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3662 if $test -f /bin/csh; then
3663 /bin/csh -f -c "glob \$1"
3668 name=\`$expr x\$1 : '..\([^/]*\)'\`
3669 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3670 if $test ! -d "\$dir"; then
3672 echo "\$me: can't locate home directory for: \$name" >&2
3677 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3693 : now set up to get a file name
3697 cat <<'EOSC' >>getfile
3713 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3714 fn=`echo $fn | sed 's/(.*)//'`
3720 loc_file=`expr $fn : '.*:\(.*\)'`
3721 fn=`expr $fn : '\(.*\):.*'`
3729 */*) fullpath=true;;
3738 *e*) exp_file=true;;
3741 *p*) nopath_ok=true;;
3746 *d*) type='Directory';;
3747 *l*) type='Locate';;
3752 Locate) what='File';;
3757 case "$d_portable" in
3765 while test "$type"; do
3770 true) rp="$rp (~name ok)";;
3773 if test -f UU/getfile.ok && \
3774 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3793 value=`UU/filexp $ans`
3796 if test "$ans" != "$value"; then
3797 echo "(That expands to $value on this system.)"
3811 /*) value="$ansexp" ;;
3812 [a-zA-Z]:/*) value="$ansexp" ;;
3817 echo "I shall only accept a full path name, as in /bin/ls." >&4
3818 echo "Use a ! shell escape if you wish to check pathnames." >&4
3821 echo "Please give a full path name, starting with slash." >&4
3824 echo "Note that using ~name is ok provided it expands well." >&4
3837 for fp in $gfpth; do
3838 if test "X$fp" = X.; then
3843 if test -f "$pf"; then
3845 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3847 echo "($value is not a plain file, but that's ok.)"
3850 if test X"$type" = X; then
3857 for fp in $gfpth; do
3858 if test "X$fp" = X.; then
3863 direxp="$fp/$ansexp"
3865 if test -d "$direxp"; then
3873 if test -d "$ansexp"; then
3874 echo "(Looking for $loc_file in directory $value.)"
3875 value="$value/$loc_file"
3876 ansexp="$ansexp/$loc_file"
3878 if test -f "$ansexp"; then
3881 case "$nopath_ok" in
3882 true) case "$value" in
3884 *) echo "Assuming $value will be in people's path."
3900 if test "$fastread" = yes; then
3905 rp="$what $value doesn't exist. Use that name anyway?"
3924 test "X$gfpthkeep" != Xy && gfpth=""
3927 : What should the include directory be ?
3929 $echo $n "Hmm... $c"
3933 if $test -f /bin/mips && /bin/mips; then
3934 echo "Looks like a MIPS system..."
3935 $cat >usr.c <<'EOCP'
3936 #ifdef SYSTYPE_BSD43
3940 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3941 dflt='/bsd43/usr/include'
3945 mips_type='System V'
3947 $rm -f usr.c usr.out
3948 echo "and you're compiling with the $mips_type compiler and libraries."
3952 echo "Doesn't look like a MIPS system."
3962 case "$xxx_prompt" in
3965 rp='Where are the include files you want to use?'
3973 : Set private lib path
3976 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3981 '') dlist="$loclibpth $plibpth $glibpth";;
3982 *) dlist="$libpth";;
3985 : Now check and see which directories actually exist, avoiding duplicates
3989 if $test -d $xxx; then
3992 *) libpth="$libpth $xxx";;
3998 Some systems have incompatible or broken versions of libraries. Among
3999 the directories listed in the question below, please remove any you
4000 know not to be holding relevant libraries, and add any that are needed.
4001 Say "none" for none.
4012 rp="Directories to use for library searches?"
4019 : compute shared library extension
4022 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4032 On some systems, shared libraries may be available. Answer 'none' if
4033 you want to suppress searching of shared libraries for the remainder
4034 of this configuration.
4037 rp='What is the file extension used for shared libraries?'
4041 : Define several unixisms.
4042 : Hints files or command line option can be used to override them.
4043 : The convoluted testing is in case hints files set either the old
4046 '') case "$exe_ext" in
4048 *) _exe="$exe_ext" ;;
4053 '') case "$lib_ext" in
4060 '') case "$obj_ext" in
4067 '') case "$path_sep" in
4078 : Which makefile gets called first. This is used by make depend.
4079 case "$firstmakefile" in
4080 '') firstmakefile='makefile';;
4084 $define|true|[yY]*) dflt='y';;
4089 Perl can be built to use the SOCKS proxy protocol library. To do so,
4090 Configure must be run with -Dusesocks. If you use SOCKS you also need
4091 to use the PerlIO abstraction layer, this will be implicitly selected.
4093 If this doesn't make any sense to you, just accept the default '$dflt'.
4095 rp='Build Perl for SOCKS?'
4098 y|Y) val="$define" ;;
4105 $define|true|[yY]*) useperlio="$define";;
4108 : Looking for optional libraries
4110 echo "Checking for optional libraries..." >&4
4115 case "$libswanted" in
4116 '') libswanted='c_s';;
4119 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4125 for thisdir in $libpth $xlibpth; do
4126 test -d $thisdir && libspath="$libspath $thisdir"
4128 for thislib in $libswanted; do
4129 for thisdir in $libspath; do
4131 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4132 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4133 $test -f "$xxx" && eval $libscheck
4134 $test -f "$xxx" && libstyle=shared
4136 if test ! -f "$xxx"; then
4137 xxx=$thisdir/lib$thislib.$so
4138 $test -f "$xxx" && eval $libscheck
4139 $test -f "$xxx" && libstyle=shared
4141 if test ! -f "$xxx"; then
4142 xxx=$thisdir/lib$thislib$_a
4143 $test -f "$xxx" && eval $libscheck
4144 $test -f "$xxx" && libstyle=static
4146 if test ! -f "$xxx"; then
4147 xxx=$thisdir/$thislib$_a
4148 $test -f "$xxx" && eval $libscheck
4149 $test -f "$xxx" && libstyle=static
4151 if test ! -f "$xxx"; then
4152 xxx=$thisdir/lib${thislib}_s$_a
4153 $test -f "$xxx" && eval $libscheck
4154 $test -f "$xxx" && libstyle=static
4155 $test -f "$xxx" && thislib=${thislib}_s
4157 if test ! -f "$xxx"; then
4158 xxx=$thisdir/Slib$thislib$_a
4159 $test -f "$xxx" && eval $libscheck
4160 $test -f "$xxx" && libstyle=static
4162 if $test -f "$xxx"; then
4164 shared) echo "Found -l$thislib (shared)." ;;
4165 static) echo "Found -l$thislib." ;;
4166 *) echo "Found -l$thislib ($libstyle)." ;;
4170 *) dflt="$dflt -l$thislib"
4171 libsfound="$libsfound $xxx"
4173 libsfiles="$libsfiles $yyy"
4174 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4175 case " $libsdirs " in
4177 *) libsdirs="$libsdirs $yyy" ;;
4184 if $test ! -f "$xxx"; then
4185 echo "No -l$thislib."
4196 ' '|'') dflt='none';;
4201 In order to compile $package on your machine, a number of libraries
4202 are usually needed. Include any other special libraries here as well.
4203 Say "none" for none. The default list is almost always right.
4207 rp="What libraries to use?"
4214 : determine optimization, if desired, or use for debug flag also
4216 ' '|$undef) dflt='none';;
4218 *) dflt="$optimize";;
4222 By default, $package compiles with the -O flag to use the optimizer.
4223 Alternately, you might want to use the symbolic debugger, which uses
4224 the -g flag (on traditional Unix systems). Either flag can be
4225 specified here. To use neither flag, specify the word "none".
4228 rp="What optimizer/debugger flag should be used?"
4232 'none') optimize=" ";;
4236 : We will not override a previous value, but we might want to
4237 : augment a hint file
4239 default|recommended)
4240 case "$gccversion" in
4241 1*) dflt='-fpcc-struct-return' ;;
4244 *-g*) dflt="$dflt -DDEBUGGING";;
4246 case "$gccversion" in
4247 2*) if test -d /etc/conf/kconfig.d &&
4248 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4254 case "$gccversion" in
4258 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4259 echo 'int main(void) { return 0; }' > gcctest.c
4260 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4261 echo "Yes, it does." 2>&1
4264 echo "Leaving current flags $ccflags alone." 2>&1
4266 *) dflt="$dflt -fno-strict-aliasing" ;;
4269 echo "Nope, it doesn't, but that's ok." 2>&1
4276 case "$mips_type" in
4277 *BSD*|'') inclwanted="$locincpth $usrinc";;
4278 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4280 for thisincl in $inclwanted; do
4281 if $test -d $thisincl; then
4282 if $test x$thisincl != x$usrinc; then
4284 *" -I$thisincl "*);;
4285 *) dflt="$dflt -I$thisincl ";;
4291 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4293 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4301 *) dflt="$dflt -D$2";;
4305 set signal.h LANGUAGE_C; eval $inctest
4309 ccflags="$ccflags -DSOCKS"
4314 default|recommended) dflt="$ccflags $dflt" ;;
4315 *) dflt="$ccflags";;
4324 Your C compiler may want other flags. For this question you should include
4325 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4326 but you should NOT include libraries or ld flags like -lwhatever. If you
4327 want $package to honor its debug switch, you should include -DDEBUGGING here.
4328 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4330 To use no flags, specify the word "none".
4336 rp="Any additional cc flags?"
4343 : the following weeds options from ccflags that are of no interest to cpp
4345 '') cppflags="$ccflags" ;;
4346 *) cppflags="$cppflags $ccflags" ;;
4348 case "$gccversion" in
4349 1*) cppflags="$cppflags -D__GNUC__"
4351 case "$mips_type" in
4353 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4359 echo "Let me guess what the preprocessor flags are..." >&4
4373 *) ftry="$previous $flag";;
4375 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4376 >cpp1.out 2>/dev/null && \
4377 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4378 >cpp2.out 2>/dev/null && \
4379 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4380 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4382 cppflags="$cppflags $ftry"
4392 *-*) echo "They appear to be: $cppflags";;
4394 $rm -f cpp.c cpp?.out
4398 : flags used in final linking phase
4400 '') if ./venix; then
4406 *-posix*) dflt="$dflt -posix" ;;
4409 *) dflt="$ldflags";;
4412 : Try to guess additional flags to pick up local libraries.
4413 for thislibdir in $libpth; do
4414 case " $loclibpth " in
4417 *"-L$thislibdir "*) ;;
4418 *) dflt="$dflt -L$thislibdir" ;;
4430 Your C linker may need flags. For this question you should
4431 include -L/whatever and any other flags used by the C linker, but you
4432 should NOT include libraries like -lwhatever.
4434 Make sure you include the appropriate -L/path flags if your C linker
4435 does not normally search all of the directories you specified above,
4438 To use no flags, specify the word "none".
4442 rp="Any additional ld flags (NOT including libraries)?"
4448 rmlist="$rmlist pdp11"
4452 echo "Checking your choice of C compiler and flags for coherency..." >&4
4453 $cat > try.c <<'EOF'
4455 int main() { printf("Ok\n"); exit(0); }
4457 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4459 $cat >try.msg <<'EOM'
4460 I've tried to compile and run the following simple program:
4463 $cat try.c >> try.msg
4465 $cat >> try.msg <<EOM
4472 and I got the following output:
4476 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4477 if $sh -c "$run ./try" >>try.msg 2>&1; then
4481 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4484 cat >> try.msg <<'EOQS'
4485 If $libs contains -lsfio, and sfio is mis-configured, then it
4486 sometimes (apparently) runs and exits with a 0 status, but with no
4487 output! It may have to do with sfio's use of _exit vs. exit.
4490 rp="You have a big problem. Shall I abort Configure"
4497 echo "The program compiled OK, but exited with status $?." >>try.msg
4498 rp="You have a problem. Shall I abort Configure"
4502 echo "I can't compile the test program." >>try.msg
4503 rp="You have a BIG problem. Shall I abort Configure"
4509 case "$knowitall" in
4511 echo "(The supplied flags or libraries might be incorrect.)"
4519 *) echo "Ok. Stopping Configure." >&4
4524 n) echo "OK, that should do.";;
4526 $rm -f try try.* core
4528 : define an is-a-typedef? function
4529 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4531 "") inclist="sys/types.h";;
4533 eval "varval=\$$var";
4537 for inc in $inclist; do
4538 echo "#include <$inc>" >>temp.c;
4540 echo "#ifdef $type" >> temp.c;
4541 echo "printf(\"We have $type\");" >> temp.c;
4542 echo "#endif" >> temp.c;
4543 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4544 if $contains $type temp.E >/dev/null 2>&1; then
4550 *) eval "$var=\$varval";;
4553 : define an is-a-typedef? function that prompts if the type is not available.
4554 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4556 "") inclist="sys/types.h";;
4558 eval "varval=\$$var";
4562 for inc in $inclist; do
4563 echo "#include <$inc>" >>temp.c;
4565 echo "#ifdef $type" >> temp.c;
4566 echo "printf(\"We have $type\");" >> temp.c;
4567 echo "#endif" >> temp.c;
4568 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4570 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4571 if $contains $type temp.E >/dev/null 2>&1; then
4572 echo "$type found." >&4;
4575 echo "$type NOT found." >&4;
4581 *) eval "$var=\$varval";;
4584 : define a shorthand compile call
4588 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4589 : define a shorthand compile call for compilations that should be ok.
4593 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4595 : check for lengths of integral types
4599 echo "Checking to see how big your integers are..." >&4
4600 $cat >try.c <<'EOCP'
4604 printf("intsize=%d;\n", (int)sizeof(int));
4605 printf("longsize=%d;\n", (int)sizeof(long));
4606 printf("shortsize=%d;\n", (int)sizeof(short));
4611 if eval $compile_ok && $run ./try > /dev/null; then
4613 echo "Your integers are $intsize bytes long."
4614 echo "Your long integers are $longsize bytes long."
4615 echo "Your short integers are $shortsize bytes long."
4619 Help! I can't compile and run the intsize test program: please enlighten me!
4620 (This is probably a misconfiguration in your system or libraries, and
4621 you really ought to fix it. Still, I'll try anyway.)
4625 rp="What is the size of an integer (in bytes)?"
4629 rp="What is the size of a long integer (in bytes)?"
4633 rp="What is the size of a short integer (in bytes)?"
4641 : see what type lseek is declared as in the kernel
4642 rp="What is the type used for lseek's offset on this system?"
4643 set off_t lseektype long stdio.h sys/types.h
4647 echo "Checking to see how big your file offsets are..." >&4
4649 #include <sys/types.h>
4653 printf("%d\n", (int)sizeof($lseektype));
4658 if eval $compile_ok; then
4659 lseeksize=`$run ./try`
4660 echo "Your file offsets are $lseeksize bytes long."
4664 echo "(I can't seem to compile the test program. Guessing...)"
4665 rp="What is the size of your file offsets (in bytes)?"
4671 : see what type file positions are declared as in the library
4672 rp="What is the type for file position used by fsetpos()?"
4673 set fpos_t fpostype long stdio.h sys/types.h
4678 *_t) zzz="$fpostype" ;;
4681 echo "Checking the size of $zzz..." >&4
4683 #include <sys/types.h>
4686 printf("%d\n", (int)sizeof($fpostype));
4691 if eval $compile_ok; then
4695 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4698 echo "Your $zzz is $fpossize bytes long."
4704 echo "(I can't compile the test program. Guessing...)" >&4
4705 rp="What is the size of your file positions (in bytes)?"
4712 # Backward compatibility (uselfs is deprecated).
4714 "$define"|true|[yY]*)
4717 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4719 uselargefiles="$define"
4723 case "$lseeksize:$fpossize" in
4726 You can have files larger than 2 gigabytes.
4729 *) case "$uselargefiles" in
4730 "$undef"|false|[nN]*) dflt='n' ;;
4735 Perl can be built to understand large files (files larger than 2 gigabytes)
4736 on some systems. To do so, Configure can be run with -Duselargefiles.
4738 If this doesn't make any sense to you, just accept the default '$dflt'.
4740 rp='Try to understand large files, if available?'
4743 y|Y) val="$define" ;;
4750 case "$uselargefiles" in
4752 : Look for a hint-file generated 'call-back-unit'. If the
4753 : user has specified that a large files perl is to be built,
4754 : we may need to set or change some other defaults.
4755 if $test -f uselargefiles.cbu; then
4756 echo "Your platform has some specific hints for large file builds, using them..."
4757 . ./uselargefiles.cbu
4759 echo "Rechecking to see how big your file offsets are..." >&4
4761 #include <sys/types.h>
4765 printf("%d\n", (int)sizeof($lseektype));
4770 if eval $compile_ok; then
4771 lseeksize=`$run ./try`
4772 $echo "Your file offsets are now $lseeksize bytes long."
4776 echo "(I can't seem to compile the test program. Guessing...)"
4777 rp="What is the size of your file offsets (in bytes)?"
4782 *_t) zzz="$fpostype" ;;
4785 $echo $n "Rechecking the size of $zzz...$c" >&4
4787 #include <sys/types.h>
4790 printf("%d\n", (int)sizeof($fpostype));
4795 if eval $compile_ok; then
4800 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4803 echo " $fpossize bytes." >&4
4809 echo "(I can't compile the test program. Guessing...)" >&4
4810 rp="What is the size of your file positions (in bytes)?"
4820 case "$usemorebits" in
4821 "$define"|true|[yY]*)
4822 use64bitint="$define"
4823 uselongdouble="$define"
4824 usemorebits="$define"
4826 *) usemorebits="$undef"
4830 : check for void type
4832 echo "Checking to see how well your C compiler groks the void type..." >&4
4833 case "$voidflags" in
4835 $cat >try.c <<'EOCP'
4841 extern void moo(); /* function returning void */
4842 void (*goo)(); /* ptr to func returning void */
4844 void *hue; /* generic ptr */
4857 int main() { sub(); }
4859 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4860 voidflags=$defvoidused
4861 echo "Good. It appears to support void to the level $package wants.">&4
4862 if $contains warning .out >/dev/null 2>&1; then
4863 echo "However, you might get some warnings that look like this:"
4867 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4868 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4869 echo "It supports 1..."
4870 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4871 echo "It also supports 2..."
4872 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4874 echo "And it supports 4 but not 8 definitely."
4876 echo "It doesn't support 4..."
4877 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4879 echo "But it supports 8."
4882 echo "Neither does it support 8."
4886 echo "It does not support 2..."
4887 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4889 echo "But it supports 4 and 8."
4891 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4893 echo "And it supports 4 but has not heard about 8."
4895 echo "However it supports 8 but not 4."
4900 echo "There is no support at all for void."
4905 case "$voidflags" in
4908 Support flag bits are:
4909 1: basic void declarations.
4910 2: arrays of pointers to functions returning void.
4911 4: operations between pointers to and addresses of void functions.
4912 8: generic void pointers.
4915 rp="Your void support flags add up to what?"
4922 : check for length of pointer
4926 echo "Checking to see how big your pointers are..." >&4
4927 if test "$voidflags" -gt 7; then
4928 echo '#define VOID_PTR char *' > try.c
4930 echo '#define VOID_PTR void *' > try.c
4932 $cat >>try.c <<'EOCP'
4936 printf("%d\n", (int)sizeof(VOID_PTR));
4941 if eval $compile_ok; then
4942 ptrsize=`$run ./try`
4943 echo "Your pointers are $ptrsize bytes long."
4946 echo "(I can't seem to compile the test program. Guessing...)" >&4
4947 rp="What is the size of a pointer (in bytes)?"
4955 : check for long long
4957 echo "Checking to see if you have long long..." >&4
4958 echo 'int main() { long long x = 7; return 0; }' > try.c
4960 if eval $compile; then
4962 echo "You have long long."
4965 echo "You do not have long long."
4971 : check for length of long long
4972 case "${d_longlong}${longlongsize}" in
4975 echo "Checking to see how big your long longs are..." >&4
4976 $cat >try.c <<'EOCP'
4980 printf("%d\n", (int)sizeof(long long));
4985 if eval $compile_ok; then
4986 longlongsize=`$run ./try`
4987 echo "Your long longs are $longlongsize bytes long."
4991 echo "(I can't seem to compile the test program. Guessing...)"
4992 rp="What is the size of a long long (in bytes)?"
4996 if $test "X$longsize" = "X$longlongsize"; then
4997 echo "(That isn't any different from an ordinary long.)"
5003 : determine filename position in cpp output
5005 echo "Computing filename position in cpp output for #include directives..." >&4
5006 echo '#include <stdio.h>' > foo.c
5009 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5010 $grep '^[ ]*#.*stdio\.h' | \
5011 while read cline; do
5014 while $test \$# -gt 0; do
5015 if $test -r \`echo \$1 | $tr -d '"'\`; then
5020 pos=\`expr \$pos + 1\`
5032 *) pos="${fieldn}th";;
5034 echo "Your cpp writes the filename in the $pos field of the line."
5036 : locate header file
5041 for usrincdir in $usrinc
5043 if test -f \$usrincdir/\$wanted; then
5044 echo "\$usrincdir/\$wanted"
5048 awkprg='{ print \$$fieldn }'
5049 echo "#include <\$wanted>" > foo\$\$.c
5050 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5051 $grep "^[ ]*#.*\$wanted" | \
5052 while read cline; do
5053 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5055 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5056 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5061 # status = 0: grep returned 0 lines, case statement not executed
5062 # status = 1: headerfile found
5063 # status = 2: while loop executed, no headerfile found
5067 if test \$status -eq 1; then
5074 : define an alternate in-header-list? function
5075 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5076 cont=true; xxf="echo \"<\$1> found.\" >&4";
5077 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5078 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5080 case $# in 4) instead=instead;; *) instead="at last";; esac;
5081 while $test "$cont"; do
5083 var=$2; eval "was=\$$2";
5084 if $test "$xxx" && $test -r "$xxx";
5086 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5089 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5090 set $yyy; shift; shift; yyy=$@;
5091 case $# in 0) cont="";;
5092 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5093 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5094 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5095 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5099 do set $yyy; var=$2; eval "was=\$$2";
5100 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5101 set $yyy; shift; shift; yyy=$@;
5104 : see if inttypes.h is available
5105 : we want a real compile instead of Inhdr because some systems
5106 : have an inttypes.h which includes non-existent headers
5109 #include <inttypes.h>
5111 static int32_t foo32 = 0x12345678;
5115 if eval $compile; then
5116 echo "<inttypes.h> found." >&4
5119 echo "<inttypes.h> NOT found." >&4
5128 echo "Checking to see if you have int64_t..." >&4
5130 #include <sys/types.h>
5131 #$i_inttypes I_INTTYPES
5133 #include <inttypes.h>
5135 int main() { int64_t x = 7; }
5138 if eval $compile; then
5140 echo "You have int64_t."
5143 echo "You do not have int64_t."
5151 echo "Checking which 64-bit integer type we could use..." >&4
5157 val='"unsigned int"'
5162 *) case "$longsize" in
5166 val='"unsigned long"'
5171 *) case "$d_longlong:$longlongsize" in
5176 val='"unsigned long long"'
5181 *) case "$d_int64_t" in
5200 '') echo "Alas, no 64-bit integer types in sight." >&4
5203 *) echo "We could use '$quadtype' for 64-bit integers." >&4
5209 case "$uselonglong" in
5210 "$define"|true|[yY]*)
5213 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5215 use64bitint="$define"
5218 case "$use64bits" in
5219 "$define"|true|[yY]*)
5222 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5224 use64bitint="$define"
5227 case "$use64bitints" in
5228 "$define"|true|[yY]*)
5231 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5233 use64bitint="$define"
5236 case "$use64bitsint" in
5237 "$define"|true|[yY]*)
5240 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5242 use64bitint="$define"
5245 case "$uselonglongs" in
5246 "$define"|true|[yY]*)
5249 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5251 use64bitint="$define"
5254 case "$use64bitsall" in
5255 "$define"|true|[yY]*)
5258 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5260 use64bitall="$define"
5265 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5267 case "$use64bitall" in
5268 "$define"|true|[yY]*) use64bitint="$define" ;;
5274 You have natively 64-bit long integers.
5278 *) case "$use64bitint" in
5279 "$define"|true|[yY]*) dflt='y';;
5288 Perl can be built to take advantage of 64-bit integer types
5289 on some systems. To do so, Configure can be run with -Duse64bitint.
5290 Choosing this option will most probably introduce binary incompatibilities.
5292 If this doesn't make any sense to you, just accept the default '$dflt'.
5293 (The default has been chosen based on your configuration.)
5295 rp='Try to use 64-bit integers, if available?'
5298 [yY]*) val="$define" ;;
5306 case "$use64bitall" in
5307 "$define"|true|[yY]*) dflt='y' ;;
5308 *) case "$longsize" in
5316 You may also choose to try maximal 64-bitness. It means using as much
5317 64-bitness as possible on the platform. This in turn means even more
5318 binary incompatibilities. On the other hand, your platform may not
5319 have any more 64-bitness available than what you already have chosen.
5321 If this doesn't make any sense to you, just accept the default '$dflt'.
5322 (The default has been chosen based on your configuration.)
5324 rp='Try to use maximal 64-bit support, if available?'
5327 [yY]*) val="$define" ;;
5332 case "$use64bitall" in
5334 case "$use64bitint" in
5338 Since you have chosen a maximally 64-bit build, I'm also turning on
5339 the use of 64-bit integers.
5341 use64bitint="$define" ;;
5346 case "$use64bitall" in
5347 "$define"|true|[yY]*)
5351 *** You have chosen a maximally 64-bit build, but your pointers
5352 *** are only 4 bytes wide, disabling maximal 64-bitness.
5355 use64bitall="$undef"
5356 case "$use64bitint" in
5357 "$define"|true|[yY]*) ;;
5360 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5363 use64bitint="$define"
5371 case "$use64bitint" in
5372 "$define"|true|[yY]*)
5373 : Look for a hint-file generated 'call-back-unit'. If the
5374 : user has specified that a 64-bit perl is to be built,
5375 : we may need to set or change some other defaults.
5376 if $test -f use64bitint.cbu; then
5377 echo "Your platform has some specific hints for 64-bit integers, using them..."
5381 4) case "$archname64" in
5382 '') archname64=64int ;;
5389 case "$use64bitall" in
5390 "$define"|true|[yY]*)
5391 : Look for a hint-file generated 'call-back-unit'. If the
5392 : user has specified that a maximally 64-bit perl is to be built,
5393 : we may need to set or change some other defaults.
5394 if $test -f use64bitall.cbu; then
5395 echo "Your platform has some specific hints for 64-bit builds, using them..."
5399 4) case "$archname64" in
5400 ''|64int) archname64=64all ;;
5408 echo "Checking for GNU C Library..." >&4
5421 if eval $compile_ok && $run ./try; then
5423 echo "You are using the GNU C Library"
5426 echo "You are not using the GNU C Library"
5432 : see if nm is to be used to determine whether a symbol is defined or not
5436 case "$d_gnulibc" in
5439 echo "nm probably won't work on the GNU C Library." >&4
5445 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5447 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5448 echo "'nm' won't be sufficient on this sytem." >&4
5454 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5455 if $test $dflt -gt 20; then
5465 true|$define) dflt=y;;
5472 I can use $nm to extract the symbols from your C libraries. This
5473 is a time consuming task which may generate huge output on the disk (up
5474 to 3 megabytes) but that should make the symbols extraction faster. The
5475 alternative is to skip the 'nm' extraction part and to compile a small
5476 test program instead to determine whether each symbol is present. If
5477 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5478 this may be the best solution.
5480 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5483 rp="Shall I use $nm to extract C symbols from the libraries?"
5486 [Nn]*) usenm=false;;
5495 : nm options which may be necessary
5497 '') if $test -f /mach_boot; then
5499 elif $test -d /usr/ccs/lib; then
5500 nm_opt='-p' # Solaris (and SunOS?)
5501 elif $test -f /dgux; then
5503 elif $test -f /lib64/rld; then
5504 nm_opt='-p' # 64-bit Irix
5510 : nm options which may be necessary for shared libraries but illegal
5511 : for archive libraries. Thank you, Linux.
5512 case "$nm_so_opt" in
5513 '') case "$myuname" in
5515 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5516 nm_so_opt='--dynamic'
5525 : get list of predefined functions in a handy place
5530 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5536 *) for thislib in $libs; do
5539 : Handle C library specially below.
5542 thislib=`echo $thislib | $sed -e 's/^-l//'`
5543 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5545 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5547 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5549 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5551 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5553 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5555 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5560 libnames="$libnames $try"
5562 *) libnames="$libnames $thislib" ;;
5571 for xxx in $libpth; do
5572 $test -r $1 || set $xxx/libc.$so
5573 : The messy sed command sorts on library version numbers.
5575 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5576 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5578 s/[0-9][0-9]*/0000&/g
5579 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5582 $sort | $sed -e 's/^.* //'`
5585 $test -r $1 || set /usr/ccs/lib/libc.$so
5586 $test -r $1 || set /lib/libsys_s$_a
5592 if $test -r "$1"; then
5593 echo "Your (shared) C library seems to be in $1."
5595 elif $test -r /lib/libc && $test -r /lib/clib; then
5596 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5598 libc='/lib/clib /lib/libc'
5599 if $test -r /lib/syslib; then
5600 echo "(Your math library is in /lib/syslib.)"
5601 libc="$libc /lib/syslib"
5603 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5604 echo "Your C library seems to be in $libc, as you said before."
5605 elif $test -r $incpath/usr/lib/libc$_a; then
5606 libc=$incpath/usr/lib/libc$_a;
5607 echo "Your C library seems to be in $libc. That's fine."
5608 elif $test -r /lib/libc$_a; then
5610 echo "Your C library seems to be in $libc. You're normal."
5612 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5614 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5615 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5616 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5618 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5620 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5623 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5625 if $test -r "$tans"; then
5626 echo "Your C library seems to be in $tans, of all places."
5632 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5636 If the guess above is wrong (which it might be if you're using a strange
5637 compiler, or your machine supports multiple models), you can override it here.
5642 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5644 I can't seem to find your C library. I've looked in the following places:
5647 $sed 's/^/ /' libpath
5650 None of these seems to contain your C library. I need to get its name...
5655 rp='Where is your C library?'
5660 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5661 set X `cat libnames`
5664 case $# in 1) xxx=file; esac
5665 echo "Extracting names from the following $xxx for later perusal:" >&4
5667 $sed 's/^/ /' libnames >&4
5669 $echo $n "This may take a while...$c" >&4
5673 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5674 *) $nm $nm_opt $file 2>/dev/null;;
5679 $grep fprintf libc.tmp > libc.ptf
5680 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5681 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5683 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5685 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5687 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5689 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5691 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5693 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5695 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5697 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5699 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5701 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5703 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5705 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5707 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5708 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5710 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5712 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5714 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5716 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5718 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5720 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5722 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5724 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5726 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5728 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5730 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5732 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5734 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5736 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5738 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5741 $nm -p $* 2>/dev/null >libc.tmp
5742 $grep fprintf libc.tmp > libc.ptf
5743 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5744 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5750 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5752 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5753 for thisname in $libnames $libc; do
5754 $ar t $thisname >>libc.tmp
5756 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5758 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5759 # Repeat libc to extract forwarders to DLL entries too
5760 for thisname in $libnames $libc; do
5761 $ar tv $thisname >>libc.tmp
5762 # Revision 50 of EMX has bug in $ar.
5763 # it will not extract forwarders to DLL entries
5764 # Use emximp which will extract exactly them.
5765 emximp -o tmp.imp $thisname \
5767 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5768 < tmp.imp >>libc.tmp
5771 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5774 echo "$ar didn't seem to work right." >&4
5775 echo "Maybe this is a Cray...trying bld instead..." >&4
5776 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5778 for thisname in $libnames; do
5780 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5781 $ar t $thisname >>libc.tmp
5785 echo "That didn't work either. Giving up." >&4
5792 if $test -f /lib/syscalls.exp; then
5794 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5795 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5799 $rm -f libnames libpath
5801 : is a C symbol defined?
5804 -v) tf=libc.tmp; tc=""; tdc="";;
5805 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5806 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5809 case "$reuseval-$4" in
5811 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5817 if $contains $tlook $tf >/dev/null 2>&1;
5822 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5823 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5831 $define) tval=true;;
5837 : define an is-in-libc? function
5838 inlibc='echo " "; td=$define; tu=$undef;
5839 sym=$1; var=$2; eval "was=\$$2";
5841 case "$reuseval$was" in
5851 echo "$sym() found." >&4;
5852 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5854 echo "$sym() NOT found." >&4;
5855 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5859 $define) echo "$sym() found." >&4;;
5860 *) echo "$sym() NOT found." >&4;;
5864 : see if sqrtl exists
5869 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5872 case "$uselongdouble" in
5873 $define|true|[yY]*) dflt='y';;
5878 Perl can be built to take advantage of long doubles which
5879 (if available) may give more accuracy and range for floating point numbers.
5881 If this doesn't make any sense to you, just accept the default '$dflt'.
5883 rp='Try to use long doubles if available?'
5886 y|Y) val="$define" ;;
5892 case "$uselongdouble" in
5893 true|[yY]*) uselongdouble="$define" ;;
5896 case "$uselongdouble" in
5898 : Look for a hint-file generated 'call-back-unit'. If the
5899 : user has specified that long doubles should be used,
5900 : we may need to set or change some other defaults.
5901 if $test -f uselongdouble.cbu; then
5902 echo "Your platform has some specific hints for long doubles, using them..."
5903 . ./uselongdouble.cbu
5906 (Your platform doesn't have any specific hints for long doubles.)
5912 case "$uselongdouble:$d_sqrtl" in
5916 *** You requested the use of long doubles but you do not seem to have
5917 *** the mathematic functions for long doubles. I'm disabling the use
5918 *** of long doubles.
5921 uselongdouble=$undef
5925 : check for length of double
5927 case "$doublesize" in
5929 echo "Checking to see how big your double precision numbers are..." >&4
5930 $cat >try.c <<'EOCP'
5934 printf("%d\n", (int)sizeof(double));
5939 if eval $compile_ok; then
5940 doublesize=`$run ./try`
5941 echo "Your double is $doublesize bytes long."
5944 echo "(I can't seem to compile the test program. Guessing...)"
5945 rp="What is the size of a double precision number (in bytes)?"
5953 : check for long doubles
5955 echo "Checking to see if you have long double..." >&4
5956 echo 'int main() { long double x = 7.0; }' > try.c
5958 if eval $compile; then
5960 echo "You have long double."
5963 echo "You do not have long double."
5969 : check for length of long double
5970 case "${d_longdbl}${longdblsize}" in
5973 echo "Checking to see how big your long doubles are..." >&4
5974 $cat >try.c <<'EOCP'
5978 printf("%d\n", sizeof(long double));
5983 if eval $compile; then
5984 longdblsize=`$run ./try`
5985 echo "Your long doubles are $longdblsize bytes long."
5989 echo "(I can't seem to compile the test program. Guessing...)" >&4
5990 rp="What is the size of a long double (in bytes)?"
5994 if $test "X$doublesize" = "X$longdblsize"; then
5995 echo "(That isn't any different from an ordinary double.)"
6001 case "$useperlio" in
6002 $define|true|[yY]*|'') dflt='y';;
6007 Previous version of $package used the standard IO mechanisms as
6008 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
6009 alternate IO mechanisms via the PerlIO abstraction layer, but the
6010 stdio mechanism is still available if needed. The abstraction layer
6011 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
6012 Using PerlIO with sfio may cause problems with some extension modules.
6014 If this doesn't make any sense to you, just accept the default '$dflt'.
6016 rp='Use the PerlIO abstraction layer?'
6023 echo "Ok, doing things the stdio way."
6032 case "$useperlio" in
6033 $define|true|[yY]*) ;;
6036 You are using the SOCKS proxy protocol library which means that you
6037 should also use the PerlIO layer. You may be headed for trouble.
6046 : determine the architecture name
6048 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6049 tarch=`arch`"-$osname"
6050 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6051 if uname -m > tmparch 2>&1 ; then
6052 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6053 -e 's/$/'"-$osname/" tmparch`
6061 case "$myarchname" in
6064 echo "(Your architecture name used to be $myarchname.)"
6068 case "$targetarch" in
6070 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6075 *) dflt="$archname";;
6077 rp='What is your architecture name'
6080 case "$usethreads" in
6082 echo "Threads selected." >&4
6084 *-thread*) echo "...and architecture name already has -thread." >&4
6086 *) archname="$archname-thread"
6087 echo "...setting architecture name to $archname." >&4
6092 case "$usemultiplicity" in
6094 echo "Multiplicity selected." >&4
6096 *-multi*) echo "...and architecture name already has -multi." >&4
6098 *) archname="$archname-multi"
6099 echo "...setting architecture name to $archname." >&4
6104 case "$use64bitint$use64bitall" in
6106 case "$archname64" in
6108 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6111 case "$use64bitint" in
6112 "$define") echo "64 bit integers selected." >&4 ;;
6114 case "$use64bitall" in
6115 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6118 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6120 *) archname="$archname-$archname64"
6121 echo "...setting architecture name to $archname." >&4
6127 case "$uselongdouble" in
6129 echo "Long doubles selected." >&4
6130 case "$longdblsize" in
6132 "...but long doubles are equal to doubles, not changing architecture name." >&4
6136 *-ld*) echo "...and architecture name already has -ld." >&4
6138 *) archname="$archname-ld"
6139 echo "...setting architecture name to $archname." >&4
6146 case "$useperlio" in
6148 echo "Perlio selected." >&4
6151 echo "Perlio not selected, using stdio." >&4
6153 *-stdio*) echo "...and architecture name already has -stdio." >&4
6155 *) archname="$archname-stdio"
6156 echo "...setting architecture name to $archname." >&4
6162 : determine root of directory hierarchy where package will be installed.
6165 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6173 By default, $package will be installed in $dflt/bin, manual pages
6174 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6175 installation directories. Typically this is something like /usr/local.
6176 If you wish to have binaries under /usr/bin but other parts of the
6177 installation under /usr/local, that's ok: you will be prompted
6178 separately for each of the installation directories, the prefix being
6179 only used to set the defaults.
6183 rp='Installation prefix to use?'
6191 *) oldprefix="$prefix";;
6200 *) afsroot=$afsroot ;;
6206 $define|true) afs=true ;;
6207 $undef|false) afs=false ;;
6208 *) if test -d $afsroot; then
6216 echo "AFS may be running... I'll be extra cautious then..." >&4
6218 echo "AFS does not seem to be running..." >&4
6221 : determine installation prefix for where package is to be installed.
6225 Since you are running AFS, I need to distinguish the directory in which
6226 files will reside from the directory in which they are installed (and from
6227 which they are presumably copied to the former directory by occult means).
6230 case "$installprefix" in
6231 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6232 *) dflt="$installprefix";;
6237 In some special cases, particularly when building $package for distribution,
6238 it is convenient to distinguish between the directory in which files should
6239 be installed from the directory ($prefix) in which they
6240 will eventually reside. For most users, these two directories are the same.
6243 case "$installprefix" in
6245 *) dflt=$installprefix;;
6249 rp='What installation prefix should I use for installing files?'
6251 installprefix="$ans"
6252 installprefixexp="$ansexp"
6254 : set the prefixit variable, to compute a suitable default value
6255 prefixit='case "$3" in
6257 case "$oldprefix" in
6258 "") eval "$1=\"\$$2\"";;
6265 ""|" ") eval "$1=\"\$$2\"";;
6271 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6273 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6274 /*-$oldprefix/*|\~*-$oldprefix/*)
6275 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6276 *) eval "$1=\"\$$2\"";;
6281 : get the patchlevel
6283 echo "Getting the current patchlevel..." >&4
6284 if $test -r $rsrc/patchlevel.h;then
6285 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6286 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6287 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6288 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6289 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6290 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6291 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6300 $echo "(You do not have patchlevel.h. Eek.)"
6302 if $test -r $rsrc/.patch ; then
6303 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6304 perl_patchlevel=`cat $rsrc/.patch`
6307 case "$perl_patchlevel" in
6309 '') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6310 *) $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6314 : XXX Should be a Configure test for double-dots in filenames.
6315 version=`echo $revision $patchlevel $subversion | \
6316 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6317 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6318 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6321 version=`echo $revision $patchlevel $subversion | \
6322 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6323 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6324 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6327 : Special case the 5.005_xx maintenance series, which used 5.005
6328 : without any subversion label as a subdirectory in $sitelib
6329 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6330 api_versionstring='5.005'
6333 : determine installation style
6334 : For now, try to deduce it from prefix unless it is already set.
6335 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6336 case "$installstyle" in
6337 '') case "$prefix" in
6338 *perl*) dflt='lib';;
6339 *) dflt='lib/perl5' ;;
6342 *) dflt="$installstyle" ;;
6344 : Probably not worth prompting for this since we prompt for all
6345 : the directories individually, and the prompt would be too long and
6349 : determine where private library files go
6350 : Usual default is /usr/local/lib/perl5/$version.
6351 : Also allow things like /opt/perl/lib/$version, since
6352 : /opt/perl/lib/perl5... would be redundant.
6353 : The default "style" setting is made in installstyle.U
6354 case "$installstyle" in
6355 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6356 *) set dflt privlib lib/$version ;;
6361 There are some auxiliary files for $package that need to be put into a
6362 private library directory that is accessible by everyone.
6366 rp='Pathname where the private library files will reside?'
6369 privlibexp="$ansexp"
6370 : Change installation prefix, if necessary.
6371 if $test X"$prefix" != X"$installprefix"; then
6372 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6374 installprivlib="$privlibexp"
6377 : set the prefixup variable, to restore leading tilda escape
6378 prefixup='case "$prefixexp" in
6380 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6383 : determine where public architecture dependent libraries go
6386 : privlib default is /usr/local/lib/$package/$version
6387 : archlib default is /usr/local/lib/$package/$version/$archname
6388 : privlib may have an optional trailing /share.
6389 tdflt=`echo $privlib | $sed 's,/share$,,'`
6390 tdflt=$tdflt/$archname
6399 $spackage contains architecture-dependent library files. If you are
6400 sharing libraries in a heterogeneous environment, you might store
6401 these files in a separate location. Otherwise, you can just include
6402 them with the rest of the public library files.
6406 rp='Where do you want to put the public architecture-dependent libraries?'
6409 archlibexp="$ansexp"
6410 if $test X"$archlib" = X"$privlib"; then
6415 : Change installation prefix, if necessary.
6416 if $test X"$prefix" != X"$installprefix"; then
6417 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6419 installarchlib="$archlibexp"
6423 : Binary compatibility with 5.005 is not possible for builds
6424 : with advanced features
6425 case "$usethreads$usemultiplicity" in
6427 bincompat5005="$undef"
6428 d_bincompat5005="$undef"
6432 This version of Perl can be compiled for binary compatibility with 5.005.
6433 If you decide to do so, you will be able to continue using most of the
6434 extensions that were compiled for Perl 5.005.
6437 case "$bincompat5005$d_bincompat5005" in
6438 *"$undef"*) dflt=n ;;
6441 rp='Binary compatibility with Perl 5.005?'
6444 y*) val="$define" ;;
6449 case "$d_bincompat5005" in
6451 bincompat5005="$define"
6453 *) bincompat5005="$undef"
6454 d_bincompat5005="$undef"
6461 : see if setuid scripts can be secure
6464 Some kernels have a bug that prevents setuid #! scripts from being
6465 secure. Some sites have disabled setuid #! scripts because of this.
6467 First let's decide if your kernel supports secure setuid #! scripts.
6468 (If setuid #! scripts would be secure but have been disabled anyway,
6469 don't say that they are secure if asked.)
6474 if $test -d /dev/fd; then
6475 echo "#!$ls" >reflect
6476 chmod +x,u+s reflect
6477 ./reflect >flect 2>&1
6478 if $contains "/dev/fd" flect >/dev/null; then
6479 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6483 If you are not sure if they are secure, I can check but I'll need a
6484 username and password different from the one you are using right now.
6485 If you don't have such a username or don't want me to test, simply
6489 rp='Other username to test security of setuid scripts with?'
6494 case "$d_suidsafe" in
6495 '') echo "I'll assume setuid scripts are *not* secure." >&4
6498 echo "Well, the $hint value is *not* secure." >&4
6500 *) echo "Well, the $hint value *is* secure." >&4
6505 $rm -f reflect flect
6506 echo "#!$ls" >reflect
6507 chmod +x,u+s reflect
6510 echo '"su" will (probably) prompt you for '"$ans's password."
6511 su $ans -c './reflect >flect'
6512 if $contains "/dev/fd" flect >/dev/null; then
6513 echo "Okay, it looks like setuid scripts are secure." >&4
6516 echo "I don't think setuid scripts are secure." >&4
6521 rp='Does your kernel have *secure* setuid scripts?'
6524 [yY]*) val="$define";;
6529 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6530 echo "(That's for file descriptors, not floppy disks.)"
6536 $rm -f reflect flect
6538 : now see if they want to do setuid emulation
6541 case "$d_suidsafe" in
6544 echo "No need to emulate SUID scripts since they are secure here." >& 4
6548 Some systems have disabled setuid scripts, especially systems where
6549 setuid scripts cannot be secure. On systems where setuid scripts have
6550 been disabled, the setuid/setgid bits on scripts are currently
6551 useless. It is possible for $package to detect those bits and emulate
6552 setuid/setgid in a secure fashion. This emulation will only work if
6553 setuid scripts have been disabled in your kernel.
6557 "$define") dflt=y ;;
6560 rp="Do you want to do setuid/setgid emulation?"
6563 [yY]*) val="$define";;
6571 : see if this is a malloc.h system
6572 set malloc.h i_malloc
6575 : see if stdlib is available
6576 set stdlib.h i_stdlib
6579 : determine which malloc to compile in
6581 case "$usemymalloc" in
6582 [yY]*|true|$define) dflt='y' ;;
6583 [nN]*|false|$undef) dflt='n' ;;
6584 *) case "$ptrsize" in
6590 rp="Do you wish to attempt to use the malloc that comes with $package?"
6596 mallocsrc='malloc.c'
6597 mallocobj="malloc$_o"
6598 d_mymalloc="$define"
6601 : Remove malloc from list of libraries to use
6602 echo "Removing unneeded -lmalloc from library list" >&4
6603 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6606 echo "libs = $libs" >&4
6618 : compute the return types of malloc and free
6620 $cat >malloc.c <<END
6624 #include <sys/types.h>
6638 case "$malloctype" in
6640 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6647 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6651 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6658 echo "Your system uses $freetype free(), it would seem." >&4
6662 After $package is installed, you may wish to install various
6663 add-on modules and utilities. Typically, these add-ons will
6664 be installed under $prefix with the rest
6665 of this package. However, you may wish to install such add-ons
6666 elsewhere under a different prefix.
6668 If you do not wish to put everything under a single prefix, that's
6669 ok. You will be prompted for the individual locations; this siteprefix
6670 is only used to suggest the defaults.
6672 The default should be fine for most people.
6676 rp='Installation prefix to use for add-on modules and utilities?'
6677 : XXX Here might be another good place for an installstyle setting.
6678 case "$siteprefix" in
6680 *) dflt=$siteprefix ;;
6683 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6685 case "$siteprefix" in
6689 *) oldsiteprefix="$prefix";;
6694 siteprefixexp="$ansexp"
6696 : determine where site specific libraries go.
6697 : Usual default is /usr/local/lib/perl5/site_perl/$version
6698 : The default "style" setting is made in installstyle.U
6699 : XXX No longer works with Prefixit stuff.
6700 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6702 '') case "$installstyle" in
6703 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6704 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6712 The installation process will create a directory for
6713 site-specific extensions and modules. Most users find it convenient
6714 to place all site-specific files in this directory rather than in the
6715 main distribution directory.
6719 rp='Pathname for the site-specific library files?'
6722 sitelibexp="$ansexp"
6723 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6724 : Change installation prefix, if necessary.
6725 if $test X"$prefix" != X"$installprefix"; then
6726 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6728 installsitelib="$sitelibexp"
6731 : determine where site specific architecture-dependent libraries go.
6732 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6733 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6734 : sitelib may have an optional trailing /share.
6736 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6737 dflt="$dflt/$archname"
6742 set sitearch sitearch none
6746 The installation process will also create a directory for
6747 architecture-dependent site-specific extensions and modules.
6751 rp='Pathname for the site-specific architecture-dependent library files?'
6754 sitearchexp="$ansexp"
6755 : Change installation prefix, if necessary.
6756 if $test X"$prefix" != X"$installprefix"; then
6757 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6759 installsitearch="$sitearchexp"
6764 The installation process will also create a directory for
6765 vendor-supplied add-ons. Vendors who supply perl with their system
6766 may find it convenient to place all vendor-supplied files in this
6767 directory rather than in the main distribution directory. This will
6768 ease upgrades between binary-compatible maintenance versions of perl.
6770 Of course you may also use these directories in whatever way you see
6771 fit. For example, you might use them to access modules shared over a
6772 company-wide network.
6774 The default answer should be fine for most people.
6775 This causes further questions about vendor add-ons to be skipped
6776 and no vendor-specific directories will be configured for perl.
6779 rp='Do you want to configure vendor-specific add-on directories?'
6780 case "$usevendorprefix" in
6781 define|true|[yY]*) dflt=y ;;
6782 *) : User may have set vendorprefix directly on Configure command line.
6783 case "$vendorprefix" in
6792 rp='Installation prefix to use for vendor-supplied add-ons?'
6793 case "$vendorprefix" in
6795 *) dflt=$vendorprefix ;;
6798 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6800 case "$vendorprefix" in
6804 *) oldvendorprefix="$prefix";;
6808 usevendorprefix="$define"
6810 vendorprefixexp="$ansexp"
6812 *) usevendorprefix="$undef"
6818 case "$vendorprefix" in
6819 '') d_vendorlib="$undef"
6823 *) d_vendorlib="$define"
6824 : determine where vendor-supplied modules go.
6825 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6826 case "$vendorlib" in
6828 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6829 case "$installstyle" in
6830 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6831 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6834 *) dflt="$vendorlib"
6838 rp='Pathname for the vendor-supplied library files?'
6841 vendorlibexp="$ansexp"
6844 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6845 : Change installation prefix, if necessary.
6846 if $test X"$prefix" != X"$installprefix"; then
6847 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6849 installvendorlib="$vendorlibexp"
6852 case "$vendorprefix" in
6853 '') d_vendorarch="$undef"
6857 *) d_vendorarch="$define"
6858 : determine where vendor-supplied architecture-dependent libraries go.
6859 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6860 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6861 : vendorlib may have an optional trailing /share.
6862 case "$vendorarch" in
6863 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6864 dflt="$dflt/$archname"
6866 *) dflt="$vendorarch" ;;
6869 rp='Pathname for vendor-supplied architecture-dependent files?'
6872 vendorarchexp="$ansexp"
6875 : Change installation prefix, if necessary.
6876 if $test X"$prefix" != X"$installprefix"; then
6877 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6879 installvendorarch="$vendorarchexp"
6882 : Final catch-all directories to search
6885 Lastly, you can have perl look in other directories for extensions and
6886 modules in addition to those already specified.
6887 These directories will be searched after
6891 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6892 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6894 case "$otherlibdirs" in
6895 ''|' ') dflt='none' ;;
6896 *) dflt="$otherlibdirs" ;;
6899 Enter a colon-separated set of extra paths to include in perl's @INC
6900 search path, or enter 'none' for no extra paths.
6904 rp='Colon-separated list of additional directories for perl to search?'
6907 ' '|''|none) otherlibdirs=' ' ;;
6908 *) otherlibdirs="$ans" ;;
6910 case "$otherlibdirs" in
6914 set d_perl_otherlibdirs
6917 : Cruising for prototypes
6919 echo "Checking out function prototypes..." >&4
6920 $cat >prototype.c <<'EOCP'
6921 int main(int argc, char *argv[]) {
6924 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6925 echo "Your C compiler appears to support function prototypes."
6928 echo "Your C compiler doesn't seem to understand function prototypes."
6935 case "$prototype" in
6937 *) ansi2knr='ansi2knr'
6942 This version of $package can only be compiled by a compiler that
6943 understands function prototypes. Unfortunately, your C compiler
6945 doesn't seem to understand them. Sorry about that.
6947 If GNU cc is available for your system, perhaps you could try that instead.
6949 Eventually, we hope to support building Perl with pre-ANSI compilers.
6950 If you would like to help in that effort, please contact <perlbug@perl.org>.
6952 Aborting Configure now.
6958 : determine where public executables go
6963 rp='Pathname where the public executables will reside?'
6965 if $test "X$ansexp" != "X$binexp"; then
6970 : Change installation prefix, if necessary.
6971 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6972 if $test X"$prefix" != X"$installprefix"; then
6973 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6975 installbin="$binexp"
6978 : Find perl5.005 or later.
6979 echo "Looking for a previously installed perl5.005 or later... "
6981 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6982 : Check if this perl is recent and can load a simple module
6983 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6986 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6996 '') echo "None found. That's ok.";;
6997 *) echo "Using $perl5." ;;
7000 : Determine list of previous versions to include in @INC
7001 $cat > getverlist <<EOPL
7004 \$api_versionstring = "$api_versionstring";
7005 \$version = "$version";
7006 \$stem = "$sitelib_stem";
7007 \$archname = "$archname";
7009 $cat >> getverlist <<'EOPL'
7010 # Can't have leading @ because metaconfig interprets it as a command!
7011 ;@inc_version_list=();
7012 # XXX Redo to do opendir/readdir?
7015 ;@candidates = glob("5.*");
7021 # XXX ToDo: These comparisons must be reworked when two-digit
7022 # subversions come along, so that 5.7.10 compares as greater than
7023 # 5.7.3! By that time, hope that 5.6.x is sufficiently
7024 # widespread that we can use the built-in version vectors rather
7025 # than reinventing them here. For 5.6.0, however, we must
7026 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
7027 foreach $d (@candidates) {
7028 if ($d lt $version) {
7029 if ($d ge $api_versionstring) {
7030 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7032 elsif ($d ge "5.005") {
7033 unshift(@inc_version_list, grep { -d } $d);
7037 # Skip newer version. I.e. don't look in
7038 # 5.7.0 if we're installing 5.6.1.
7042 if (@inc_version_list) {
7043 print join(' ', @inc_version_list);
7046 # Blank space to preserve value for next Configure run.
7051 case "$inc_version_list" in
7052 '') if test -x "$perl5$exe_ext"; then
7053 dflt=`$perl5 getverlist`
7058 $undef) dflt='none' ;;
7059 *) eval dflt=\"$inc_version_list\" ;;
7062 ''|' ') dflt=none ;;
7065 5.005) case "$bincompat5005" in
7066 $define|true|[yY]*) ;;
7073 In order to ease the process of upgrading, this version of perl
7074 can be configured to use modules built and installed with earlier
7075 versions of perl that were installed under $prefix. Specify here
7076 the list of earlier versions that this version of perl should check.
7077 If Configure detected no earlier versions of perl installed under
7078 $prefix, then the list will be empty. Answer 'none' to tell perl
7079 to not search earlier versions.
7081 The default should almost always be sensible, so if you're not sure,
7082 just accept the default.
7085 rp='List of earlier versions to include in @INC?'
7088 [Nn]one|''|' ') inc_version_list=' ' ;;
7089 *) inc_version_list="$ans" ;;
7091 case "$inc_version_list" in
7093 inc_version_list_init='0';;
7094 *) inc_version_list_init=`echo $inc_version_list |
7095 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7100 : determine whether to install perl also as /usr/bin/perl
7103 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7105 Many scripts expect perl to be installed as /usr/bin/perl.
7106 I can install the perl you are about to compile also as /usr/bin/perl
7107 (in addition to $installbin/perl).
7109 case "$installusrbinperl" in
7110 "$undef"|[nN]*) dflt='n';;
7113 rp="Do you want to install perl as /usr/bin/perl?"
7116 [yY]*) val="$define";;
7122 set installusrbinperl
7125 : see if dld is available
7129 : see if dlopen exists
7136 : determine which dynamic loading, if any, to compile in
7138 dldir="ext/DynaLoader"
7151 $define) dflt='y' ;;
7154 $define) dflt='y' ;;
7156 : Does a dl_xxx.xs file exist for this operating system
7157 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7160 rp="Do you wish to use dynamic loading?"
7167 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7168 dflt="$dldir/dl_${osname}.xs"
7169 elif $test "$d_dlopen" = "$define" ; then
7170 dflt="$dldir/dl_dlopen.xs"
7171 elif $test "$i_dld" = "$define" ; then
7172 dflt="$dldir/dl_dld.xs"
7177 *) dflt="$dldir/$dlsrc"
7180 echo "The following dynamic loading files are available:"
7181 : Can not go over to $dldir because getfile has path hard-coded in.
7182 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7183 rp="Source file to use for dynamic loading"
7189 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7193 Some systems may require passing special flags to $cc -c to
7194 compile modules that will be used to create a shared library.
7195 To use no flags, say "none".
7198 case "$cccdlflags" in
7199 '') case "$gccversion" in
7200 '') case "$osname" in
7202 next) dflt='none' ;;
7203 irix*) dflt='-KPIC' ;;
7204 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7205 sunos) dflt='-pic' ;;
7209 *) case "$osname" in
7210 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7215 *) dflt="$cccdlflags" ;;
7217 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7220 none) cccdlflags=' ' ;;
7221 *) cccdlflags="$ans" ;;
7226 Some systems use ld to create libraries that can be dynamically loaded,
7227 while other systems (such as those using ELF) use $cc.
7231 '') $cat >try.c <<'EOM'
7232 /* Test for whether ELF binaries are produced */
7237 int i = open("a.out",O_RDONLY);
7240 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7241 exit(0); /* succeed (yes, it's ELF) */
7246 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7248 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7252 echo "I'll use ld to build dynamic libraries."
7261 rp="What command should be used to create dynamic libraries?"
7267 Some systems may require passing special flags to $ld to create a
7268 library that can be dynamically loaded. If your ld flags include
7269 -L/other/path options to locate libraries outside your loader's normal
7270 search path, you may need to specify those -L options here as well. To
7271 use no flags, say "none".
7274 case "$lddlflags" in
7275 '') case "$osname" in
7276 beos) dflt='-nostart' ;;
7278 case "$gccversion" in
7279 '') dflt="$dflt +vnocompatwarnings" ;;
7282 linux|irix*) dflt='-shared' ;;
7283 next) dflt='none' ;;
7284 solaris) dflt='-G' ;;
7285 sunos) dflt='-assert nodefinitions' ;;
7286 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7290 *) dflt="$lddlflags" ;;
7293 : Try to guess additional flags to pick up local libraries.
7294 : Be careful not to append to a plain 'none'
7298 for thisflag in $ldflags; do
7303 *) dflt="$dflt $thisflag" ;;
7310 ''|' ') dflt='none' ;;
7313 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7316 none) lddlflags=' ' ;;
7317 *) lddlflags="$ans" ;;
7322 Some systems may require passing special flags to $cc to indicate that
7323 the resulting executable will use dynamic linking. To use no flags,
7327 case "$ccdlflags" in
7328 '') case "$osname" in
7329 hpux) dflt='-Wl,-E' ;;
7330 linux) dflt='-rdynamic' ;;
7331 next) dflt='none' ;;
7332 sunos) dflt='none' ;;
7336 *) dflt="$ccdlflags" ;;
7338 rp="Any special flags to pass to $cc to use dynamic linking?"
7341 none) ccdlflags=' ' ;;
7342 *) ccdlflags="$ans" ;;
7356 # No dynamic loading being used, so don't bother even to prompt.
7359 *) case "$useshrplib" in
7360 '') case "$osname" in
7361 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7363 also='Building a shared libperl is required for dynamic loading to work on your system.'
7368 also='Building a shared libperl is needed for MAB support.'
7386 The perl executable is normally obtained by linking perlmain.c with
7387 libperl${_a}, any static extensions (usually just DynaLoader), and
7388 any other libraries needed on this system (such as -lm, etc.). Since
7389 your system supports dynamic loading, it is probably possible to build
7390 a shared libperl.$so. If you will have more than one executable linked
7391 to libperl.$so, this will significantly reduce the size of each
7392 executable, but it may have a noticeable affect on performance. The
7393 default is probably sensible for your system.
7397 rp="Build a shared libperl.$so (y/n)"
7401 useshrplib='true' ;;
7402 *) useshrplib='false' ;;
7407 case "$useshrplib" in
7411 # Figure out a good name for libperl.so. Since it gets stored in
7412 # a version-specific architecture-dependent library, the version
7413 # number isn't really that important, except for making cc/ld happy.
7415 # A name such as libperl.so.3.1
7416 majmin="libperl.$so.$patchlevel.$subversion"
7417 # A name such as libperl.so.301
7418 majonly=`echo $patchlevel $subversion |
7419 $awk '{printf "%d%02d", $1, $2}'`
7420 majonly=libperl.$so.$majonly
7421 # I'd prefer to keep the os-specific stuff here to a minimum, and
7422 # rely on figuring it out from the naming of libc.
7423 case "${osname}${osvers}" in
7426 # XXX How handle the --version stuff for MAB?
7428 linux*) # ld won't link with a bare -lperl otherwise.
7431 cygwin*) # include version
7432 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7434 *) # Try to guess based on whether libc has major.minor.
7436 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7437 *libc.$so.[0-9]*) dflt=$majonly ;;
7438 *) dflt=libperl.$so ;;
7448 I need to select a good name for the shared libperl. If your system uses
7449 library names with major and minor numbers, then you might want something
7450 like $majmin. Alternatively, if your system uses a single version
7451 number for shared libraries, then you might want to use $majonly.
7452 Or, your system might be quite happy with a simple libperl.$so.
7454 Since the shared libperl will get installed into a version-specific
7455 architecture-dependent directory, the version number of the shared perl
7456 library probably isn't important, so the default should be o.k.
7459 rp='What name do you want to give to the shared libperl?'
7462 echo "Ok, I'll use $libperl"
7465 libperl="libperl${_a}"
7469 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7473 WARNING: Use of the shrpdir variable for the installation location of
7474 the shared $libperl is not supported. It was never documented and
7475 will not work in this version. Let me (perlbug@perl.org)
7476 know of any problems this may cause.
7482 But your current setting of $shrpdir is
7483 the default anyway, so it's harmless.
7488 Further, your current attempted setting of $shrpdir
7489 conflicts with the value of $archlibexp/CORE
7490 that installperl will use.
7497 # How will the perl executable find the installed shared $libperl?
7498 # Add $xxx to ccdlflags.
7499 # If we can't figure out a command-line option, use $shrpenv to
7500 # set env LD_RUN_PATH. The main perl makefile uses this.
7501 shrpdir=$archlibexp/CORE
7504 if "$useshrplib"; then
7507 # We'll set it in Makefile.SH...
7513 xxx="-Wl,-R$shrpdir"
7515 linux|irix*|dec_osf)
7516 xxx="-Wl,-rpath,$shrpdir"
7519 # next doesn't like the default...
7522 # beos doesn't like the default, either.
7525 # hpux doesn't like the default, either.
7526 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7529 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7535 # Only add $xxx if it isn't already in ccdlflags.
7536 case " $ccdlflags " in
7538 *) ccdlflags="$ccdlflags $xxx"
7541 Adding $xxx to the flags
7542 passed to $ld so that the perl executable will find the
7543 installed shared $libperl.
7551 # Fix ccdlflags in AIX for building external extensions.
7552 # (For building Perl itself bare -bE:perl.exp is needed,
7553 # Makefile.SH takes care of this.)
7555 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7557 # Respect a hint or command-line value.
7559 '') shrpenv="$tmp_shrpenv" ;;
7561 case "$ldlibpthname" in
7562 '') ldlibpthname=LD_LIBRARY_PATH ;;
7563 none) ldlibpthname='' ;;
7566 : determine where manual pages are on this system
7570 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7571 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7572 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7573 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7574 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7575 sysman=`./loc . /usr/man/man1 $syspath`
7578 if $test -d "$sysman"; then
7579 echo "System manual is in $sysman." >&4
7581 echo "Could not find manual pages in source form." >&4
7584 : determine where manual pages go
7585 set man1dir man1dir none
7589 $spackage has manual pages available in source form.
7593 echo "However, you don't have nroff, so they're probably useless to you."
7595 '') man1dir="none";;
7598 echo "If you don't want the manual sources installed, answer 'none'."
7603 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7604 lookpath="$lookpath $prefixexp/man/p_man/man1"
7605 lookpath="$lookpath $prefixexp/man/u_man/man1"
7606 lookpath="$lookpath $prefixexp/man/man.1"
7608 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7609 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7619 rp="Where do the main $spackage manual pages (source) go?"
7621 if $test "X$man1direxp" != "X$ansexp"; then
7625 man1direxp="$ansexp"
7631 : Change installation prefix, if necessary.
7632 if $test X"$prefix" != X"$installprefix"; then
7633 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7635 installman1dir="$man1direxp"
7638 : What suffix to use on installed man pages
7645 rp="What suffix should be used for the main $spackage man pages?"
7647 '') case "$man1dir" in
7661 *) dflt="$man1ext";;
7668 : see if we can have long filenames
7670 first=123456789abcdef
7672 if (echo hi >$first) 2>/dev/null; then
7673 if $test -f 123456789abcde; then
7674 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7677 echo 'You can have filenames longer than 14 characters.'>&4
7682 You can't have filenames longer than 14 chars.
7683 You can't even think about them!
7689 $rm -rf 123456789abcde*
7691 : determine where library module manual pages go
7692 set man3dir man3dir none
7696 $spackage has manual pages for many of the library modules.
7702 However, you don't have nroff, so they're probably useless to you.
7705 '') man3dir="none";;
7709 case "$d_flexfnam" in
7712 However, your system can't handle the long file names like File::Basename.3.
7715 '') man3dir="none";;
7719 echo "If you don't want the manual sources installed, answer 'none'."
7720 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7722 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7723 if $test -d "$privlib/man/man3"; then
7726 WARNING: Previous versions of perl installed man3 pages into
7727 $privlib/man/man3. This version will suggest a
7728 new default of $dflt.
7732 rp='Do you wish to preserve the old behavior?(y/n)'
7735 y*) dflt="$privlib/man/man3" ;;
7740 *) dflt="$man3dir" ;;
7747 rp="Where do the $package library man pages (source) go?"
7750 man3direxp="$ansexp"
7756 : Change installation prefix, if necessary.
7757 if $test X"$prefix" != X"$installprefix"; then
7758 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7760 installman3dir="$man3direxp"
7763 : What suffix to use on installed man pages
7769 rp="What suffix should be used for the $package library man pages?"
7771 '') case "$man3dir" in
7785 *) dflt="$man3ext";;
7792 : see if we have to deal with yellow pages, now NIS.
7793 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7794 if $test -f /usr/etc/nibindd; then
7796 echo "I'm fairly confident you're on a NeXT."
7798 rp='Do you get the hosts file via NetInfo?'
7807 y*) hostcat='nidump hosts .';;
7808 *) case "$hostcat" in
7809 nidump*) hostcat='';;
7819 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7827 rp='Are you getting the hosts file via yellow pages?'
7830 y*) hostcat='ypcat hosts';;
7831 *) hostcat='cat /etc/hosts';;
7837 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7840 '') test -f /etc/group && groupcat='cat /etc/group';;
7843 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7846 : now get the host name
7848 echo "Figuring out host name..." >&4
7849 case "$myhostname" in
7851 echo 'Maybe "hostname" will work...'
7852 if tans=`sh -c hostname 2>&1` ; then
7860 if $test "$cont"; then
7862 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7863 if tans=`cat /etc/systemid 2>&1` ; then
7865 phostname='cat /etc/systemid'
7866 echo "Whadyaknow. Xenix always was a bit strange..."
7869 elif $test -r /etc/systemid; then
7870 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7873 if $test "$cont"; then
7874 echo 'No, maybe "uuname -l" will work...'
7875 if tans=`sh -c 'uuname -l' 2>&1` ; then
7877 phostname='uuname -l'
7879 echo 'Strange. Maybe "uname -n" will work...'
7880 if tans=`sh -c 'uname -n' 2>&1` ; then
7882 phostname='uname -n'
7884 echo 'Oh well, maybe I can mine it out of whoami.h...'
7885 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7886 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7887 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7889 case "$myhostname" in
7890 '') echo "Does this machine have an identity crisis or something?"
7893 echo "Well, you said $myhostname before..."
7894 phostname='echo $myhostname';;
7900 : you do not want to know about this
7905 if $test "$myhostname" ; then
7907 rp='Your host name appears to be "'$myhostname'".'" Right?"
7915 : bad guess or no guess
7916 while $test "X$myhostname" = X ; do
7918 rp="Please type the (one word) name of your host:"
7923 : translate upper to lower if necessary
7924 case "$myhostname" in
7926 echo "(Normalizing case in your host name)"
7927 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7931 case "$myhostname" in
7933 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7934 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7935 echo "(Trimming domain name from host name--host name is now $myhostname)"
7937 *) case "$mydomain" in
7940 test "X$hostcat" = "Xypcat hosts" &&
7941 ypmatch "$myhostname" hosts 2>/dev/null |\
7942 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7945 test "X$hostcat" != "X" &&
7946 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7947 /[ ]$myhostname[ . ]/p" > hosts
7950 if $test -f hosts; then
7951 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7952 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7953 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7954 hosts | $sort | $uniq | \
7955 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7956 case `$echo X$dflt` in
7957 X*\ *) echo "(Several hosts in the database matched hostname)"
7960 X.) echo "(You do not have fully-qualified names in the hosts database)"
7964 echo "(I cannot locate a hosts database anywhere)"
7969 tans=`./loc resolv.conf X /etc /usr/etc`
7970 if $test -f "$tans"; then
7971 echo "(Attempting domain name extraction from $tans)"
7972 dflt=.`$sed -n -e 's/ / /g' \
7973 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7974 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7976 .) dflt=.`$sed -n -e 's/ / /g' \
7977 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7978 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7985 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7986 dflt=.`sh -c domainname 2>/dev/null`
7989 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7993 case "$dflt$osname" in
7994 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7995 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7999 .) echo "(Lost all hope -- silly guess then)"
8005 *) dflt="$mydomain";;
8009 rp="What is your domain name?"
8019 : translate upper to lower if necessary
8022 echo "(Normalizing case in your domain name)"
8023 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8027 : a little sanity check here
8028 case "$phostname" in
8031 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8032 $myhostname$mydomain|$myhostname) ;;
8034 case "$phostname" in
8036 echo "(That doesn't agree with your whoami.h file, by the way.)"
8039 echo "(That doesn't agree with your $phostname command, by the way.)"
8049 I need to get your e-mail address in Internet format if possible, i.e.
8050 something like user@host.domain. Please answer accurately since I have
8051 no easy means to double check it. The default value provided below
8052 is most probably close to reality but may not be valid from outside
8053 your organization...
8057 while test "$cont"; do
8059 '') dflt="$cf_by@$myhostname$mydomain";;
8060 *) dflt="$cf_email";;
8062 rp='What is your e-mail address?'
8068 rp='Address does not look like an Internet one. Use it anyway?'
8084 If you or somebody else will be maintaining perl at your site, please
8085 fill in the correct e-mail address here so that they may be contacted
8086 if necessary. Currently, the "perlbug" program included with perl
8087 will send mail to this address in addition to perlbug@perl.org. You may
8088 enter "none" for no administrator.
8091 case "$perladmin" in
8092 '') dflt="$cf_email";;
8093 *) dflt="$perladmin";;
8095 rp='Perl administrator e-mail address'
8099 : determine whether to only install version-specific parts.
8102 Do you want to install only the version-specific parts of the perl
8103 distribution? Usually you do *not* want to do this.
8105 case "$versiononly" in
8106 "$define"|[Yy]*|true) dflt='y' ;;
8109 rp="Do you want to install only the version-specific parts of perl?"
8112 [yY]*) val="$define";;
8118 : figure out how to guarantee perl startup
8119 case "$startperl" in
8121 case "$sharpbang" in
8125 I can use the #! construct to start perl on your system. This will
8126 make startup of perl scripts faster, but may cause problems if you
8127 want to share those scripts and perl is not in a standard place
8128 ($binexp/perl) on all your platforms. The alternative is to force
8129 a shell by starting the script with a single ':' character.
8132 case "$versiononly" in
8133 "$define") dflt="$binexp/perl$version";;
8134 *) dflt="$binexp/perl";;
8136 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8139 none) startperl=": # use perl";;
8140 *) startperl="#!$ans"
8141 if $test 30 -lt `echo "$ans" | wc -c`; then
8144 WARNING: Some systems limit the #! command to 32 characters.
8145 If you experience difficulty running Perl scripts with #!, try
8146 installing Perl in a directory with a shorter pathname.
8152 *) startperl=": # use perl"
8157 echo "I'll use $startperl to start perl scripts."
8159 : figure best path for perl in scripts
8162 perlpath="$binexp/perl"
8163 case "$startperl" in
8168 I will use the "eval 'exec'" idiom to start Perl on your system.
8169 I can use the full path of your Perl binary for this purpose, but
8170 doing so may cause problems if you want to share those scripts and
8171 Perl is not always in a standard place ($binexp/perl).
8175 rp="What path shall I use in \"eval 'exec'\"?"
8182 case "$startperl" in
8184 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8187 : determine where public executable scripts go
8188 set scriptdir scriptdir
8190 case "$scriptdir" in
8193 : guess some guesses
8194 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8195 $test -d /usr/share/bin && dflt=/usr/share/bin
8196 $test -d /usr/local/script && dflt=/usr/local/script
8197 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8198 $test -d $prefixexp/script && dflt=$prefixexp/script
8202 *) dflt="$scriptdir"
8207 Some installations have a separate directory just for executable scripts so
8208 that they can mount it across multiple architectures but keep the scripts in
8209 one spot. You might, for example, have a subdirectory of /usr/share for this.
8210 Or you might just lump your scripts in with all your other executables.
8214 rp='Where do you keep publicly executable scripts?'
8216 if $test "X$ansexp" != "X$scriptdirexp"; then
8220 scriptdirexp="$ansexp"
8221 : Change installation prefix, if necessary.
8222 if $test X"$prefix" != X"$installprefix"; then
8223 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8225 installscript="$scriptdirexp"
8228 : determine where add-on public executables go
8230 '') dflt=$siteprefix/bin ;;
8234 rp='Pathname where the add-on public executables should be installed?'
8237 sitebinexp="$ansexp"
8238 : Change installation prefix, if necessary.
8239 if $test X"$prefix" != X"$installprefix"; then
8240 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8242 installsitebin="$sitebinexp"
8245 case "$vendorprefix" in
8246 '') d_vendorbin="$undef"
8250 *) d_vendorbin="$define"
8251 : determine where vendor-supplied executables go.
8252 case "$vendorbin" in
8253 '') dflt=$vendorprefix/bin ;;
8254 *) dflt="$vendorbin" ;;
8257 rp='Pathname for the vendor-supplied executables directory?'
8260 vendorbinexp="$ansexp"
8263 : Change installation prefix, if necessary.
8264 if $test X"$prefix" != X"$installprefix"; then
8265 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8267 installvendorbin="$vendorbinexp"
8270 : see if qgcvt exists
8276 if $test X"$d_longdbl" = X"$define"; then
8278 echo "Checking how to print long doubles..." >&4
8280 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8281 $cat >try.c <<'EOCP'
8282 #include <sys/types.h>
8286 printf("%.3f\n", d);
8290 if eval $compile; then
8294 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8295 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8296 echo "We will use %f."
8302 if $test X"$sPRIfldbl" = X; then
8303 $cat >try.c <<'EOCP'
8304 #include <sys/types.h>
8307 long double d = 123.456;
8308 printf("%.3Lf\n", d);
8312 if eval $compile; then
8316 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8317 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8318 echo "We will use %Lf."
8324 if $test X"$sPRIfldbl" = X; then
8325 $cat >try.c <<'EOCP'
8326 #include <sys/types.h>
8329 long double d = 123.456;
8330 printf("%.3llf\n", d);
8334 if eval $compile; then
8338 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8339 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8340 echo "We will use %llf."
8346 if $test X"$sPRIfldbl" = X; then
8347 $cat >try.c <<'EOCP'
8348 #include <sys/types.h>
8351 long double d = 123.456;
8352 printf("%.3lf\n", d);
8356 if eval $compile; then
8360 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8361 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8362 echo "We will use %lf."
8368 if $test X"$sPRIfldbl" = X; then
8369 echo "Cannot figure out how to print long doubles." >&4
8371 sSCNfldbl=$sPRIfldbl # expect consistency
8378 case "$sPRIfldbl" in
8379 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8380 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8381 d_SCNfldbl="$undef";
8383 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8384 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8385 d_SCNfldbl="$define";
8389 : Check how to convert floats to strings.
8391 echo "Checking for an efficient way to convert floats to strings."
8393 case "$uselongdouble" in
8394 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8396 case "$d_longdbl" in
8397 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8399 case "$d_PRIgldbl" in
8400 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8404 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8405 char *myname = "gconvert";
8408 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8409 char *myname = "gcvt";
8412 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8413 char *myname = "qgcvt";
8414 #define DOUBLETYPE long double
8417 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8418 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8420 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8422 char *myname = "sprintf";
8426 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8427 #define DOUBLETYPE long double
8429 #define DOUBLETYPE double
8435 #define I_STDLIB $i_stdlib
8441 checkit(expect, got)
8445 if (strcmp(expect, got)) {
8446 printf("%s oddity: Expected %s, got %s\n",
8447 myname, expect, got);
8457 /* This must be 1st test on (which?) platform */
8458 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8459 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8460 checkit("0.1", buf);
8462 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8465 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8466 checkit("1.1", buf);
8468 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8469 checkit("1.01", buf);
8471 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8472 checkit("1.001", buf);
8474 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8475 checkit("1.0001", buf);
8477 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8478 checkit("1.00001", buf);
8480 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8481 checkit("1.000001", buf);
8483 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8486 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8489 /* Some Linux gcvt's give 1.e+5 here. */
8490 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8491 checkit("100000", buf);
8493 /* Some Linux gcvt's give -1.e+5 here. */
8494 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8495 checkit("-100000", buf);
8497 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8498 checkit("123.456", buf);
8500 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8501 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8502 if (strlen(buf) > 5)
8503 checkit("1e+030", buf); /* for Microsoft */
8505 checkit("1e+30", buf);
8510 case "$d_Gconvert" in
8511 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8512 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8513 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8514 *) xxx_list='gconvert gcvt sprintf' ;;
8517 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8518 "$define$define$define")
8519 # for long doubles prefer first qgcvt, then sprintf
8520 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8521 xxx_list="sprintf $xxx_list"
8523 "$define") xxx_list="qgcvt $xxx_list" ;;
8528 for xxx_convert in $xxx_list; do
8529 echo "Trying $xxx_convert..."
8531 set try -DTRY_$xxx_convert
8532 if eval $compile; then
8533 echo "$xxx_convert() found." >&4
8535 echo "I'll use $xxx_convert to convert floats into a string." >&4
8538 echo "...But $xxx_convert didn't work as I expected."
8541 echo "$xxx_convert NOT found." >&4
8545 case "$xxx_convert" in
8546 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8547 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8548 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8549 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8550 "$define$define$define")
8551 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8552 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8557 : see if _fwalk exists
8561 : Initialize h_fcntl
8564 : Initialize h_sysfile
8567 : access call always available on UNIX
8571 : locate the flags for 'access()'
8575 $cat >access.c <<'EOCP'
8576 #include <sys/types.h>
8581 #include <sys/file.h>
8590 : check sys/file.h first, no particular reason here
8591 if $test `./findhdr sys/file.h` && \
8592 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8594 echo "<sys/file.h> defines the *_OK access constants." >&4
8595 elif $test `./findhdr fcntl.h` && \
8596 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8598 echo "<fcntl.h> defines the *_OK access constants." >&4
8599 elif $test `./findhdr unistd.h` && \
8600 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8601 echo "<unistd.h> defines the *_OK access constants." >&4
8603 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8609 : see if accessx exists
8610 set accessx d_accessx
8613 : see if alarm exists
8617 : see if atolf exists
8621 : see if atoll exists
8625 : Look for GNU-cc style attribute checking
8627 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8628 $cat >attrib.c <<'EOCP'
8630 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8632 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8633 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8634 echo "Your C compiler doesn't fully support __attribute__."
8637 echo "Your C compiler supports __attribute__."
8641 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8648 : see if bcmp exists
8652 : see if bcopy exists
8656 : see if this is a unistd.h system
8657 set unistd.h i_unistd
8660 : see if getpgrp exists
8661 set getpgrp d_getpgrp
8664 case "$d_getpgrp" in
8667 echo "Checking to see which flavor of getpgrp is in use..."
8670 #include <sys/types.h>
8672 # include <unistd.h>
8676 if (getuid() == 0) {
8677 printf("(I see you are running Configure as super-user...)\n");
8681 if (getpgrp(1) == 0)
8690 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8691 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8693 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8694 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8697 echo "I can't seem to compile and run the test program."
8699 xxx="a USG one, i.e. you use getpgrp()."
8701 # SVR4 systems can appear rather BSD-ish.
8704 xxx="a BSD one, i.e. you use getpgrp(pid)."
8708 xxx="probably a USG one, i.e. you use getpgrp()."
8713 echo "Assuming your getpgrp is $xxx" >&4
8722 : see if setpgrp exists
8723 set setpgrp d_setpgrp
8726 case "$d_setpgrp" in
8729 echo "Checking to see which flavor of setpgrp is in use..."
8732 #include <sys/types.h>
8734 # include <unistd.h>
8738 if (getuid() == 0) {
8739 printf("(I see you are running Configure as super-user...)\n");
8743 if (-1 == setpgrp(1, 1))
8746 if (setpgrp() != -1)
8752 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8753 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8755 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8756 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8759 echo "(I can't seem to compile and run the test program.)"
8761 xxx="a USG one, i.e. you use setpgrp()."
8763 # SVR4 systems can appear rather BSD-ish.
8766 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8770 xxx="probably a USG one, i.e. you use setpgrp()."
8775 echo "Assuming your setpgrp is $xxx" >&4
8783 : see if bzero exists
8787 : see if signal is declared as pointer to function returning int or void
8789 xxx=`./findhdr signal.h`
8790 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8791 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8792 echo "You have int (*signal())() instead of void." >&4
8794 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8795 echo "You have void (*signal())()." >&4
8797 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8798 echo "You have int (*signal())() instead of void." >&4
8800 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8801 echo "You have void (*signal())()." >&4
8804 case "$d_voidsig" in
8806 echo "I can't determine whether signal handler returns void or int..." >&4
8808 rp="What type does your signal handler return?"
8815 echo "As you already told me, signal handler returns void." >&4
8818 *) echo "As you already told me, signal handler returns int." >&4
8825 case "$d_voidsig" in
8826 "$define") signal_t="void";;
8831 : check for ability to cast large floats to 32-bit ints.
8833 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8834 if $test "$intsize" -ge 4; then
8841 #include <sys/types.h>
8843 $signal_t blech(s) int s; { exit(3); }
8850 signal(SIGFPE, blech);
8852 /* Don't let compiler optimize the test away. Store the number
8853 in a writable string for gcc to pass to sscanf under HP/UX.
8855 sprintf(str, "2147483647");
8856 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8860 /* x86 processors will probably give 0x8000 0000, which is a
8861 sign change. We don't want that. We want to mimic SPARC
8862 behavior here, which is to preserve the sign and give
8865 if (i32 != ($xxx) f)
8871 if eval $compile_ok; then
8875 echo "(I can't seem to compile the test program--assuming it can't)"
8883 echo "Nope, it can't."
8890 : check for ability to cast negative floats to unsigned
8892 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8895 #include <sys/types.h>
8897 $signal_t blech(s) int s; { exit(7); }
8898 $signal_t blech_in_list(s) int s; { exit(4); }
8899 unsigned long dummy_long(p) unsigned long p; { return p; }
8900 unsigned int dummy_int(p) unsigned int p; { return p; }
8901 unsigned short dummy_short(p) unsigned short p; { return p; }
8905 unsigned long along;
8907 unsigned short ashort;
8911 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8912 a direct f = -123. assignment. gcc-2.8.0 reportedly
8913 optimized the whole file away
8915 /* Store the number in a writable string for gcc to pass to
8918 sprintf(str, "-123");
8919 sscanf(str, "%lf", &f); /* f = -123.; */
8921 signal(SIGFPE, blech);
8922 along = (unsigned long)f;
8923 aint = (unsigned int)f;
8924 ashort = (unsigned short)f;
8925 if (along != (unsigned long)-123)
8927 if (aint != (unsigned int)-123)
8929 if (ashort != (unsigned short)-123)
8931 sprintf(str, "1073741824.");
8932 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8935 along = (unsigned long)f;
8936 if (along != 0x80000000)
8940 along = (unsigned long)f;
8941 if (along != 0x7fffffff)
8945 along = (unsigned long)f;
8946 if (along != 0x80000001)
8950 signal(SIGFPE, blech_in_list);
8951 sprintf(str, "123.");
8952 sscanf(str, "%lf", &f); /* f = 123.; */
8953 along = dummy_long((unsigned long)f);
8954 aint = dummy_int((unsigned int)f);
8955 ashort = dummy_short((unsigned short)f);
8956 if (along != (unsigned long)123)
8958 if (aint != (unsigned int)123)
8960 if (ashort != (unsigned short)123)
8967 if eval $compile_ok; then
8971 echo "(I can't seem to compile the test program--assuming it can't)"
8974 case "$castflags" in
8979 echo "Nope, it can't."
8986 : see if vprintf exists
8988 if set vprintf val -f d_vprintf; eval $csym; $val; then
8989 echo 'vprintf() found.' >&4
8992 #include <varargs.h>
8994 int main() { xxx("foo"); }
9003 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9007 if eval $compile && $run ./try; then
9008 echo "Your vsprintf() returns (int)." >&4
9011 echo "Your vsprintf() returns (char*)." >&4
9015 echo 'vprintf() NOT found.' >&4
9026 : see if chown exists
9030 : see if chroot exists
9034 : see if chsize exists
9038 hasstruct='varname=$1; struct=$2; shift; shift;
9039 while $test $# -ge 2; do
9041 $define) echo "#include <$2>";;
9045 echo "int main () { struct $struct foo; }" >> try.c;
9047 if eval $compile; then
9056 : see if sys/types.h has to be included
9057 set sys/types.h i_systypes
9060 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9061 while $test $# -ge 2; do
9063 $define) echo "#include <$2>";;
9067 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9069 if eval $compile; then
9080 : see whether socket exists
9082 $echo $n "Hmm... $c" >&4
9083 if set socket val -f d_socket; eval $csym; $val; then
9084 echo "Looks like you have Berkeley networking support." >&4
9086 if set setsockopt val -f; eval $csym; $val; then
9089 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9093 if $contains socklib libc.list >/dev/null 2>&1; then
9094 echo "Looks like you have Berkeley networking support." >&4
9096 : we will have to assume that it supports the 4.2 BSD interface
9099 echo "You don't have Berkeley networking in libc$_a..." >&4
9100 if test "X$d_socket" = "X$define"; then
9101 echo "...but you seem to believe that you have sockets." >&4
9103 for net in net socket
9105 if test -f /usr/lib/lib$net$_a; then
9106 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9107 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9108 if $contains socket libc.list >/dev/null 2>&1; then
9113 echo "...but the Wollongong group seems to have hacked it in." >&4
9114 sockethdr="-I/usr/netinclude"
9117 echo "Found Berkeley sockets interface in lib$net." >& 4
9118 if $contains setsockopt libc.list >/dev/null 2>&1; then
9121 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9128 if test "X$d_socket" != "X$define"; then
9129 echo "or anywhere else I see." >&4
9137 : see if socketpair exists
9138 set socketpair d_sockpair
9143 echo "Checking the availability of certain socket constants..." >& 4
9144 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9145 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9147 #include <sys/types.h>
9148 #include <sys/socket.h>
9154 set try; if eval $compile; then
9157 set d_${enum}; eval $setvar
9161 : see if this is a sys/uio.h system
9162 set sys/uio.h i_sysuio
9167 echo "Checking to see if your system supports struct cmsghdr..." >&4
9168 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9170 case "$d_cmsghdr_s" in
9171 "$define") echo "Yes, it does." ;;
9172 *) echo "No, it doesn't." ;;
9176 : check for const keyword
9178 echo 'Checking to see if your C compiler knows about "const"...' >&4
9179 $cat >const.c <<'EOCP'
9180 typedef struct spug { int drokk; } spug;
9187 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9189 echo "Yup, it does."
9192 echo "Nope, it doesn't."
9197 : see if crypt exists
9199 if set crypt val -f d_crypt; eval $csym; $val; then
9200 echo 'crypt() found.' >&4
9204 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9205 if $test -z "$cryptlib"; then
9206 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9210 if $test -z "$cryptlib"; then
9211 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9215 if $test -z "$cryptlib"; then
9216 cryptlib=`./loc libcrypt$_a "" $libpth`
9220 if $test -z "$cryptlib"; then
9221 echo 'crypt() NOT found.' >&4
9230 : get csh whereabouts
9232 'csh') val="$undef" ;;
9237 : Respect a hint or command line value for full_csh.
9239 '') full_csh=$csh ;;
9242 : see if cuserid exists
9243 set cuserid d_cuserid
9246 : see if this is a limits.h system
9247 set limits.h i_limits
9250 : see if this is a float.h system
9254 : See if number of significant digits in a double precision number is known
9256 $cat >dbl_dig.c <<EOM
9266 printf("Contains DBL_DIG");
9269 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9270 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9271 echo "DBL_DIG found." >&4
9274 echo "DBL_DIG NOT found." >&4
9281 hasproto='varname=$1; func=$2; shift; shift;
9282 while $test $# -ge 2; do
9284 $define) echo "#include <$2>";;
9288 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9289 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9290 echo "$func() prototype found.";
9293 echo "$func() prototype NOT found.";
9298 $rm -f try.c tryout.c'
9300 : see if dbm.h is available
9301 : see if dbmclose exists
9302 set dbmclose d_dbmclose
9305 case "$d_dbmclose" in
9315 *) set rpcsvc/dbm.h i_rpcsvcdbm
9320 *) echo "We won't be including <dbm.h>"
9330 : see if prototype for dbminit is available
9332 set d_dbminitproto dbminit $i_dbm dbm.h
9335 : see if difftime exists
9336 set difftime d_difftime
9339 : see if this is a dirent system
9341 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9343 echo "<dirent.h> found." >&4
9346 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9347 echo "<sys/dir.h> found." >&4
9350 xinc=`./findhdr sys/ndir.h`
9352 echo "<dirent.h> NOT found." >&4
9357 : Look for type of directory structure.
9359 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9361 case "$direntrytype" in
9364 $define) guess1='struct dirent' ;;
9365 *) guess1='struct direct' ;;
9368 *) guess1="$direntrytype"
9373 'struct dirent') guess2='struct direct' ;;
9374 *) guess2='struct dirent' ;;
9377 if $contains "$guess1" try.c >/dev/null 2>&1; then
9378 direntrytype="$guess1"
9379 echo "Your directory entries are $direntrytype." >&4
9380 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9381 direntrytype="$guess2"
9382 echo "Your directory entries seem to be $direntrytype." >&4
9384 echo "I don't recognize your system's directory entries." >&4
9385 rp="What type is used for directory entries on this system?"
9393 : see if the directory entry stores field length
9395 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9396 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9397 echo "Good, your directory entry keeps length information in d_namlen." >&4
9400 echo "Your directory entry does not know about the d_namlen field." >&4
9407 : see if dlerror exists
9410 set dlerror d_dlerror
9414 : see if dlfcn is available
9422 On a few systems, the dynamically loaded modules that perl generates and uses
9423 will need a different extension than shared libs. The default will probably
9431 rp='What is the extension of dynamically loaded modules'
9440 : Check if dlsym need a leading underscore
9446 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9447 $cat >dyna.c <<'EOM'
9456 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
9458 #include <sys/types.h>
9472 int mode = RTLD_LAZY ;
9474 handle = dlopen("./dyna.$dlext", mode) ;
9475 if (handle == NULL) {
9480 symbol = dlsym(handle, "fred") ;
9481 if (symbol == NULL) {
9482 /* try putting a leading underscore */
9483 symbol = dlsym(handle, "_fred") ;
9484 if (symbol == NULL) {
9497 : Call the object file tmp-dyna.o in case dlext=o.
9498 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9499 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
9500 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
9501 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9504 1) echo "Test program failed using dlopen." >&4
9505 echo "Perhaps you should not use dynamic loading." >&4;;
9506 2) echo "Test program failed using dlsym." >&4
9507 echo "Perhaps you should not use dynamic loading." >&4;;
9508 3) echo "dlsym needs a leading underscore" >&4
9510 4) echo "dlsym doesn't need a leading underscore." >&4;;
9513 echo "I can't compile and run the test program." >&4
9514 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9519 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9524 : see if prototype for drand48 is available
9526 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9529 : see if dup2 exists
9533 : see if eaccess exists
9534 set eaccess d_eaccess
9537 : see if endgrent exists
9538 set endgrent d_endgrent
9541 : see if endhostent exists
9542 set endhostent d_endhent
9545 : see if endnetent exists
9546 set endnetent d_endnent
9549 : see if endprotoent exists
9550 set endprotoent d_endpent
9553 : see if endpwent exists
9554 set endpwent d_endpwent
9557 : see if endservent exists
9558 set endservent d_endsent
9561 : Locate the flags for 'open()'
9563 $cat >try.c <<'EOCP'
9564 #include <sys/types.h>
9569 #include <sys/file.h>
9580 : check sys/file.h first to get FREAD on Sun
9581 if $test `./findhdr sys/file.h` && \
9582 set try -DI_SYS_FILE && eval $compile; then
9584 echo "<sys/file.h> defines the O_* constants..." >&4
9586 echo "and you have the 3 argument form of open()." >&4
9589 echo "but not the 3 argument form of open(). Oh, well." >&4
9592 elif $test `./findhdr fcntl.h` && \
9593 set try -DI_FCNTL && eval $compile; then
9595 echo "<fcntl.h> defines the O_* constants..." >&4
9597 echo "and you have the 3 argument form of open()." >&4
9600 echo "but not the 3 argument form of open(). Oh, well." >&4
9605 echo "I can't find the O_* constant definitions! You got problems." >&4
9611 : see which of string.h or strings.h is needed
9613 strings=`./findhdr string.h`
9614 if $test "$strings" && $test -r "$strings"; then
9615 echo "Using <string.h> instead of <strings.h>." >&4
9619 strings=`./findhdr strings.h`
9620 if $test "$strings" && $test -r "$strings"; then
9621 echo "Using <strings.h> instead of <string.h>." >&4
9623 echo "No string header found -- You'll surely have problems." >&4
9629 "$undef") strings=`./findhdr strings.h`;;
9630 *) strings=`./findhdr string.h`;;
9633 : check for non-blocking I/O stuff
9634 case "$h_sysfile" in
9635 true) echo "#include <sys/file.h>" > head.c;;
9638 true) echo "#include <fcntl.h>" > head.c;;
9639 *) echo "#include <sys/fcntl.h>" > head.c;;
9644 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9645 case "$o_nonblock" in
9648 $cat >>try.c <<'EOCP'
9652 printf("O_NONBLOCK\n");
9656 printf("O_NDELAY\n");
9660 printf("FNDELAY\n");
9667 if eval $compile_ok; then
9668 o_nonblock=`$run ./try`
9669 case "$o_nonblock" in
9670 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9671 *) echo "Seems like we can use $o_nonblock.";;
9674 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9677 *) echo "Using $hint value $o_nonblock.";;
9679 $rm -f try try.* .out core
9682 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9688 #include <sys/types.h>
9691 #define MY_O_NONBLOCK $o_nonblock
9692 #ifndef errno /* XXX need better Configure test */
9703 #include <strings.h>
9705 $signal_t blech(x) int x; { exit(3); }
9707 $cat >> try.c <<'EOCP'
9715 pipe(pd); /* Down: child -> parent */
9716 pipe(pu); /* Up: parent -> child */
9719 close(pd[1]); /* Parent reads from pd[0] */
9720 close(pu[0]); /* Parent writes (blocking) to pu[1] */
9722 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9727 signal(SIGALRM, blech);
9729 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9731 sprintf(string, "%d\n", ret);
9732 write(2, string, strlen(string));
9735 if (errno == EAGAIN) {
9741 if (errno == EWOULDBLOCK)
9742 printf("EWOULDBLOCK\n");
9745 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9746 sleep(2); /* Give it time to close our pipe */
9748 ret = read(pd[0], buf, 1); /* Should read EOF */
9750 sprintf(string, "%d\n", ret);
9751 write(3, string, strlen(string));
9755 close(pd[0]); /* We write to pd[1] */
9756 close(pu[1]); /* We read from pu[0] */
9757 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9758 close(pd[1]); /* Pipe pd is now fully closed! */
9759 exit(0); /* Bye bye, thank you for playing! */
9763 if eval $compile_ok; then
9764 echo "$startsh" >mtry
9765 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9767 ./mtry >/dev/null 2>&1
9769 0) eagain=`$cat try.out`;;
9770 1) echo "Could not perform non-blocking setting!";;
9771 2) echo "I did a successful read() for something that was not there!";;
9772 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9773 4) echo "Could not find F_SETFL!";;
9774 *) echo "Something terribly wrong happened during testing.";;
9776 rd_nodata=`$cat try.ret`
9777 echo "A read() system call with no data present returns $rd_nodata."
9778 case "$rd_nodata" in
9781 echo "(That's peculiar, fixing that to be -1.)"
9787 echo "Forcing errno EAGAIN on read() with no data available."
9791 echo "Your read() sets errno to $eagain when no data is available."
9794 status=`$cat try.err`
9796 0) echo "And it correctly returns 0 to signal EOF.";;
9797 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9798 *) echo "However, your read() returns '$status' on EOF??";;
9801 if test "$status" = "$rd_nodata"; then
9802 echo "WARNING: you can't distinguish between EOF and no data!"
9806 echo "I can't compile the test program--assuming errno EAGAIN will do."
9813 echo "Using $hint value $eagain."
9814 echo "Your read() returns $rd_nodata when no data is present."
9815 case "$d_eofnblk" in
9816 "$define") echo "And you can see EOF because read() returns 0.";;
9817 "$undef") echo "But you can't see EOF status from read() returned value.";;
9819 echo "(Assuming you can't see EOF status from read anyway.)"
9825 $rm -f try try.* .out core head.c mtry
9827 : see if fchmod exists
9831 : see if fchown exists
9835 : see if this is an fcntl system
9840 : See if fcntl-based locking works.
9841 $cat >try.c <<'EOCP'
9846 #if defined(F_SETLK) && defined(F_SETLKW)
9849 fd = open("try.c", O_RDONLY);
9850 flock.l_type = F_RDLCK;
9851 flock.l_whence = SEEK_SET;
9852 flock.l_start = flock.l_len = 0;
9853 retval = fcntl(fd, F_SETLK, &flock);
9855 (retval < 0 ? exit(2) : exit(0));
9861 echo "Checking if fcntl-based file locking works... "
9865 if eval $compile_ok; then
9867 echo "Yes, it seems to work."
9870 echo "Nope, it didn't work."
9874 echo "I'm unable to compile the test program, so I'll assume not."
9879 echo "Nope, since you don't even have fcntl()."
9882 set d_fcntl_can_lock
9887 : see if sys/select.h has to be included
9888 set sys/select.h i_sysselct
9891 : see if we should include time.h, sys/time.h, or both
9893 if test "X$timeincl" = X; then
9894 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9895 $echo $n "I'm now running the test program...$c"
9896 $cat >try.c <<'EOCP'
9897 #include <sys/types.h>
9902 #ifdef SYSTIMEKERNEL
9905 #include <sys/time.h>
9908 #include <sys/select.h>
9917 struct timezone tzp;
9919 if (foo.tm_sec == foo.tm_sec)
9922 if (bar.tv_sec == bar.tv_sec)
9929 for s_timezone in '-DS_TIMEZONE' ''; do
9931 for s_timeval in '-DS_TIMEVAL' ''; do
9932 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9933 for i_time in '' '-DI_TIME'; do
9934 for i_systime in '-DI_SYSTIME' ''; do
9937 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9938 if eval $compile; then
9939 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9943 $echo $n "Succeeded with $flags$c"
9955 *SYSTIMEKERNEL*) i_systimek="$define"
9956 timeincl=`./findhdr sys/time.h`
9957 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9958 *) i_systimek="$undef";;
9961 *I_TIME*) i_time="$define"
9962 timeincl=`./findhdr time.h`" $timeincl"
9963 echo "We'll include <time.h>." >&4;;
9964 *) i_time="$undef";;
9967 *I_SYSTIME*) i_systime="$define"
9968 timeincl=`./findhdr sys/time.h`" $timeincl"
9969 echo "We'll include <sys/time.h>." >&4;;
9970 *) i_systime="$undef";;
9975 : check for fd_set items
9978 Checking to see how well your C compiler handles fd_set and friends ...
9981 #$i_systime I_SYS_TIME
9982 #$i_sysselct I_SYS_SELECT
9983 #$d_socket HAS_SOCKET
9984 #include <sys/types.h>
9986 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9989 #include <sys/time.h>
9992 #include <sys/select.h>
10001 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10009 if eval $compile; then
10010 d_fds_bits="$define"
10012 echo "Well, your system knows about the normal fd_set typedef..." >&4
10013 if $run ./try; then
10014 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10015 d_fd_macros="$define"
10018 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10020 d_fd_macros="$undef"
10024 Hmm, your compiler has some difficulty with fd_set. Checking further...
10027 if eval $compile; then
10028 d_fds_bits="$undef"
10030 echo "Well, your system has some sort of fd_set available..." >&4
10031 if $run ./try; then
10032 echo "and you have the normal fd_set macros." >&4
10033 d_fd_macros="$define"
10036 but not the normal fd_set macros! Gross! More work for me...
10038 d_fd_macros="$undef"
10041 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10043 d_fds_bits="$undef"
10044 d_fd_macros="$undef"
10049 : see if fgetpos exists
10050 set fgetpos d_fgetpos
10053 : see if flock exists
10057 : see if this is a sys/file.h system
10062 : do we need to include sys/file.h ?
10066 if $h_sysfile; then
10068 echo "We'll be including <sys/file.h>." >&4
10071 echo "We won't be including <sys/file.h>." >&4
10081 : see if prototype for flock is available
10083 set d_flockproto flock $i_sysfile sys/file.h
10086 : see if fork exists
10090 : see if pathconf exists
10091 set pathconf d_pathconf
10094 : see if fpathconf exists
10095 set fpathconf d_fpathconf
10099 : check for fpos64_t
10101 echo "Checking to see if you have fpos64_t..." >&4
10104 int main() { fpos64_t x = 7; }
10107 if eval $compile; then
10109 echo "You have fpos64_t."
10112 echo "You do not have fpos64_t."
10113 case "$fpossize" in
10114 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10121 : see if frexpl exists
10122 set frexpl d_frexpl
10125 : see if this is a sys/param system
10126 set sys/param.h i_sysparam
10129 : see if this is a sys/mount.h system
10130 set sys/mount.h i_sysmount
10135 echo "Checking to see if your system supports struct fs_data..." >&4
10136 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10138 case "$d_fs_data_s" in
10139 "$define") echo "Yes, it does." ;;
10140 *) echo "No, it doesn't." ;;
10143 : see if fseeko exists
10144 set fseeko d_fseeko
10146 case "$longsize" in
10147 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10150 : see if fsetpos exists
10151 set fsetpos d_fsetpos
10155 : see if fstatfs exists
10156 set fstatfs d_fstatfs
10160 : see if statvfs exists
10161 set statvfs d_statvfs
10164 : see if fstatvfs exists
10165 set fstatvfs d_fstatvfs
10169 : see if fsync exists
10173 : see if ftello exists
10174 set ftello d_ftello
10176 case "$longsize" in
10177 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10180 : see if getcwd exists
10181 set getcwd d_getcwd
10184 : see if getespwnam exists
10185 set getespwnam d_getespwnam
10189 : see if getfsstat exists
10190 set getfsstat d_getfsstat
10193 : see if getgrent exists
10194 set getgrent d_getgrent
10197 : see if gethostbyaddr exists
10198 set gethostbyaddr d_gethbyaddr
10201 : see if gethostbyname exists
10202 set gethostbyname d_gethbyname
10205 : see if gethostent exists
10206 set gethostent d_gethent
10209 : see how we will look up host name
10212 if set gethostname val -f d_gethname; eval $csym; $val; then
10213 echo 'gethostname() found.' >&4
10214 d_gethname="$define"
10217 if set uname val -f d_uname; eval $csym; $val; then
10220 uname() was found, but you're running xenix, and older versions of xenix
10221 have a broken uname(). If you don't really know whether your xenix is old
10222 enough to have a broken system call, use the default answer.
10227 "$define") dflt=n;;
10229 rp='Is your uname() broken?'
10232 n*) d_uname="$define"; call=uname;;
10235 echo 'uname() found.' >&4
10242 case "$d_gethname" in
10243 '') d_gethname="$undef";;
10246 '') d_uname="$undef";;
10248 case "$d_uname$d_gethname" in
10253 Every now and then someone has a $call() that lies about the hostname
10254 but can't be fixed for political or economic reasons. If you wish, I can
10255 pretend $call() isn't there and maybe compute hostname at run-time
10256 thanks to the '$phostname' command.
10259 rp="Shall I ignore $call() from now on?"
10262 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10265 case "$phostname" in
10266 '') aphostname='';;
10267 *) case "$aphostname" in
10269 *) set X $phostname
10273 file=`./loc $file $file $pth`
10274 aphostname=`echo $file $*`
10279 case "$d_uname$d_gethname" in
10282 case "$phostname" in
10284 echo "There will be no way for $package to get your hostname." >&4;;
10286 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10290 case "$d_phostname" in
10291 '') d_phostname="$undef";;
10294 : see if this is a netdb.h system
10295 set netdb.h i_netdb
10298 : see if prototypes for various gethostxxx netdb.h functions are available
10300 set d_gethostprotos gethostent $i_netdb netdb.h
10303 : see if getitimer exists
10304 set getitimer d_getitimer
10307 : see if getlogin exists
10308 set getlogin d_getlogin
10311 : see if getmnt exists
10312 set getmnt d_getmnt
10315 : see if getmntent exists
10316 set getmntent d_getmntent
10319 : see if getnetbyaddr exists
10320 set getnetbyaddr d_getnbyaddr
10323 : see if getnetbyname exists
10324 set getnetbyname d_getnbyname
10327 : see if getnetent exists
10328 set getnetent d_getnent
10331 : see if prototypes for various getnetxxx netdb.h functions are available
10333 set d_getnetprotos getnetent $i_netdb netdb.h
10336 : see if getpagesize exists
10337 set getpagesize d_getpagsz
10341 : see if getprotobyname exists
10342 set getprotobyname d_getpbyname
10345 : see if getprotobynumber exists
10346 set getprotobynumber d_getpbynumber
10349 : see if getprotoent exists
10350 set getprotoent d_getpent
10353 : see if getpgid exists
10354 set getpgid d_getpgid
10357 : see if getpgrp2 exists
10358 set getpgrp2 d_getpgrp2
10361 : see if getppid exists
10362 set getppid d_getppid
10365 : see if getpriority exists
10366 set getpriority d_getprior
10369 : see if prototypes for various getprotoxxx netdb.h functions are available
10371 set d_getprotoprotos getprotoent $i_netdb netdb.h
10374 : see if getprpwnam exists
10375 set getprpwnam d_getprpwnam
10378 : see if getpwent exists
10379 set getpwent d_getpwent
10383 : see if getservbyname exists
10384 set getservbyname d_getsbyname
10387 : see if getservbyport exists
10388 set getservbyport d_getsbyport
10391 : see if getservent exists
10392 set getservent d_getsent
10395 : see if prototypes for various getservxxx netdb.h functions are available
10397 set d_getservprotos getservent $i_netdb netdb.h
10400 : see if getspnam exists
10401 set getspnam d_getspnam
10404 : see if gettimeofday or ftime exists
10405 set gettimeofday d_gettimeod
10407 case "$d_gettimeod" in
10413 val="$undef"; set d_ftime; eval $setvar
10416 case "$d_gettimeod$d_ftime" in
10419 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10423 : see if this is an grp system
10429 xxx=`./findhdr grp.h`
10430 $cppstdin $cppflags $cppminus < $xxx >$$.h
10432 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10444 set d_grpasswd; eval $setvar
10448 : see if hasmntopt exists
10449 set hasmntopt d_hasmntopt
10452 : see if this is a netinet/in.h or sys/in.h system
10453 set netinet/in.h i_niin sys/in.h i_sysin
10456 : see if arpa/inet.h has to be included
10457 set arpa/inet.h i_arpainet
10460 : see if htonl --and friends-- exists
10465 : Maybe they are macros.
10468 $cat >htonl.c <<EOM
10470 #include <sys/types.h>
10471 #$i_niin I_NETINET_IN
10473 #$i_arpainet I_ARPA_INET
10474 #ifdef I_NETINET_IN
10475 #include <netinet/in.h>
10478 #include <sys/in.h>
10481 #include <arpa/inet.h>
10484 printf("Defined as a macro.");
10487 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10488 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10490 echo "But it seems to be defined as a macro." >&4
10498 : see if iconv exists
10504 if set index val -f; eval $csym; $val; then
10505 if set strchr val -f d_strchr; eval $csym; $val; then
10506 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10509 echo "strchr() found." >&4
10513 echo "index() found." >&4
10518 echo "index() found." >&4
10521 if set strchr val -f d_strchr; eval $csym; $val; then
10524 echo "strchr() found." >&4
10526 echo "No index() or strchr() found!" >&4
10531 set d_strchr; eval $setvar
10533 set d_index; eval $setvar
10535 : check whether inet_aton exists
10536 set inet_aton d_inetaton
10541 $cat >isascii.c <<'EOCP'
10553 if eval $compile; then
10554 echo "isascii() found." >&4
10557 echo "isascii() NOT found." >&4
10564 : see if isnan exists
10568 : see if isnanl exists
10569 set isnanl d_isnanl
10572 : see if killpg exists
10573 set killpg d_killpg
10576 : see if lchown exists
10578 $cat > try.c <<'EOCP'
10579 /* System header to define __stub macros and hopefully few prototypes,
10580 which can conflict with char lchown(); below. */
10581 #include <assert.h>
10582 /* Override any gcc2 internal prototype to avoid an error. */
10583 /* We use char because int might match the return type of a gcc2
10584 builtin and then its argument prototype would still apply. */
10587 /* The GNU C library defines this for functions which it implements
10588 to always fail with ENOSYS. Some functions are actually named
10589 something starting with __ and the normal name is an alias. */
10590 #if defined (__stub_lchown) || defined (__stub___lchown)
10598 if eval $compile; then
10599 $echo "lchown() found." >&4
10602 $echo "lchown() NOT found." >&4
10608 : See if number of significant digits in a double precision number is known
10610 $cat >ldbl_dig.c <<EOM
10611 #$i_limits I_LIMITS
10614 #include <limits.h>
10620 printf("Contains LDBL_DIG");
10623 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10624 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10625 echo "LDBL_DIG found." >&4
10628 echo "LDBL_DIG NOT found." >&4
10635 : see if link exists
10639 : see if localeconv exists
10640 set localeconv d_locconv
10643 : see if lockf exists
10647 : see if prototype for lseek is available
10649 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10652 : see if lstat exists
10656 : see if madvise exists
10657 set madvise d_madvise
10660 : see if mblen exists
10664 : see if mbstowcs exists
10665 set mbstowcs d_mbstowcs
10668 : see if mbtowc exists
10669 set mbtowc d_mbtowc
10672 : see if memchr exists
10673 set memchr d_memchr
10676 : see if memcmp exists
10677 set memcmp d_memcmp
10680 : see if memcpy exists
10681 set memcpy d_memcpy
10684 : see if memmove exists
10685 set memmove d_memmove
10688 : see if memset exists
10689 set memset d_memset
10692 : see if mkdir exists
10696 : see if mkdtemp exists
10697 set mkdtemp d_mkdtemp
10700 : see if mkfifo exists
10701 set mkfifo d_mkfifo
10704 : see if mkstemp exists
10705 set mkstemp d_mkstemp
10708 : see if mkstemps exists
10709 set mkstemps d_mkstemps
10712 : see if mktime exists
10713 set mktime d_mktime
10716 : see if this is a sys/mman.h system
10717 set sys/mman.h i_sysmman
10720 : see if mmap exists
10723 : see what shmat returns
10724 : default to something harmless
10726 case "$i_sysmman$d_mmap" in
10728 $cat >mmap.c <<'END'
10729 #include <sys/mman.h>
10732 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10737 echo "and it returns ($mmaptype)." >&4
10743 : see if modfl exists
10747 d_modfl_pow32_bug="$undef"
10749 case "$d_longdbl$d_modfl" in
10752 Checking to see whether your modfl() is okay for large values...
10758 long double nv = 4294967303.15;
10764 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10768 case "$osname:$gccversion" in
10769 aix:) saveccflags="$ccflags"
10770 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10773 if eval $compile; then
10776 *" 4294967303.150000 1.150000 4294967302.000000")
10777 echo >&4 "Your modfl() is broken for large values."
10778 d_modfl_pow32_bug="$define"
10780 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10784 *" 4294967303.150000 0.150000 4294967303.000000")
10785 echo >&4 "Your modfl() seems okay for large values."
10787 *) echo >&4 "I don't understand your modfl() at all."
10791 $rm -f try.* try core core.try.*
10793 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10796 case "$osname:$gccversion" in
10797 aix:) $ccflags="saveccflags" ;; # restore
10802 : see if mprotect exists
10803 set mprotect d_mprotect
10806 : see if msgctl exists
10807 set msgctl d_msgctl
10810 : see if msgget exists
10811 set msgget d_msgget
10814 : see if msgsnd exists
10815 set msgsnd d_msgsnd
10818 : see if msgrcv exists
10819 set msgrcv d_msgrcv
10822 : see how much of the 'msg*(2)' library is present.
10825 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10826 *"$undef"*) h_msg=false;;
10830 case "`ipcs 2>&1`" in
10831 "SVID messages"*"not configured"*)
10832 echo "Your $osname does not have the msg*(2) configured." >&4
10835 set msgctl d_msgctl
10837 set msgget d_msgget
10839 set msgsnd d_msgsnd
10841 set msgrcv d_msgrcv
10847 : we could also check for sys/ipc.h ...
10848 if $h_msg && $test `./findhdr sys/msg.h`; then
10849 echo "You have the full msg*(2) library." >&4
10852 echo "You don't have the full msg*(2) library." >&4
10860 echo "Checking to see if your system supports struct msghdr..." >&4
10861 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10863 case "$d_msghdr_s" in
10864 "$define") echo "Yes, it does." ;;
10865 *) echo "No, it doesn't." ;;
10869 : see if msync exists
10873 : see if munmap exists
10874 set munmap d_munmap
10877 : see if nice exists
10881 : check for length of character
10883 case "$charsize" in
10885 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10886 $cat >try.c <<'EOCP'
10890 printf("%d\n", (int)sizeof(char));
10895 if eval $compile_ok; then
10899 echo "(I can't seem to compile the test program. Guessing...)"
10906 rp="What is the size of a character (in bytes)?"
10911 : check for volatile keyword
10913 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10914 $cat >try.c <<'EOCP'
10917 typedef struct _goo_struct goo_struct;
10918 goo_struct * volatile goo = ((goo_struct *)0);
10919 struct _goo_struct {
10924 typedef unsigned short foo_t;
10925 char *volatile foo;
10927 volatile foo_t blech;
10931 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10933 echo "Yup, it does."
10936 echo "Nope, it doesn't."
10944 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10946 case "$use64bitint:$d_quad:$quadtype" in
10949 uvtype="$uquadtype"
10954 uvtype="unsigned long"
10960 case "$uselongdouble:$d_longdbl" in
10962 nvtype="long double"
10963 nvsize=$longdblsize
10970 $echo "(IV will be "$ivtype", $ivsize bytes)"
10971 $echo "(UV will be "$uvtype", $uvsize bytes)"
10972 $echo "(NV will be "$nvtype", $nvsize bytes)"
10975 #$i_inttypes I_INTTYPES
10977 #include <inttypes.h>
10982 int8_t i = INT8_MAX;
10983 uint8_t u = UINT8_MAX;
10984 printf("int8_t\n");
10987 int16_t i = INT16_MAX;
10988 uint16_t i = UINT16_MAX;
10989 printf("int16_t\n");
10992 int32_t i = INT32_MAX;
10993 uint32_t u = UINT32_MAX;
10994 printf("int32_t\n");
11000 '') case "$charsize" in
11002 u8type="unsigned char"
11011 if eval $compile; then
11012 case "`$run ./try`" in
11013 int8_t) i8type=int8_t
11023 '') if $test $charsize -ge 1; then
11025 u8type="unsigned char"
11033 '') case "$shortsize" in
11035 u16type="unsigned short"
11043 '') set try -DINT16
11044 if eval $compile; then
11045 case "`$run ./try`" in
11057 '') if $test $shortsize -ge 2; then
11059 u16type="unsigned short"
11067 '') case "$longsize" in
11069 u32type="unsigned long"
11073 *) case "$intsize" in
11075 u32type="unsigned int"
11085 '') set try -DINT32
11086 if eval $compile; then
11087 case "`$run ./try`" in
11099 '') if $test $intsize -ge 4; then
11101 u32type="unsigned int"
11109 '') case "$d_quad:$quadtype" in
11111 i64type="$quadtype"
11112 u64type="$uquadtype"
11120 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11121 : volatile so that the compiler has to store it out to memory.
11122 if test X"$d_volatile" = X"$define"; then
11127 #include <sys/types.h>
11128 #include <signal.h>
11130 $volatile int bletched = 0;
11131 $signal_t blech(s) int s; { bletched = 1; }
11136 int n = 8 * $uvsize;
11139 signal(SIGFPE, blech);
11142 for (i = 0; i < n; i++) {
11143 u = u << 1 | ($uvtype)1;
11145 if (($uvtype)d != u)
11149 d = ($nvtype)(u - 1);
11150 if (($uvtype)d != (u - 1))
11158 printf("%d\n", ((i == n) ? -n : i));
11164 d_nv_preserves_uv="$undef"
11165 if eval $compile; then
11166 d_nv_preserves_uv_bits="`$run ./try`"
11168 case "$d_nv_preserves_uv_bits" in
11170 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11171 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11172 d_nv_preserves_uv="$define"
11174 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11175 d_nv_preserves_uv="$undef" ;;
11176 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11177 d_nv_preserves_uv_bits="$undef" ;;
11183 : check for off64_t
11185 echo "Checking to see if you have off64_t..." >&4
11187 #include <sys/types.h>
11188 #include <unistd.h>
11189 int main() { off64_t x = 7; }
11192 if eval $compile; then
11194 echo "You have off64_t."
11197 echo "You do not have off64_t."
11198 case "$lseeksize" in
11199 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11206 : see if POSIX threads are available
11207 set pthread.h i_pthread
11213 : how to create joinable pthreads
11214 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11216 echo "Checking what constant to use for creating joinable pthreads..." >&4
11217 $cat >try.c <<'EOCP'
11218 #include <pthread.h>
11220 int detachstate = JOINABLE;
11223 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11224 if eval $compile; then
11225 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11226 val="$undef" # Yes, undef.
11227 set d_old_pthread_create_joinable
11230 set old_pthread_create_joinable
11233 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11234 if eval $compile; then
11235 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11237 set d_old_pthread_create_joinable
11239 val=PTHREAD_CREATE_UNDETACHED
11240 set old_pthread_create_joinable
11243 set try -DJOINABLE=__UNDETACHED
11244 if eval $compile; then
11245 echo "You seem to use __UNDETACHED." >&4
11247 set d_old_pthread_create_joinable
11250 set old_pthread_create_joinable
11253 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11255 set d_old_pthread_create_joinable
11258 set old_pthread_create_joinable
11265 d_old_pthread_create_joinable="$undef"
11266 old_pthread_create_joinable=""
11269 : see if pause exists
11273 : see if pipe exists
11277 : see if poll exists
11282 : see whether the various POSIXish _yields exist
11284 #include <pthread.h>
11290 #ifdef PTHREAD_YIELD
11293 #ifdef PTHREAD_YIELD_NULL
11294 pthread_yield(NULL);
11300 : see if sched_yield exists
11301 set try -DSCHED_YIELD
11302 if eval $compile; then
11304 sched_yield='sched_yield()'
11308 case "$usethreads" in
11311 $define) echo 'sched_yield() found.' >&4 ;;
11312 *) echo 'sched_yield() NOT found.' >&4 ;;
11318 : see if pthread_yield exists
11319 set try -DPTHREAD_YIELD
11320 if eval $compile; then
11322 case "$sched_yield" in
11323 '') sched_yield='pthread_yield()' ;;
11326 set try -DPTHREAD_YIELD_NULL
11327 if eval $compile; then
11329 case "$sched_yield" in
11330 '') sched_yield='pthread_yield(NULL)' ;;
11336 case "$usethreads" in
11339 $define) echo 'pthread_yield() found.' >&4 ;;
11340 *) echo 'pthread_yield() NOT found.' >&4 ;;
11344 set d_pthread_yield
11347 case "$sched_yield" in
11348 '') sched_yield=undef ;;
11353 : see if this is a pwd.h system
11359 xxx=`./findhdr pwd.h`
11360 $cppstdin $cppflags $cppminus < $xxx >$$.h
11362 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11370 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11378 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11386 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11394 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11402 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11410 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11418 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11430 set d_pwquota; eval $setvar
11431 set d_pwage; eval $setvar
11432 set d_pwchange; eval $setvar
11433 set d_pwclass; eval $setvar
11434 set d_pwexpire; eval $setvar
11435 set d_pwcomment; eval $setvar
11436 set d_pwgecos; eval $setvar
11437 set d_pwpasswd; eval $setvar
11441 : see if readdir and friends exist
11442 set readdir d_readdir
11444 set seekdir d_seekdir
11446 set telldir d_telldir
11448 set rewinddir d_rewinddir
11451 : see if readlink exists
11452 set readlink d_readlink
11455 : see if readv exists
11459 : see if recvmsg exists
11460 set recvmsg d_recvmsg
11463 : see if rename exists
11464 set rename d_rename
11467 : see if rmdir exists
11471 : see if memory.h is available.
11476 : See if it conflicts with string.h
11482 $cppstdin $cppflags $cppminus < $strings > mem.h
11483 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11485 echo "We won't be including <memory.h>."
11495 : can bcopy handle overlapping blocks?
11500 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
11502 #$i_memory I_MEMORY
11503 #$i_stdlib I_STDLIB
11504 #$i_string I_STRING
11505 #$i_unistd I_UNISTD
11507 $cat >>try.c <<'EOCP'
11510 # include <memory.h>
11513 # include <stdlib.h>
11516 # include <string.h>
11518 # include <strings.h>
11521 # include <unistd.h> /* Needed for NetBSD */
11525 char buf[128], abc[128];
11531 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11533 for (align = 7; align >= 0; align--) {
11534 for (len = 36; len; len--) {
11536 bcopy(abc, b, len);
11537 for (off = 1; off <= len; off++) {
11538 bcopy(b, b+off, len);
11539 bcopy(b+off, b, len);
11540 if (bcmp(b, abc, len))
11549 if eval $compile_ok; then
11550 if $run ./try 2>/dev/null; then
11551 echo "Yes, it can."
11554 echo "It can't, sorry."
11555 case "$d_memmove" in
11556 "$define") echo "But that's Ok since you have memmove()." ;;
11560 echo "(I can't compile the test program, so we'll assume not...)"
11561 case "$d_memmove" in
11562 "$define") echo "But that's Ok since you have memmove()." ;;
11567 $rm -f try.* try core
11571 : can memcpy handle overlapping blocks?
11573 case "$d_memcpy" in
11576 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
11578 #$i_memory I_MEMORY
11579 #$i_stdlib I_STDLIB
11580 #$i_string I_STRING
11581 #$i_unistd I_UNISTD
11583 $cat >>try.c <<'EOCP'
11586 # include <memory.h>
11589 # include <stdlib.h>
11592 # include <string.h>
11594 # include <strings.h>
11597 # include <unistd.h> /* Needed for NetBSD */
11601 char buf[128], abc[128];
11607 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11608 try to store the string in read-only memory. */
11609 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11611 for (align = 7; align >= 0; align--) {
11612 for (len = 36; len; len--) {
11614 memcpy(b, abc, len);
11615 for (off = 1; off <= len; off++) {
11616 memcpy(b+off, b, len);
11617 memcpy(b, b+off, len);
11618 if (memcmp(b, abc, len))
11627 if eval $compile_ok; then
11628 if $run ./try 2>/dev/null; then
11629 echo "Yes, it can."
11632 echo "It can't, sorry."
11633 case "$d_memmove" in
11634 "$define") echo "But that's Ok since you have memmove()." ;;
11638 echo "(I can't compile the test program, so we'll assume not...)"
11639 case "$d_memmove" in
11640 "$define") echo "But that's Ok since you have memmove()." ;;
11645 $rm -f try.* try core
11649 : can memcmp be trusted to compare relative magnitude?
11651 case "$d_memcmp" in
11654 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11656 #$i_memory I_MEMORY
11657 #$i_stdlib I_STDLIB
11658 #$i_string I_STRING
11659 #$i_unistd I_UNISTD
11661 $cat >>try.c <<'EOCP'
11664 # include <memory.h>
11667 # include <stdlib.h>
11670 # include <string.h>
11672 # include <strings.h>
11675 # include <unistd.h> /* Needed for NetBSD */
11681 if ((a < b) && memcmp(&a, &b, 1) < 0)
11687 if eval $compile_ok; then
11688 if $run ./try 2>/dev/null; then
11689 echo "Yes, it can."
11692 echo "No, it can't (it uses signed chars)."
11695 echo "(I can't compile the test program, so we'll assume not...)"
11699 $rm -f try.* try core
11703 : see if prototype for sbrk is available
11705 set d_sbrkproto sbrk $i_unistd unistd.h
11708 : see if select exists
11709 set select d_select
11712 : see if semctl exists
11713 set semctl d_semctl
11716 : see if semget exists
11717 set semget d_semget
11720 : see if semop exists
11724 : see how much of the 'sem*(2)' library is present.
11727 case "$d_semctl$d_semget$d_semop" in
11728 *"$undef"*) h_sem=false;;
11732 case "`ipcs 2>&1`" in
11733 "SVID messages"*"not configured"*)
11734 echo "Your $osname does not have the sem*(2) configured." >&4
11737 set semctl d_semctl
11739 set semget d_semget
11747 : we could also check for sys/ipc.h ...
11748 if $h_sem && $test `./findhdr sys/sem.h`; then
11749 echo "You have the full sem*(2) library." >&4
11752 echo "You don't have the full sem*(2) library." >&4
11758 : see whether sys/sem.h defines union semun
11760 $cat > try.c <<'END'
11761 #include <sys/types.h>
11762 #include <sys/ipc.h>
11763 #include <sys/sem.h>
11764 int main () { union semun semun; semun.buf = 0; }
11767 if eval $compile; then
11768 echo "You have union semun in <sys/sem.h>." >&4
11771 echo "You do not have union semun in <sys/sem.h>." >&4
11774 $rm -f try try.c try.h
11778 : see how to do semctl IPC_STAT
11781 : see whether semctl IPC_STAT can use union semun
11786 # define S_IRUSR S_IREAD
11787 # define S_IWUSR S_IWRITE
11788 # define S_IXUSR S_IEXEC
11790 # define S_IRUSR 0400
11791 # define S_IWUSR 0200
11792 # define S_IXUSR 0100
11794 # define S_IRGRP (S_IRUSR>>3)
11795 # define S_IWGRP (S_IWUSR>>3)
11796 # define S_IXGRP (S_IXUSR>>3)
11797 # define S_IROTH (S_IRUSR>>6)
11798 # define S_IWOTH (S_IWUSR>>6)
11799 # define S_IXOTH (S_IXUSR>>6)
11802 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11803 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11804 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11809 #include <sys/types.h>
11810 #include <sys/ipc.h>
11811 #include <sys/sem.h>
11812 #include <sys/stat.h>
11819 #$d_union_semun HAS_UNION_SEMUN
11822 #ifndef HAS_UNION_SEMUN
11825 struct semid_ds *buf;
11826 unsigned short *array;
11832 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11833 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11835 struct semid_ds argbuf;
11838 st = semctl(sem, 0, IPC_STAT, arg);
11842 # endif /* IPC_STAT */
11843 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11845 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11846 # endif /* IPC_RMID */
11847 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11849 #endif /* IPC_PRIVATE && ... */
11850 printf("semget failed: errno = %d\n", errno);
11856 if eval $compile; then
11859 semun) val="$define" ;;
11865 case "$d_semctl_semun" in
11867 echo "You can use union semun for semctl IPC_STAT." >&4
11870 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11875 : see whether semctl IPC_STAT can use struct semid_ds pointer
11876 $cat > try.c <<'END'
11877 #include <sys/types.h>
11878 #include <sys/ipc.h>
11879 #include <sys/sem.h>
11880 #include <sys/stat.h>
11888 struct semid_ds arg;
11891 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11892 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11895 st = semctl(sem, 0, IPC_STAT, &arg);
11897 printf("semid_ds\n");
11899 # endif /* IPC_STAT */
11900 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11902 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11903 # endif /* IPC_RMID */
11904 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11906 #endif /* IPC_PRIVATE && ... */
11907 printf("semget failed: errno = %d\n", errno);
11914 if eval $compile; then
11917 semid_ds) val="$define" ;;
11921 set d_semctl_semid_ds
11923 case "$d_semctl_semid_ds" in
11925 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11927 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11934 # We do not have the full sem*(2) library, so assume we can not
11940 set d_semctl_semid_ds
11945 : see if sendmsg exists
11946 set sendmsg d_sendmsg
11949 : see if setegid exists
11950 set setegid d_setegid
11953 : see if seteuid exists
11954 set seteuid d_seteuid
11957 : see if setgrent exists
11958 set setgrent d_setgrent
11961 : see if sethostent exists
11962 set sethostent d_sethent
11965 : see if setitimer exists
11966 set setitimer d_setitimer
11969 : see if setlinebuf exists
11970 set setlinebuf d_setlinebuf
11973 : see if setlocale exists
11974 set setlocale d_setlocale
11977 : see if setnetent exists
11978 set setnetent d_setnent
11981 : see if setprotoent exists
11982 set setprotoent d_setpent
11985 : see if setpgid exists
11986 set setpgid d_setpgid
11989 : see if setpgrp2 exists
11990 set setpgrp2 d_setpgrp2
11993 : see if setpriority exists
11994 set setpriority d_setprior
11997 : see if setproctitle exists
11998 set setproctitle d_setproctitle
12001 : see if setpwent exists
12002 set setpwent d_setpwent
12005 : see if setregid exists
12006 set setregid d_setregid
12008 set setresgid d_setresgid
12011 : see if setreuid exists
12012 set setreuid d_setreuid
12014 set setresuid d_setresuid
12017 : see if setrgid exists
12018 set setrgid d_setrgid
12021 : see if setruid exists
12022 set setruid d_setruid
12025 : see if setservent exists
12026 set setservent d_setsent
12029 : see if setsid exists
12030 set setsid d_setsid
12033 : see if setvbuf exists
12034 set setvbuf d_setvbuf
12037 : see if sfio.h is available
12042 : see if sfio library is available
12053 : Ok, but do we want to use it.
12057 true|$define|[yY]*) dflt='y';;
12060 echo "$package can use the sfio library, but it is experimental."
12061 case "$useperlio" in
12063 echo "For sfio also the PerlIO abstraction layer is needed."
12064 echo "Earlier you said you wouldn't want that."
12067 rp="You seem to have sfio available, do you want to try using it?"
12070 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12071 useperlio="$define"
12074 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12079 *) case "$usesfio" in
12080 true|$define|[yY]*)
12081 echo "Sorry, cannot find sfio on this machine." >&4
12082 echo "Ignoring your setting of usesfio=$usesfio." >&4
12091 $define) usesfio='true';;
12092 *) usesfio='false';;
12096 *) : Remove sfio from list of libraries to use
12097 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12100 echo "libs = $libs" >&4
12105 : see if shmctl exists
12106 set shmctl d_shmctl
12109 : see if shmget exists
12110 set shmget d_shmget
12113 : see if shmat exists
12116 : see what shmat returns
12119 $cat >shmat.c <<'END'
12120 #include <sys/shm.h>
12123 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12128 echo "and it returns ($shmattype)." >&4
12129 : see if a prototype for shmat is available
12130 xxx=`./findhdr sys/shm.h`
12131 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12132 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12143 set d_shmatprototype
12146 : see if shmdt exists
12150 : see how much of the 'shm*(2)' library is present.
12153 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12154 *"$undef"*) h_shm=false;;
12158 case "`ipcs 2>&1`" in
12159 "SVID shared memory"*"not configured"*)
12160 echo "Your $osname does not have the shm*(2) configured." >&4
12163 set shmctl d_shmctl
12165 set shmget d_shmget
12175 : we could also check for sys/ipc.h ...
12176 if $h_shm && $test `./findhdr sys/shm.h`; then
12177 echo "You have the full shm*(2) library." >&4
12180 echo "You don't have the full shm*(2) library." >&4
12187 : see if we have sigaction
12188 if set sigaction val -f d_sigaction; eval $csym; $val; then
12189 echo 'sigaction() found.' >&4
12190 $cat > try.c <<'EOP'
12192 #include <sys/types.h>
12193 #include <signal.h>
12196 struct sigaction act, oact;
12198 oact.sa_handler = 0;
12199 /* so that act and oact are used */
12200 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12204 if eval $compile_ok; then
12207 echo "But you don't seem to have a useable struct sigaction." >&4
12211 echo 'sigaction NOT found.' >&4
12214 set d_sigaction; eval $setvar
12215 $rm -f try try$_o try.c
12217 : see if sigprocmask exists
12218 set sigprocmask d_sigprocmask
12221 : see if sigsetjmp exists
12223 case "$d_sigsetjmp" in
12225 $cat >try.c <<'EOP'
12226 #include <setjmp.h>
12231 if (sigsetjmp(env,1))
12234 siglongjmp(env, 1);
12239 if eval $compile; then
12240 if $run ./try >/dev/null 2>&1; then
12241 echo "POSIX sigsetjmp found." >&4
12245 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12251 echo "sigsetjmp not found." >&4
12255 *) val="$d_sigsetjmp"
12256 case "$d_sigsetjmp" in
12257 $define) echo "POSIX sigsetjmp found." >&4;;
12258 $undef) echo "sigsetjmp not found." >&4;;
12266 : see if sockatmark exists
12267 set sockatmark d_sockatmark
12270 : see if prototype for sockatmark is available
12272 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12275 : see if socks5_init exists
12276 set socks5_init d_socks5_init
12279 : see if prototype for setresgid is available
12281 set d_sresgproto setresgid $i_unistd unistd.h
12284 : see if prototype for setresuid is available
12286 set d_sresuproto setresuid $i_unistd unistd.h
12289 : see if sys/stat.h is available
12290 set sys/stat.h i_sysstat
12294 : see if stat knows about block sizes
12296 echo "Checking to see if your struct stat has st_blocks field..." >&4
12297 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12301 : see if this is a sys/vfs.h system
12302 set sys/vfs.h i_sysvfs
12306 : see if this is a sys/statfs.h system
12307 set sys/statfs.h i_sysstatfs
12312 echo "Checking to see if your system supports struct statfs..." >&4
12313 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
12315 case "$d_statfs_s" in
12316 "$define") echo "Yes, it does." ;;
12317 *) echo "No, it doesn't." ;;
12322 : see if struct statfs knows about f_flags
12323 case "$d_statfs_s" in
12326 echo "Checking to see if your struct statfs has f_flags field..." >&4
12327 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
12331 set d_statfs_f_flags
12335 case "$d_statfs_f_flags" in
12336 "$define") echo "Yes, it does." ;;
12337 *) echo "No, it doesn't." ;;
12340 : see if _ptr and _cnt from stdio act std
12343 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12344 echo "(Looks like you have stdio.h from BSD.)"
12345 case "$stdio_ptr" in
12346 '') stdio_ptr='((fp)->_p)'
12349 *) ptr_lval=$d_stdio_ptr_lval;;
12351 case "$stdio_cnt" in
12352 '') stdio_cnt='((fp)->_r)'
12355 *) cnt_lval=$d_stdio_cnt_lval;;
12357 case "$stdio_base" in
12358 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12360 case "$stdio_bufsiz" in
12361 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12363 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12364 echo "(Looks like you have stdio.h from Linux.)"
12365 case "$stdio_ptr" in
12366 '') stdio_ptr='((fp)->_IO_read_ptr)'
12369 *) ptr_lval=$d_stdio_ptr_lval;;
12371 case "$stdio_cnt" in
12372 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12375 *) cnt_lval=$d_stdio_cnt_lval;;
12377 case "$stdio_base" in
12378 '') stdio_base='((fp)->_IO_read_base)';;
12380 case "$stdio_bufsiz" in
12381 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12384 case "$stdio_ptr" in
12385 '') stdio_ptr='((fp)->_ptr)'
12388 *) ptr_lval=$d_stdio_ptr_lval;;
12390 case "$stdio_cnt" in
12391 '') stdio_cnt='((fp)->_cnt)'
12394 *) cnt_lval=$d_stdio_cnt_lval;;
12396 case "$stdio_base" in
12397 '') stdio_base='((fp)->_base)';;
12399 case "$stdio_bufsiz" in
12400 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12404 : test whether _ptr and _cnt really work
12405 echo "Checking how std your stdio is..." >&4
12408 #define FILE_ptr(fp) $stdio_ptr
12409 #define FILE_cnt(fp) $stdio_cnt
12411 FILE *fp = fopen("try.c", "r");
12414 18 <= FILE_cnt(fp) &&
12415 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12423 if eval $compile && $to try.c; then
12424 if $run ./try; then
12425 echo "Your stdio acts pretty std."
12428 echo "Your stdio isn't very std."
12431 echo "Your stdio doesn't appear very std."
12437 : Can _ptr be used as an lvalue?
12438 case "$d_stdstdio$ptr_lval" in
12439 $define$define) val=$define ;;
12442 set d_stdio_ptr_lval
12445 : Can _cnt be used as an lvalue?
12446 case "$d_stdstdio$cnt_lval" in
12447 $define$define) val=$define ;;
12450 set d_stdio_cnt_lval
12454 : test whether setting _ptr sets _cnt as a side effect
12455 d_stdio_ptr_lval_sets_cnt="$undef"
12456 d_stdio_ptr_lval_nochange_cnt="$undef"
12457 case "$d_stdio_ptr_lval$d_stdstdio" in
12459 echo "Checking to see what happens if we set the stdio ptr..." >&4
12462 /* Can we scream? */
12463 /* Eat dust sed :-) */
12464 /* In the buffer space, no one can hear you scream. */
12465 #define FILE_ptr(fp) $stdio_ptr
12466 #define FILE_cnt(fp) $stdio_cnt
12467 #include <sys/types.h>
12469 FILE *fp = fopen("try.c", "r");
12474 puts("Fail even to read");
12477 c = getc(fp); /* Read away the first # */
12479 puts("Fail even to read");
12483 18 <= FILE_cnt(fp) &&
12484 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12486 puts("Fail even to read");
12489 ptr = (char*) FILE_ptr(fp);
12490 cnt = (size_t)FILE_cnt(fp);
12492 FILE_ptr(fp) += 42;
12494 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12495 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12498 if (FILE_cnt(fp) <= 20) {
12499 printf ("Fail (<20 chars to test)");
12502 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12503 puts("Fail compare");
12506 if (cnt == FILE_cnt(fp)) {
12507 puts("Pass_unchanged");
12510 if (FILE_cnt(fp) == (cnt - 42)) {
12511 puts("Pass_changed");
12514 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12520 if eval $compile && $to try.c; then
12521 case `$run ./try` in
12523 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12524 d_stdio_ptr_lval_sets_cnt="$define" ;;
12526 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12527 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12529 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12531 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12534 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12540 : see if _base is also standard
12542 case "$d_stdstdio" in
12546 #define FILE_base(fp) $stdio_base
12547 #define FILE_bufsiz(fp) $stdio_bufsiz
12549 FILE *fp = fopen("try.c", "r");
12552 19 <= FILE_bufsiz(fp) &&
12553 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12560 if eval $compile && $to try.c; then
12561 if $run ./try; then
12562 echo "And its _base field acts std."
12565 echo "But its _base field isn't std."
12568 echo "However, it seems to be lacking the _base field."
12577 Checking how to access stdio streams by file descriptor number...
12579 case "$stdio_stream_array" in
12580 '') $cat >try.c <<EOCP
12583 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12587 for s in _iob __iob __sF
12589 set try -DSTDIO_STREAM_ARRAY=$s
12590 if eval $compile; then
12591 case "`$run ./try`" in
12592 yes) stdio_stream_array=$s; break ;;
12596 $rm -f try.* try$exe_ext
12598 case "$stdio_stream_array" in
12600 I can't figure out how to access stdio streams by file descriptor number.
12602 d_stdio_stream_array="$undef"
12605 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12607 d_stdio_stream_array="$define"
12611 : see if strcoll exists
12612 set strcoll d_strcoll
12615 : check for structure copying
12617 echo "Checking to see if your C compiler can copy structs..." >&4
12618 $cat >try.c <<'EOCP'
12628 if $cc -c try.c >/dev/null 2>&1 ; then
12630 echo "Yup, it can."
12633 echo "Nope, it can't."
12639 : see if strerror and/or sys_errlist[] exist
12641 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12642 if set strerror val -f d_strerror; eval $csym; $val; then
12643 echo 'strerror() found.' >&4
12644 d_strerror="$define"
12645 d_strerrm='strerror(e)'
12646 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12647 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12648 d_syserrlst="$define"
12650 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12651 d_syserrlst="$undef"
12653 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12654 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12655 echo 'strerror() found in string header.' >&4
12656 d_strerror="$define"
12657 d_strerrm='strerror(e)'
12658 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12659 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12660 d_syserrlst="$define"
12662 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12663 d_syserrlst="$undef"
12665 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12666 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12667 d_strerror="$undef"
12668 d_syserrlst="$define"
12669 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12671 echo 'strerror() and sys_errlist[] NOT found.' >&4
12672 d_strerror="$undef"
12673 d_syserrlst="$undef"
12674 d_strerrm='"unknown"'
12678 : see if strftime exists
12679 set strftime d_strftime
12682 : see if strtod exists
12683 set strtod d_strtod
12686 : see if strtol exists
12687 set strtol d_strtol
12690 : see if strtold exists
12691 set strtold d_strtold
12694 : see if strtoll exists
12695 set strtoll d_strtoll
12698 case "$d_longlong-$d_strtoll" in
12701 Checking whether your strtoll() works okay...
12703 $cat >try.c <<'EOCP'
12706 #define strtoll __strtoll
12709 #define strtoll _strtoll
12712 extern long long int strtoll(char *s, char **, int);
12713 static int bad = 0;
12714 int check(char *s, long long ell, int een) {
12717 gll = strtoll(s, 0, 10);
12718 if (!((gll == ell) && (errno == een)))
12722 check(" 1", 1LL, 0);
12723 check(" 0", 0LL, 0);
12724 check("-1", -1LL, 0);
12725 check("-9223372036854775808", -9223372036854775808LL, 0);
12726 check("-9223372036854775808", -9223372036854775808LL, 0);
12727 check(" 9223372036854775807", 9223372036854775807LL, 0);
12728 check("-9223372036854775808", -9223372036854775808LL, 0);
12729 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12730 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12736 if eval $compile; then
12739 ok) echo "Your strtoll() seems to be working okay." ;;
12741 Your strtoll() doesn't seem to be working okay.
12747 echo "(I can't seem to compile the test program--assuming it doesn't)"
12753 : see if strtoq exists
12754 set strtoq d_strtoq
12757 : see if strtoul exists
12758 set strtoul d_strtoul
12761 case "$d_strtoul" in
12764 Checking whether your strtoul() works okay...
12766 $cat >try.c <<'EOCP'
12769 extern unsigned long int strtoul(char *s, char **, int);
12770 static int bad = 0;
12771 void check(char *s, unsigned long eul, int een) {
12774 gul = strtoul(s, 0, 10);
12775 if (!((gul == eul) && (errno == een)))
12779 check(" 1", 1L, 0);
12780 check(" 0", 0L, 0);
12782 case "$longsize" in
12784 $cat >>try.c <<'EOCP'
12785 check("18446744073709551615", 18446744073709551615UL, 0);
12786 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12787 #if 0 /* strtoul() for /^-/ strings is undefined. */
12788 check("-1", 18446744073709551615UL, 0);
12789 check("-18446744073709551614", 2, 0);
12790 check("-18446744073709551615", 1, 0);
12791 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12792 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12797 $cat >>try.c <<'EOCP'
12798 check("4294967295", 4294967295UL, 0);
12799 check("4294967296", 4294967295UL, ERANGE);
12800 #if 0 /* strtoul() for /^-/ strings is undefined. */
12801 check("-1", 4294967295UL, 0);
12802 check("-4294967294", 2, 0);
12803 check("-4294967295", 1, 0);
12804 check("-4294967296", 4294967295UL, ERANGE);
12805 check("-4294967297", 4294967295UL, ERANGE);
12810 : Should we write these tests to be more portable by sprintf-ing
12811 : ~0 and then manipulating that char string as input for strtol?
12814 $cat >>try.c <<'EOCP'
12821 if eval $compile; then
12822 case "`$run ./try`" in
12823 ok) echo "Your strtoul() seems to be working okay." ;;
12825 Your strtoul() doesn't seem to be working okay.
12834 : see if strtoull exists
12835 set strtoull d_strtoull
12838 case "$d_longlong-$d_strtoull" in
12841 Checking whether your strtoull() works okay...
12843 $cat >try.c <<'EOCP'
12846 #define strtoull __strtoull
12849 extern unsigned long long int strtoull(char *s, char **, int);
12850 static int bad = 0;
12851 int check(char *s, long long eull, int een) {
12854 gull = strtoull(s, 0, 10);
12855 if (!((gull == eull) && (errno == een)))
12859 check(" 1", 1LL, 0);
12860 check(" 0", 0LL, 0);
12861 check("18446744073709551615", 18446744073709551615ULL, 0);
12862 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12863 #if 0 /* strtoull() for /^-/ strings is undefined. */
12864 check("-1", 18446744073709551615ULL, 0);
12865 check("-18446744073709551614", 2LL, 0);
12866 check("-18446744073709551615", 1LL, 0);
12867 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12868 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12875 if eval $compile; then
12876 case "`$run ./try`" in
12877 ok) echo "Your strtoull() seems to be working okay." ;;
12879 Your strtoull() doesn't seem to be working okay.
12881 d_strtoull="$undef"
12888 : see if strtouq exists
12889 set strtouq d_strtouq
12892 case "$d_strtouq" in
12895 Checking whether your strtouq() works okay...
12897 $cat >try.c <<'EOCP'
12900 extern unsigned long long int strtouq(char *s, char **, int);
12901 static int bad = 0;
12902 void check(char *s, unsigned long long eull, int een) {
12903 unsigned long long gull;
12905 gull = strtouq(s, 0, 10);
12906 if (!((gull == eull) && (errno == een)))
12910 check(" 1", 1LL, 0);
12911 check(" 0", 0LL, 0);
12912 check("18446744073709551615", 18446744073709551615ULL, 0);
12913 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12914 #if 0 /* strtouq() for /^-/ strings is undefined. */
12915 check("-1", 18446744073709551615ULL, 0);
12916 check("-18446744073709551614", 2LL, 0);
12917 check("-18446744073709551615", 1LL, 0);
12918 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12919 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12927 if eval $compile; then
12928 case "`$run ./try`" in
12929 ok) echo "Your strtouq() seems to be working okay." ;;
12931 Your strtouq() doesn't seem to be working okay.
12940 : see if strxfrm exists
12941 set strxfrm d_strxfrm
12944 : see if symlink exists
12945 set symlink d_symlink
12948 : see if syscall exists
12949 set syscall d_syscall
12952 : see if prototype for syscall is available
12954 set d_syscallproto syscall $i_unistd unistd.h
12957 : see if sysconf exists
12958 set sysconf d_sysconf
12961 : see if system exists
12962 set system d_system
12965 : see if tcgetpgrp exists
12966 set tcgetpgrp d_tcgetpgrp
12969 : see if tcsetpgrp exists
12970 set tcsetpgrp d_tcsetpgrp
12973 : see if prototype for telldir is available
12975 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12978 : see if this is a sys/times.h system
12979 set sys/times.h i_systimes
12982 : see if times exists
12984 if set times val -f d_times; eval $csym; $val; then
12985 echo 'times() found.' >&4
12988 case "$i_systimes" in
12989 "$define") inc='sys/times.h';;
12991 rp="What is the type returned by times() on this system?"
12992 set clock_t clocktype long stdio.h sys/types.h $inc
12995 echo 'times() NOT found, hope that will do.' >&4
13000 : see if truncate exists
13001 set truncate d_truncate
13004 : see if tzname[] exists
13006 if set tzname val -a d_tzname; eval $csym; $val; then
13008 echo 'tzname[] found.' >&4
13011 echo 'tzname[] NOT found.' >&4
13017 next|rhapsody|darwin) multiarch="$define" ;;
13019 case "$multiarch" in
13020 ''|[nN]*) multiarch="$undef" ;;
13023 : check for ordering of bytes in a long
13025 case "$usecrosscompile$multiarch" in
13028 You seem to be either cross-compiling or doing a multiarchitecture build,
13029 skipping the byteorder check.
13035 case "$byteorder" in
13038 In the following, larger digits indicate more significance. A big-endian
13039 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13040 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13041 machines may have weird orders like 3412. A Cray will report 87654321,
13042 an Alpha will report 12345678. If the test program works the default is
13044 I'm now running the test program...
13046 $cat >try.c <<'EOCP'
13053 char c[sizeof(long)];
13056 if (sizeof(long) > 4)
13057 u.l = (0x08070605L << 32) | 0x04030201L;
13060 for (i = 0; i < sizeof(long); i++)
13061 printf("%c", u.c[i]+'0');
13068 if eval $compile && ./try > /dev/null; then
13071 [1-4][1-4][1-4][1-4]|12345678|87654321)
13072 echo "(The test program ran ok.)"
13073 echo "byteorder=$dflt"
13076 ????|????????) echo "(The test program ran ok.)" ;;
13077 *) echo "(The test program didn't run right for some reason.)" ;;
13082 (I can't seem to compile the test program. Guessing big-endian...)
13085 case "$xxx_prompt" in
13087 rp="What is the order of bytes in a long?"
13103 Checking to see whether you can access character data unalignedly...
13107 #define U32 $u32type
13108 #define BYTEORDER $byteorder
13110 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13111 U8 buf[] = "\0\0\0\1\0\0\0\0";
13115 if (sizeof(U32) != 4) {
13116 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13122 for (i = 0; i < 4; i++) {
13123 up = (U32*)(buf + i);
13124 if (! ((*up == 1 << (8*i)) || /* big-endian */
13125 (*up == 1 << (8*(3-i))) /* little-endian */
13129 printf("read failed (%x)\n", *up);
13135 for (i = 0; i < 4; i++) {
13136 up = (U32*)(buf + i);
13138 if (*up != 0xBeef) {
13139 printf("write failed (%x)\n", *up);
13153 if eval $compile_ok; then
13154 echo "(Testing for character data alignment may dump core.)" >&4
13155 $run ./try 2>&1 >/dev/null
13158 You can access character data pretty unalignedly.
13160 d_u32align="$undef"
13163 It seems that you must access character data in an aligned manner.
13165 d_u32align="$define"
13168 $rm -f core core.try.* try.core
13170 rp='Can you access character data at unaligned addresses?'
13174 [yY]*) d_u32align="$undef" ;;
13175 *) d_u32align="$define" ;;
13179 : see if ualarm exists
13180 set ualarm d_ualarm
13183 : see if umask exists
13187 : see if usleep exists
13188 set usleep d_usleep
13191 : see if prototype for usleep is available
13193 set d_usleepproto usleep $i_unistd unistd.h
13196 : see if ustat exists
13200 : backward compatibility for d_hvfork
13201 if test X$d_hvfork != X; then
13202 d_vfork="$d_hvfork"
13205 : see if there is a vfork
13210 : Ok, but do we want to use it. vfork is reportedly unreliable in
13211 : perl on Solaris 2.x, and probably elsewhere.
13215 case "$usevfork" in
13221 Perl can only use a vfork() that doesn't suffer from strict
13222 restrictions on calling functions or modifying global data in
13223 the child. For example, glibc-2.1 contains such a vfork()
13224 that is unsuitable. If your system provides a proper fork()
13225 call, chances are that you do NOT want perl to use vfork().
13228 rp="Do you still want to use vfork()?"
13233 echo "Ok, we won't use vfork()."
13242 $define) usevfork='true';;
13243 *) usevfork='false';;
13246 : see if this is an sysdir system
13247 set sys/dir.h i_sysdir
13250 : see if this is an sysndir system
13251 set sys/ndir.h i_sysndir
13254 : see if closedir exists
13255 set closedir d_closedir
13258 case "$d_closedir" in
13261 echo "Checking whether closedir() returns a status..." >&4
13263 #$i_dirent I_DIRENT /**/
13264 #$i_sysdir I_SYS_DIR /**/
13265 #$i_sysndir I_SYS_NDIR /**/
13266 #$i_systypes I_SYS_TYPES /**/
13268 #if defined(I_SYS_TYPES)
13269 #include <sys/types.h>
13271 #if defined(I_DIRENT)
13272 #include <dirent.h>
13273 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13274 #include <sys/dir.h>
13278 #include <sys/ndir.h>
13282 #include <ndir.h> /* may be wrong in the future */
13284 #include <sys/dir.h>
13289 int main() { return closedir(opendir(".")); }
13292 if eval $compile_ok; then
13293 if $run ./try > /dev/null 2>&1 ; then
13294 echo "Yes, it does."
13297 echo "No, it doesn't."
13301 echo "(I can't seem to compile the test program--assuming it doesn't)"
13309 set d_void_closedir
13312 : see if there is a wait4
13316 : see if waitpid exists
13317 set waitpid d_waitpid
13320 : see if wcstombs exists
13321 set wcstombs d_wcstombs
13324 : see if wctomb exists
13325 set wctomb d_wctomb
13328 : see if writev exists
13329 set writev d_writev
13332 : preserve RCS keywords in files with variable substitution, grrr
13337 Revision='$Revision'
13339 : check for alignment requirements
13341 case "$usecrosscompile$multiarch" in
13344 You seem to be either cross-compiling or doing a multiarchitecture build,
13345 skipping the memory alignment check.
13348 case "$alignbytes" in
13349 '') alignbytes=8 ;;
13353 case "$alignbytes" in
13354 '') echo "Checking alignment constraints..." >&4
13355 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13356 $cat >try.c <<'EOCP'
13357 typedef long double NV;
13360 $cat >try.c <<'EOCP'
13364 $cat >>try.c <<'EOCP'
13372 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13377 if eval $compile_ok; then
13381 echo "(I can't seem to compile the test program...)"
13384 *) dflt="$alignbytes"
13387 rp="Doubles must be aligned on a how-many-byte boundary?"
13395 : set the base revision
13398 : how do we catenate cpp tokens here?
13400 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13401 $cat >cpp_stuff.c <<'EOCP'
13402 #define RCAT(a,b)a/**/b
13403 #define ACAT(a,b)a ## b
13407 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13408 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13409 echo "Oh! Smells like ANSI's been here." >&4
13410 echo "We can catify or stringify, separately or together!"
13412 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13413 echo "Ah, yes! The good old days!" >&4
13414 echo "However, in the good old days we don't know how to stringify and"
13415 echo "catify at the same time."
13419 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13420 to have to edit the values of CAT[2-5] in config.h...
13422 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13426 : see if this is a db.h system
13432 : Check db version.
13434 echo "Checking Berkeley DB version ..." >&4
13440 #include <sys/types.h>
13443 int main(int argc, char *argv[])
13445 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13446 int Major, Minor, Patch ;
13447 unsigned long Version ;
13448 (void)db_version(&Major, &Minor, &Patch) ;
13450 printf("%d %d %d %d %d %d\n",
13451 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13452 Major, Minor, Patch);
13455 printf("You have Berkeley DB Version 2 or greater.\n");
13457 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13458 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13459 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13460 Major, Minor, Patch) ;
13462 /* check that db.h & libdb are compatible */
13463 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13464 printf("db.h and libdb are incompatible.\n") ;
13468 printf("db.h and libdb are compatible.\n") ;
13470 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13471 + DB_VERSION_PATCH ;
13473 /* needs to be >= 2.3.4 */
13474 if (Version < 2003004) {
13475 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13476 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13482 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13487 printf("You have Berkeley DB Version 1.\n");
13488 exit(0); /* DB version < 2: the coast is clear. */
13490 exit(1); /* <db.h> not Berkeley DB? */
13496 if eval $compile_ok && $run ./try; then
13497 echo 'Looks OK.' >&4
13499 db_version_major=$1
13500 db_version_minor=$2
13501 db_version_patch=$3
13503 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13507 : Remove db from list of libraries to use
13508 echo "Removing unusable -ldb from library list" >&4
13509 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13512 echo "libs = $libs" >&4
13522 : Check the return type needed for hash
13524 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13530 #include <sys/types.h>
13533 #ifndef DB_VERSION_MAJOR
13534 u_int32_t hash_cb (ptr, size)
13542 info.hash = hash_cb;
13546 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13547 if $contains warning try.out >>/dev/null 2>&1 ; then
13550 db_hashtype='u_int32_t'
13553 : XXX Maybe we should just give up here.
13554 db_hashtype=u_int32_t
13556 echo "Help: I can't seem to compile the db test program." >&4
13557 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13560 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13562 *) db_hashtype=u_int32_t
13567 : Check the return type needed for prefix
13569 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13575 #include <sys/types.h>
13578 #ifndef DB_VERSION_MAJOR
13579 size_t prefix_cb (key1, key2)
13587 info.prefix = prefix_cb;
13591 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13592 if $contains warning try.out >>/dev/null 2>&1 ; then
13593 db_prefixtype='int'
13595 db_prefixtype='size_t'
13598 db_prefixtype='size_t'
13599 : XXX Maybe we should just give up here.
13601 echo "Help: I can't seem to compile the db test program." >&4
13602 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13605 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13607 *) db_prefixtype='size_t'
13612 : How can we generate normalized random numbers ?
13614 echo "Looking for a random number function..." >&4
13615 case "$randfunc" in
13617 if set drand48 val -f; eval $csym; $val; then
13619 echo "Good, found drand48()." >&4
13620 elif set random val -f; eval $csym; $val; then
13622 echo "OK, found random()." >&4
13625 echo "Yick, looks like I have to use rand()." >&4
13636 *-Dmy_rand=*|*-Dmy_srand=*)
13637 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13638 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13639 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13640 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13644 while $test "$cont"; do
13645 rp="Use which function to generate random numbers?"
13647 if $test "$ans" = "$dflt"; then
13653 if set $ans val -f; eval $csym; $val; then
13657 rp="I cannot find function $ans. Use that name anyway?"
13666 case "$randfunc" in
13668 drand01="drand48()"
13674 case "$randbits" in
13676 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13678 #$i_unistd I_UNISTD
13679 #$i_stdlib I_STDLIB
13682 # include <unistd.h>
13685 # include <stdlib.h>
13690 register unsigned long tmp;
13691 register unsigned long max = 0L;
13693 for (i = 1000; i; i--) {
13694 tmp = (unsigned long) $randfunc();
13695 if (tmp > max) max = tmp;
13697 for (i = 0; max; i++)
13703 if eval $compile_ok; then
13707 echo "(I can't seem to compile the test program...)"
13714 rp="How many bits does your $randfunc() function produce?"
13718 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13719 seedfunc="s$randfunc"
13720 randseedtype=unsigned
13724 rp="How many bits does your $randfunc() function produce?"
13727 seedfunc="s$randfunc"
13728 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13729 if set $seedfunc val -f; eval $csym; $val; then
13730 echo "(Using $seedfunc() to seed random generator)"
13732 echo "(Warning: no $seedfunc() to seed random generator)"
13735 randseedtype=unsigned
13743 echo "Determining whether or not we are on an EBCDIC system..." >&4
13744 $cat >try.c <<'EOM'
13747 if ('M'==0xd4) return 0;
13754 if eval $compile_ok; then
13755 if $run ./try; then
13756 echo "You seem to speak EBCDIC." >&4
13759 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13762 echo "I'm unable to compile the test program." >&4
13763 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13771 Checking how to flush all pending stdio output...
13773 # I only know how to find the first 32 possibly open files on SunOS.
13774 # See also hints/sunos_4_1.sh and util.c --AD
13776 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13778 $cat >>try.c <<EOCP
13780 #$i_unistd I_UNISTD
13782 # include <unistd.h>
13784 #$d_sysconf HAS_SYSCONF
13785 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13786 #ifdef HAS_STDIO_STREAM_ARRAY
13787 # define STDIO_STREAM_ARRAY $stdio_stream_array
13792 p = fopen("try.out", "w");
13796 # ifdef TRY_FPRINTF
13800 #ifdef TRY_FFLUSH_NULL
13803 #ifdef TRY_FFLUSH_ALL
13805 long open_max = -1;
13806 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13807 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13809 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13810 open_max = sysconf(_SC_OPEN_MAX);
13813 open_max = FOPEN_MAX;
13816 open_max = OPEN_MAX;
13825 # ifdef HAS_STDIO_STREAM_ARRAY
13826 if (open_max > 0) {
13828 for (i = 0; i < open_max; i++)
13829 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13830 STDIO_STREAM_ARRAY[i]._file < open_max &&
13831 STDIO_STREAM_ARRAY[i]._flag)
13832 fflush(&STDIO_STREAM_ARRAY[i]);
13840 : first we have to find out how _not_ to flush
13842 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13844 set try -DTRY_FPUTC
13845 if eval $compile; then
13846 $run ./try 2>/dev/null
13849 if $test ! -s try.out -a "X$code" = X42; then
13855 set try -DTRY_FPRINTF
13856 if eval $compile; then
13857 $run ./try 2>/dev/null
13860 if $test ! -s try.out -a "X$code" = X42; then
13861 output=-DTRY_FPRINTF
13867 : check for fflush NULL behaviour
13868 case "$fflushNULL" in
13869 '') set try -DTRY_FFLUSH_NULL $output
13870 if eval $compile; then
13871 $run ./try 2>/dev/null
13874 if $test -s try.out -a "X$code" = X42; then
13875 fflushNULL="`$cat try.out`"
13877 if $test "X$code" != X42; then
13879 (If this test failed, don't worry, we'll try another method shortly.)
13884 $rm -f core try.core core.try.*
13885 case "$fflushNULL" in
13887 Your fflush(NULL) works okay for output streams.
13888 Let's see if it clobbers input pipes...
13890 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13891 # bug that improperly flushes the input end of pipes. So we avoid the
13892 # autoflush on fork/system/exec support for now. :-(
13893 $cat >tryp.c <<EOCP
13896 main(int argc, char **argv)
13902 while ((i = getc(stdin)) != -1
13903 && (*bp++ = i) != '\n'
13904 && bp < &buf[1024])
13907 fprintf(stdout, "%s", buf);
13915 fflushNULL="$define"
13917 if eval $compile; then
13919 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13920 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13922 fflush(NULL) seems to behave okay with input streams.
13924 fflushNULL="$define"
13927 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13929 fflushNULL="$undef"
13932 $rm -f core tryp.c tryp.core core.tryp.*
13935 Your fflush(NULL) isn't working (contrary to ANSI C).
13937 fflushNULL="$undef"
13940 Cannot figure out whether your fflush(NULL) works or not.
13941 I'm assuming it doesn't (contrary to ANSI C).
13943 fflushNULL="$undef"
13947 $define|true|[yY]*)
13948 fflushNULL="$define"
13951 fflushNULL="$undef"
13954 : check explicit looping only if NULL did not work, and if the pipe
13955 : bug does not show up on an explicit flush too
13956 case "$fflushNULL" in
13958 $cat >tryp.c <<EOCP
13961 main(int argc, char **argv)
13967 while ((i = getc(stdin)) != -1
13968 && (*bp++ = i) != '\n'
13969 && bp < &buf[1024])
13972 fprintf(stdout, "%s", buf);
13981 if eval $compile; then
13983 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13984 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13986 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13988 : now check for fflushall behaviour
13989 case "$fflushall" in
13990 '') set try -DTRY_FFLUSH_ALL $output
13991 if eval $compile; then
13993 (Now testing the other method--but note that this also may fail.)
13995 $run ./try 2>/dev/null
13998 if $test -s try.out -a "X$code" = X42; then
13999 fflushall="`$cat try.out`"
14002 $rm -f core try.core core.try.*
14003 case "$fflushall" in
14005 Whew. Flushing explicitly all the stdio streams works.
14007 fflushall="$define"
14010 Sigh. Flushing explicitly all the stdio streams doesn't work.
14015 Cannot figure out whether flushing stdio streams explicitly works or not.
14016 I'm assuming it doesn't.
14022 "$define"|true|[yY]*)
14023 fflushall="$define"
14031 All is futile. Even fflush(stdin) clobbers input pipes!
14038 $rm -f core tryp.c tryp.core core.tryp.*
14040 *) fflushall="$undef"
14044 case "$fflushNULL$fflushall" in
14047 OK, I give up. I cannot figure out how to flush pending stdio output.
14048 We won't be flushing handles at all before fork/exec/popen.
14052 $rm -f try.* try$exe_ext
14054 : Store the full pathname to the ar program for use in the C program
14055 : Respect a hint or command line value for full_ar.
14060 : Store the full pathname to the sed program for use in the C program
14063 : see what type gids are declared as in the kernel
14065 echo "Looking for the type for group ids returned by getgid()."
14066 set gid_t gidtype xxx stdio.h sys/types.h
14070 xxx=`./findhdr sys/user.h`
14071 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14073 unsigned) dflt="$1 $2" ;;
14077 *) dflt="$gidtype";;
14080 gid_t) echo "gid_t found." ;;
14081 *) rp="What is the type for group ids returned by getgid()?"
14089 *_t) zzz="$gidtype" ;;
14092 echo "Checking the size of $zzz..." >&4
14094 #include <sys/types.h>
14097 printf("%d\n", (int)sizeof($gidtype));
14102 if eval $compile_ok; then
14106 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14109 echo "Your $zzz is $gidsize bytes long."
14114 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14120 *_t) zzz="$gidtype" ;;
14123 echo "Checking the sign of $zzz..." >&4
14125 #include <sys/types.h>
14136 if eval $compile; then
14140 echo "(I can't execute the test program--guessing unsigned.)" >&4
14144 1) echo "Your $zzz is unsigned." ;;
14145 -1) echo "Your $zzz is signed." ;;
14151 echo "(I can't compile the test program--guessing unsigned.)" >&4
14157 if $test X"$quadtype" != X; then
14159 echo "Checking how to print 64-bit integers..." >&4
14161 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14162 $cat >try.c <<'EOCP'
14163 #include <sys/types.h>
14166 int q = 12345678901;
14167 printf("%ld\n", q);
14171 if eval $compile; then
14175 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14176 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14177 echo "We will use %d."
14183 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14184 $cat >try.c <<'EOCP'
14185 #include <sys/types.h>
14188 long q = 12345678901;
14189 printf("%ld\n", q);
14193 if eval $compile; then
14197 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14198 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14199 echo "We will use %ld."
14205 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14206 $cat >try.c <<'EOCP'
14207 #include <sys/types.h>
14208 #include <inttypes.h>
14211 int64_t q = 12345678901;
14212 printf("%" PRId64 "\n", q);
14216 if eval $compile; then
14220 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14221 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14222 echo "We will use the C9X style."
14228 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14230 #include <sys/types.h>
14233 $quadtype q = 12345678901;
14234 printf("%Ld\n", q);
14238 if eval $compile; then
14242 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14243 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14244 echo "We will use %Ld."
14250 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14251 $cat >try.c <<'EOCP'
14252 #include <sys/types.h>
14255 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14256 printf("%lld\n", q);
14260 if eval $compile; then
14264 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14265 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14266 echo "We will use the %lld style."
14272 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14274 #include <sys/types.h>
14277 $quadtype q = 12345678901;
14278 printf("%qd\n", q);
14282 if eval $compile; then
14286 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14287 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14288 echo "We will use %qd."
14294 if $test X"$sPRId64" = X; then
14295 echo "Cannot figure out how to print 64-bit integers." >&4
14303 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14304 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14306 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14307 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14313 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14315 if $test X"$ivsize" = X8; then
14316 ivdformat="$sPRId64"
14317 uvuformat="$sPRIu64"
14318 uvoformat="$sPRIo64"
14319 uvxformat="$sPRIx64"
14320 uvXUformat="$sPRIXU64"
14322 if $test X"$ivsize" = X"$longsize"; then
14329 if $test X"$ivsize" = X"$intsize"; then
14337 if $test X"$ivsize" = X"$shortsize"; then
14348 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14349 nveformat="$sPRIeldbl"
14350 nvfformat="$sPRIfldbl"
14351 nvgformat="$sPRIgldbl"
14352 nvEUformat="$sPRIEUldbl"
14353 nvFUformat="$sPRIFUldbl"
14354 nvGUformat="$sPRIGUldbl"
14364 case "$ivdformat" in
14365 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14372 $echo "Checking the format string to be used for gids..." >&4
14375 -1) if $test X"$gidsize" = X"$ivsize"; then
14376 gidformat="$ivdformat"
14378 if $test X"$gidsize" = X"$longsize"; then
14381 if $test X"$gidsize" = X"$intsize"; then
14384 if $test X"$gidsize" = X"$shortsize"; then
14391 *) if $test X"$gidsize" = X"$uvsize"; then
14392 gidformat="$uvuformat"
14394 if $test X"$gidsize" = X"$longsize"; then
14397 if $test X"$gidsize" = X"$intsize"; then
14400 if $test X"$gidsize" = X"$shortsize"; then
14409 : see if getgroups exists
14410 set getgroups d_getgrps
14413 : see if setgroups exists
14414 set setgroups d_setgrps
14418 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14420 case "$d_getgrps$d_setgrps" in
14422 case "$groupstype" in
14423 '') dflt="$gidtype" ;;
14424 *) dflt="$groupstype" ;;
14427 What type of pointer is the second argument to getgroups() and setgroups()?
14428 Usually this is the same as group ids, $gidtype, but not always.
14431 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14435 *) groupstype="$gidtype";;
14439 echo "Checking if your $make program sets \$(MAKE)..." >&4
14440 case "$make_set_make" in
14442 $sed 's/^X //' > testmake.mak << 'EOF'
14444 X @echo 'maketemp="$(MAKE)"'
14446 case "`$make -f testmake.mak 2>/dev/null`" in
14447 *maketemp=*) make_set_make='#' ;;
14448 *) make_set_make="MAKE=$make" ;;
14450 $rm -f testmake.mak
14453 case "$make_set_make" in
14454 '#') echo "Yup, it does.";;
14455 *) echo "Nope, it doesn't.";;
14458 : see what type is used for mode_t
14459 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14460 set mode_t modetype int stdio.h sys/types.h
14463 : see if stdarg is available
14465 if $test `./findhdr stdarg.h`; then
14466 echo "<stdarg.h> found." >&4
14469 echo "<stdarg.h> NOT found." >&4
14473 : see if varags is available
14475 if $test `./findhdr varargs.h`; then
14476 echo "<varargs.h> found." >&4
14478 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14481 : set up the varargs testing programs
14482 $cat > varargs.c <<EOP
14484 #include <stdarg.h>
14487 #include <varargs.h>
14491 int f(char *p, ...)
14505 p = va_arg(ap, char *);
14510 $cat > varargs <<EOP
14512 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14521 : now check which varargs header should be included
14526 if `./varargs I_STDARG`; then
14528 elif `./varargs I_VARARGS`; then
14533 if `./varargs I_VARARGS`; then
14540 echo "I could not find the definition for va_dcl... You have problems..." >&4
14541 val="$undef"; set i_stdarg; eval $setvar
14542 val="$undef"; set i_varargs; eval $setvar
14547 case "$i_varhdr" in
14549 val="$define"; set i_stdarg; eval $setvar
14550 val="$undef"; set i_varargs; eval $setvar
14553 val="$undef"; set i_stdarg; eval $setvar
14554 val="$define"; set i_varargs; eval $setvar
14557 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14561 : see if we need va_copy
14563 case "$i_stdarg" in
14566 #include <stdarg.h>
14568 #$i_stdlib I_STDLIB
14570 #include <stdlib.h>
14572 #include <signal.h>
14575 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14577 return vfprintf(f, fmt, *valp);
14581 myvfprintf(FILE *f, const char *fmt, va_list val)
14583 return ivfprintf(f, fmt, &val);
14587 myprintf(char *fmt, ...)
14590 va_start(val, fmt);
14591 return myvfprintf(stdout, fmt, val);
14595 main(int ac, char **av)
14597 signal(SIGSEGV, exit);
14599 myprintf("%s%cs all right, then\n", "that", '\'');
14604 if eval $compile && $run ./try 2>&1 >/dev/null; then
14605 case "`$run ./try`" in
14606 "that's all right, then")
14612 yes) echo "It seems that you don't need va_copy()." >&4
14613 need_va_copy="$undef"
14615 *) echo "It seems that va_copy() or similar will be needed." >&4
14616 need_va_copy="$define"
14619 $rm -f try.* core core.* *.core *.core.*
14621 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14625 : define a fucntion to check prototypes
14626 $cat > protochk <<EOSH
14629 optimize="$optimize"
14631 prototype="$prototype"
14636 $cat >> protochk <<'EOSH'
14641 while test $# -ge 2; do
14643 $define) echo "#include <$2>" >> try.c ;;
14644 literal) echo "$2" >> try.c ;;
14648 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14649 cat >> try.c <<'EOCP'
14650 #ifdef CAN_PROTOTYPE
14651 #define _(args) args
14656 echo "$foo" >> try.c
14657 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14658 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14664 $eunicefix protochk
14666 : see what type is used for size_t
14667 rp="What is the type used for the length parameter for string functions?"
14668 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14671 : check for type of arguments to gethostbyaddr.
14672 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14673 case "$d_gethbyaddr" in
14677 Checking to see what type of arguments are accepted by gethostbyaddr().
14679 hdrs="$define sys/types.h
14680 $d_socket sys/socket.h
14681 $i_niin netinet/in.h
14683 $i_unistd unistd.h"
14684 : The first arg can 'char *' or 'void *'
14685 : The second arg is some of integral type
14686 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14687 for yyy in size_t long int; do
14688 case "$netdb_host_type" in
14689 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14690 if ./protochk "$try" $hdrs; then
14691 echo "Your system accepts $xxx for the first arg."
14692 echo "...and $yyy for the second arg."
14693 netdb_host_type="$xxx"
14694 netdb_hlen_type="$yyy"
14700 : In case none of those worked, prompt the user.
14701 case "$netdb_host_type" in
14702 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14705 netdb_host_type=$ans
14706 rp='What is the type for the 2nd argument to gethostbyaddr?'
14709 netdb_hlen_type=$ans
14713 *) : no gethostbyaddr, so pick harmless defaults
14714 netdb_host_type='char *'
14715 netdb_hlen_type="$sizetype"
14718 # Remove the "const" if needed. -- but then we'll have a
14720 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14723 : check for type of argument to gethostbyname.
14724 if test "X$netdb_name_type" = X ; then
14725 case "$d_gethbyname" in
14729 Checking to see what type of argument is accepted by gethostbyname().
14731 hdrs="$define sys/types.h
14732 $d_socket sys/socket.h
14733 $i_niin netinet/in.h
14735 $i_unistd unistd.h"
14736 for xxx in "const char *" "char *"; do
14737 case "$netdb_name_type" in
14738 '') try="extern struct hostent *gethostbyname($xxx);"
14739 if ./protochk "$try" $hdrs; then
14740 echo "Your system accepts $xxx."
14741 netdb_name_type="$xxx"
14746 : In case none of those worked, prompt the user.
14747 case "$netdb_name_type" in
14748 '') rp='What is the type for the 1st argument to gethostbyname?'
14751 netdb_name_type=$ans
14755 *) : no gethostbyname, so pick harmless default
14756 netdb_name_type='char *'
14761 : check for type of 1st argument to getnetbyaddr.
14762 if test "X$netdb_net_type" = X ; then
14763 case "$d_getnbyaddr" in
14767 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14769 hdrs="$define sys/types.h
14770 $d_socket sys/socket.h
14771 $i_niin netinet/in.h
14773 $i_unistd unistd.h"
14774 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14775 case "$netdb_net_type" in
14776 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14777 if ./protochk "$try" $hdrs; then
14778 echo "Your system accepts $xxx."
14779 netdb_net_type="$xxx"
14784 : In case none of those worked, prompt the user.
14785 case "$netdb_net_type" in
14786 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14789 netdb_net_type=$ans
14793 *) : no getnetbyaddr, so pick harmless default
14794 netdb_net_type='long'
14798 : locate the preferred pager for this system
14804 [a-zA-Z]:/*) dflt=$pg;;
14808 [a-zA-Z]:/*) dflt=$more;;
14812 [a-zA-Z]:/*) dflt=$less;;
14815 '') dflt=/usr/ucb/more;;
14822 rp='What pager is used on your system?'
14826 : see what type pids are declared as in the kernel
14827 rp="What is the type of process ids on this system?"
14828 set pid_t pidtype int stdio.h sys/types.h
14831 : Find earliest binary compatible site_perl subdirectory perl can use.
14832 case "$bincompat5005" in
14833 "$define") xs_apiversion='5.005' ;;
14834 *) xs_apiversion=$version ;; # The current site_perl version.
14836 : Find earliest pure perl site_perl subdirectory perl can use.
14837 : The versioned directories started at 5.005.
14838 pm_apiversion='5.005'
14840 : see if ar generates random libraries by itself
14842 echo "Checking how to generate random libraries on your machine..." >&4
14843 echo 'int bar1() { return bar2(); }' > bar1.c
14844 echo 'int bar2() { return 2; }' > bar2.c
14845 $cat > foo.c <<'EOP'
14846 int main() { printf("%d\n", bar1()); exit(0); }
14848 $cc $ccflags -c bar1.c >/dev/null 2>&1
14849 $cc $ccflags -c bar2.c >/dev/null 2>&1
14850 $cc $ccflags -c foo.c >/dev/null 2>&1
14851 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14852 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14853 $run ./foobar >/dev/null 2>&1; then
14854 echo "$ar appears to generate random libraries itself."
14857 elif $ar ts bar$_a >/dev/null 2>&1 &&
14858 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14859 $run ./foobar >/dev/null 2>&1; then
14860 echo "a table of contents needs to be added with '$ar ts'."
14867 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14868 $test -f $ranlib || ranlib=''
14871 if $test -n "$ranlib"; then
14872 echo "your system has '$ranlib'; we'll use that."
14875 echo "your system doesn't seem to support random libraries"
14876 echo "so we'll use lorder and tsort to order the libraries."
14883 : check for type of arguments to select.
14884 case "$selecttype" in
14885 '') case "$d_select" in
14889 Checking to see what type of arguments are accepted by select().
14891 hdrs="$define sys/types.h
14892 $i_systime sys/time.h
14893 $i_sysselct sys/select.h
14894 $d_socket sys/socket.h"
14895 : The first arg can be int, unsigned, or size_t
14896 : The last arg may or may not be 'const'
14898 : void pointer has been seen but using that
14899 : breaks the selectminbits test
14900 for xxx in 'fd_set *' 'int *'; do
14901 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14902 for tmo in 'struct timeval *' 'const struct timeval *'; do
14904 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14905 if ./protochk "$try" $hdrs; then
14906 echo "Your system accepts $xxx."
14915 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14916 case "$d_fd_set" in
14917 $define) dflt="fd_set *" ;;
14926 *) : no select, so pick a harmless default
14933 : check for the select 'width'
14934 case "$selectminbits" in
14935 '') case "$d_select" in
14939 Checking to see on how many bits at a time your select() operates...
14942 #include <sys/types.h>
14944 #$i_systime I_SYS_TIME
14945 #$i_systimek I_SYS_TIME_KERNEL
14950 # ifdef I_SYS_TIME_KERNEL
14953 # include <sys/time.h>
14954 # ifdef I_SYS_TIME_KERNEL
14958 #$i_sysselct I_SYS_SELECT
14959 #ifdef I_SYS_SELECT
14960 #include <sys/select.h>
14962 #$d_socket HAS_SOCKET
14964 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14968 #define S sizeof(*(b))
14970 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14971 #define NBITS (NBYTES * 8)
14980 fp = fopen("try.c", "r");
14986 b = ($selecttype)s;
14987 for (i = 0; i < NBITS; i++)
14991 select(fd + 1, b, 0, 0, &t);
14992 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14993 printf("%d\n", i + 1);
14998 if eval $compile_ok; then
14999 selectminbits=`$run ./try`
15000 case "$selectminbits" in
15002 Cannot figure out on how many bits at a time your select() operates.
15003 I'll play safe and guess it is 32 bits.
15009 *) bits="$selectminbits bits" ;;
15011 echo "Your select() operates on $bits at a time." >&4
15013 rp='What is the minimum number of bits your select() operates on?'
15014 case "$byteorder" in
15015 1234|12345678) dflt=32 ;;
15020 selectminbits="$val"
15024 *) : no select, so pick a harmless default
15031 : Trace out the files included by signal.h, then look for SIGxxx names.
15032 : Remove SIGARRAYSIZE used by HPUX.
15033 : Remove SIGSTKSIZE used by Linux.
15034 : Remove SIGSTKSZ used by Posix.
15035 : Remove SIGTYP void lines used by OS2.
15036 : Some cpps, like os390, dont give the file name anywhere
15037 if [ "X$fieldn" = X ]; then
15038 : Just make some guesses. We check them later.
15039 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15041 xxx=`echo '#include <signal.h>' |
15042 $cppstdin $cppminus $cppflags 2>/dev/null |
15043 $grep '^[ ]*#.*include' |
15044 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15046 : Check this list of files to be sure we have parsed the cpp output ok.
15047 : This will also avoid potentially non-existent files, such
15050 for xx in $xxx /dev/null ; do
15051 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15053 : If we have found no files, at least try signal.h
15054 case "$xxxfiles" in
15055 '') xxxfiles=`./findhdr signal.h` ;;
15058 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15059 print substr($2, 4, 20)
15061 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15062 print substr($3, 4, 20)
15064 : Append some common names just in case the awk scan failed.
15065 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15066 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15067 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15068 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15069 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15071 : generate a few handy files for later
15072 $cat > signal.c <<'EOCP'
15073 #include <sys/types.h>
15074 #include <signal.h>
15078 /* Strange style to avoid deeply-nested #if/#else/#endif */
15081 # define NSIG (_NSIG)
15087 # define NSIG (SIGMAX+1)
15093 # define NSIG (SIG_MAX+1)
15099 # define NSIG (MAXSIG+1)
15105 # define NSIG (MAX_SIG+1)
15110 # ifdef SIGARRAYSIZE
15111 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15117 # define NSIG (_sys_nsig) /* Solaris 2.5 */
15121 /* Default to some arbitrary number that's big enough to get most
15122 of the common signals.
15128 printf("NSIG %d\n", NSIG);
15134 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15136 printf "#ifdef SIG"; printf $1; printf "\n"
15137 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15138 printf $1; printf ");\n"
15142 printf "#endif /* JUST_NSIG */\n";
15143 printf "exit(0);\n}\n";
15146 $cat >signal.awk <<'EOP'
15147 BEGIN { ndups = 0 }
15148 $1 ~ /^NSIG$/ { nsig = $2 }
15149 ($1 !~ /^NSIG$/) && (NF == 2) {
15150 if ($2 > maxsig) { maxsig = $2 }
15151 if (sig_name[$2]) {
15152 dup_name[ndups] = $1
15153 dup_num[ndups] = $2
15165 printf("NSIG %d\n", nsig);
15166 for (n = 1; n < nsig; n++) {
15168 printf("%s %d\n", sig_name[n], sig_num[n])
15171 printf("NUM%d %d\n", n, n)
15174 for (n = 0; n < ndups; n++) {
15175 printf("%s %d\n", dup_name[n], dup_num[n])
15179 $cat >signal_cmd <<EOS
15181 if $test -s signal.lst; then
15182 echo "Using your existing signal.lst file"
15187 $cat >>signal_cmd <<'EOS'
15190 if eval $compile_ok; then
15191 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15193 echo "(I can't seem be able to compile the whole test program)" >&4
15194 echo "(I'll try it in little pieces.)" >&4
15195 set signal -DJUST_NSIG
15196 if eval $compile_ok; then
15197 $run ./signal$_exe > signal.nsg
15200 echo "I can't seem to figure out how many signals you have." >&4
15201 echo "Guessing 50." >&4
15202 echo 'NSIG 50' > signal.nsg
15204 : Now look at all the signal names, one at a time.
15205 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15206 $cat > signal.c <<EOCP
15207 #include <sys/types.h>
15208 #include <signal.h>
15211 printf("$xx %d\n", SIG${xx});
15216 if eval $compile; then
15217 echo "SIG${xx} found."
15218 $run ./signal$_exe >> signal.ls1
15220 echo "SIG${xx} NOT found."
15223 if $test -s signal.ls1; then
15224 $cat signal.nsg signal.ls1 |
15225 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15229 if $test -s signal.lst; then
15232 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15233 echo 'kill -l' >signal
15234 set X `csh -f <signal`
15238 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15240 echo $@ | $tr ' ' $trnl | \
15241 $awk '{ printf "%s %d\n", $1, ++s; }
15242 END { printf "NSIG %d\n", ++s }' >signal.lst
15244 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15246 chmod a+x signal_cmd
15247 $eunicefix signal_cmd
15249 : generate list of signal names
15251 case "$sig_name_init" in
15253 *) case "$sig_num_init" in
15254 ''|*,*) doinit=yes ;;
15259 echo "Generating a list of signal names and numbers..." >&4
15261 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15262 sig_name=`$awk 'BEGIN { printf "ZERO " }
15263 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15264 sig_num=`$awk 'BEGIN { printf "0 " }
15265 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15266 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15267 !/^NSIG/ { printf "\"%s\", ", $1 }
15268 END { printf "0\n" }' signal.lst`
15269 sig_num_init=`$awk 'BEGIN { printf "0, " }
15270 !/^NSIG/ { printf "%d, ", $2}
15271 END { printf "0\n"}' signal.lst`
15274 echo "The following $sig_count signals are available:"
15276 echo $sig_name | $awk \
15277 'BEGIN { linelen = 0 }
15279 for (i = 1; i <= NF; i++) {
15280 name = "SIG" $i " "
15281 linelen = linelen + length(name)
15282 if (linelen > 70) {
15284 linelen = length(name)
15290 sig_size=`echo $sig_name | awk '{print NF}'`
15291 $rm -f signal signal.c signal.awk signal.lst signal_cmd
15294 case "$sizetype" in
15295 *_t) zzz="$sizetype" ;;
15296 *) zzz="filesize" ;;
15298 echo "Checking the size of $zzz..." >&4
15300 #include <sys/types.h>
15303 printf("%d\n", (int)sizeof($sizetype));
15308 if eval $compile_ok; then
15312 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15315 echo "Your $zzz size is $sizesize bytes."
15320 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15324 : check for socklen_t
15326 echo "Checking to see if you have socklen_t..." >&4
15328 #include <sys/types.h>
15329 #$d_socket HAS_SOCKET
15331 #include <sys/socket.h>
15333 int main() { socklen_t x = 16; }
15336 if eval $compile; then
15338 echo "You have socklen_t."
15341 echo "You do not have socklen_t."
15342 case "$sizetype" in
15343 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15350 : see if this is a socks.h system
15351 set socks.h i_socks
15354 : check for type of the size argument to socket calls
15355 case "$d_socket" in
15359 Checking to see what type is the last argument of accept().
15362 case "$d_socklen_t" in
15363 "$define") yyy="$yyy socklen_t"
15365 yyy="$yyy $sizetype int long unsigned"
15366 for xxx in $yyy; do
15367 case "$socksizetype" in
15368 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
15369 case "$usesocks" in
15371 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15372 echo "Your system accepts '$xxx *' for the last argument of accept()."
15373 socksizetype="$xxx"
15376 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15377 echo "Your system accepts '$xxx *' for the last argument of accept()."
15378 socksizetype="$xxx"
15385 : In case none of those worked, prompt the user.
15386 case "$socksizetype" in
15387 '') rp='What is the type for socket address structure sizes?'
15394 *) : no sockets, so pick relatively harmless default
15399 : see what type is used for signed size_t
15400 set ssize_t ssizetype int stdio.h sys/types.h
15405 #include <sys/types.h>
15406 #define Size_t $sizetype
15407 #define SSize_t $dflt
15410 if (sizeof(Size_t) == sizeof(SSize_t))
15412 else if (sizeof(Size_t) == sizeof(int))
15421 if eval $compile_ok && $run ./try > /dev/null; then
15422 ssizetype=`$run ./try`
15423 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15426 Help! I can't compile and run the ssize_t test program: please enlighten me!
15427 (This is probably a misconfiguration in your system or libraries, and
15428 you really ought to fix it. Still, I'll try anyway.)
15430 I need a type that is the same size as $sizetype, but is guaranteed to
15431 be signed. Common values are ssize_t, int and long.
15434 rp="What signed type is the same size as $sizetype?"
15440 : see what type of char stdio uses.
15442 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15443 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15444 echo "Your stdio uses unsigned chars." >&4
15445 stdchar="unsigned char"
15447 echo "Your stdio uses signed chars." >&4
15454 : see if time exists
15456 if test "X$d_time" = X -o X"$timetype" = X; then
15457 if set time val -f d_time; eval $csym; $val; then
15458 echo 'time() found.' >&4
15460 rp="What is the type returned by time() on this system?"
15461 set time_t timetype long stdio.h sys/types.h
15464 echo 'time() not found, hope that will do.' >&4
15472 : see what type uids are declared as in the kernel
15474 echo "Looking for the type for user ids returned by getuid()."
15475 set uid_t uidtype xxx stdio.h sys/types.h
15479 xxx=`./findhdr sys/user.h`
15480 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15482 unsigned) dflt="$1 $2" ;;
15486 *) dflt="$uidtype";;
15489 uid_t) echo "uid_t found." ;;
15490 *) rp="What is the type for user ids returned by getuid()?"
15498 *_t) zzz="$uidtype" ;;
15501 echo "Checking the size of $zzz..." >&4
15503 #include <sys/types.h>
15506 printf("%d\n", (int)sizeof($uidtype));
15511 if eval $compile_ok; then
15515 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15518 echo "Your $zzz is $uidsize bytes long."
15523 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15528 *_t) zzz="$uidtype" ;;
15531 echo "Checking the sign of $zzz..." >&4
15533 #include <sys/types.h>
15544 if eval $compile; then
15548 echo "(I can't execute the test program--guessing unsigned.)" >&4
15552 1) echo "Your $zzz is unsigned." ;;
15553 -1) echo "Your $zzz is signed." ;;
15559 echo "(I can't compile the test program--guessing unsigned.)" >&4
15565 $echo "Checking the format string to be used for uids..." >&4
15568 -1) if $test X"$uidsize" = X"$ivsize"; then
15569 uidformat="$ivdformat"
15571 if $test X"$uidsize" = X"$longsize"; then
15574 if $test X"$uidsize" = X"$intsize"; then
15577 if $test X"$uidsize" = X"$shortsize"; then
15584 *) if $test X"$uidsize" = X"$uvsize"; then
15585 uidformat="$uvuformat"
15587 if $test X"$uidsize" = X"$longsize"; then
15590 if $test X"$uidsize" = X"$intsize"; then
15593 if $test X"$uidsize" = X"$shortsize"; then
15602 : determine compiler compiler
15611 if $test -f "$byacc"; then
15613 comp="byacc or $comp"
15615 if $test -f "$bison"; then
15616 comp="$comp or bison -y"
15618 rp="Which compiler compiler ($comp) shall I use?"
15627 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15633 : see if fcntl.h is there
15638 : see if we can include fcntl.h
15644 echo "We'll be including <fcntl.h>." >&4
15647 if $h_sysfile; then
15648 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15650 echo "We won't be including <fcntl.h>." >&4
15662 : see if this is a iconv.h system
15663 set iconv.h i_iconv
15666 : see if this is a ieeefp.h system
15667 set ieeefp.h i_ieeefp
15670 : see if this is a libutil.h system
15671 set libutil.h i_libutil
15674 : see if locale.h is available
15675 set locale.h i_locale
15678 : see if mach cthreads are available
15679 if test "X$usethreads" = "X$define"; then
15680 set mach/cthreads.h i_machcthr
15683 i_machcthr="$undef"
15688 : see if this is a math.h system
15692 : see if this is a mntent.h system
15693 set mntent.h i_mntent
15696 : see if ndbm.h is available
15701 : see if dbm_open exists
15702 set dbm_open d_dbm_open
15704 case "$d_dbm_open" in
15707 echo "We won't be including <ndbm.h>"
15716 : see if net/errno.h is available
15718 set net/errno.h val
15721 : Unfortunately, it causes problems on some systems. Arrgh.
15724 cat > try.c <<'EOM'
15727 #include <net/errno.h>
15733 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15734 echo "We'll be including <net/errno.h>." >&4
15736 echo "We won't be including <net/errno.h>." >&4
15745 : see if netinet/tcp.h is available
15746 set netinet/tcp.h i_netinettcp
15749 : see if this is a poll.h system
15753 : see if this is a prot.h system
15758 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15759 $cat <<'EOSH' > Cppsym.know
15760 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15761 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15762 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15763 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15764 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15765 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15766 bull c cadmus clipper CMU COFF COMPILER_VERSION
15767 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15768 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15769 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15770 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15771 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15772 H3050R H3050RX hbullx20 hcx host_mips
15773 hp200 hp300 hp700 HP700 hp800 hp9000
15774 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15775 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15776 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15777 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15778 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15779 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15780 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15781 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15782 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15783 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15784 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15785 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15786 MATH_HAS_NO_SIDE_EFFECTS
15787 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15788 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15789 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15790 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15791 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15792 NetBSD news1500 news1700 news1800 news1900 news3700
15793 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15794 ns32016 ns32332 ns32k nsc32000
15795 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15796 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15797 pc532 pdp11 PGC PIC plexus PORTAR posix
15798 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15799 POSIX_C_SOURCE POSIX_SOURCE POWER
15800 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15801 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15802 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15803 sony sony_news sonyrisc sparc sparclite spectrum
15804 stardent stdc STDC_EXT stratos sun sun3 sun386
15805 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15806 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15807 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15808 sysV68 sysV88 Tek4132 Tek4300 titan
15809 TM3200 TM5400 TM5600
15810 tower tower32 tower32_200 tower32_600 tower32_700
15811 tower32_800 tower32_850 tss
15812 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15813 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15814 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15815 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15816 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15817 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15820 # Maybe put other stuff here too.
15821 cat <<EOSH >>Cppsym.know
15824 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15825 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15826 $cat Cppsym.know > Cppsym.c
15827 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15828 $rm -f Cppsym.a Cppsym.b Cppsym.c
15829 cat <<EOSH > Cppsym
15831 if $test \$# -gt 0; then
15832 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15833 if $test -s Cppsym.got; then
15840 $tr " " "$trnl" | ./Cppsym.try
15846 cat <<EOSH > Cppsym.try
15848 cat <<'EOCP' > try.c
15854 cat <<'EOSH' >> Cppsym.try
15856 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
15857 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
15858 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
15859 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
15861 echo 'return 0;}' >> try.c
15863 cat <<EOSH >> Cppsym.try
15865 case "$osname-$gccversion" in
15866 irix-) ccflags="\$ccflags -woff 1178" ;;
15867 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15869 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15871 chmod +x Cppsym.try
15872 $eunicefix Cppsym.try
15873 ./Cppsym < Cppsym.know > Cppsym.true
15874 : now check the C compiler for additional symbols
15875 postprocess_cc_v=''
15877 aix) postprocess_cc_v="|$tr , ' '" ;;
15884 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15887 -D*) echo "\$i" | $sed 's/^-D//';;
15888 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15893 postprocess_cc_v=''
15896 ./ccsym > ccsym1.raw
15897 if $test -s ccsym1.raw; then
15898 $sort ccsym1.raw | $uniq >ccsym.raw
15900 mv ccsym1.raw ccsym.raw
15903 $awk '/\=/ { print $0; next }
15904 { print $0"=1" }' ccsym.raw >ccsym.list
15905 $awk '/\=/ { print $0; next }
15906 { print $0"=1" }' Cppsym.true >ccsym.true
15907 $comm -13 ccsym.true ccsym.list >ccsym.own
15908 $comm -12 ccsym.true ccsym.list >ccsym.com
15909 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15911 if $test -z ccsym.raw; then
15912 echo "Your C compiler doesn't seem to define any symbols!" >&4
15914 echo "However, your C preprocessor defines the following symbols:"
15917 cppsymbols=`$cat Cppsym.true`
15918 cppsymbols=`echo $cppsymbols`
15919 cppccsymbols="$cppsymbols"
15921 if $test -s ccsym.com; then
15922 echo "Your C compiler and pre-processor define these symbols:"
15923 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15926 cppccsymbols=`$cat ccsym.com`
15927 cppccsymbols=`echo $cppccsymbols`
15928 $test "$silent" || sleep 1
15930 if $test -s ccsym.cpp; then
15931 $test "$also" && echo " "
15932 echo "Your C pre-processor ${also}defines the following symbols:"
15933 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15935 cppsymbols=`$cat ccsym.cpp`
15936 cppsymbols=`echo $cppsymbols`
15937 $test "$silent" || sleep 1
15939 if $test -s ccsym.own; then
15940 $test "$also" && echo " "
15941 echo "Your C compiler ${also}defines the following cpp symbols:"
15942 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15943 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15944 ccsymbols=`$cat ccsym.own`
15945 ccsymbols=`echo $ccsymbols`
15946 $test "$silent" || sleep 1
15950 : see if this is a termio system
15954 if $test `./findhdr termios.h`; then
15955 set tcsetattr i_termios
15961 "$define") echo "You have POSIX termios.h... good!" >&4;;
15962 *) if ./Cppsym pyr; then
15963 case "`/bin/universe`" in
15964 ucb) if $test `./findhdr sgtty.h`; then
15966 echo "<sgtty.h> found." >&4
15968 echo "System is pyramid with BSD universe."
15969 echo "<sgtty.h> not found--you could have problems." >&4
15971 *) if $test `./findhdr termio.h`; then
15973 echo "<termio.h> found." >&4
15975 echo "System is pyramid with USG universe."
15976 echo "<termio.h> not found--you could have problems." >&4
15980 if $test `./findhdr termio.h`; then
15981 echo "<termio.h> found." >&4
15983 elif $test `./findhdr sgtty.h`; then
15984 echo "<sgtty.h> found." >&4
15987 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15990 if $test `./findhdr sgtty.h`; then
15991 echo "<sgtty.h> found." >&4
15993 elif $test `./findhdr termio.h`; then
15994 echo "<termio.h> found." >&4
15997 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16001 set i_termio; eval $setvar
16002 val=$val2; set i_sgtty; eval $setvar
16003 val=$val3; set i_termios; eval $setvar
16005 : see if this is a shadow.h system
16006 set shadow.h i_shadow
16009 : see if stddef is available
16010 set stddef.h i_stddef
16013 : see if this is a sunmath.h system
16014 set sunmath.h i_sunmath
16017 : see if sys/access.h is available
16018 set sys/access.h i_sysaccess
16021 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16022 set sys/filio.h i_sysfilio
16025 if $test `./findhdr sys/ioctl.h`; then
16027 echo '<sys/ioctl.h> found.' >&4
16030 if $test $i_sysfilio = "$define"; then
16031 echo '<sys/ioctl.h> NOT found.' >&4
16033 $test $i_sgtty = "$define" && xxx="sgtty.h"
16034 $test $i_termio = "$define" && xxx="termio.h"
16035 $test $i_termios = "$define" && xxx="termios.h"
16036 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16042 : see if socket ioctl defs are in sys/sockio.h
16044 xxx=`./findhdr sys/sockio.h`
16045 if $test "$xxx"; then
16046 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16048 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16051 echo "No socket ioctls found in <sys/sockio.h>." >&4
16056 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16063 : see if this is a syslog.h system
16064 set syslog.h i_syslog
16068 : see if this is a sys/mode.h system
16069 set sys/mode.h i_sysmode
16072 : see if sys/resource.h has to be included
16073 set sys/resource.h i_sysresrc
16076 : see if sys/security.h is available
16077 set sys/security.h i_syssecrt
16080 : see if this is a sys/statvfs.h system
16081 set sys/statvfs.h i_sysstatvfs
16084 : see if this is a sys/un.h system
16085 set sys/un.h i_sysun
16089 : see if this is a sys/utsname.h system
16090 set sys/utsname.h i_sysutsname
16093 : see if this is a syswait system
16094 set sys/wait.h i_syswait
16097 : see if this is a ustat.h system
16098 set ustat.h i_ustat
16101 : see if this is an utime system
16102 set utime.h i_utime
16105 : see if this is a values.h system
16106 set values.h i_values
16109 : see if this is a vfork system
16112 set vfork.h i_vfork
16120 : see if gdbm.h is available
16125 : see if gdbm_open exists
16126 set gdbm_open d_gdbm_open
16128 case "$d_gdbm_open" in
16131 echo "We won't be including <gdbm.h>"
16141 echo "Looking for extensions..." >&4
16142 : If we are using the old config.sh, known_extensions may contain
16143 : old or inaccurate or duplicate values.
16144 known_extensions=''
16145 nonxs_extensions=''
16146 : We do not use find because it might not be available.
16147 : We do not just use MANIFEST because the user may have dropped
16148 : some additional extensions into the source tree and expect them
16151 : Function to recursively find available extensions, ignoring DynaLoader
16152 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16156 DynaLoader|dynaload) ;;
16158 if $test -f $xxx/$xxx.xs; then
16159 known_extensions="$known_extensions $1$xxx";
16160 elif $test -f $xxx/Makefile.PL; then
16161 nonxs_extensions="$nonxs_extensions $1$xxx";
16163 if $test -d $xxx -a $# -lt 10; then
16166 eval $find_extensions;
16178 eval $find_extensions
16179 set X $nonxs_extensions
16181 nonxs_extensions="$*"
16182 set X $known_extensions
16184 known_extensions="$*"
16187 : Now see which are supported on this system.
16189 for xxx in $known_extensions ; do
16193 $define) avail_ext="$avail_ext $xxx" ;;
16196 GDBM_File|gdbm_fil)
16198 $define) avail_ext="$avail_ext $xxx" ;;
16201 NDBM_File|ndbm_fil)
16204 case "$osname-$use64bitint" in
16207 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16210 *) avail_ext="$avail_ext $xxx" ;;
16215 ODBM_File|odbm_fil)
16216 case "${i_dbm}${i_rpcsvcdbm}" in
16218 case "$osname-$use64bitint" in
16221 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16224 *) avail_ext="$avail_ext $xxx" ;;
16230 case "$useposix" in
16231 true|define|y) avail_ext="$avail_ext $xxx" ;;
16235 case "$useopcode" in
16236 true|define|y) avail_ext="$avail_ext $xxx" ;;
16240 case "$d_socket" in
16241 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16244 Sys/Syslog|sys/syslog)
16245 : XXX syslog requires socket
16246 case "$d_socket" in
16247 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16251 case "$usethreads" in
16253 case "$useithreads" in
16254 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16259 : XXX Do we need a useipcsysv variable here
16260 case "${d_msg}${d_sem}${d_shm}" in
16261 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16264 *) avail_ext="$avail_ext $xxx"
16273 : Now see which nonxs extensions are supported on this system.
16274 : For now assume all are.
16276 for xxx in $nonxs_extensions ; do
16278 *) nonxs_ext="$nonxs_ext $xxx"
16290 A number of extensions are supplied with $package. You may choose to
16291 compile these extensions for dynamic loading (the default), compile
16292 them into the $package executable (static loading), or not include
16293 them at all. Answer "none" to include no extensions.
16294 Note that DynaLoader is always built and need not be mentioned here.
16297 case "$dynamic_ext" in
16298 '') dflt="$avail_ext" ;;
16299 *) dflt="$dynamic_ext"
16300 # Perhaps we are reusing an old out-of-date config.sh.
16303 if test X"$dynamic_ext" != X"$avail_ext"; then
16305 NOTICE: Your previous config.sh list may be incorrect.
16306 The extensions now available to you are
16308 but the default list from your previous config.sh is
16320 rp="What extensions do you wish to load dynamically?"
16323 none) dynamic_ext=' ' ;;
16324 *) dynamic_ext="$ans" ;;
16327 case "$static_ext" in
16329 : Exclude those already listed in dynamic linking
16331 for xxx in $avail_ext; do
16332 case " $dynamic_ext " in
16334 *) dflt="$dflt $xxx" ;;
16341 *) dflt="$static_ext"
16348 rp="What extensions do you wish to load statically?"
16351 none) static_ext=' ' ;;
16352 *) static_ext="$ans" ;;
16357 A number of extensions are supplied with $package. Answer "none"
16358 to include no extensions.
16359 Note that DynaLoader is always built and need not be mentioned here.
16362 case "$static_ext" in
16363 '') dflt="$avail_ext" ;;
16364 *) dflt="$static_ext"
16365 # Perhaps we are reusing an old out-of-date config.sh.
16368 if test X"$static_ext" != X"$avail_ext"; then
16370 NOTICE: Your previous config.sh list may be incorrect.
16371 The extensions now available to you are
16373 but the default list from your previous config.sh is
16382 : Exclude those that are not xs extensions
16386 rp="What extensions do you wish to include?"
16389 none) static_ext=' ' ;;
16390 *) static_ext="$ans" ;;
16395 set X $dynamic_ext $static_ext $nonxs_ext
16399 : Remove libraries needed only for extensions
16400 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16401 : The exception is SunOS 4.x, which needs them.
16402 case "${osname}X${osvers}" in
16406 *) case "$usedl" in
16407 $define|true|[yY]*)
16408 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16412 *) perllibs="$libs"
16418 : Remove build directory name from cppstdin so it can be used from
16419 : either the present location or the final installed location.
16421 : Get out of the UU directory to get correct path name.
16423 case "$cppstdin" in
16425 echo "Stripping down cppstdin path name"
16431 : end of configuration questions
16433 echo "End of configuration questions."
16436 : back to where it started
16437 if test -d ../UU; then
16441 : configuration may be patched via a 'config.over' file
16442 if $test -f config.over; then
16445 rp='I see a config.over file. Do you wish to load it?'
16448 n*) echo "OK, I'll ignore it.";;
16450 echo "Configuration override changes have been loaded."
16455 : in case they want portability, strip down executable paths
16456 case "$d_portable" in
16459 echo "Stripping down executable paths..." >&4
16460 for file in $loclist $trylist; do
16462 eval $file=`basename $temp`
16467 : create config.sh file
16469 echo "Creating config.sh..." >&4
16470 $spitshell <<EOT >config.sh
16473 # This file was produced by running the Configure script. It holds all the
16474 # definitions figured out by Configure. Should you modify one of these values,
16475 # do not forget to propagate your changes by running "Configure -der". You may
16476 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16479 # Package name : $package
16480 # Source directory : $src
16481 # Configuration time: $cf_time
16482 # Configured by : $cf_by
16483 # Target system : $myuname
16493 Revision='$Revision'
16501 alignbytes='$alignbytes'
16502 ansi2knr='$ansi2knr'
16503 aphostname='$aphostname'
16504 api_revision='$api_revision'
16505 api_subversion='$api_subversion'
16506 api_version='$api_version'
16507 api_versionstring='$api_versionstring'
16510 archlibexp='$archlibexp'
16511 archname64='$archname64'
16512 archname='$archname'
16513 archobjs='$archobjs'
16518 bincompat5005='$bincompat5005'
16522 byteorder='$byteorder'
16524 castflags='$castflags'
16527 cccdlflags='$cccdlflags'
16528 ccdlflags='$ccdlflags'
16530 ccflags_uselargefiles='$ccflags_uselargefiles'
16532 ccsymbols='$ccsymbols'
16533 ccversion='$ccversion'
16535 cf_email='$cf_email'
16537 charsize='$charsize'
16541 clocktype='$clocktype'
16543 compress='$compress'
16544 contains='$contains'
16548 cpp_stuff='$cpp_stuff'
16549 cppccsymbols='$cppccsymbols'
16550 cppflags='$cppflags'
16552 cppminus='$cppminus'
16554 cppstdin='$cppstdin'
16555 cppsymbols='$cppsymbols'
16556 cryptlib='$cryptlib'
16558 d_Gconvert='$d_Gconvert'
16559 d_PRIEUldbl='$d_PRIEUldbl'
16560 d_PRIFUldbl='$d_PRIFUldbl'
16561 d_PRIGUldbl='$d_PRIGUldbl'
16562 d_PRIXU64='$d_PRIXU64'
16563 d_PRId64='$d_PRId64'
16564 d_PRIeldbl='$d_PRIeldbl'
16565 d_PRIfldbl='$d_PRIfldbl'
16566 d_PRIgldbl='$d_PRIgldbl'
16567 d_PRIi64='$d_PRIi64'
16568 d_PRIo64='$d_PRIo64'
16569 d_PRIu64='$d_PRIu64'
16570 d_PRIx64='$d_PRIx64'
16571 d_SCNfldbl='$d_SCNfldbl'
16572 d__fwalk='$d__fwalk'
16573 d_access='$d_access'
16574 d_accessx='$d_accessx'
16576 d_archlib='$d_archlib'
16579 d_attribut='$d_attribut'
16582 d_bincompat5005='$d_bincompat5005'
16584 d_bsdgetpgrp='$d_bsdgetpgrp'
16585 d_bsdsetpgrp='$d_bsdsetpgrp'
16587 d_casti32='$d_casti32'
16588 d_castneg='$d_castneg'
16589 d_charvspr='$d_charvspr'
16591 d_chroot='$d_chroot'
16592 d_chsize='$d_chsize'
16593 d_closedir='$d_closedir'
16594 d_cmsghdr_s='$d_cmsghdr_s'
16598 d_cuserid='$d_cuserid'
16599 d_dbl_dig='$d_dbl_dig'
16600 d_dbminitproto='$d_dbminitproto'
16601 d_difftime='$d_difftime'
16602 d_dirnamlen='$d_dirnamlen'
16603 d_dlerror='$d_dlerror'
16604 d_dlopen='$d_dlopen'
16605 d_dlsymun='$d_dlsymun'
16606 d_dosuid='$d_dosuid'
16607 d_drand48proto='$d_drand48proto'
16609 d_eaccess='$d_eaccess'
16610 d_endgrent='$d_endgrent'
16611 d_endhent='$d_endhent'
16612 d_endnent='$d_endnent'
16613 d_endpent='$d_endpent'
16614 d_endpwent='$d_endpwent'
16615 d_endsent='$d_endsent'
16616 d_eofnblk='$d_eofnblk'
16617 d_eunice='$d_eunice'
16618 d_fchmod='$d_fchmod'
16619 d_fchown='$d_fchown'
16621 d_fcntl_can_lock='$d_fcntl_can_lock'
16622 d_fd_macros='$d_fd_macros'
16623 d_fd_set='$d_fd_set'
16624 d_fds_bits='$d_fds_bits'
16625 d_fgetpos='$d_fgetpos'
16626 d_flexfnam='$d_flexfnam'
16628 d_flockproto='$d_flockproto'
16630 d_fpathconf='$d_fpathconf'
16631 d_fpos64_t='$d_fpos64_t'
16632 d_frexpl='$d_frexpl'
16633 d_fs_data_s='$d_fs_data_s'
16634 d_fseeko='$d_fseeko'
16635 d_fsetpos='$d_fsetpos'
16636 d_fstatfs='$d_fstatfs'
16637 d_fstatvfs='$d_fstatvfs'
16639 d_ftello='$d_ftello'
16641 d_getcwd='$d_getcwd'
16642 d_getespwnam='$d_getespwnam'
16643 d_getfsstat='$d_getfsstat'
16644 d_getgrent='$d_getgrent'
16645 d_getgrps='$d_getgrps'
16646 d_gethbyaddr='$d_gethbyaddr'
16647 d_gethbyname='$d_gethbyname'
16648 d_gethent='$d_gethent'
16649 d_gethname='$d_gethname'
16650 d_gethostprotos='$d_gethostprotos'
16651 d_getitimer='$d_getitimer'
16652 d_getlogin='$d_getlogin'
16653 d_getmnt='$d_getmnt'
16654 d_getmntent='$d_getmntent'
16655 d_getnbyaddr='$d_getnbyaddr'
16656 d_getnbyname='$d_getnbyname'
16657 d_getnent='$d_getnent'
16658 d_getnetprotos='$d_getnetprotos'
16659 d_getpagsz='$d_getpagsz'
16660 d_getpbyname='$d_getpbyname'
16661 d_getpbynumber='$d_getpbynumber'
16662 d_getpent='$d_getpent'
16663 d_getpgid='$d_getpgid'
16664 d_getpgrp2='$d_getpgrp2'
16665 d_getpgrp='$d_getpgrp'
16666 d_getppid='$d_getppid'
16667 d_getprior='$d_getprior'
16668 d_getprotoprotos='$d_getprotoprotos'
16669 d_getprpwnam='$d_getprpwnam'
16670 d_getpwent='$d_getpwent'
16671 d_getsbyname='$d_getsbyname'
16672 d_getsbyport='$d_getsbyport'
16673 d_getsent='$d_getsent'
16674 d_getservprotos='$d_getservprotos'
16675 d_getspnam='$d_getspnam'
16676 d_gettimeod='$d_gettimeod'
16677 d_gnulibc='$d_gnulibc'
16678 d_grpasswd='$d_grpasswd'
16679 d_hasmntopt='$d_hasmntopt'
16683 d_inetaton='$d_inetaton'
16684 d_int64_t='$d_int64_t'
16685 d_isascii='$d_isascii'
16687 d_isnanl='$d_isnanl'
16688 d_killpg='$d_killpg'
16689 d_lchown='$d_lchown'
16690 d_ldbl_dig='$d_ldbl_dig'
16692 d_locconv='$d_locconv'
16694 d_longdbl='$d_longdbl'
16695 d_longlong='$d_longlong'
16696 d_lseekproto='$d_lseekproto'
16698 d_madvise='$d_madvise'
16700 d_mbstowcs='$d_mbstowcs'
16701 d_mbtowc='$d_mbtowc'
16702 d_memchr='$d_memchr'
16703 d_memcmp='$d_memcmp'
16704 d_memcpy='$d_memcpy'
16705 d_memmove='$d_memmove'
16706 d_memset='$d_memset'
16708 d_mkdtemp='$d_mkdtemp'
16709 d_mkfifo='$d_mkfifo'
16710 d_mkstemp='$d_mkstemp'
16711 d_mkstemps='$d_mkstemps'
16712 d_mktime='$d_mktime'
16715 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16716 d_mprotect='$d_mprotect'
16718 d_msg_ctrunc='$d_msg_ctrunc'
16719 d_msg_dontroute='$d_msg_dontroute'
16720 d_msg_oob='$d_msg_oob'
16721 d_msg_peek='$d_msg_peek'
16722 d_msg_proxy='$d_msg_proxy'
16723 d_msgctl='$d_msgctl'
16724 d_msgget='$d_msgget'
16725 d_msghdr_s='$d_msghdr_s'
16726 d_msgrcv='$d_msgrcv'
16727 d_msgsnd='$d_msgsnd'
16729 d_munmap='$d_munmap'
16730 d_mymalloc='$d_mymalloc'
16732 d_nv_preserves_uv='$d_nv_preserves_uv'
16733 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16734 d_off64_t='$d_off64_t'
16735 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16736 d_oldpthreads='$d_oldpthreads'
16737 d_oldsock='$d_oldsock'
16739 d_pathconf='$d_pathconf'
16741 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16742 d_phostname='$d_phostname'
16745 d_portable='$d_portable'
16746 d_pthread_yield='$d_pthread_yield'
16748 d_pwchange='$d_pwchange'
16749 d_pwclass='$d_pwclass'
16750 d_pwcomment='$d_pwcomment'
16751 d_pwexpire='$d_pwexpire'
16752 d_pwgecos='$d_pwgecos'
16753 d_pwpasswd='$d_pwpasswd'
16754 d_pwquota='$d_pwquota'
16757 d_readdir='$d_readdir'
16758 d_readlink='$d_readlink'
16760 d_recvmsg='$d_recvmsg'
16761 d_rename='$d_rename'
16762 d_rewinddir='$d_rewinddir'
16764 d_safebcpy='$d_safebcpy'
16765 d_safemcpy='$d_safemcpy'
16766 d_sanemcmp='$d_sanemcmp'
16767 d_sbrkproto='$d_sbrkproto'
16768 d_sched_yield='$d_sched_yield'
16769 d_scm_rights='$d_scm_rights'
16770 d_seekdir='$d_seekdir'
16771 d_select='$d_select'
16773 d_semctl='$d_semctl'
16774 d_semctl_semid_ds='$d_semctl_semid_ds'
16775 d_semctl_semun='$d_semctl_semun'
16776 d_semget='$d_semget'
16778 d_sendmsg='$d_sendmsg'
16779 d_setegid='$d_setegid'
16780 d_seteuid='$d_seteuid'
16781 d_setgrent='$d_setgrent'
16782 d_setgrps='$d_setgrps'
16783 d_sethent='$d_sethent'
16784 d_setitimer='$d_setitimer'
16785 d_setlinebuf='$d_setlinebuf'
16786 d_setlocale='$d_setlocale'
16787 d_setnent='$d_setnent'
16788 d_setpent='$d_setpent'
16789 d_setpgid='$d_setpgid'
16790 d_setpgrp2='$d_setpgrp2'
16791 d_setpgrp='$d_setpgrp'
16792 d_setprior='$d_setprior'
16793 d_setproctitle='$d_setproctitle'
16794 d_setpwent='$d_setpwent'
16795 d_setregid='$d_setregid'
16796 d_setresgid='$d_setresgid'
16797 d_setresuid='$d_setresuid'
16798 d_setreuid='$d_setreuid'
16799 d_setrgid='$d_setrgid'
16800 d_setruid='$d_setruid'
16801 d_setsent='$d_setsent'
16802 d_setsid='$d_setsid'
16803 d_setvbuf='$d_setvbuf'
16807 d_shmatprototype='$d_shmatprototype'
16808 d_shmctl='$d_shmctl'
16810 d_shmget='$d_shmget'
16811 d_sigaction='$d_sigaction'
16812 d_sigprocmask='$d_sigprocmask'
16813 d_sigsetjmp='$d_sigsetjmp'
16814 d_sockatmark='$d_sockatmark'
16815 d_sockatmarkproto='$d_sockatmarkproto'
16816 d_socket='$d_socket'
16817 d_socklen_t='$d_socklen_t'
16818 d_sockpair='$d_sockpair'
16819 d_socks5_init='$d_socks5_init'
16821 d_sresgproto='$d_sresgproto'
16822 d_sresuproto='$d_sresuproto'
16823 d_statblks='$d_statblks'
16824 d_statfs_f_flags='$d_statfs_f_flags'
16825 d_statfs_s='$d_statfs_s'
16826 d_statvfs='$d_statvfs'
16827 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16828 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16829 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16830 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16831 d_stdio_stream_array='$d_stdio_stream_array'
16832 d_stdiobase='$d_stdiobase'
16833 d_stdstdio='$d_stdstdio'
16834 d_strchr='$d_strchr'
16835 d_strcoll='$d_strcoll'
16836 d_strctcpy='$d_strctcpy'
16837 d_strerrm='$d_strerrm'
16838 d_strerror='$d_strerror'
16839 d_strftime='$d_strftime'
16840 d_strtod='$d_strtod'
16841 d_strtol='$d_strtol'
16842 d_strtold='$d_strtold'
16843 d_strtoll='$d_strtoll'
16844 d_strtoq='$d_strtoq'
16845 d_strtoul='$d_strtoul'
16846 d_strtoull='$d_strtoull'
16847 d_strtouq='$d_strtouq'
16848 d_strxfrm='$d_strxfrm'
16849 d_suidsafe='$d_suidsafe'
16850 d_symlink='$d_symlink'
16851 d_syscall='$d_syscall'
16852 d_syscallproto='$d_syscallproto'
16853 d_sysconf='$d_sysconf'
16854 d_sysernlst='$d_sysernlst'
16855 d_syserrlst='$d_syserrlst'
16856 d_system='$d_system'
16857 d_tcgetpgrp='$d_tcgetpgrp'
16858 d_tcsetpgrp='$d_tcsetpgrp'
16859 d_telldir='$d_telldir'
16860 d_telldirproto='$d_telldirproto'
16863 d_truncate='$d_truncate'
16864 d_tzname='$d_tzname'
16865 d_u32align='$d_u32align'
16866 d_ualarm='$d_ualarm'
16869 d_union_semun='$d_union_semun'
16870 d_usleep='$d_usleep'
16871 d_usleepproto='$d_usleepproto'
16873 d_vendorarch='$d_vendorarch'
16874 d_vendorbin='$d_vendorbin'
16875 d_vendorlib='$d_vendorlib'
16877 d_void_closedir='$d_void_closedir'
16878 d_voidsig='$d_voidsig'
16879 d_voidtty='$d_voidtty'
16880 d_volatile='$d_volatile'
16881 d_vprintf='$d_vprintf'
16883 d_waitpid='$d_waitpid'
16884 d_wcstombs='$d_wcstombs'
16885 d_wctomb='$d_wctomb'
16886 d_writev='$d_writev'
16889 db_hashtype='$db_hashtype'
16890 db_prefixtype='$db_prefixtype'
16891 db_version_major='$db_version_major'
16892 db_version_minor='$db_version_minor'
16893 db_version_patch='$db_version_patch'
16894 defvoidused='$defvoidused'
16895 direntrytype='$direntrytype'
16898 doublesize='$doublesize'
16900 dynamic_ext='$dynamic_ext'
16906 eunicefix='$eunicefix'
16909 extensions='$extensions'
16910 fflushNULL='$fflushNULL'
16911 fflushall='$fflushall'
16913 firstmakefile='$firstmakefile'
16915 fpossize='$fpossize'
16916 fpostype='$fpostype'
16917 freetype='$freetype'
16920 full_csh='$full_csh'
16921 full_sed='$full_sed'
16922 gccosandvers='$gccosandvers'
16923 gccversion='$gccversion'
16924 gidformat='$gidformat'
16930 groupcat='$groupcat'
16931 groupstype='$groupstype'
16934 h_sysfile='$h_sysfile'
16945 i_arpainet='$i_arpainet'
16946 i_bsdioctl='$i_bsdioctl'
16949 i_dirent='$i_dirent'
16957 i_ieeefp='$i_ieeefp'
16958 i_inttypes='$i_inttypes'
16959 i_libutil='$i_libutil'
16960 i_limits='$i_limits'
16961 i_locale='$i_locale'
16962 i_machcthr='$i_machcthr'
16963 i_malloc='$i_malloc'
16965 i_memory='$i_memory'
16966 i_mntent='$i_mntent'
16969 i_neterrno='$i_neterrno'
16970 i_netinettcp='$i_netinettcp'
16974 i_pthread='$i_pthread'
16976 i_rpcsvcdbm='$i_rpcsvcdbm'
16979 i_shadow='$i_shadow'
16981 i_stdarg='$i_stdarg'
16982 i_stddef='$i_stddef'
16983 i_stdlib='$i_stdlib'
16984 i_string='$i_string'
16985 i_sunmath='$i_sunmath'
16986 i_sysaccess='$i_sysaccess'
16987 i_sysdir='$i_sysdir'
16988 i_sysfile='$i_sysfile'
16989 i_sysfilio='$i_sysfilio'
16991 i_sysioctl='$i_sysioctl'
16992 i_syslog='$i_syslog'
16993 i_sysmman='$i_sysmman'
16994 i_sysmode='$i_sysmode'
16995 i_sysmount='$i_sysmount'
16996 i_sysndir='$i_sysndir'
16997 i_sysparam='$i_sysparam'
16998 i_sysresrc='$i_sysresrc'
16999 i_syssecrt='$i_syssecrt'
17000 i_sysselct='$i_sysselct'
17001 i_syssockio='$i_syssockio'
17002 i_sysstat='$i_sysstat'
17003 i_sysstatfs='$i_sysstatfs'
17004 i_sysstatvfs='$i_sysstatvfs'
17005 i_systime='$i_systime'
17006 i_systimek='$i_systimek'
17007 i_systimes='$i_systimes'
17008 i_systypes='$i_systypes'
17009 i_sysuio='$i_sysuio'
17011 i_sysutsname='$i_sysutsname'
17012 i_sysvfs='$i_sysvfs'
17013 i_syswait='$i_syswait'
17014 i_termio='$i_termio'
17015 i_termios='$i_termios'
17017 i_unistd='$i_unistd'
17020 i_values='$i_values'
17021 i_varargs='$i_varargs'
17022 i_varhdr='$i_varhdr'
17024 ignore_versioned_solibs='$ignore_versioned_solibs'
17025 inc_version_list='$inc_version_list'
17026 inc_version_list_init='$inc_version_list_init'
17029 installarchlib='$installarchlib'
17030 installbin='$installbin'
17031 installman1dir='$installman1dir'
17032 installman3dir='$installman3dir'
17033 installprefix='$installprefix'
17034 installprefixexp='$installprefixexp'
17035 installprivlib='$installprivlib'
17036 installscript='$installscript'
17037 installsitearch='$installsitearch'
17038 installsitebin='$installsitebin'
17039 installsitelib='$installsitelib'
17040 installstyle='$installstyle'
17041 installusrbinperl='$installusrbinperl'
17042 installvendorarch='$installvendorarch'
17043 installvendorbin='$installvendorbin'
17044 installvendorlib='$installvendorlib'
17046 issymlink='$issymlink'
17047 ivdformat='$ivdformat'
17050 known_extensions='$known_extensions'
17053 lddlflags='$lddlflags'
17055 ldflags_uselargefiles='$ldflags_uselargefiles'
17056 ldlibpthname='$ldlibpthname'
17063 libsdirs='$libsdirs'
17064 libsfiles='$libsfiles'
17065 libsfound='$libsfound'
17066 libspath='$libspath'
17067 libswanted='$libswanted'
17068 libswanted_uselargefiles='$libswanted_uselargefiles'
17074 locincpth='$locincpth'
17075 loclibpth='$loclibpth'
17076 longdblsize='$longdblsize'
17077 longlongsize='$longlongsize'
17078 longsize='$longsize'
17082 lseeksize='$lseeksize'
17083 lseektype='$lseektype'
17087 make_set_make='$make_set_make'
17088 mallocobj='$mallocobj'
17089 mallocsrc='$mallocsrc'
17090 malloctype='$malloctype'
17092 man1direxp='$man1direxp'
17095 man3direxp='$man3direxp'
17097 mips_type='$mips_type'
17099 mmaptype='$mmaptype'
17100 modetype='$modetype'
17102 multiarch='$multiarch'
17104 myarchname='$myarchname'
17105 mydomain='$mydomain'
17106 myhostname='$myhostname'
17109 need_va_copy='$need_va_copy'
17110 netdb_hlen_type='$netdb_hlen_type'
17111 netdb_host_type='$netdb_host_type'
17112 netdb_name_type='$netdb_name_type'
17113 netdb_net_type='$netdb_net_type'
17116 nm_so_opt='$nm_so_opt'
17117 nonxs_ext='$nonxs_ext'
17119 nvEUformat='$nvEUformat'
17120 nvFUformat='$nvFUformat'
17121 nvGUformat='$nvGUformat'
17122 nveformat='$nveformat'
17123 nvfformat='$nvfformat'
17124 nvgformat='$nvgformat'
17127 o_nonblock='$o_nonblock'
17129 old_pthread_create_joinable='$old_pthread_create_joinable'
17130 optimize='$optimize'
17131 orderlib='$orderlib'
17134 otherlibdirs='$otherlibdirs'
17138 patchlevel='$patchlevel'
17139 path_sep='$path_sep'
17142 perl_patchlevel='$perl_patchlevel'
17143 perladmin='$perladmin'
17144 perllibs='$perllibs'
17145 perlpath='$perlpath'
17147 phostname='$phostname'
17150 pm_apiversion='$pm_apiversion'
17154 prefixexp='$prefixexp'
17156 privlibexp='$privlibexp'
17157 prototype='$prototype'
17159 quadkind='$quadkind'
17160 quadtype='$quadtype'
17161 randbits='$randbits'
17162 randfunc='$randfunc'
17163 randseedtype='$randseedtype'
17165 rd_nodata='$rd_nodata'
17166 revision='$revision'
17171 sPRIEUldbl='$sPRIEUldbl'
17172 sPRIFUldbl='$sPRIFUldbl'
17173 sPRIGUldbl='$sPRIGUldbl'
17174 sPRIXU64='$sPRIXU64'
17176 sPRIeldbl='$sPRIeldbl'
17177 sPRIfldbl='$sPRIfldbl'
17178 sPRIgldbl='$sPRIgldbl'
17183 sSCNfldbl='$sSCNfldbl'
17184 sched_yield='$sched_yield'
17185 scriptdir='$scriptdir'
17186 scriptdirexp='$scriptdirexp'
17188 seedfunc='$seedfunc'
17189 selectminbits='$selectminbits'
17190 selecttype='$selecttype'
17191 sendmail='$sendmail'
17194 sharpbang='$sharpbang'
17195 shmattype='$shmattype'
17196 shortsize='$shortsize'
17199 sig_count='$sig_count'
17200 sig_name='$sig_name'
17201 sig_name_init='$sig_name_init'
17203 sig_num_init='$sig_num_init'
17204 sig_size='$sig_size'
17205 signal_t='$signal_t'
17206 sitearch='$sitearch'
17207 sitearchexp='$sitearchexp'
17209 sitebinexp='$sitebinexp'
17211 sitelib_stem='$sitelib_stem'
17212 sitelibexp='$sitelibexp'
17213 siteprefix='$siteprefix'
17214 siteprefixexp='$siteprefixexp'
17215 sizesize='$sizesize'
17216 sizetype='$sizetype'
17220 sockethdr='$sockethdr'
17221 socketlib='$socketlib'
17222 socksizetype='$socksizetype'
17224 spackage='$spackage'
17225 spitshell='$spitshell'
17227 ssizetype='$ssizetype'
17228 startperl='$startperl'
17230 static_ext='$static_ext'
17232 stdio_base='$stdio_base'
17233 stdio_bufsiz='$stdio_bufsiz'
17234 stdio_cnt='$stdio_cnt'
17235 stdio_filbuf='$stdio_filbuf'
17236 stdio_ptr='$stdio_ptr'
17237 stdio_stream_array='$stdio_stream_array'
17240 subversion='$subversion'
17244 targetarch='$targetarch'
17248 timeincl='$timeincl'
17249 timetype='$timetype'
17263 uidformat='$uidformat'
17269 uquadtype='$uquadtype'
17270 use5005threads='$use5005threads'
17271 use64bitall='$use64bitall'
17272 use64bitint='$use64bitint'
17273 usecrosscompile='$usecrosscompile'
17275 useithreads='$useithreads'
17276 uselargefiles='$uselargefiles'
17277 uselongdouble='$uselongdouble'
17278 usemorebits='$usemorebits'
17279 usemultiplicity='$usemultiplicity'
17280 usemymalloc='$usemymalloc'
17282 useopcode='$useopcode'
17283 useperlio='$useperlio'
17284 useposix='$useposix'
17285 usereentrant='$usereentrant'
17287 useshrplib='$useshrplib'
17288 usesocks='$usesocks'
17289 usethreads='$usethreads'
17290 usevendorprefix='$usevendorprefix'
17291 usevfork='$usevfork'
17294 uvXUformat='$uvXUformat'
17295 uvoformat='$uvoformat'
17298 uvuformat='$uvuformat'
17299 uvxformat='$uvxformat'
17300 vendorarch='$vendorarch'
17301 vendorarchexp='$vendorarchexp'
17302 vendorbin='$vendorbin'
17303 vendorbinexp='$vendorbinexp'
17304 vendorlib='$vendorlib'
17305 vendorlib_stem='$vendorlib_stem'
17306 vendorlibexp='$vendorlibexp'
17307 vendorprefix='$vendorprefix'
17308 vendorprefixexp='$vendorprefixexp'
17310 versiononly='$versiononly'
17312 voidflags='$voidflags'
17314 xs_apiversion='$xs_apiversion'
17316 yaccflags='$yaccflags'
17321 : Add in command line options if available
17322 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17324 : add special variables
17325 $test -f $src/patchlevel.h && \
17326 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17327 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17328 echo "PERL_CONFIG_SH=true" >>config.sh
17330 : propagate old symbols
17331 if $test -f UU/config.sh; then
17332 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17333 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17334 $sort | $uniq -u >UU/oldsyms
17335 set X `cat UU/oldsyms`
17341 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17343 echo "# Variables propagated from previous config.sh file." >>config.sh
17344 for sym in `cat UU/oldsyms`; do
17345 echo " Propagating $hint variable "'$'"$sym..."
17346 eval 'tmp="$'"${sym}"'"'
17348 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17354 : Finish up by extracting the .SH files
17358 echo "Extraction done."
17368 If you'd like to make any changes to the config.sh file before I begin
17369 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17372 rp="Press return or use a shell escape to edit config.sh:"
17377 *) : in case they cannot read
17378 sh 1>&4 -c "$ans";;
17383 : if this fails, just run all the .SH files by hand
17392 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17399 Now you need to generate make dependencies by running "$make depend".
17400 You might prefer to run it in background: "$make depend > makedepend.out &"
17401 It can take a while, so you might not want to run it right now.
17406 rp="Run $make depend now?"
17410 $make depend && echo "Now you must run '$make'."
17413 echo "You must run '$make depend' then '$make'."
17416 elif test -f [Mm]akefile; then
17418 echo "Now you must run a $make."
17420 echo "Configure done."
17423 if $test -f Policy.sh; then
17426 If you compile $package on a different machine or from a different object
17427 directory, copy the Policy.sh file from this object directory to the
17428 new one before you run Configure -- this will help you with most of
17429 the policy defaults.
17433 if $test -f config.msg; then
17434 echo "Hmm. I also noted the following information while running:"
17436 $cat config.msg >&4
17439 $rm -f kit*isdone ark*isdone