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 Sep 20 17:20:27 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
487 d_old_pthread_create_joinable=''
488 old_pthread_create_joinable=''
576 d_stdio_ptr_lval_nochange_cnt=''
577 d_stdio_ptr_lval_sets_cnt=''
762 inc_version_list_init=''
781 ignore_versioned_solibs=''
840 d_perl_otherlibdirs=''
854 version_patchlevel_string=''
859 d_nv_preserves_uv_bits=''
958 d_stdio_stream_array=''
959 stdio_stream_array=''
969 ccflags_uselargefiles=''
970 ldflags_uselargefiles=''
971 libswanted_uselargefiles=''
1017 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1020 : We must find out about Eunice early
1022 if test -f /etc/unixtovms; then
1023 eunicefix=/etc/unixtovms
1025 if test -f /etc/unixtovms.exe; then
1026 eunicefix=/etc/unixtovms.exe
1033 : set useposix=false in your hint file to disable the POSIX extension.
1035 : set useopcode=false in your hint file to disable the Opcode extension.
1037 : Trailing extension. Override this in a hint file, if needed.
1039 : Extra object files, if any, needed on this platform.
1042 : Possible local include directories to search.
1043 : Set locincpth to "" in a hint file to defeat local include searches.
1044 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1045 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1047 : no include file wanted by default
1052 : change the next line if compiling for Xenix/286 on Xenix/386
1053 xlibpth='/usr/lib/386 /lib/386'
1054 : Possible local library directories to search.
1055 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1056 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1058 : general looking path for locating libraries
1059 glibpth="/lib /usr/lib $xlibpth"
1060 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1061 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1062 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1064 : Private path used by Configure to find libraries. Its value
1065 : is prepended to libpth. This variable takes care of special
1066 : machines, like the mips. Usually, it should be empty.
1069 : default library list
1071 : some systems want to use only the non-versioned libso:s
1072 ignore_versioned_solibs=''
1074 ccflags_uselargefiles=''
1075 ldflags_uselargefiles=''
1076 libswanted_uselargefiles=''
1077 : set usemultiplicity on the Configure command line to enable multiplicity.
1078 : set usesocks on the Configure command line to enable socks.
1079 : set usethreads on the Configure command line to enable threads.
1080 usereentrant='undef'
1081 : full support for void wanted by default
1084 : List of libraries we want.
1085 : If anyone needs -lnet, put it in a hint file.
1086 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1087 libswanted="$libswanted dld ld sun m c cposix posix"
1088 libswanted="$libswanted ndir dir crypt sec"
1089 libswanted="$libswanted ucb bsd BSD PW x util"
1090 : We probably want to search /usr/shlib before most other libraries.
1091 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1092 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1093 glibpth="/usr/shlib $glibpth"
1094 : Do not use vfork unless overridden by a hint file.
1097 : Find the basic shell for Bourne shell scripts
1101 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1104 if test -f "$xxx"; then
1107 : Build up a list and do a single loop so we can 'break' out.
1108 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1109 for xxx in sh bash ksh pdksh ash; do
1111 try="$try ${p}/${xxx}"
1115 if test -f "$xxx"; then
1118 elif test -f "$xxx.exe"; then
1129 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1131 Usually it's in /bin/sh. How did you even get this far?
1132 Please contact me (Perl Maintainers) at perlbug@perl.org and
1133 we'll try to straighten this all out.
1139 : see if sh knows # comments
1140 if `$sh -c '#' >/dev/null 2>&1`; then
1144 test -f $xcat || xcat=/usr/bin/cat
1145 echo "#!$xcat" >sharp
1149 if test -s today; then
1152 echo "#! $xcat" > sharp
1156 if test -s today; then
1164 echo "Your $sh doesn't grok # comments--I will strip them later on."
1167 echo "exec grep -v '^[ ]*#'" >spitshell
1169 $eunicefix spitshell
1170 spitshell=`pwd`/spitshell
1172 echo "I presume that if # doesn't work, #! won't work either!"
1177 : figure out how to guarantee sh startup
1179 '') startsh=${sharpbang}${sh} ;;
1191 : echo "Yup, it does."
1193 echo "Hmm... '$startsh' does not guarantee sh startup..."
1194 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1199 : Save command line options in file UU/cmdline.opt for later use in
1200 : generating config.sh.
1201 cat > cmdline.opt <<EOSH
1202 # Configure command line arguments.
1211 cat >>cmdline.opt <<EOSH
1212 config_arg$argn='$arg'
1214 # Extreme backslashitis: replace each ' by '"'"'
1215 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1218 arg_exp=`cat cmdl.opt`
1219 args_exp="$args_exp$args_sep'$arg_exp'"
1220 argn=`expr $argn + 1`
1223 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1224 # used by ./hints/os2.sh
1227 : produce awk script to parse command line options
1228 cat >options.awk <<'EOF'
1230 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1232 len = length(optstr);
1233 for (i = 1; i <= len; i++) {
1234 c = substr(optstr, i, 1);
1235 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1246 if (substr(str, 1, 1) != "-") {
1247 printf("'%s'\n", str);
1251 for (i = 2; i <= len; i++) {
1252 c = substr(str, i, 1);
1254 printf("-%s\n", substr(str, i));
1260 printf("'%s'\n", substr(str, i + 1));
1273 : process the command line options
1274 set X `for arg in "$@"; do echo "X$arg"; done |
1275 sed -e s/X// | awk -f options.awk`
1280 : set up default values
1290 rm -f optdef.sh posthint.sh
1291 cat >optdef.sh <<EOS
1297 while test $# -gt 0; do
1299 -d) shift; fastread=yes;;
1300 -e) shift; alldone=cont;;
1304 if test -r "$1"; then
1307 echo "$me: cannot read config file $1." >&2
1312 -h) shift; error=true;;
1313 -r) shift; reuseval=true;;
1314 -s) shift; silent=true; realsilent=true;;
1315 -E) shift; alldone=exit;;
1316 -K) shift; knowitall=true;;
1317 -O) shift; override=true;;
1318 -S) shift; silent=true; extractsh=true;;
1323 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1324 echo "$me: ignoring -D $1" >&2
1327 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1328 *) echo "$1='define'" >> optdef.sh;;
1335 *=) echo "$1" >> optdef.sh;;
1337 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1338 echo "$me: ignoring -U $1" >&2
1340 *) echo "$1='undef'" >> optdef.sh;;
1351 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1355 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1356 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1362 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1363 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1364 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1365 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1366 *) xxx=`echo $yyy|sed 's!:.*!!'`
1367 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1373 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1375 echo "$yyy=''" >> posthint.sh ;;
1380 echo "$yyy='$zzz'" >> posthint.sh ;;
1382 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1384 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1389 echo "$yyy=$zzz" >> posthint.sh ;;
1390 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1394 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1397 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1405 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1406 [-U symbol] [-U symbol=] [-A command:symbol...]
1407 -d : use defaults for all answers.
1408 -e : go on without questioning past the production of config.sh.
1409 -f : specify an alternate default configuration file.
1410 -h : print this help message and exit (with an error status).
1411 -r : reuse C symbols value if possible (skips costly nm extraction).
1412 -s : silent mode, only echoes questions and essential information.
1413 -D : define symbol to have some value:
1414 -D symbol symbol gets the value 'define'
1415 -D symbol=value symbol gets the value 'value'
1416 -E : stop at the end of questions, after having produced config.sh.
1417 -K : do not use unless you know what you are doing.
1418 -O : let -D and -U override definitions from loaded configuration file.
1419 -S : perform variable substitutions on all .SH files (can mix with -f)
1420 -U : undefine symbol:
1421 -U symbol symbol gets the value 'undef'
1422 -U symbol= symbol gets completely empty
1423 -A : manipulate symbol after the platform specific hints have been applied:
1424 -A symbol=value append " "value to symbol
1425 -A append:symbol=value append value to symbol
1426 -A define:symbol=value define symbol to have value
1427 -A clear:symbol define symbol to be ''
1428 -A define:symbol define symbol to be 'define'
1429 -A eval:symbol=value define symbol to be eval of value
1430 -A prepend:symbol=value prepend value to symbol
1431 -A undef:symbol define symbol to be 'undef'
1432 -A undef:symbol= define symbol to be ''
1433 -V : print version number and exit (with a zero status).
1440 case "$fastread$alldone" in
1443 case "$extractsh" in
1446 if test ! -t 0; then
1447 echo "Say 'sh Configure', not 'sh <Configure'"
1457 true) exec 1>/dev/null;;
1460 : run the defines and the undefines, if any, but leave the file out there...
1463 : create the posthint manipulation script and leave the file out there...
1468 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1469 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1470 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1471 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1472 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1475 : Some greps do not return status, grrr.
1476 echo "grimblepritz" >grimble
1477 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1479 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1485 : the following should work in any shell
1489 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1490 cat >contains <<'EOSS'
1491 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1496 : Find the path to the source tree
1499 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1503 *) src=`cd ../$src && pwd` ;;
1516 if test -f $rsrc/Configure && \
1517 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1519 : found it, so we are ok.
1522 for src in . .. ../.. ../../.. ../../../..; do
1523 if test -f ../$src/Configure && \
1524 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1535 Sorry, I can't seem to locate the source dir for $package. Please start
1536 Configure with an explicit path -- i.e. /some/path/Configure.
1544 echo "Sources for $package found in \"$src\"." >&4
1548 : script used to extract .SH files with variable substitutions
1549 cat >extract <<'EOS'
1551 echo "Doing variable substitutions on .SH files..."
1552 if test -f MANIFEST; then
1553 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1555 echo "(Looking for .SH files under the source directory.)"
1556 set x `(cd $src; find . -name "*.SH" -print)`
1560 0) set x `(cd $src; echo *.SH)`; shift;;
1562 if test ! -f $src/$1; then
1568 while test $name; do
1569 if test ! -d "$name"; then
1570 create="$name $create";
1571 name=`echo $name | sed -e "s|^[^/]*$||"`;
1572 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1577 for file in $create; do
1586 dir=`expr X$file : 'X\(.*\)/'`
1587 file=`expr X$file : 'X.*/\(.*\)'`
1588 (cd $dir && . ./$file)
1598 dir=`expr X$file : 'X\(.*\)/'`
1599 file=`expr X$file : 'X.*/\(.*\)'`
1600 (set x $dir; shift; eval $mkdir_p)
1610 if test -f $src/config_h.SH; then
1611 if test ! -f config.h; then
1612 : oops, they left it out of MANIFEST, probably, so do it anyway.
1618 : extract files and exit if asked to do so
1619 case "$extractsh" in
1621 case "$realsilent" in
1625 case "$config_sh" in
1626 '') config_sh='config.sh';;
1629 echo "Fetching answers from $config_sh..."
1632 test "$override" && . ./optdef.sh
1636 echo "Extraction done."
1641 : Eunice requires " " instead of "", can you believe it
1644 echo "Beginning of configuration questions for $package."
1646 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1648 : first determine how to suppress newline on echo command
1650 echo "Checking echo to see how to suppress newlines..."
1651 (echo "hi there\c" ; echo " ") >.echotmp
1652 if $contains c .echotmp >/dev/null 2>&1 ; then
1663 echo $n "The star should be here-->$c"
1667 : Now test for existence of everything in MANIFEST
1669 if test -f $rsrc/MANIFEST; then
1670 echo "First let's make sure your kit is complete. Checking..." >&4
1671 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1674 for filelist in x??; do
1675 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1677 if test -s missing; then
1681 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1683 You have the option of continuing the configuration process, despite the
1684 distinct possibility that your kit is damaged, by typing 'y'es. If you
1685 do, don't blame me if something goes wrong. I advise you to type 'n'o
1686 and contact the author (perlbug@perl.org).
1689 echo $n "Continue? [n] $c" >&4
1693 echo "Continuing..." >&4
1697 echo "ABORTING..." >&4
1702 echo "Looks good..."
1705 echo "There is no MANIFEST file. I hope your kit is complete !"
1710 : Find the appropriate value for a newline for tr
1711 if test -n "$DJGPP"; then
1714 if test X"$trnl" = X; then
1715 case "`echo foo|tr '\n' x 2>/dev/null`" in
1719 if test X"$trnl" = X; then
1720 case "`echo foo|tr '\012' x 2>/dev/null`" in
1721 foox) trnl='\012' ;;
1724 if test X"$trnl" = X; then
1727 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1733 : compute the number of columns on the terminal for proper question formatting
1738 : set up the echo used in my read
1739 myecho="case \"\$xxxm\" in
1740 '') echo $n \"\$rp $c\" >&4;;
1742 '') echo $n \"[\$xxxm] $c\";;
1744 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1746 echo $n \"[\$xxxm] $c\" >&4
1748 echo $n \"\$rp [\$xxxm] $c\" >&4
1754 : now set up to do reads with possible shell escape and default assignment
1760 case "\$fastread" in
1761 yes) case "\$dflt" in
1764 case "\$silent-\$rp" in
1769 *) case "\$silent" in
1770 true) case "\$rp" in
1775 while expr "X\$ans" : "X!" >/dev/null; do
1779 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1787 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1796 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1801 echo "(OK, I'll run with -d after this question.)" >&4
1804 echo "*** Sorry, \$1 not supported yet." >&4
1814 echo "*** Substitution done -- please confirm."
1816 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1821 echo "*** Error -- try again."
1828 case "\$ans\$xxxm\$nostick" in
1840 : create .config dir to save info across Configure sessions
1841 test -d ../.config || mkdir ../.config
1842 cat >../.config/README <<EOF
1843 This directory created by Configure to save information that should
1844 persist across sessions for $package.
1846 You may safely delete it if you wish.
1849 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1851 $define|true|[yY]*) ;;
1852 *) case "$xversion" in
1855 *** WHOA THERE!!! ***
1857 This is an UNSTABLE DEVELOPMENT release.
1858 The version of this $package distribution is $xversion, that is, odd,
1859 (as opposed to even) and that signifies a development release.
1860 If you want a maintenance release, you want an even-numbered version.
1862 Do ***NOT*** install this into production use.
1863 Data corruption and crashes are possible.
1865 It is most seriously suggested that you do not continue any further
1866 unless you want to help in developing and debugging Perl.
1868 If you *still* want to build perl, you can answer 'y' now,
1869 or pass -Dusedevel to Configure.
1872 rp='Do you really want to continue?'
1876 [yY]) echo >&4 "Okay, continuing."
1877 usedevel="$define" ;;
1878 *) echo >&4 "Okay, bye."
1888 case "$versiononly" in
1889 '') versiononly="$define" ;;
1891 case "$installusrbinperl" in
1892 '') installusrbinperl="$undef" ;;
1897 : general instructions
1900 user=`(logname) 2>/dev/null`
1902 '') user=`whoami 2>&1`;;
1904 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1907 rp='Would you like to see the instructions?'
1918 This installation shell script will examine your system and ask you questions
1919 to determine how the perl5 package should be installed. If you get
1920 stuck on a question, you may use a ! shell escape to start a subshell or
1921 execute a command. Many of the questions will have default answers in square
1922 brackets; typing carriage return will give you the default.
1924 On some of the questions which ask for file or directory names you are allowed
1925 to use the ~name construct to specify the login directory belonging to "name",
1926 even if you don't have a shell which knows about that. Questions where this is
1927 allowed will be marked "(~name ok)".
1931 dflt='Type carriage return to continue'
1935 The prompter used in this script allows you to use shell variables and
1936 backticks in your answers. You may use $1, $2, etc... to refer to the words
1937 in the default answer, as if the default line was a set of arguments given to a
1938 script shell. This means you may also use $* to repeat the whole default line,
1939 so you do not have to re-type everything to add something to the default.
1941 Everytime there is a substitution, you will have to confirm. If there is an
1942 error (e.g. an unmatched backtick), the default answer will remain unchanged
1943 and you will be prompted again.
1945 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1946 the questions and use the computed defaults (or the previous answers if there
1947 was already a config.sh file). Type 'Configure -h' for a list of options.
1948 You may also start interactively and then answer '& -d' at any prompt to turn
1949 on the non-interactive behaviour for the remainder of the execution.
1955 Much effort has been expended to ensure that this shell script will run on any
1956 Unix system. If despite that it blows up on yours, your best bet is to edit
1957 Configure and run it again. If you can't run Configure for some reason,
1958 you'll have to generate a config.sh file by hand. Whatever problems you
1959 have, let me (perlbug@perl.org) know how I blew it.
1961 This installation script affects things in two ways:
1963 1) it may do direct variable substitutions on some of the files included
1965 2) it builds a config.h file for inclusion in C programs. You may edit
1966 any of these files as the need arises after running this script.
1968 If you make a mistake on a question, there is no easy way to back up to it
1969 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1970 files. Configure will offer to let you do this before it runs the SH files.
1973 dflt='Type carriage return to continue'
1975 case "$firsttime" in
1976 true) echo $user >>../.config/instruct;;
1980 : find out where common programs are
1982 echo "Locating common programs..." >&4
1995 if test -d \$dir/\$thing; then
2001 for thisthing in \$dir/\$thing; do
2002 : just loop through to pick last item
2004 if test -f \$thisthing; then
2007 elif test -f \$dir/\$thing.exe; then
2008 if test -n "$DJGPP"; then
2009 echo \$dir/\$thing.exe
2011 : on Eunice apparently
2063 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2064 pth="$pth /lib /usr/lib"
2065 for file in $loclist; do
2069 if test -f "$xxx"; then
2072 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2073 xxx=`./loc $file $file $pth`
2076 '') xxx=`./loc $file $file $pth`;;
2077 *) xxx=`./loc $xxx $xxx $pth`;;
2083 echo $file is in $xxx.
2086 echo $file is in $xxx.
2089 echo "I don't know where '$file' is, and my life depends on it." >&4
2090 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2096 echo "Don't worry if any of the following aren't found..."
2098 for file in $trylist; do
2102 if test -f "$xxx"; then
2105 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2106 xxx=`./loc $file $file $pth`
2109 '') xxx=`./loc $file $file $pth`;;
2110 *) xxx=`./loc $xxx $xxx $pth`;;
2116 echo $file is in $xxx.
2119 echo $file is in $xxx.
2122 echo "I don't see $file out there, $say."
2129 echo "Substituting grep for egrep."
2135 echo "Substituting cp for ln."
2141 echo "Hopefully test is built into your sh."
2144 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2145 echo "Using the test built into your sh."
2153 echo "Hopefully echo is built into your sh."
2158 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2159 $echo $n "hi there$c" >foo1
2160 echo $n "hi there$c" >foo2
2161 if cmp foo1 foo2 >/dev/null 2>&1; then
2162 echo "They are compatible. In fact, they may be identical."
2169 They are not compatible! You are probably running ksh on a non-USG system.
2170 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2171 have echo built in and we may have to run some Bourne shell scripts. That
2172 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2175 $echo $n "The star should be here-->$c"
2185 cat <<'EOSC' >>checkcc
2190 int main(int argc, char *argv[]) {
2194 if $cc -o try $ccflags $ldflags try.c; then
2197 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2203 case "`$cc -v -c try.c 2>&1`" in
2206 if $test X"$trygcc" = Xyes; then
2207 if gcc -o try -c try.c; then
2209 echo "You seem to have a working gcc, though." >&4
2210 rp="Would you like to use it?"
2212 if $test -f myread; then
2215 if $test -f UU/myread; then
2218 echo "Cannot find myread, sorry. Aborting." >&2
2223 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2227 if $test X"$despair" = Xyes; then
2229 You need to find a working C compiler.
2230 Either (purchase and) install the C compiler supplied by your OS vendor,
2231 or for a free C compiler try http://gcc.gnu.org/
2232 I cannot continue any further, aborting.
2242 : determine whether symbolic links are supported
2245 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2246 echo "Symbolic links are supported." >&4
2249 echo "Symbolic links are NOT supported." >&4
2254 : determine whether symbolic links are supported
2258 echo "Checking how to test for symbolic links..." >&4
2260 if $test "X$issymlink" = X; then
2261 sh -c "PATH= test -h sym" >/dev/null 2>&1
2262 if test $? = 0; then
2266 if $test "X$issymlink" = X; then
2267 if $test -h >/dev/null 2>&1; then
2268 issymlink="$test -h"
2269 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2272 if $test "X$issymlink" = X; then
2273 if $test -L sym 2>/dev/null; then
2274 issymlink="$test -L"
2277 if $test "X$issymlink" != X; then
2278 echo "You can test for symbolic links with '$issymlink'." >&4
2280 echo "I do not know how you can test for symbolic links." >&4
2284 *) echo "No symbolic links, so not testing for their testing..." >&4
2290 case "$mksymlinks" in
2293 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2296 *) case "$lns:$issymlink" in
2297 *"ln -s:"*"test -"?)
2298 echo "Creating the symbolic links..." >&4
2299 echo "(First creating the subdirectories...)" >&4
2301 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2303 test -z "$directory" && break
2307 if test ! -d t/base; then
2308 echo "Failed to create the subdirectories. Aborting." >&4
2311 echo "(Then creating the symlinks...)" >&4
2312 awk '{print $1}' $src/MANIFEST | while true; do
2314 test -z "$filename" && break
2315 if test -f $filename; then
2316 if $issymlink $filename; then
2320 if test -f $filename; then
2321 echo "$filename already exists, not symlinking."
2323 ln -s $src/$filename $filename
2327 if test ! -f t/base/lex.t; then
2328 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2333 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2342 case "$usecrosscompile" in
2344 $echo "Cross-compiling..."
2347 *-*-gcc) # A cross-compiling gcc, probably.
2348 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2350 # leave out ld, choosing it is more complex
2352 ranlib=$targetarch-ranlib
2353 $echo 'extern int foo;' > try.c
2354 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2356 if $test $# -gt 0; then
2358 incpth="`$echo $incpth|$sed 's/^ //'`"
2359 echo "Guessing incpth '$incpth'." >&4
2361 j="`$echo $i|$sed 's,/include$,/lib,'`"
2362 if $test -d $j; then
2366 libpth="`$echo $libpth|$sed 's/^ //'`"
2367 echo "Guessing libpth '$libpth'." >&4
2372 case "$targetarch" in
2373 '') echo "Targetarch not defined." >&4; croak=y ;;
2374 *) echo "Using targetarch $targetarch." >&4 ;;
2377 '') echo "Incpth not defined." >&4; croak=y ;;
2378 *) echo "Using incpth '$incpth'." >&4 ;;
2381 '') echo "Libpth not defined." >&4; croak=y ;;
2382 *) echo "Using libpth '$libpth'." >&4 ;;
2385 '') for i in $incpth; do
2386 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2388 echo "Guessing usrinc $usrinc." >&4
2393 '') echo "Usrinc not defined." >&4; croak=y ;;
2396 *) echo "Using usrinc $usrinc." >&4 ;;
2398 case "$targethost" in
2399 '') echo "Targethost not defined." >&4; croak=y ;;
2400 *) echo "Using targethost $targethost." >&4
2405 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2408 /*) run=$src/Cross/run
2409 targetmkdir=$src/Cross/mkdir
2411 from=$src/Cross/from
2413 *) pwd=`$test -f ../Configure & cd ..; pwd`
2415 targetmkdir=$pwd/Cross/mkdir
2417 from=$pwd/Cross/from
2420 case "$targetrun" in
2421 '') targetrun=ssh ;;
2426 case "$targetfrom" in
2427 '') targetfrom=scp ;;
2431 from=$from-$targetfrom
2432 case "$targetdir" in
2434 echo "Guessing targetdir $targetdir." >&4
2437 case "$targetuser" in
2439 echo "Guessing targetuser $targetuser." >&4
2442 case "$targetfrom" in
2446 case "$targetrun" in
2458 '') cwd=$targetdir ;;
2462 if $test ! -f \$exe.xok; then
2466 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2469 *) echo "Unknown targetrun '$targetrun'" >&4
2473 case "$targetmkdir" in
2475 cat >$targetmkdir <<EOF
2477 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2479 $chmod a+rx $targetmkdir
2481 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2493 $targetmkdir \`dirname \$f\`
2494 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2497 $targetmkdir $targetdir/\`dirname \$f\`
2498 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2511 $mkdir -p $targetdir/\`dirname \$f\`
2512 $cp \$f $targetdir/\$f || exit 1
2515 $targetmkdir $targetdir/\`dirname \$f\`
2516 $cp \$f $targetdir/\$f || exit 1
2523 *) echo "Unknown targetto '$targetto'" >&4
2527 case "$targetfrom" in
2534 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2539 cp) cat >$from <<EOF
2544 cp $targetdir/\$f . || exit 1
2549 *) echo "Unknown targetfrom '$targetfrom'" >&4
2553 if $test ! -f $run; then
2554 echo "Target 'run' script '$run' not found." >&4
2558 if $test ! -f $to; then
2559 echo "Target 'to' script '$to' not found." >&4
2563 if $test ! -f $from; then
2564 echo "Target 'from' script '$from' not found." >&4
2568 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2572 Using '$run' for remote execution,
2573 and '$from' and '$to'
2574 for remote file transfer.
2580 usecrosscompile='undef'
2585 : see whether [:lower:] and [:upper:] are supported character classes
2587 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2589 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2593 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2594 # (0xc9 and 0xd1), therefore that is a nice testing point.
2595 if test "X$up" = X -o "X$low" = X; then
2596 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2602 if test "X$up" = X -o "X$low" = X; then
2603 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2609 if test "X$up" = X -o "X$low" = X; then
2610 case "`echo IJ | od -x 2>/dev/null`" in
2612 echo "Hey, this might be EBCDIC." >&4
2613 if test "X$up" = X -o "X$low" = X; then
2614 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2615 ij) up='[A-IJ-RS-Z]'
2620 if test "X$up" = X -o "X$low" = X; then
2621 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2631 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2633 echo "Using $up and $low to convert case." >&4
2636 echo "I don't know how to translate letters from upper to lower case." >&4
2637 echo "Your tr is not acting any way I know of." >&4
2641 : set up the translation script tr, must be called with ./tr of course
2645 '[A-Z][a-z]') exec $tr '$up' '$low';;
2646 '[a-z][A-Z]') exec $tr '$low' '$up';;
2653 : Try to determine whether config.sh was made on this system
2654 case "$config_sh" in
2656 myuname=`$uname -a 2>/dev/null`
2657 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2658 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2659 # because the A-Z/a-z are not consecutive.
2660 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2661 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2662 newmyuname="$myuname"
2664 case "$knowitall" in
2666 if test -f ../config.sh; then
2667 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2668 eval "`grep myuname= ../config.sh`"
2670 if test "X$myuname" = "X$newmyuname"; then
2678 : Get old answers from old config file if Configure was run on the
2679 : same system, otherwise use the hints.
2682 if test -f config.sh; then
2684 rp="I see a config.sh file. Shall I use it to set the defaults?"
2687 n*|N*) echo "OK, I'll ignore it."
2688 mv config.sh config.sh.old
2689 myuname="$newmyuname"
2691 *) echo "Fetching default answers from your old config.sh file..." >&4
2699 : Older versions did not always set $sh. Catch re-use of such
2709 if test ! -f config.sh; then
2712 First time through, eh? I have some defaults handy for some systems
2713 that need some extra help getting the Configure answers right:
2716 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2718 : Half the following guesses are probably wrong... If you have better
2719 : tests or hints, please send them to perlbug@perl.org
2720 : The metaconfig authors would also appreciate a copy...
2721 $test -f /irix && osname=irix
2722 $test -f /xenix && osname=sco_xenix
2723 $test -f /dynix && osname=dynix
2724 $test -f /dnix && osname=dnix
2725 $test -f /lynx.os && osname=lynxos
2726 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2727 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2728 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2729 $test -f /bin/mips && /bin/mips && osname=mips
2730 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2731 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2732 $test -d /usr/apollo/bin && osname=apollo
2733 $test -f /etc/saf/_sactab && osname=svr4
2734 $test -d /usr/include/minix && osname=minix
2735 if $test -d /MachTen -o -d /MachTen_Folder; then
2737 if $test -x /sbin/version; then
2738 osvers=`/sbin/version | $awk '{print $2}' |
2739 $sed -e 's/[A-Za-z]$//'`
2740 elif $test -x /usr/etc/version; then
2741 osvers=`/usr/etc/version | $awk '{print $2}' |
2742 $sed -e 's/[A-Za-z]$//'`
2748 $test -f /sys/posix.dll &&
2749 $test -f /usr/bin/what &&
2750 set X `/usr/bin/what /sys/posix.dll` &&
2751 $test "$3" = UWIN &&
2755 if $test -f $uname; then
2763 umips) osname=umips ;;
2766 [23]100) osname=mips ;;
2767 next*) osname=next ;;
2769 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2770 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2773 elif $test -f /etc/kconfig; then
2775 if test "$lns" = "$ln -s"; then
2777 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2779 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2786 if test -n "$DJGPP"; then
2795 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2797 'not found') osvers="$4"."$3" ;;
2798 '<3240'|'<>3240') osvers=3.2.0 ;;
2799 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2800 '=3250'|'>3250') osvers=3.2.5 ;;
2804 bsd386) osname=bsd386
2807 cygwin*) osname=cygwin
2810 *dc.osx) osname=dcosx
2816 domainos) osname=apollo
2822 dynixptx*) osname=dynixptx
2823 osvers=`echo "$4"|sed 's/^v//'`
2825 freebsd) osname=freebsd
2827 genix) osname=genix ;;
2829 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2845 netbsd*) osname=netbsd
2848 news-os) osvers="$3"
2850 4*) osname=newsos4 ;;
2854 next*) osname=next ;;
2855 nonstop-ux) osname=nonstopux ;;
2856 POSIX-BC | posix-bc ) osname=posix-bc
2859 powerux | power_ux | powermax_os | powermaxos | \
2860 powerunix | power_unix) osname=powerux
2866 solaris) osname=solaris
2868 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2875 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2879 titanos) osname=titanos
2888 ultrix) osname=ultrix
2891 osf1|mls+) case "$5" in
2894 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2897 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2900 hp*) osname=hp_osf1 ;;
2901 mips) osname=mips_osf1 ;;
2904 unixware) osname=svr5
2910 $2) case "$osname" in
2914 : svr4.x or possibly later
2924 if test -f /stand/boot ; then
2925 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2926 if test -n "$INITPROG" -a -f "$INITPROG"; then
2927 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2928 if test -n "$isesix"; then
2936 *) if test -f /etc/systemid; then
2938 set `echo $3 | $sed 's/\./ /g'` $4
2939 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2941 elif $test -f $src/hints/sco_$1_$2.sh; then
2943 elif $test -f $src/hints/sco_$1.sh; then
2948 '') : Still unknown. Probably a generic Sys V.
2957 *) case "$osname" in
2958 '') : Still unknown. Probably a generic BSD.
2966 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2967 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2968 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2971 $rm -f UU/kernel.what
2972 elif test -d c:/.; then
2979 case "$targetarch" in
2982 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2987 : Now look for a hint file osname_osvers, unless one has been
2988 : specified already.
2991 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2992 : Also try without trailing minor version numbers.
2993 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2994 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2995 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2996 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2999 *) case "$osvers" in
3002 *) if $test -f $src/hints/$file.sh ; then
3004 elif $test -f $src/hints/$xfile.sh ; then
3006 elif $test -f $src/hints/$xxfile.sh ; then
3008 elif $test -f $src/hints/$xxxfile.sh ; then
3010 elif $test -f $src/hints/$xxxxfile.sh ; then
3012 elif $test -f "$src/hints/${osname}.sh" ; then
3021 if $test -f Policy.sh ; then
3024 none) dflt="Policy" ;;
3025 *) dflt="Policy $dflt" ;;
3030 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3034 if $test -f Policy.sh ; then
3037 There's also a Policy hint file available, which should make the
3038 site-specific (policy) questions easier to answer.
3045 You may give one or more space-separated answers, or "none" if appropriate.
3046 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3047 is a good thing. DO NOT give a wrong version or a wrong OS.
3051 rp="Which of these apply, if any?"
3054 for file in $tans; do
3055 if $test X$file = XPolicy -a -f Policy.sh; then
3057 $cat Policy.sh >> UU/config.sh
3058 elif $test -f $src/hints/$file.sh; then
3059 . $src/hints/$file.sh
3060 $cat $src/hints/$file.sh >> UU/config.sh
3061 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3064 : Give one chance to correct a possible typo.
3065 echo "$file.sh does not exist"
3067 rp="hint to use instead?"
3069 for file in $ans; do
3070 if $test -f "$src/hints/$file.sh"; then
3071 . $src/hints/$file.sh
3072 $cat $src/hints/$file.sh >> UU/config.sh
3073 elif $test X$ans = X -o X$ans = Xnone ; then
3076 echo "$file.sh does not exist -- ignored."
3083 : Remember our hint file for later.
3084 if $test -f "$src/hints/$file.sh" ; then
3094 echo "Fetching default answers from $config_sh..." >&4
3098 cp $config_sh config.sh 2>/dev/null
3108 test "$override" && . ./optdef.sh
3110 : Restore computed paths
3111 for file in $loclist $trylist; do
3112 eval $file="\$_$file"
3117 Configure uses the operating system name and version to set some defaults.
3118 The default value is probably right if the name rings a bell. Otherwise,
3119 since spelling matters for me, either accept the default or answer "none"
3126 ''|' '|none) dflt=none ;;
3127 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3130 *) dflt="$osname" ;;
3132 rp="Operating system name?"
3136 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3142 ''|' '|none) dflt=none ;;
3143 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3144 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3146 ''|' ') dflt=none ;;
3151 *) dflt="$osvers" ;;
3153 rp="Operating system version?"
3163 : who configured the system
3164 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3165 cf_by=`(logname) 2>/dev/null`
3168 cf_by=`(whoami) 2>/dev/null`
3170 "") cf_by=unknown ;;
3174 : set up the script used to warn in case of inconsistency
3181 echo "*** WHOA THERE!!! ***" >&4
3182 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3183 rp=" Keep the $hint value?"
3186 y) td=$was; tu=$was;;
3190 : function used to set $1 to $val
3191 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3193 $define$undef) . ./whoa; eval "$var=\$td";;
3194 $undef$define) . ./whoa; eval "$var=\$tu";;
3195 *) eval "$var=$val";;
3198 case "$usethreads" in
3199 $define|true|[yY]*) dflt='y';;
3204 Perl can be built to take advantage of threads on some systems.
3205 To do so, Configure can be run with -Dusethreads.
3207 Note that threading is a highly experimental feature, and
3208 some known race conditions still remain. If you choose to try
3209 it, be very sure to not actually deploy it for production
3210 purposes. README.threads has more details, and is required
3211 reading if you enable threads.
3213 If this doesn't make any sense to you, just accept the default '$dflt'.
3215 rp='Build a threading Perl?'
3218 y|Y) val="$define" ;;
3224 case "$usethreads" in
3228 As of 5.5.640, Perl has two different internal threading implementations,
3229 the 5.005 version (5005threads) and an interpreter-based version
3230 (ithreads) that has one interpreter per thread. Both are very
3231 experimental. This arrangement exists to help developers work out
3232 which one is better.
3234 If you're a casual user, you probably don't want interpreter-threads
3235 at this time. There doesn't yet exist a way to create threads from
3236 within Perl in this model, i.e., "use Thread;" will NOT work.
3238 : Default to ithreads unless overridden on command line or with
3241 case "$use5005threads" in
3242 $define|true|[yY]*) dflt='n';;
3244 case "$useithreads" in
3245 $undef|false|[nN]*) dflt='n';;
3247 rp='Use interpreter-based ithreads?'
3250 y|Y) val="$define" ;;
3255 : Now set use5005threads to the opposite value.
3256 case "$useithreads" in
3257 $define) val="$undef" ;;
3264 useithreads="$undef"
3265 use5005threads="$undef"
3269 case "$useithreads$use5005threads" in
3273 You cannot have both the ithreads and the 5.005 threads enabled
3274 at the same time. Disabling the 5.005 threads since they are
3275 much less stable than the ithreads.
3278 use5005threads="$undef"
3282 case "$d_oldpthreads" in
3283 '') : Configure tests would be welcome here. For now, assume undef.
3285 *) val="$d_oldpthreads" ;;
3291 case "$usethreads" in
3292 "$define"|true|[yY]*)
3293 : Look for a hint-file generated 'call-back-unit'. If the
3294 : user has specified that a threading perl is to be built,
3295 : we may need to set or change some other defaults.
3296 if $test -f usethreads.cbu; then
3297 echo "Your platform has some specific hints for threaded builds, using them..."
3301 (Your platform doesn't have any specific hints for threaded builds.
3302 Assuming POSIX threads, then.)
3310 Perl can be built so that multiple Perl interpreters can coexist
3311 within the same Perl executable.
3314 case "$useithreads" in
3317 This multiple interpreter support is required for interpreter-based threads.
3321 *) case "$usemultiplicity" in
3322 $define|true|[yY]*) dflt='y';;
3326 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3327 rp='Build Perl for multiplicity?'
3330 y|Y) val="$define" ;;
3339 case "$usemorebits" in
3340 "$define"|true|[yY]*)
3341 use64bitint="$define"
3342 uselongdouble="$define"
3343 usemorebits="$define"
3345 *) usemorebits="$undef"
3349 : make some quick guesses about what we are up against
3351 $echo $n "Hmm... $c"
3361 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3362 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3364 echo "Looks kind of like an OSF/1 system, but we'll see..."
3366 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3367 xxx=`./loc addbib blurfl $pth`
3368 if $test -f $xxx; then
3369 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3373 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3374 echo "Looks kind of like an extended USG system, but we'll see..."
3376 echo "Looks kind of like a USG system, but we'll see..."
3380 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3381 echo "Looks kind of like a BSD system, but we'll see..."
3385 echo "Looks kind of like a Version 7 system, but we'll see..."
3388 case "$eunicefix" in
3391 There is, however, a strange, musty smell in the air that reminds me of
3392 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3396 : it so happens the Eunice I know will not run shell scripts in Unix format
3400 echo "Congratulations. You aren't running Eunice."
3404 : Detect OS2. The p_ variable is set above in the Head.U unit.
3405 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3406 : semicolon as a patch separator
3411 I have the feeling something is not exactly right, however...don't tell me...
3412 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3413 (Or you may be running DOS with DJGPP.)
3418 if test -f /xenix; then
3419 echo "Actually, this looks more like a XENIX system..."
3424 echo "It's not Xenix..."
3429 if test -f /venix; then
3430 echo "Actually, this looks more like a VENIX system..."
3437 echo "Nor is it Venix..."
3440 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3441 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3448 rp="Use which C compiler?"
3451 : Look for a hint-file generated 'call-back-unit'. Now that the
3452 : user has specified the compiler, we may need to set or change some
3454 if $test -f cc.cbu; then
3460 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3466 printf("%s\n", __VERSION__);
3468 printf("%s\n", "1");
3474 if $cc -o try $ccflags $ldflags try.c; then
3475 gccversion=`$run ./try`
3476 case "$gccversion" in
3477 '') echo "You are not using GNU cc." ;;
3478 *) echo "You are using GNU cc $gccversion."
3484 echo "*** WHOA THERE!!! ***" >&4
3485 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3486 case "$knowitall" in
3488 echo " You'd better start hunting for one and let me know about it." >&4
3494 case "$gccversion" in
3495 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3497 case "$gccversion" in
3498 '') gccosandvers='' ;;
3499 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3500 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3502 case "$gccosandvers" in
3503 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3504 $osname$osvers) ;; # looking good
3505 $osname*) cat <<EOM >&4
3507 *** WHOA THERE!!! ***
3509 Your gcc has not been compiled for the exact release of
3510 your operating system ($gccosandvers versus $osname$osvers).
3512 In general it is a good idea to keep gcc synchronized with
3513 the operating system because otherwise serious problems
3514 may ensue when trying to compile software, like Perl.
3516 I'm trying to be optimistic here, though, and will continue.
3517 If later during the configuration and build icky compilation
3518 problems appear (headerfile conflicts being the most common
3519 manifestation), I suggest reinstalling the gcc to match
3520 your operating system release.
3524 *) gccosandvers='' ;; # failed to parse, better be silent
3533 : decide how portable to be. Allow command line overrides.
3534 case "$d_portable" in
3536 *) d_portable="$define" ;;
3539 : set up shell script to do ~ expansion
3545 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3548 if $test -f /bin/csh; then
3549 /bin/csh -f -c "glob \$1"
3554 name=\`$expr x\$1 : '..\([^/]*\)'\`
3555 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3556 if $test ! -d "\$dir"; then
3558 echo "\$me: can't locate home directory for: \$name" >&2
3563 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3579 : now set up to get a file name
3583 cat <<'EOSC' >>getfile
3599 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3600 fn=`echo $fn | sed 's/(.*)//'`
3606 loc_file=`expr $fn : '.*:\(.*\)'`
3607 fn=`expr $fn : '\(.*\):.*'`
3615 */*) fullpath=true;;
3624 *e*) exp_file=true;;
3627 *p*) nopath_ok=true;;
3632 *d*) type='Directory';;
3633 *l*) type='Locate';;
3638 Locate) what='File';;
3643 case "$d_portable" in
3651 while test "$type"; do
3656 true) rp="$rp (~name ok)";;
3659 if test -f UU/getfile.ok && \
3660 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3679 value=`UU/filexp $ans`
3682 if test "$ans" != "$value"; then
3683 echo "(That expands to $value on this system.)"
3697 /*) value="$ansexp" ;;
3698 [a-zA-Z]:/*) value="$ansexp" ;;
3703 echo "I shall only accept a full path name, as in /bin/ls." >&4
3704 echo "Use a ! shell escape if you wish to check pathnames." >&4
3707 echo "Please give a full path name, starting with slash." >&4
3710 echo "Note that using ~name is ok provided it expands well." >&4
3723 for fp in $gfpth; do
3724 if test "X$fp" = X.; then
3729 if test -f "$pf"; then
3731 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3733 echo "($value is not a plain file, but that's ok.)"
3736 if test X"$type" = X; then
3743 for fp in $gfpth; do
3744 if test "X$fp" = X.; then
3749 direxp="$fp/$ansexp"
3751 if test -d "$direxp"; then
3759 if test -d "$ansexp"; then
3760 echo "(Looking for $loc_file in directory $value.)"
3761 value="$value/$loc_file"
3762 ansexp="$ansexp/$loc_file"
3764 if test -f "$ansexp"; then
3767 case "$nopath_ok" in
3768 true) case "$value" in
3770 *) echo "Assuming $value will be in people's path."
3786 if test "$fastread" = yes; then
3791 rp="$what $value doesn't exist. Use that name anyway?"
3810 test "X$gfpthkeep" != Xy && gfpth=""
3813 : What should the include directory be ?
3815 $echo $n "Hmm... $c"
3819 if $test -f /bin/mips && /bin/mips; then
3820 echo "Looks like a MIPS system..."
3821 $cat >usr.c <<'EOCP'
3822 #ifdef SYSTYPE_BSD43
3826 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3827 dflt='/bsd43/usr/include'
3831 mips_type='System V'
3833 $rm -f usr.c usr.out
3834 echo "and you're compiling with the $mips_type compiler and libraries."
3838 echo "Doesn't look like a MIPS system."
3848 case "$xxx_prompt" in
3851 rp='Where are the include files you want to use?'
3859 : see how we invoke the C preprocessor
3861 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3862 cat <<'EOT' >testcpp.c
3868 if test ! -f cppstdin; then
3869 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3870 # AIX cc -E doesn't show the absolute headerfile
3871 # locations but we'll cheat by using the -M flag.
3872 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
3874 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3877 echo "Keeping your $hint cppstdin wrapper."
3880 wrapper=`pwd`/cppstdin
3884 if $test "X$cppstdin" != "X" && \
3885 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3886 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3888 echo "You used to use $cppstdin $cppminus so we'll use that again."
3890 '') echo "But let's see if we can live without a wrapper..." ;;
3892 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3893 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3895 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3898 echo "(However, $cpprun $cpplast does not work, let's see...)"
3906 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3913 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3914 $cc -E <testcpp.c >testcpp.out 2>&1; \
3915 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3916 echo "Yup, it does."
3919 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3920 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3921 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3922 echo "Yup, it does."
3925 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3926 $cc -P <testcpp.c >testcpp.out 2>&1; \
3927 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3928 echo "Yipee, that works!"
3931 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3932 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3933 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3934 echo "At long last!"
3937 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3938 $cpp <testcpp.c >testcpp.out 2>&1; \
3939 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3943 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3944 $cpp - <testcpp.c >testcpp.out 2>&1; \
3945 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3946 echo "Hooray, it works! I was beginning to wonder."
3949 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3950 $wrapper <testcpp.c >testcpp.out 2>&1; \
3951 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3957 rp="No dice. I can't find a C preprocessor. Name one:"
3961 $x_cpp <testcpp.c >testcpp.out 2>&1
3962 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3963 echo "OK, that will do." >&4
3965 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3980 echo "Perhaps can we force $cc -E using a wrapper..."
3981 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3982 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3988 echo "Nope, we'll have to live without it..."
4002 "$wrapper"|'cppstdin') ;;
4003 *) $rm -f $wrapper;;
4005 $rm -f testcpp.c testcpp.out
4007 : Set private lib path
4010 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4015 '') dlist="$loclibpth $plibpth $glibpth";;
4016 *) dlist="$libpth";;
4019 : Now check and see which directories actually exist, avoiding duplicates
4023 if $test -d $xxx; then
4026 *) libpth="$libpth $xxx";;
4032 Some systems have incompatible or broken versions of libraries. Among
4033 the directories listed in the question below, please remove any you
4034 know not to be holding relevant libraries, and add any that are needed.
4035 Say "none" for none.
4046 rp="Directories to use for library searches?"
4053 : compute shared library extension
4056 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4066 On some systems, shared libraries may be available. Answer 'none' if
4067 you want to suppress searching of shared libraries for the remainder
4068 of this configuration.
4071 rp='What is the file extension used for shared libraries?'
4075 : Define several unixisms.
4076 : Hints files or command line option can be used to override them.
4077 : The convoluted testing is in case hints files set either the old
4080 '') case "$exe_ext" in
4082 *) _exe="$exe_ext" ;;
4087 '') case "$lib_ext" in
4094 '') case "$obj_ext" in
4101 '') case "$path_sep" in
4112 : Which makefile gets called first. This is used by make depend.
4113 case "$firstmakefile" in
4114 '') firstmakefile='makefile';;
4118 $define|true|[yY]*) dflt='y';;
4123 Perl can be built to use the SOCKS proxy protocol library. To do so,
4124 Configure must be run with -Dusesocks. If you use SOCKS you also need
4125 to use the PerlIO abstraction layer, this will be implicitly selected.
4127 If this doesn't make any sense to you, just accept the default '$dflt'.
4129 rp='Build Perl for SOCKS?'
4132 y|Y) val="$define" ;;
4139 $define|true|[yY]*) useperlio="$define";;
4142 : Looking for optional libraries
4144 echo "Checking for optional libraries..." >&4
4149 case "$libswanted" in
4150 '') libswanted='c_s';;
4153 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4159 for thisdir in $libpth $xlibpth; do
4160 test -d $thisdir && libspath="$libspath $thisdir"
4162 for thislib in $libswanted; do
4163 for thisdir in $libspath; do
4165 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4166 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4167 $test -f "$xxx" && eval $libscheck
4168 $test -f "$xxx" && libstyle=shared
4170 if test ! -f "$xxx"; then
4171 xxx=$thisdir/lib$thislib.$so
4172 $test -f "$xxx" && eval $libscheck
4173 $test -f "$xxx" && libstyle=shared
4175 if test ! -f "$xxx"; then
4176 xxx=$thisdir/lib$thislib$_a
4177 $test -f "$xxx" && eval $libscheck
4178 $test -f "$xxx" && libstyle=static
4180 if test ! -f "$xxx"; then
4181 xxx=$thisdir/$thislib$_a
4182 $test -f "$xxx" && eval $libscheck
4183 $test -f "$xxx" && libstyle=static
4185 if test ! -f "$xxx"; then
4186 xxx=$thisdir/lib${thislib}_s$_a
4187 $test -f "$xxx" && eval $libscheck
4188 $test -f "$xxx" && libstyle=static
4189 $test -f "$xxx" && thislib=${thislib}_s
4191 if test ! -f "$xxx"; then
4192 xxx=$thisdir/Slib$thislib$_a
4193 $test -f "$xxx" && eval $libscheck
4194 $test -f "$xxx" && libstyle=static
4196 if $test -f "$xxx"; then
4198 shared) echo "Found -l$thislib (shared)." ;;
4199 static) echo "Found -l$thislib." ;;
4200 *) echo "Found -l$thislib ($libstyle)." ;;
4204 *) dflt="$dflt -l$thislib"
4205 libsfound="$libsfound $xxx"
4207 libsfiles="$libsfiles $yyy"
4208 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4209 case " $libsdirs " in
4211 *) libsdirs="$libsdirs $yyy" ;;
4218 if $test ! -f "$xxx"; then
4219 echo "No -l$thislib."
4230 ' '|'') dflt='none';;
4235 In order to compile $package on your machine, a number of libraries
4236 are usually needed. Include any other special libraries here as well.
4237 Say "none" for none. The default list is almost always right.
4241 rp="What libraries to use?"
4248 : determine optimization, if desired, or use for debug flag also
4250 ' '|$undef) dflt='none';;
4252 *) dflt="$optimize";;
4256 By default, $package compiles with the -O flag to use the optimizer.
4257 Alternately, you might want to use the symbolic debugger, which uses
4258 the -g flag (on traditional Unix systems). Either flag can be
4259 specified here. To use neither flag, specify the word "none".
4262 rp="What optimizer/debugger flag should be used?"
4266 'none') optimize=" ";;
4270 : We will not override a previous value, but we might want to
4271 : augment a hint file
4273 default|recommended)
4274 case "$gccversion" in
4275 1*) dflt='-fpcc-struct-return' ;;
4278 *-g*) dflt="$dflt -DDEBUGGING";;
4280 case "$gccversion" in
4281 2*) if test -d /etc/conf/kconfig.d &&
4282 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4288 case "$gccversion" in
4292 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4293 echo 'int main(void) { return 0; }' > gcctest.c
4294 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4295 echo "Yes, it does." 2>&1
4298 echo "Leaving current flags $ccflags alone." 2>&1
4300 *) dflt="$dflt -fno-strict-aliasing" ;;
4303 echo "Nope, it doesn't, but that's ok." 2>&1
4310 case "$mips_type" in
4311 *BSD*|'') inclwanted="$locincpth $usrinc";;
4312 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4314 for thisincl in $inclwanted; do
4315 if $test -d $thisincl; then
4316 if $test x$thisincl != x$usrinc; then
4318 *" -I$thisincl "*);;
4319 *) dflt="$dflt -I$thisincl ";;
4325 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4327 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4335 *) dflt="$dflt -D$2";;
4339 set signal.h LANGUAGE_C; eval $inctest
4343 ccflags="$ccflags -DSOCKS"
4348 default|recommended) dflt="$ccflags $dflt" ;;
4349 *) dflt="$ccflags";;
4358 Your C compiler may want other flags. For this question you should include
4359 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4360 but you should NOT include libraries or ld flags like -lwhatever. If you
4361 want $package to honor its debug switch, you should include -DDEBUGGING here.
4362 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4364 To use no flags, specify the word "none".
4370 rp="Any additional cc flags?"
4377 : the following weeds options from ccflags that are of no interest to cpp
4379 '') cppflags="$ccflags" ;;
4380 *) cppflags="$cppflags $ccflags" ;;
4382 case "$gccversion" in
4383 1*) cppflags="$cppflags -D__GNUC__"
4385 case "$mips_type" in
4387 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4393 echo "Let me guess what the preprocessor flags are..." >&4
4407 *) ftry="$previous $flag";;
4409 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4410 >cpp1.out 2>/dev/null && \
4411 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4412 >cpp2.out 2>/dev/null && \
4413 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4414 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4416 cppflags="$cppflags $ftry"
4426 *-*) echo "They appear to be: $cppflags";;
4428 $rm -f cpp.c cpp?.out
4432 : flags used in final linking phase
4434 '') if ./venix; then
4440 *-posix*) dflt="$dflt -posix" ;;
4443 *) dflt="$ldflags";;
4446 : Try to guess additional flags to pick up local libraries.
4447 for thislibdir in $libpth; do
4448 case " $loclibpth " in
4451 *"-L$thislibdir "*) ;;
4452 *) dflt="$dflt -L$thislibdir" ;;
4464 Your C linker may need flags. For this question you should
4465 include -L/whatever and any other flags used by the C linker, but you
4466 should NOT include libraries like -lwhatever.
4468 Make sure you include the appropriate -L/path flags if your C linker
4469 does not normally search all of the directories you specified above,
4472 To use no flags, specify the word "none".
4476 rp="Any additional ld flags (NOT including libraries)?"
4482 rmlist="$rmlist pdp11"
4486 echo "Checking your choice of C compiler and flags for coherency..." >&4
4487 $cat > try.c <<'EOF'
4489 int main() { printf("Ok\n"); exit(0); }
4491 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4493 $cat >try.msg <<'EOM'
4494 I've tried to compile and run the following simple program:
4497 $cat try.c >> try.msg
4499 $cat >> try.msg <<EOM
4506 and I got the following output:
4510 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4511 if $sh -c "$run ./try" >>try.msg 2>&1; then
4515 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4518 cat >> try.msg <<'EOQS'
4519 If $libs contains -lsfio, and sfio is mis-configured, then it
4520 sometimes (apparently) runs and exits with a 0 status, but with no
4521 output! It may have to do with sfio's use of _exit vs. exit.
4524 rp="You have a big problem. Shall I abort Configure"
4531 echo "The program compiled OK, but exited with status $?." >>try.msg
4532 rp="You have a problem. Shall I abort Configure"
4536 echo "I can't compile the test program." >>try.msg
4537 rp="You have a BIG problem. Shall I abort Configure"
4543 case "$knowitall" in
4545 echo "(The supplied flags or libraries might be incorrect.)"
4553 *) echo "Ok. Stopping Configure." >&4
4558 n) echo "OK, that should do.";;
4560 $rm -f try try.* core
4562 : define a shorthand compile call
4566 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4567 : define a shorthand compile call for compilations that should be ok.
4571 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4573 : check for lengths of integral types
4577 echo "Checking to see how big your integers are..." >&4
4578 $cat >try.c <<'EOCP'
4582 printf("intsize=%d;\n", (int)sizeof(int));
4583 printf("longsize=%d;\n", (int)sizeof(long));
4584 printf("shortsize=%d;\n", (int)sizeof(short));
4589 if eval $compile_ok && $run ./try > /dev/null; then
4591 echo "Your integers are $intsize bytes long."
4592 echo "Your long integers are $longsize bytes long."
4593 echo "Your short integers are $shortsize bytes long."
4597 Help! I can't compile and run the intsize test program: please enlighten me!
4598 (This is probably a misconfiguration in your system or libraries, and
4599 you really ought to fix it. Still, I'll try anyway.)
4603 rp="What is the size of an integer (in bytes)?"
4607 rp="What is the size of a long integer (in bytes)?"
4611 rp="What is the size of a short integer (in bytes)?"
4619 : check for void type
4621 echo "Checking to see how well your C compiler groks the void type..." >&4
4622 case "$voidflags" in
4624 $cat >try.c <<'EOCP'
4630 extern void moo(); /* function returning void */
4631 void (*goo)(); /* ptr to func returning void */
4633 void *hue; /* generic ptr */
4646 int main() { sub(); }
4648 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4649 voidflags=$defvoidused
4650 echo "Good. It appears to support void to the level $package wants.">&4
4651 if $contains warning .out >/dev/null 2>&1; then
4652 echo "However, you might get some warnings that look like this:"
4656 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4657 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4658 echo "It supports 1..."
4659 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4660 echo "It also supports 2..."
4661 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4663 echo "And it supports 4 but not 8 definitely."
4665 echo "It doesn't support 4..."
4666 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4668 echo "But it supports 8."
4671 echo "Neither does it support 8."
4675 echo "It does not support 2..."
4676 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4678 echo "But it supports 4 and 8."
4680 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4682 echo "And it supports 4 but has not heard about 8."
4684 echo "However it supports 8 but not 4."
4689 echo "There is no support at all for void."
4694 case "$voidflags" in
4697 Support flag bits are:
4698 1: basic void declarations.
4699 2: arrays of pointers to functions returning void.
4700 4: operations between pointers to and addresses of void functions.
4701 8: generic void pointers.
4704 rp="Your void support flags add up to what?"
4711 : check for length of pointer
4715 echo "Checking to see how big your pointers are..." >&4
4716 if test "$voidflags" -gt 7; then
4717 echo '#define VOID_PTR char *' > try.c
4719 echo '#define VOID_PTR void *' > try.c
4721 $cat >>try.c <<'EOCP'
4725 printf("%d\n", (int)sizeof(VOID_PTR));
4730 if eval $compile_ok; then
4731 ptrsize=`$run ./try`
4732 echo "Your pointers are $ptrsize bytes long."
4735 echo "(I can't seem to compile the test program. Guessing...)" >&4
4736 rp="What is the size of a pointer (in bytes)?"
4744 : check for long long
4746 echo "Checking to see if you have long long..." >&4
4747 echo 'int main() { long long x = 7; return 0; }' > try.c
4749 if eval $compile; then
4751 echo "You have long long."
4754 echo "You do not have long long."
4760 : check for length of long long
4761 case "${d_longlong}${longlongsize}" in
4764 echo "Checking to see how big your long longs are..." >&4
4765 $cat >try.c <<'EOCP'
4769 printf("%d\n", (int)sizeof(long long));
4774 if eval $compile_ok; then
4775 longlongsize=`$run ./try`
4776 echo "Your long longs are $longlongsize bytes long."
4780 echo "(I can't seem to compile the test program. Guessing...)"
4781 rp="What is the size of a long long (in bytes)?"
4785 if $test "X$longsize" = "X$longlongsize"; then
4786 echo "(That isn't any different from an ordinary long.)"
4792 : determine filename position in cpp output
4794 echo "Computing filename position in cpp output for #include directives..." >&4
4795 echo '#include <stdio.h>' > foo.c
4798 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4799 $grep '^[ ]*#.*stdio\.h' | \
4800 while read cline; do
4803 while $test \$# -gt 0; do
4804 if $test -r \`echo \$1 | $tr -d '"'\`; then
4809 pos=\`expr \$pos + 1\`
4821 *) pos="${fieldn}th";;
4823 echo "Your cpp writes the filename in the $pos field of the line."
4825 : locate header file
4830 for usrincdir in $usrinc
4832 if test -f \$usrincdir/\$wanted; then
4833 echo "\$usrincdir/\$wanted"
4837 awkprg='{ print \$$fieldn }'
4838 echo "#include <\$wanted>" > foo\$\$.c
4839 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4840 $grep "^[ ]*#.*\$wanted" | \
4841 while read cline; do
4842 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4844 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4845 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4850 # status = 0: grep returned 0 lines, case statement not executed
4851 # status = 1: headerfile found
4852 # status = 2: while loop executed, no headerfile found
4856 if test \$status -eq 1; then
4863 : define an alternate in-header-list? function
4864 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4865 cont=true; xxf="echo \"<\$1> found.\" >&4";
4866 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4867 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4869 case $# in 4) instead=instead;; *) instead="at last";; esac;
4870 while $test "$cont"; do
4872 var=$2; eval "was=\$$2";
4873 if $test "$xxx" && $test -r "$xxx";
4875 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4878 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4879 set $yyy; shift; shift; yyy=$@;
4880 case $# in 0) cont="";;
4881 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4882 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4883 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4884 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4888 do set $yyy; var=$2; eval "was=\$$2";
4889 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4890 set $yyy; shift; shift; yyy=$@;
4893 : see if inttypes.h is available
4894 : we want a real compile instead of Inhdr because some systems
4895 : have an inttypes.h which includes non-existent headers
4898 #include <inttypes.h>
4900 static int32_t foo32 = 0x12345678;
4904 if eval $compile; then
4905 echo "<inttypes.h> found." >&4
4908 echo "<inttypes.h> NOT found." >&4
4917 echo "Checking to see if you have int64_t..." >&4
4919 #include <sys/types.h>
4920 #$i_inttypes I_INTTYPES
4922 #include <inttypes.h>
4924 int main() { int64_t x = 7; }
4927 if eval $compile; then
4929 echo "You have int64_t."
4932 echo "You do not have int64_t."
4940 echo "Checking which 64-bit integer type we could use..." >&4
4946 val='"unsigned int"'
4951 *) case "$longsize" in
4955 val='"unsigned long"'
4960 *) case "$d_longlong:$longlongsize" in
4965 val='"unsigned long long"'
4970 *) case "$d_int64_t" in
4989 '') echo "Alas, no 64-bit integer types in sight." >&4
4992 *) echo "We could use '$quadtype' for 64-bit integers." >&4
4998 case "$uselonglong" in
4999 "$define"|true|[yY]*)
5002 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5004 use64bitint="$define"
5007 case "$use64bits" in
5008 "$define"|true|[yY]*)
5011 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5013 use64bitint="$define"
5016 case "$use64bitints" in
5017 "$define"|true|[yY]*)
5020 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5022 use64bitint="$define"
5025 case "$use64bitsint" in
5026 "$define"|true|[yY]*)
5029 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5031 use64bitint="$define"
5034 case "$uselonglongs" in
5035 "$define"|true|[yY]*)
5038 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5040 use64bitint="$define"
5043 case "$use64bitsall" in
5044 "$define"|true|[yY]*)
5047 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5049 use64bitall="$define"
5054 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5056 case "$use64bitall" in
5057 "$define"|true|[yY]*) use64bitint="$define" ;;
5063 You have natively 64-bit long integers.
5067 *) case "$use64bitint" in
5068 "$define"|true|[yY]*) dflt='y';;
5077 Perl can be built to take advantage of 64-bit integer types
5078 on some systems. To do so, Configure can be run with -Duse64bitint.
5079 Choosing this option will most probably introduce binary incompatibilities.
5081 If this doesn't make any sense to you, just accept the default '$dflt'.
5082 (The default has been chosen based on your configuration.)
5084 rp='Try to use 64-bit integers, if available?'
5087 [yY]*) val="$define" ;;
5095 case "$use64bitall" in
5096 "$define"|true|[yY]*) dflt='y' ;;
5097 *) case "$longsize" in
5105 You may also choose to try maximal 64-bitness. It means using as much
5106 64-bitness as possible on the platform. This in turn means even more
5107 binary incompatibilities. On the other hand, your platform may not
5108 have any more 64-bitness available than what you already have chosen.
5110 If this doesn't make any sense to you, just accept the default '$dflt'.
5111 (The default has been chosen based on your configuration.)
5113 rp='Try to use maximal 64-bit support, if available?'
5116 [yY]*) val="$define" ;;
5121 case "$use64bitall" in
5123 case "$use64bitint" in
5127 Since you have chosen a maximally 64-bit build, I'm also turning on
5128 the use of 64-bit integers.
5130 use64bitint="$define" ;;
5135 case "$use64bitall" in
5136 "$define"|true|[yY]*)
5140 *** You have chosen a maximally 64-bit build, but your pointers
5141 *** are only 4 bytes wide, disabling maximal 64-bitness.
5144 use64bitall="$undef"
5145 case "$use64bitint" in
5146 "$define"|true|[yY]*) ;;
5149 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5152 use64bitint="$define"
5160 case "$use64bitint" in
5161 "$define"|true|[yY]*)
5162 : Look for a hint-file generated 'call-back-unit'. If the
5163 : user has specified that a 64-bit perl is to be built,
5164 : we may need to set or change some other defaults.
5165 if $test -f use64bitint.cbu; then
5166 echo "Your platform has some specific hints for 64-bit integers, using them..."
5170 4) case "$archname64" in
5171 '') archname64=64int ;;
5178 case "$use64bitall" in
5179 "$define"|true|[yY]*)
5180 : Look for a hint-file generated 'call-back-unit'. If the
5181 : user has specified that a maximally 64-bit perl is to be built,
5182 : we may need to set or change some other defaults.
5183 if $test -f use64bitall.cbu; then
5184 echo "Your platform has some specific hints for 64-bit builds, using them..."
5188 4) case "$archname64" in
5189 ''|64int) archname64=64all ;;
5197 echo "Checking for GNU C Library..." >&4
5210 if eval $compile_ok && $run ./try; then
5212 echo "You are using the GNU C Library"
5215 echo "You are not using the GNU C Library"
5221 : see if nm is to be used to determine whether a symbol is defined or not
5225 case "$d_gnulibc" in
5228 echo "nm probably won't work on the GNU C Library." >&4
5234 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5236 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5237 echo "'nm' won't be sufficient on this sytem." >&4
5243 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5244 if $test $dflt -gt 20; then
5254 true|$define) dflt=y;;
5261 I can use $nm to extract the symbols from your C libraries. This
5262 is a time consuming task which may generate huge output on the disk (up
5263 to 3 megabytes) but that should make the symbols extraction faster. The
5264 alternative is to skip the 'nm' extraction part and to compile a small
5265 test program instead to determine whether each symbol is present. If
5266 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5267 this may be the best solution.
5269 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5272 rp="Shall I use $nm to extract C symbols from the libraries?"
5275 [Nn]*) usenm=false;;
5284 : nm options which may be necessary
5286 '') if $test -f /mach_boot; then
5288 elif $test -d /usr/ccs/lib; then
5289 nm_opt='-p' # Solaris (and SunOS?)
5290 elif $test -f /dgux; then
5292 elif $test -f /lib64/rld; then
5293 nm_opt='-p' # 64-bit Irix
5299 : nm options which may be necessary for shared libraries but illegal
5300 : for archive libraries. Thank you, Linux.
5301 case "$nm_so_opt" in
5302 '') case "$myuname" in
5304 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5305 nm_so_opt='--dynamic'
5314 : get list of predefined functions in a handy place
5319 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5325 *) for thislib in $libs; do
5328 : Handle C library specially below.
5331 thislib=`echo $thislib | $sed -e 's/^-l//'`
5332 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5334 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5336 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5338 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5340 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5342 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5344 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5349 libnames="$libnames $try"
5351 *) libnames="$libnames $thislib" ;;
5360 for xxx in $libpth; do
5361 $test -r $1 || set $xxx/libc.$so
5362 : The messy sed command sorts on library version numbers.
5364 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5365 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5367 s/[0-9][0-9]*/0000&/g
5368 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5371 $sort | $sed -e 's/^.* //'`
5374 $test -r $1 || set /usr/ccs/lib/libc.$so
5375 $test -r $1 || set /lib/libsys_s$_a
5381 if $test -r "$1"; then
5382 echo "Your (shared) C library seems to be in $1."
5384 elif $test -r /lib/libc && $test -r /lib/clib; then
5385 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5387 libc='/lib/clib /lib/libc'
5388 if $test -r /lib/syslib; then
5389 echo "(Your math library is in /lib/syslib.)"
5390 libc="$libc /lib/syslib"
5392 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5393 echo "Your C library seems to be in $libc, as you said before."
5394 elif $test -r $incpath/usr/lib/libc$_a; then
5395 libc=$incpath/usr/lib/libc$_a;
5396 echo "Your C library seems to be in $libc. That's fine."
5397 elif $test -r /lib/libc$_a; then
5399 echo "Your C library seems to be in $libc. You're normal."
5401 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5403 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5404 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5405 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5407 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5409 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5412 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5414 if $test -r "$tans"; then
5415 echo "Your C library seems to be in $tans, of all places."
5421 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5425 If the guess above is wrong (which it might be if you're using a strange
5426 compiler, or your machine supports multiple models), you can override it here.
5431 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5433 I can't seem to find your C library. I've looked in the following places:
5436 $sed 's/^/ /' libpath
5439 None of these seems to contain your C library. I need to get its name...
5444 rp='Where is your C library?'
5449 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5450 set X `cat libnames`
5453 case $# in 1) xxx=file; esac
5454 echo "Extracting names from the following $xxx for later perusal:" >&4
5456 $sed 's/^/ /' libnames >&4
5458 $echo $n "This may take a while...$c" >&4
5462 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5463 *) $nm $nm_opt $file 2>/dev/null;;
5468 $grep fprintf libc.tmp > libc.ptf
5469 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5470 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5472 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5474 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5476 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5478 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5480 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5482 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5484 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5486 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5488 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5490 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5492 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5494 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5496 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5497 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5499 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5501 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5503 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5505 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5507 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5509 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5511 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5513 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5515 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5517 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5519 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5521 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5523 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5525 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5527 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5530 $nm -p $* 2>/dev/null >libc.tmp
5531 $grep fprintf libc.tmp > libc.ptf
5532 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5533 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5539 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5541 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5542 for thisname in $libnames $libc; do
5543 $ar t $thisname >>libc.tmp
5545 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5547 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5548 # Repeat libc to extract forwarders to DLL entries too
5549 for thisname in $libnames $libc; do
5550 $ar tv $thisname >>libc.tmp
5551 # Revision 50 of EMX has bug in $ar.
5552 # it will not extract forwarders to DLL entries
5553 # Use emximp which will extract exactly them.
5554 emximp -o tmp.imp $thisname \
5556 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5557 < tmp.imp >>libc.tmp
5560 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5563 echo "$ar didn't seem to work right." >&4
5564 echo "Maybe this is a Cray...trying bld instead..." >&4
5565 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5567 for thisname in $libnames; do
5569 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5570 $ar t $thisname >>libc.tmp
5574 echo "That didn't work either. Giving up." >&4
5581 if $test -f /lib/syscalls.exp; then
5583 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5584 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
5588 $rm -f libnames libpath
5590 : is a C symbol defined?
5593 -v) tf=libc.tmp; tc=""; tdc="";;
5594 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5595 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5598 case "$reuseval-$4" in
5600 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5606 if $contains $tlook $tf >/dev/null 2>&1;
5611 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5612 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5620 $define) tval=true;;
5626 : define an is-in-libc? function
5627 inlibc='echo " "; td=$define; tu=$undef;
5628 sym=$1; var=$2; eval "was=\$$2";
5630 case "$reuseval$was" in
5640 echo "$sym() found." >&4;
5641 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5643 echo "$sym() NOT found." >&4;
5644 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5648 $define) echo "$sym() found." >&4;;
5649 *) echo "$sym() NOT found." >&4;;
5653 : see if sqrtl exists
5658 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5661 case "$uselongdouble" in
5662 $define|true|[yY]*) dflt='y';;
5667 Perl can be built to take advantage of long doubles which
5668 (if available) may give more accuracy and range for floating point numbers.
5670 If this doesn't make any sense to you, just accept the default '$dflt'.
5672 rp='Try to use long doubles if available?'
5675 y|Y) val="$define" ;;
5681 case "$uselongdouble" in
5682 true|[yY]*) uselongdouble="$define" ;;
5685 case "$uselongdouble" in
5687 : Look for a hint-file generated 'call-back-unit'. If the
5688 : user has specified that long doubles should be used,
5689 : we may need to set or change some other defaults.
5690 if $test -f uselongdouble.cbu; then
5691 echo "Your platform has some specific hints for long doubles, using them..."
5692 . ./uselongdouble.cbu
5695 (Your platform doesn't have any specific hints for long doubles.)
5701 case "$uselongdouble:$d_sqrtl" in
5705 *** You requested the use of long doubles but you do not seem to have
5706 *** the mathematic functions for long doubles. I'm disabling the use
5707 *** of long doubles.
5710 uselongdouble=$undef
5714 : check for length of double
5716 case "$doublesize" in
5718 echo "Checking to see how big your double precision numbers are..." >&4
5719 $cat >try.c <<'EOCP'
5723 printf("%d\n", (int)sizeof(double));
5728 if eval $compile_ok; then
5729 doublesize=`$run ./try`
5730 echo "Your double is $doublesize bytes long."
5733 echo "(I can't seem to compile the test program. Guessing...)"
5734 rp="What is the size of a double precision number (in bytes)?"
5742 : check for long doubles
5744 echo "Checking to see if you have long double..." >&4
5745 echo 'int main() { long double x = 7.0; }' > try.c
5747 if eval $compile; then
5749 echo "You have long double."
5752 echo "You do not have long double."
5758 : check for length of long double
5759 case "${d_longdbl}${longdblsize}" in
5762 echo "Checking to see how big your long doubles are..." >&4
5763 $cat >try.c <<'EOCP'
5767 printf("%d\n", sizeof(long double));
5772 if eval $compile; then
5773 longdblsize=`$run ./try`
5774 echo "Your long doubles are $longdblsize bytes long."
5778 echo "(I can't seem to compile the test program. Guessing...)" >&4
5779 rp="What is the size of a long double (in bytes)?"
5783 if $test "X$doublesize" = "X$longdblsize"; then
5784 echo "(That isn't any different from an ordinary double.)"
5790 case "$useperlio" in
5791 $define|true|[yY]*|'') dflt='y';;
5796 Previous version of $package used the standard IO mechanisms as
5797 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
5798 alternate IO mechanisms via the PerlIO abstraction layer, but the
5799 stdio mechanism is still available if needed. The abstraction layer
5800 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5801 Using PerlIO with sfio may cause problems with some extension modules.
5803 If this doesn't make any sense to you, just accept the default '$dflt'.
5805 rp='Use the PerlIO abstraction layer?'
5812 echo "Ok, doing things the stdio way."
5821 case "$useperlio" in
5822 $define|true|[yY]*) ;;
5825 You are using the SOCKS proxy protocol library which means that you
5826 should also use the PerlIO layer. You may be headed for trouble.
5835 : determine the architecture name
5837 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5838 tarch=`arch`"-$osname"
5839 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5840 if uname -m > tmparch 2>&1 ; then
5841 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5842 -e 's/$/'"-$osname/" tmparch`
5850 case "$myarchname" in
5853 echo "(Your architecture name used to be $myarchname.)"
5857 case "$targetarch" in
5859 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5864 *) dflt="$archname";;
5866 rp='What is your architecture name'
5869 case "$usethreads" in
5871 echo "Threads selected." >&4
5873 *-thread*) echo "...and architecture name already has -thread." >&4
5875 *) archname="$archname-thread"
5876 echo "...setting architecture name to $archname." >&4
5881 case "$usemultiplicity" in
5883 echo "Multiplicity selected." >&4
5885 *-multi*) echo "...and architecture name already has -multi." >&4
5887 *) archname="$archname-multi"
5888 echo "...setting architecture name to $archname." >&4
5893 case "$use64bitint$use64bitall" in
5895 case "$archname64" in
5897 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5900 case "$use64bitint" in
5901 "$define") echo "64 bit integers selected." >&4 ;;
5903 case "$use64bitall" in
5904 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5907 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5909 *) archname="$archname-$archname64"
5910 echo "...setting architecture name to $archname." >&4
5916 case "$uselongdouble" in
5918 echo "Long doubles selected." >&4
5919 case "$longdblsize" in
5921 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5925 *-ld*) echo "...and architecture name already has -ld." >&4
5927 *) archname="$archname-ld"
5928 echo "...setting architecture name to $archname." >&4
5935 case "$useperlio" in
5937 echo "Perlio selected." >&4
5940 echo "Perlio not selected, using stdio." >&4
5942 *-stdio*) echo "...and architecture name already has -stdio." >&4
5944 *) archname="$archname-stdio"
5945 echo "...setting architecture name to $archname." >&4
5951 : determine root of directory hierarchy where package will be installed.
5954 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5962 By default, $package will be installed in $dflt/bin, manual pages
5963 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5964 installation directories. Typically this is something like /usr/local.
5965 If you wish to have binaries under /usr/bin but other parts of the
5966 installation under /usr/local, that's ok: you will be prompted
5967 separately for each of the installation directories, the prefix being
5968 only used to set the defaults.
5972 rp='Installation prefix to use?'
5980 *) oldprefix="$prefix";;
5989 *) afsroot=$afsroot ;;
5995 $define|true) afs=true ;;
5996 $undef|false) afs=false ;;
5997 *) if test -d $afsroot; then
6005 echo "AFS may be running... I'll be extra cautious then..." >&4
6007 echo "AFS does not seem to be running..." >&4
6010 : determine installation prefix for where package is to be installed.
6014 Since you are running AFS, I need to distinguish the directory in which
6015 files will reside from the directory in which they are installed (and from
6016 which they are presumably copied to the former directory by occult means).
6019 case "$installprefix" in
6020 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6021 *) dflt="$installprefix";;
6026 In some special cases, particularly when building $package for distribution,
6027 it is convenient to distinguish between the directory in which files should
6028 be installed from the directory ($prefix) in which they
6029 will eventually reside. For most users, these two directories are the same.
6032 case "$installprefix" in
6034 *) dflt=$installprefix;;
6038 rp='What installation prefix should I use for installing files?'
6040 installprefix="$ans"
6041 installprefixexp="$ansexp"
6043 : set the prefixit variable, to compute a suitable default value
6044 prefixit='case "$3" in
6046 case "$oldprefix" in
6047 "") eval "$1=\"\$$2\"";;
6054 ""|" ") eval "$1=\"\$$2\"";;
6060 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6062 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6063 /*-$oldprefix/*|\~*-$oldprefix/*)
6064 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6065 *) eval "$1=\"\$$2\"";;
6069 : get the patchlevel
6071 echo "Getting the current patchlevel..." >&4
6072 if $test -r $rsrc/patchlevel.h;then
6073 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6074 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6075 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6076 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6077 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6078 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6079 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6088 $echo "(You do not have patchlevel.h. Eek.)"
6090 if $test -r $rsrc/.patch ; then
6091 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6092 perl_patchlevel=`cat $rsrc/.patch`
6095 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6096 version_patchlevel_string="version $patchlevel subversion $subversion"
6097 case "$perl_patchlevel" in
6099 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6102 $echo "(You have $package $version_patchlevel_string.)"
6106 : XXX Should be a Configure test for double-dots in filenames.
6107 version=`echo $revision $patchlevel $subversion | \
6108 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6109 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6110 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6113 version=`echo $revision $patchlevel $subversion | \
6114 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6115 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6116 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6119 : Special case the 5.005_xx maintenance series, which used 5.005
6120 : without any subversion label as a subdirectory in $sitelib
6121 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6122 api_versionstring='5.005'
6125 : determine installation style
6126 : For now, try to deduce it from prefix unless it is already set.
6127 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6128 case "$installstyle" in
6129 '') case "$prefix" in
6130 *perl*) dflt='lib';;
6131 *) dflt='lib/perl5' ;;
6134 *) dflt="$installstyle" ;;
6136 : Probably not worth prompting for this since we prompt for all
6137 : the directories individually, and the prompt would be too long and
6141 : determine where private library files go
6142 : Usual default is /usr/local/lib/perl5/$version.
6143 : Also allow things like /opt/perl/lib/$version, since
6144 : /opt/perl/lib/perl5... would be redundant.
6145 : The default "style" setting is made in installstyle.U
6146 case "$installstyle" in
6147 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6148 *) set dflt privlib lib/$version ;;
6153 There are some auxiliary files for $package that need to be put into a
6154 private library directory that is accessible by everyone.
6158 rp='Pathname where the private library files will reside?'
6161 privlibexp="$ansexp"
6162 : Change installation prefix, if necessary.
6163 if $test X"$prefix" != X"$installprefix"; then
6164 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6166 installprivlib="$privlibexp"
6169 : set the prefixup variable, to restore leading tilda escape
6170 prefixup='case "$prefixexp" in
6172 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6175 : determine where public architecture dependent libraries go
6178 : privlib default is /usr/local/lib/$package/$version
6179 : archlib default is /usr/local/lib/$package/$version/$archname
6180 : privlib may have an optional trailing /share.
6181 tdflt=`echo $privlib | $sed 's,/share$,,'`
6182 tdflt=$tdflt/$archname
6191 $spackage contains architecture-dependent library files. If you are
6192 sharing libraries in a heterogeneous environment, you might store
6193 these files in a separate location. Otherwise, you can just include
6194 them with the rest of the public library files.
6198 rp='Where do you want to put the public architecture-dependent libraries?'
6201 archlibexp="$ansexp"
6202 if $test X"$archlib" = X"$privlib"; then
6207 : Change installation prefix, if necessary.
6208 if $test X"$prefix" != X"$installprefix"; then
6209 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6211 installarchlib="$archlibexp"
6215 : Binary compatibility with 5.005 is not possible for builds
6216 : with advanced features
6217 case "$usethreads$usemultiplicity" in
6219 bincompat5005="$undef"
6220 d_bincompat5005="$undef"
6224 This version of Perl can be compiled for binary compatibility with 5.005.
6225 If you decide to do so, you will be able to continue using most of the
6226 extensions that were compiled for Perl 5.005.
6229 case "$bincompat5005$d_bincompat5005" in
6230 *"$undef"*) dflt=n ;;
6233 rp='Binary compatibility with Perl 5.005?'
6236 y*) val="$define" ;;
6241 case "$d_bincompat5005" in
6243 bincompat5005="$define"
6245 *) bincompat5005="$undef"
6246 d_bincompat5005="$undef"
6253 : see if setuid scripts can be secure
6256 Some kernels have a bug that prevents setuid #! scripts from being
6257 secure. Some sites have disabled setuid #! scripts because of this.
6259 First let's decide if your kernel supports secure setuid #! scripts.
6260 (If setuid #! scripts would be secure but have been disabled anyway,
6261 don't say that they are secure if asked.)
6266 if $test -d /dev/fd; then
6267 echo "#!$ls" >reflect
6268 chmod +x,u+s reflect
6269 ./reflect >flect 2>&1
6270 if $contains "/dev/fd" flect >/dev/null; then
6271 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6275 If you are not sure if they are secure, I can check but I'll need a
6276 username and password different from the one you are using right now.
6277 If you don't have such a username or don't want me to test, simply
6281 rp='Other username to test security of setuid scripts with?'
6286 case "$d_suidsafe" in
6287 '') echo "I'll assume setuid scripts are *not* secure." >&4
6290 echo "Well, the $hint value is *not* secure." >&4
6292 *) echo "Well, the $hint value *is* secure." >&4
6297 $rm -f reflect flect
6298 echo "#!$ls" >reflect
6299 chmod +x,u+s reflect
6302 echo '"su" will (probably) prompt you for '"$ans's password."
6303 su $ans -c './reflect >flect'
6304 if $contains "/dev/fd" flect >/dev/null; then
6305 echo "Okay, it looks like setuid scripts are secure." >&4
6308 echo "I don't think setuid scripts are secure." >&4
6313 rp='Does your kernel have *secure* setuid scripts?'
6316 [yY]*) val="$define";;
6321 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6322 echo "(That's for file descriptors, not floppy disks.)"
6328 $rm -f reflect flect
6330 : now see if they want to do setuid emulation
6333 case "$d_suidsafe" in
6336 echo "No need to emulate SUID scripts since they are secure here." >& 4
6340 Some systems have disabled setuid scripts, especially systems where
6341 setuid scripts cannot be secure. On systems where setuid scripts have
6342 been disabled, the setuid/setgid bits on scripts are currently
6343 useless. It is possible for $package to detect those bits and emulate
6344 setuid/setgid in a secure fashion. This emulation will only work if
6345 setuid scripts have been disabled in your kernel.
6349 "$define") dflt=y ;;
6352 rp="Do you want to do setuid/setgid emulation?"
6355 [yY]*) val="$define";;
6363 : see if this is a malloc.h system
6364 set malloc.h i_malloc
6367 : see if stdlib is available
6368 set stdlib.h i_stdlib
6371 : determine which malloc to compile in
6373 case "$usemymalloc" in
6374 [yY]*|true|$define) dflt='y' ;;
6375 [nN]*|false|$undef) dflt='n' ;;
6376 *) case "$ptrsize" in
6382 rp="Do you wish to attempt to use the malloc that comes with $package?"
6388 mallocsrc='malloc.c'
6389 mallocobj="malloc$_o"
6390 d_mymalloc="$define"
6393 : Remove malloc from list of libraries to use
6394 echo "Removing unneeded -lmalloc from library list" >&4
6395 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6398 echo "libs = $libs" >&4
6410 : compute the return types of malloc and free
6412 $cat >malloc.c <<END
6416 #include <sys/types.h>
6430 case "$malloctype" in
6432 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6439 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6443 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6450 echo "Your system uses $freetype free(), it would seem." >&4
6454 After $package is installed, you may wish to install various
6455 add-on modules and utilities. Typically, these add-ons will
6456 be installed under $prefix with the rest
6457 of this package. However, you may wish to install such add-ons
6458 elsewhere under a different prefix.
6460 If you do not wish to put everything under a single prefix, that's
6461 ok. You will be prompted for the individual locations; this siteprefix
6462 is only used to suggest the defaults.
6464 The default should be fine for most people.
6468 rp='Installation prefix to use for add-on modules and utilities?'
6469 : XXX Here might be another good place for an installstyle setting.
6470 case "$siteprefix" in
6472 *) dflt=$siteprefix ;;
6475 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6477 case "$siteprefix" in
6481 *) oldsiteprefix="$prefix";;
6486 siteprefixexp="$ansexp"
6488 : determine where site specific libraries go.
6489 : Usual default is /usr/local/lib/perl5/site_perl/$version
6490 : The default "style" setting is made in installstyle.U
6491 : XXX No longer works with Prefixit stuff.
6492 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6494 '') case "$installstyle" in
6495 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6496 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6504 The installation process will create a directory for
6505 site-specific extensions and modules. Most users find it convenient
6506 to place all site-specific files in this directory rather than in the
6507 main distribution directory.
6511 rp='Pathname for the site-specific library files?'
6514 sitelibexp="$ansexp"
6515 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6516 : Change installation prefix, if necessary.
6517 if $test X"$prefix" != X"$installprefix"; then
6518 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6520 installsitelib="$sitelibexp"
6523 : determine where site specific architecture-dependent libraries go.
6524 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6525 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6526 : sitelib may have an optional trailing /share.
6528 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6529 dflt="$dflt/$archname"
6534 set sitearch sitearch none
6538 The installation process will also create a directory for
6539 architecture-dependent site-specific extensions and modules.
6543 rp='Pathname for the site-specific architecture-dependent library files?'
6546 sitearchexp="$ansexp"
6547 : Change installation prefix, if necessary.
6548 if $test X"$prefix" != X"$installprefix"; then
6549 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6551 installsitearch="$sitearchexp"
6556 The installation process will also create a directory for
6557 vendor-supplied add-ons. Vendors who supply perl with their system
6558 may find it convenient to place all vendor-supplied files in this
6559 directory rather than in the main distribution directory. This will
6560 ease upgrades between binary-compatible maintenance versions of perl.
6562 Of course you may also use these directories in whatever way you see
6563 fit. For example, you might use them to access modules shared over a
6564 company-wide network.
6566 The default answer should be fine for most people.
6567 This causes further questions about vendor add-ons to be skipped
6568 and no vendor-specific directories will be configured for perl.
6571 rp='Do you want to configure vendor-specific add-on directories?'
6572 case "$usevendorprefix" in
6573 define|true|[yY]*) dflt=y ;;
6574 *) : User may have set vendorprefix directly on Configure command line.
6575 case "$vendorprefix" in
6584 rp='Installation prefix to use for vendor-supplied add-ons?'
6585 case "$vendorprefix" in
6587 *) dflt=$vendorprefix ;;
6590 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6592 case "$vendorprefix" in
6596 *) oldvendorprefix="$prefix";;
6600 usevendorprefix="$define"
6602 vendorprefixexp="$ansexp"
6604 *) usevendorprefix="$undef"
6610 case "$vendorprefix" in
6611 '') d_vendorlib="$undef"
6615 *) d_vendorlib="$define"
6616 : determine where vendor-supplied modules go.
6617 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6618 case "$vendorlib" in
6620 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6621 case "$installstyle" in
6622 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6623 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6626 *) dflt="$vendorlib"
6630 rp='Pathname for the vendor-supplied library files?'
6633 vendorlibexp="$ansexp"
6636 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6637 : Change installation prefix, if necessary.
6638 if $test X"$prefix" != X"$installprefix"; then
6639 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6641 installvendorlib="$vendorlibexp"
6644 case "$vendorprefix" in
6645 '') d_vendorarch="$undef"
6649 *) d_vendorarch="$define"
6650 : determine where vendor-supplied architecture-dependent libraries go.
6651 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6652 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6653 : vendorlib may have an optional trailing /share.
6654 case "$vendorarch" in
6655 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6656 dflt="$dflt/$archname"
6658 *) dflt="$vendorarch" ;;
6661 rp='Pathname for vendor-supplied architecture-dependent files?'
6664 vendorarchexp="$ansexp"
6667 : Change installation prefix, if necessary.
6668 if $test X"$prefix" != X"$installprefix"; then
6669 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6671 installvendorarch="$vendorarchexp"
6674 : Final catch-all directories to search
6677 Lastly, you can have perl look in other directories for extensions and
6678 modules in addition to those already specified.
6679 These directories will be searched after
6683 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6684 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6686 case "$otherlibdirs" in
6687 ''|' ') dflt='none' ;;
6688 *) dflt="$otherlibdirs" ;;
6691 Enter a colon-separated set of extra paths to include in perl's @INC
6692 search path, or enter 'none' for no extra paths.
6696 rp='Colon-separated list of additional directories for perl to search?'
6699 ' '|''|none) otherlibdirs=' ' ;;
6700 *) otherlibdirs="$ans" ;;
6702 case "$otherlibdirs" in
6706 set d_perl_otherlibdirs
6709 : Cruising for prototypes
6711 echo "Checking out function prototypes..." >&4
6712 $cat >prototype.c <<'EOCP'
6713 int main(int argc, char *argv[]) {
6716 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6717 echo "Your C compiler appears to support function prototypes."
6720 echo "Your C compiler doesn't seem to understand function prototypes."
6727 case "$prototype" in
6729 *) ansi2knr='ansi2knr'
6734 This version of $package can only be compiled by a compiler that
6735 understands function prototypes. Unfortunately, your C compiler
6737 doesn't seem to understand them. Sorry about that.
6739 If GNU cc is available for your system, perhaps you could try that instead.
6741 Eventually, we hope to support building Perl with pre-ANSI compilers.
6742 If you would like to help in that effort, please contact <perlbug@perl.org>.
6744 Aborting Configure now.
6750 : determine where public executables go
6755 rp='Pathname where the public executables will reside?'
6757 if $test "X$ansexp" != "X$binexp"; then
6762 : Change installation prefix, if necessary.
6763 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6764 if $test X"$prefix" != X"$installprefix"; then
6765 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6767 installbin="$binexp"
6776 Perl can be built with extra modules or bundles of modules which
6777 will be fetched from the CPAN and installed alongside Perl.
6779 Notice that you will need access to the CPAN; either via the Internet,
6780 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6781 be asked later to configure the CPAN.pm module which will in turn do
6782 the installation of the rest of the extra modules or bundles.)
6784 Notice also that if the modules require any external software such as
6785 libraries and headers (the libz library and the zlib.h header for the
6786 Compress::Zlib module, for example) you MUST have any such software
6787 already installed, this configuration process will NOT install such
6790 If this doesn't make any sense to you, just accept the default '$dflt'.
6792 rp='Install any extra modules (y or n)?'
6798 Please list any extra modules or bundles to be installed from CPAN,
6799 with spaces between the names. The names can be in any format the
6800 'install' command of CPAN.pm will understand. (Answer 'none',
6801 without the quotes, to install no extra modules or bundles.)
6811 $rm -f ../extras.lst
6813 *) echo "(Saving the list of extras for later...)"
6814 echo "$extras" > ../extras.lst
6822 : Find perl5.005 or later.
6823 echo "Looking for a previously installed perl5.005 or later... "
6825 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6826 : Check if this perl is recent and can load a simple module
6827 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6830 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6840 '') echo "None found. That's ok.";;
6841 *) echo "Using $perl5." ;;
6844 : Determine list of previous versions to include in @INC
6845 $cat > getverlist <<EOPL
6848 \$api_versionstring = "$api_versionstring";
6849 \$version = "$version";
6850 \$stem = "$sitelib_stem";
6851 \$archname = "$archname";
6853 $cat >> getverlist <<'EOPL'
6854 # Can't have leading @ because metaconfig interprets it as a command!
6855 ;@inc_version_list=();
6856 # XXX Redo to do opendir/readdir?
6859 ;@candidates = glob("5.*");
6865 # XXX ToDo: These comparisons must be reworked when two-digit
6866 # subversions come along, so that 5.7.10 compares as greater than
6867 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6868 # widespread that we can use the built-in version vectors rather
6869 # than reinventing them here. For 5.6.0, however, we must
6870 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6871 foreach $d (@candidates) {
6872 if ($d lt $version) {
6873 if ($d ge $api_versionstring) {
6874 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6876 elsif ($d ge "5.005") {
6877 unshift(@inc_version_list, grep { -d } $d);
6881 # Skip newer version. I.e. don't look in
6882 # 5.7.0 if we're installing 5.6.1.
6886 if (@inc_version_list) {
6887 print join(' ', @inc_version_list);
6890 # Blank space to preserve value for next Configure run.
6895 case "$inc_version_list" in
6896 '') if test -x "$perl5$exe_ext"; then
6897 dflt=`$perl5 getverlist`
6902 $undef) dflt='none' ;;
6903 *) eval dflt=\"$inc_version_list\" ;;
6906 ''|' ') dflt=none ;;
6909 5.005) case "$bincompat5005" in
6910 $define|true|[yY]*) ;;
6917 In order to ease the process of upgrading, this version of perl
6918 can be configured to use modules built and installed with earlier
6919 versions of perl that were installed under $prefix. Specify here
6920 the list of earlier versions that this version of perl should check.
6921 If Configure detected no earlier versions of perl installed under
6922 $prefix, then the list will be empty. Answer 'none' to tell perl
6923 to not search earlier versions.
6925 The default should almost always be sensible, so if you're not sure,
6926 just accept the default.
6929 rp='List of earlier versions to include in @INC?'
6932 [Nn]one|''|' ') inc_version_list=' ' ;;
6933 *) inc_version_list="$ans" ;;
6935 case "$inc_version_list" in
6937 inc_version_list_init='0';;
6938 *) inc_version_list_init=`echo $inc_version_list |
6939 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6944 : determine whether to install perl also as /usr/bin/perl
6947 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6949 Many scripts expect perl to be installed as /usr/bin/perl.
6950 I can install the perl you are about to compile also as /usr/bin/perl
6951 (in addition to $installbin/perl).
6953 case "$installusrbinperl" in
6954 "$undef"|[nN]*) dflt='n';;
6957 rp="Do you want to install perl as /usr/bin/perl?"
6960 [yY]*) val="$define";;
6966 set installusrbinperl
6969 : see if dld is available
6973 : see if dlopen exists
6980 : determine which dynamic loading, if any, to compile in
6982 dldir="ext/DynaLoader"
6995 $define) dflt='y' ;;
6998 $define) dflt='y' ;;
7000 : Does a dl_xxx.xs file exist for this operating system
7001 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7004 rp="Do you wish to use dynamic loading?"
7011 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7012 dflt="$dldir/dl_${osname}.xs"
7013 elif $test "$d_dlopen" = "$define" ; then
7014 dflt="$dldir/dl_dlopen.xs"
7015 elif $test "$i_dld" = "$define" ; then
7016 dflt="$dldir/dl_dld.xs"
7021 *) dflt="$dldir/$dlsrc"
7024 echo "The following dynamic loading files are available:"
7025 : Can not go over to $dldir because getfile has path hard-coded in.
7026 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7027 rp="Source file to use for dynamic loading"
7033 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7037 Some systems may require passing special flags to $cc -c to
7038 compile modules that will be used to create a shared library.
7039 To use no flags, say "none".
7042 case "$cccdlflags" in
7043 '') case "$gccversion" in
7044 '') case "$osname" in
7046 next) dflt='none' ;;
7047 irix*) dflt='-KPIC' ;;
7048 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7049 sunos) dflt='-pic' ;;
7053 *) case "$osname" in
7054 darwin) dflt='none' ;;
7055 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7060 *) dflt="$cccdlflags" ;;
7062 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7065 none) cccdlflags=' ' ;;
7066 *) cccdlflags="$ans" ;;
7071 Some systems use ld to create libraries that can be dynamically loaded,
7072 while other systems (such as those using ELF) use $cc.
7076 '') $cat >try.c <<'EOM'
7077 /* Test for whether ELF binaries are produced */
7082 int i = open("a.out",O_RDONLY);
7085 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7086 exit(0); /* succeed (yes, it's ELF) */
7091 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7093 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7097 echo "I'll use ld to build dynamic libraries."
7106 rp="What command should be used to create dynamic libraries?"
7112 Some systems may require passing special flags to $ld to create a
7113 library that can be dynamically loaded. If your ld flags include
7114 -L/other/path options to locate libraries outside your loader's normal
7115 search path, you may need to specify those -L options here as well. To
7116 use no flags, say "none".
7119 case "$lddlflags" in
7120 '') case "$osname" in
7121 beos) dflt='-nostart' ;;
7123 case "$gccversion" in
7124 '') dflt="$dflt +vnocompatwarnings" ;;
7127 linux|irix*) dflt='-shared' ;;
7128 next) dflt='none' ;;
7129 solaris) dflt='-G' ;;
7130 sunos) dflt='-assert nodefinitions' ;;
7131 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7135 *) dflt="$lddlflags" ;;
7138 : Try to guess additional flags to pick up local libraries.
7139 : Be careful not to append to a plain 'none'
7143 for thisflag in $ldflags; do
7148 *) dflt="$dflt $thisflag" ;;
7155 ''|' ') dflt='none' ;;
7158 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7161 none) lddlflags=' ' ;;
7162 *) lddlflags="$ans" ;;
7167 Some systems may require passing special flags to $cc to indicate that
7168 the resulting executable will use dynamic linking. To use no flags,
7172 case "$ccdlflags" in
7173 '') case "$osname" in
7174 hpux) dflt='-Wl,-E' ;;
7175 linux) dflt='-rdynamic' ;;
7176 next) dflt='none' ;;
7177 sunos) dflt='none' ;;
7181 *) dflt="$ccdlflags" ;;
7183 rp="Any special flags to pass to $cc to use dynamic linking?"
7186 none) ccdlflags=' ' ;;
7187 *) ccdlflags="$ans" ;;
7201 # No dynamic loading being used, so don't bother even to prompt.
7204 *) case "$useshrplib" in
7205 '') case "$osname" in
7206 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7208 also='Building a shared libperl is required for dynamic loading to work on your system.'
7213 also='Building a shared libperl is needed for MAB support.'
7231 The perl executable is normally obtained by linking perlmain.c with
7232 libperl${_a}, any static extensions (usually just DynaLoader), and
7233 any other libraries needed on this system (such as -lm, etc.). Since
7234 your system supports dynamic loading, it is probably possible to build
7235 a shared libperl.$so. If you will have more than one executable linked
7236 to libperl.$so, this will significantly reduce the size of each
7237 executable, but it may have a noticeable affect on performance. The
7238 default is probably sensible for your system.
7242 rp="Build a shared libperl.$so (y/n)"
7246 useshrplib='true' ;;
7247 *) useshrplib='false' ;;
7252 case "$useshrplib" in
7256 # Figure out a good name for libperl.so. Since it gets stored in
7257 # a version-specific architecture-dependent library, the version
7258 # number isn't really that important, except for making cc/ld happy.
7260 # A name such as libperl.so.3.1
7261 majmin="libperl.$so.$patchlevel.$subversion"
7262 # A name such as libperl.so.301
7263 majonly=`echo $patchlevel $subversion |
7264 $awk '{printf "%d%02d", $1, $2}'`
7265 majonly=libperl.$so.$majonly
7266 # I'd prefer to keep the os-specific stuff here to a minimum, and
7267 # rely on figuring it out from the naming of libc.
7268 case "${osname}${osvers}" in
7271 # XXX How handle the --version stuff for MAB?
7273 linux*) # ld won't link with a bare -lperl otherwise.
7276 cygwin*) # include version
7277 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7279 *) # Try to guess based on whether libc has major.minor.
7281 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7282 *libc.$so.[0-9]*) dflt=$majonly ;;
7283 *) dflt=libperl.$so ;;
7293 I need to select a good name for the shared libperl. If your system uses
7294 library names with major and minor numbers, then you might want something
7295 like $majmin. Alternatively, if your system uses a single version
7296 number for shared libraries, then you might want to use $majonly.
7297 Or, your system might be quite happy with a simple libperl.$so.
7299 Since the shared libperl will get installed into a version-specific
7300 architecture-dependent directory, the version number of the shared perl
7301 library probably isn't important, so the default should be o.k.
7304 rp='What name do you want to give to the shared libperl?'
7307 echo "Ok, I'll use $libperl"
7310 libperl="libperl${_a}"
7314 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7318 WARNING: Use of the shrpdir variable for the installation location of
7319 the shared $libperl is not supported. It was never documented and
7320 will not work in this version. Let me (perlbug@perl.org)
7321 know of any problems this may cause.
7327 But your current setting of $shrpdir is
7328 the default anyway, so it's harmless.
7333 Further, your current attempted setting of $shrpdir
7334 conflicts with the value of $archlibexp/CORE
7335 that installperl will use.
7342 # How will the perl executable find the installed shared $libperl?
7343 # Add $xxx to ccdlflags.
7344 # If we can't figure out a command-line option, use $shrpenv to
7345 # set env LD_RUN_PATH. The main perl makefile uses this.
7346 shrpdir=$archlibexp/CORE
7349 if "$useshrplib"; then
7352 # We'll set it in Makefile.SH...
7358 xxx="-Wl,-R$shrpdir"
7360 linux|irix*|dec_osf)
7361 xxx="-Wl,-rpath,$shrpdir"
7364 # next doesn't like the default...
7367 # beos doesn't like the default, either.
7370 # hpux doesn't like the default, either.
7371 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7374 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7380 # Only add $xxx if it isn't already in ccdlflags.
7381 case " $ccdlflags " in
7383 *) ccdlflags="$ccdlflags $xxx"
7386 Adding $xxx to the flags
7387 passed to $ld so that the perl executable will find the
7388 installed shared $libperl.
7396 # Fix ccdlflags in AIX for building external extensions.
7397 # (For building Perl itself bare -bE:perl.exp is needed,
7398 # Makefile.SH takes care of this.)
7400 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7402 # Respect a hint or command-line value.
7404 '') shrpenv="$tmp_shrpenv" ;;
7406 case "$ldlibpthname" in
7407 '') ldlibpthname=LD_LIBRARY_PATH ;;
7408 none) ldlibpthname='' ;;
7411 : determine where manual pages are on this system
7415 syspath='/usr/share/man/man1 /usr/man/man1'
7416 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7417 syspath="$syspath /usr/man/u_man/man1"
7418 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7419 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7420 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7421 sysman=`./loc . /usr/man/man1 $syspath`
7424 if $test -d "$sysman"; then
7425 echo "System manual is in $sysman." >&4
7427 echo "Could not find manual pages in source form." >&4
7430 : determine where manual pages go
7431 set man1dir man1dir none
7435 $spackage has manual pages available in source form.
7439 echo "However, you don't have nroff, so they're probably useless to you."
7441 '') man1dir="none";;
7444 echo "If you don't want the manual sources installed, answer 'none'."
7449 lookpath="$prefixexp/share/man/man1"
7450 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7451 lookpath="$lookpath $prefixexp/man/p_man/man1"
7452 lookpath="$lookpath $prefixexp/man/u_man/man1"
7453 lookpath="$lookpath $prefixexp/man/man.1"
7455 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7456 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7466 rp="Where do the main $spackage manual pages (source) go?"
7468 if $test "X$man1direxp" != "X$ansexp"; then
7472 man1direxp="$ansexp"
7478 : Change installation prefix, if necessary.
7479 if $test X"$prefix" != X"$installprefix"; then
7480 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7482 installman1dir="$man1direxp"
7485 : What suffix to use on installed man pages
7492 rp="What suffix should be used for the main $spackage man pages?"
7494 '') case "$man1dir" in
7508 *) dflt="$man1ext";;
7515 : see if we can have long filenames
7517 first=123456789abcdef
7519 if (echo hi >$first) 2>/dev/null; then
7520 if $test -f 123456789abcde; then
7521 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7524 echo 'You can have filenames longer than 14 characters.'>&4
7529 You can't have filenames longer than 14 chars.
7530 You can't even think about them!
7536 $rm -rf 123456789abcde*
7538 : determine where library module manual pages go
7539 set man3dir man3dir none
7543 $spackage has manual pages for many of the library modules.
7549 However, you don't have nroff, so they're probably useless to you.
7552 '') man3dir="none";;
7556 case "$d_flexfnam" in
7559 However, your system can't handle the long file names like File::Basename.3.
7562 '') man3dir="none";;
7566 echo "If you don't want the manual sources installed, answer 'none'."
7567 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7569 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7570 if $test -d "$privlib/man/man3"; then
7573 WARNING: Previous versions of perl installed man3 pages into
7574 $privlib/man/man3. This version will suggest a
7575 new default of $dflt.
7579 rp='Do you wish to preserve the old behavior?(y/n)'
7582 y*) dflt="$privlib/man/man3" ;;
7587 *) dflt="$man3dir" ;;
7594 rp="Where do the $package library man pages (source) go?"
7597 man3direxp="$ansexp"
7603 : Change installation prefix, if necessary.
7604 if $test X"$prefix" != X"$installprefix"; then
7605 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7607 installman3dir="$man3direxp"
7610 : What suffix to use on installed man pages
7616 rp="What suffix should be used for the $package library man pages?"
7618 '') case "$man3dir" in
7632 *) dflt="$man3ext";;
7639 : see if we have to deal with yellow pages, now NIS.
7640 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7641 if $test -f /usr/etc/nibindd; then
7643 echo "I'm fairly confident you're on a NeXT."
7645 rp='Do you get the hosts file via NetInfo?'
7654 y*) hostcat='nidump hosts .';;
7655 *) case "$hostcat" in
7656 nidump*) hostcat='';;
7666 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7674 rp='Are you getting the hosts file via yellow pages?'
7677 y*) hostcat='ypcat hosts';;
7678 *) hostcat='cat /etc/hosts';;
7684 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7687 '') test -f /etc/group && groupcat='cat /etc/group';;
7690 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7693 : now get the host name
7695 echo "Figuring out host name..." >&4
7696 case "$myhostname" in
7698 echo 'Maybe "hostname" will work...'
7699 if tans=`sh -c hostname 2>&1` ; then
7707 if $test "$cont"; then
7709 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7710 if tans=`cat /etc/systemid 2>&1` ; then
7712 phostname='cat /etc/systemid'
7713 echo "Whadyaknow. Xenix always was a bit strange..."
7716 elif $test -r /etc/systemid; then
7717 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7720 if $test "$cont"; then
7721 echo 'No, maybe "uuname -l" will work...'
7722 if tans=`sh -c 'uuname -l' 2>&1` ; then
7724 phostname='uuname -l'
7726 echo 'Strange. Maybe "uname -n" will work...'
7727 if tans=`sh -c 'uname -n' 2>&1` ; then
7729 phostname='uname -n'
7731 echo 'Oh well, maybe I can mine it out of whoami.h...'
7732 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7733 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7734 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7736 case "$myhostname" in
7737 '') echo "Does this machine have an identity crisis or something?"
7740 echo "Well, you said $myhostname before..."
7741 phostname='echo $myhostname';;
7747 : you do not want to know about this
7752 if $test "$myhostname" ; then
7754 rp='Your host name appears to be "'$myhostname'".'" Right?"
7762 : bad guess or no guess
7763 while $test "X$myhostname" = X ; do
7765 rp="Please type the (one word) name of your host:"
7770 : translate upper to lower if necessary
7771 case "$myhostname" in
7773 echo "(Normalizing case in your host name)"
7774 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7778 case "$myhostname" in
7780 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7781 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7782 echo "(Trimming domain name from host name--host name is now $myhostname)"
7784 *) case "$mydomain" in
7787 test "X$hostcat" = "Xypcat hosts" &&
7788 ypmatch "$myhostname" hosts 2>/dev/null |\
7789 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7792 test "X$hostcat" != "X" &&
7793 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7794 /[ ]$myhostname[ . ]/p" > hosts
7797 if $test -f hosts; then
7798 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7799 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7800 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7801 hosts | $sort | $uniq | \
7802 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7803 case `$echo X$dflt` in
7804 X*\ *) echo "(Several hosts in the database matched hostname)"
7807 X.) echo "(You do not have fully-qualified names in the hosts database)"
7811 echo "(I cannot locate a hosts database anywhere)"
7816 tans=`./loc resolv.conf X /etc /usr/etc`
7817 if $test -f "$tans"; then
7818 echo "(Attempting domain name extraction from $tans)"
7819 dflt=.`$sed -n -e 's/ / /g' \
7820 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7821 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7823 .) dflt=.`$sed -n -e 's/ / /g' \
7824 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7825 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7832 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7833 dflt=.`sh -c domainname 2>/dev/null`
7836 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7840 case "$dflt$osname" in
7841 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7842 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7846 .) echo "(Lost all hope -- silly guess then)"
7852 *) dflt="$mydomain";;
7856 rp="What is your domain name?"
7866 : translate upper to lower if necessary
7869 echo "(Normalizing case in your domain name)"
7870 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7874 : a little sanity check here
7875 case "$phostname" in
7878 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7879 $myhostname$mydomain|$myhostname) ;;
7881 case "$phostname" in
7883 echo "(That doesn't agree with your whoami.h file, by the way.)"
7886 echo "(That doesn't agree with your $phostname command, by the way.)"
7896 I need to get your e-mail address in Internet format if possible, i.e.
7897 something like user@host.domain. Please answer accurately since I have
7898 no easy means to double check it. The default value provided below
7899 is most probably close to reality but may not be valid from outside
7900 your organization...
7904 while test "$cont"; do
7906 '') dflt="$cf_by@$myhostname$mydomain";;
7907 *) dflt="$cf_email";;
7909 rp='What is your e-mail address?'
7915 rp='Address does not look like an Internet one. Use it anyway?'
7931 If you or somebody else will be maintaining perl at your site, please
7932 fill in the correct e-mail address here so that they may be contacted
7933 if necessary. Currently, the "perlbug" program included with perl
7934 will send mail to this address in addition to perlbug@perl.org. You may
7935 enter "none" for no administrator.
7938 case "$perladmin" in
7939 '') dflt="$cf_email";;
7940 *) dflt="$perladmin";;
7942 rp='Perl administrator e-mail address'
7946 : determine whether to only install version-specific parts.
7949 Do you want to install only the version-specific parts of the perl
7950 distribution? Usually you do *not* want to do this.
7952 case "$versiononly" in
7953 "$define"|[Yy]*|true) dflt='y' ;;
7956 rp="Do you want to install only the version-specific parts of perl?"
7959 [yY]*) val="$define";;
7965 : figure out how to guarantee perl startup
7966 case "$startperl" in
7968 case "$sharpbang" in
7972 I can use the #! construct to start perl on your system. This will
7973 make startup of perl scripts faster, but may cause problems if you
7974 want to share those scripts and perl is not in a standard place
7975 ($binexp/perl) on all your platforms. The alternative is to force
7976 a shell by starting the script with a single ':' character.
7979 case "$versiononly" in
7980 "$define") dflt="$binexp/perl$version";;
7981 *) dflt="$binexp/perl";;
7983 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7986 none) startperl=": # use perl";;
7987 *) startperl="#!$ans"
7988 if $test 30 -lt `echo "$ans" | wc -c`; then
7991 WARNING: Some systems limit the #! command to 32 characters.
7992 If you experience difficulty running Perl scripts with #!, try
7993 installing Perl in a directory with a shorter pathname.
7999 *) startperl=": # use perl"
8004 echo "I'll use $startperl to start perl scripts."
8006 : figure best path for perl in scripts
8009 perlpath="$binexp/perl"
8010 case "$startperl" in
8015 I will use the "eval 'exec'" idiom to start Perl on your system.
8016 I can use the full path of your Perl binary for this purpose, but
8017 doing so may cause problems if you want to share those scripts and
8018 Perl is not always in a standard place ($binexp/perl).
8022 rp="What path shall I use in \"eval 'exec'\"?"
8029 case "$startperl" in
8031 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8034 : determine where public executable scripts go
8035 set scriptdir scriptdir
8037 case "$scriptdir" in
8040 : guess some guesses
8041 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8042 $test -d /usr/share/bin && dflt=/usr/share/bin
8043 $test -d /usr/local/script && dflt=/usr/local/script
8044 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8045 $test -d $prefixexp/script && dflt=$prefixexp/script
8049 *) dflt="$scriptdir"
8054 Some installations have a separate directory just for executable scripts so
8055 that they can mount it across multiple architectures but keep the scripts in
8056 one spot. You might, for example, have a subdirectory of /usr/share for this.
8057 Or you might just lump your scripts in with all your other executables.
8061 rp='Where do you keep publicly executable scripts?'
8063 if $test "X$ansexp" != "X$scriptdirexp"; then
8067 scriptdirexp="$ansexp"
8068 : Change installation prefix, if necessary.
8069 if $test X"$prefix" != X"$installprefix"; then
8070 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8072 installscript="$scriptdirexp"
8075 : determine where add-on public executables go
8077 '') dflt=$siteprefix/bin ;;
8081 rp='Pathname where the add-on public executables should be installed?'
8084 sitebinexp="$ansexp"
8085 : Change installation prefix, if necessary.
8086 if $test X"$prefix" != X"$installprefix"; then
8087 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8089 installsitebin="$sitebinexp"
8092 : define an is-a-typedef? function
8093 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8095 "") inclist="sys/types.h";;
8097 eval "varval=\$$var";
8101 for inc in $inclist; do
8102 echo "#include <$inc>" >>temp.c;
8104 echo "#ifdef $type" >> temp.c;
8105 echo "printf(\"We have $type\");" >> temp.c;
8106 echo "#endif" >> temp.c;
8107 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8108 if $contains $type temp.E >/dev/null 2>&1; then
8114 *) eval "$var=\$varval";;
8117 : define an is-a-typedef? function that prompts if the type is not available.
8118 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8120 "") inclist="sys/types.h";;
8122 eval "varval=\$$var";
8126 for inc in $inclist; do
8127 echo "#include <$inc>" >>temp.c;
8129 echo "#ifdef $type" >> temp.c;
8130 echo "printf(\"We have $type\");" >> temp.c;
8131 echo "#endif" >> temp.c;
8132 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8134 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8135 if $contains $type temp.E >/dev/null 2>&1; then
8136 echo "$type found." >&4;
8139 echo "$type NOT found." >&4;
8145 *) eval "$var=\$varval";;
8148 : see what type lseek is declared as in the kernel
8149 rp="What is the type used for lseek's offset on this system?"
8150 set off_t lseektype long stdio.h sys/types.h
8154 echo "Checking to see how big your file offsets are..." >&4
8156 #include <sys/types.h>
8160 printf("%d\n", (int)sizeof($lseektype));
8165 if eval $compile_ok; then
8166 lseeksize=`$run ./try`
8167 echo "Your file offsets are $lseeksize bytes long."
8171 echo "(I can't seem to compile the test program. Guessing...)"
8172 rp="What is the size of your file offsets (in bytes)?"
8178 : see what type file positions are declared as in the library
8179 rp="What is the type for file position used by fsetpos()?"
8180 set fpos_t fpostype long stdio.h sys/types.h
8185 *_t) zzz="$fpostype" ;;
8188 echo "Checking the size of $zzz..." >&4
8190 #include <sys/types.h>
8193 printf("%d\n", (int)sizeof($fpostype));
8198 if eval $compile_ok; then
8202 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8205 echo "Your $zzz is $fpossize bytes long."
8211 echo "(I can't compile the test program. Guessing...)" >&4
8212 rp="What is the size of your file positions (in bytes)?"
8219 # Backward compatibility (uselfs is deprecated).
8221 "$define"|true|[yY]*)
8224 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8226 uselargefiles="$define"
8230 case "$lseeksize:$fpossize" in
8233 You can have files larger than 2 gigabytes.
8236 *) case "$uselargefiles" in
8237 "$undef"|false|[nN]*) dflt='n' ;;
8242 Perl can be built to understand large files (files larger than 2 gigabytes)
8243 on some systems. To do so, Configure can be run with -Duselargefiles.
8245 If this doesn't make any sense to you, just accept the default '$dflt'.
8247 rp='Try to understand large files, if available?'
8250 y|Y) val="$define" ;;
8257 case "$uselargefiles" in
8259 : Look for a hint-file generated 'call-back-unit'. If the
8260 : user has specified that a large files perl is to be built,
8261 : we may need to set or change some other defaults.
8262 if $test -f uselargefiles.cbu; then
8263 echo "Your platform has some specific hints for large file builds, using them..."
8264 . ./uselargefiles.cbu
8266 echo "Rechecking to see how big your file offsets are..." >&4
8268 #include <sys/types.h>
8272 printf("%d\n", (int)sizeof($lseektype));
8277 if eval $compile_ok; then
8278 lseeksize=`$run ./try`
8279 $echo "Your file offsets are now $lseeksize bytes long."
8283 echo "(I can't seem to compile the test program. Guessing...)"
8284 rp="What is the size of your file offsets (in bytes)?"
8289 *_t) zzz="$fpostype" ;;
8292 $echo $n "Rechecking the size of $zzz...$c" >&4
8294 #include <sys/types.h>
8297 printf("%d\n", (int)sizeof($fpostype));
8302 if eval $compile_ok; then
8307 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8310 echo " $fpossize bytes." >&4
8316 echo "(I can't compile the test program. Guessing...)" >&4
8317 rp="What is the size of your file positions (in bytes)?"
8326 case "$vendorprefix" in
8327 '') d_vendorbin="$undef"
8331 *) d_vendorbin="$define"
8332 : determine where vendor-supplied executables go.
8333 case "$vendorbin" in
8334 '') dflt=$vendorprefix/bin ;;
8335 *) dflt="$vendorbin" ;;
8338 rp='Pathname for the vendor-supplied executables directory?'
8341 vendorbinexp="$ansexp"
8344 : Change installation prefix, if necessary.
8345 if $test X"$prefix" != X"$installprefix"; then
8346 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8348 installvendorbin="$vendorbinexp"
8351 : see if qgcvt exists
8357 if $test X"$d_longdbl" = X"$define"; then
8359 echo "Checking how to print long doubles..." >&4
8361 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8362 $cat >try.c <<'EOCP'
8363 #include <sys/types.h>
8367 printf("%.3f\n", d);
8371 if eval $compile; then
8375 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8376 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8377 echo "We will use %f."
8383 if $test X"$sPRIfldbl" = X; then
8384 $cat >try.c <<'EOCP'
8385 #include <sys/types.h>
8388 long double d = 123.456;
8389 printf("%.3Lf\n", d);
8393 if eval $compile; then
8397 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8398 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8399 echo "We will use %Lf."
8405 if $test X"$sPRIfldbl" = X; then
8406 $cat >try.c <<'EOCP'
8407 #include <sys/types.h>
8410 long double d = 123.456;
8411 printf("%.3llf\n", d);
8415 if eval $compile; then
8419 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8420 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8421 echo "We will use %llf."
8427 if $test X"$sPRIfldbl" = X; then
8428 $cat >try.c <<'EOCP'
8429 #include <sys/types.h>
8432 long double d = 123.456;
8433 printf("%.3lf\n", d);
8437 if eval $compile; then
8441 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8442 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8443 echo "We will use %lf."
8449 if $test X"$sPRIfldbl" = X; then
8450 echo "Cannot figure out how to print long doubles." >&4
8452 sSCNfldbl=$sPRIfldbl # expect consistency
8459 case "$sPRIfldbl" in
8460 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8461 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8462 d_SCNfldbl="$undef";
8464 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8465 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8466 d_SCNfldbl="$define";
8470 : Check how to convert floats to strings.
8472 echo "Checking for an efficient way to convert floats to strings."
8474 case "$uselongdouble" in
8475 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8477 case "$d_longdbl" in
8478 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8480 case "$d_PRIgldbl" in
8481 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8485 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8486 char *myname = "gconvert";
8489 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8490 char *myname = "gcvt";
8493 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8494 char *myname = "qgcvt";
8495 #define DOUBLETYPE long double
8498 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8499 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8501 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8503 char *myname = "sprintf";
8507 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8508 #define DOUBLETYPE long double
8510 #define DOUBLETYPE double
8516 #define I_STDLIB $i_stdlib
8522 checkit(expect, got)
8526 if (strcmp(expect, got)) {
8527 printf("%s oddity: Expected %s, got %s\n",
8528 myname, expect, got);
8538 /* This must be 1st test on (which?) platform */
8539 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8540 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8541 checkit("0.1", buf);
8543 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8546 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8547 checkit("1.1", buf);
8549 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8550 checkit("1.01", buf);
8552 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8553 checkit("1.001", buf);
8555 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8556 checkit("1.0001", buf);
8558 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8559 checkit("1.00001", buf);
8561 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8562 checkit("1.000001", buf);
8564 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8567 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8570 /* Some Linux gcvt's give 1.e+5 here. */
8571 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8572 checkit("100000", buf);
8574 /* Some Linux gcvt's give -1.e+5 here. */
8575 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8576 checkit("-100000", buf);
8578 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8579 checkit("123.456", buf);
8581 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8582 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8583 if (strlen(buf) > 5)
8584 checkit("1e+030", buf); /* for Microsoft */
8586 checkit("1e+30", buf);
8591 case "$d_Gconvert" in
8592 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8593 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8594 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8595 *) xxx_list='gconvert gcvt sprintf' ;;
8598 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8599 "$define$define$define")
8600 # for long doubles prefer first qgcvt, then sprintf
8601 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8602 xxx_list="sprintf $xxx_list"
8604 "$define") xxx_list="qgcvt $xxx_list" ;;
8609 for xxx_convert in $xxx_list; do
8610 echo "Trying $xxx_convert..."
8612 set try -DTRY_$xxx_convert
8613 if eval $compile; then
8614 echo "$xxx_convert() found." >&4
8616 echo "I'll use $xxx_convert to convert floats into a string." >&4
8619 echo "...But $xxx_convert didn't work as I expected."
8622 echo "$xxx_convert NOT found." >&4
8626 case "$xxx_convert" in
8627 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8628 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8629 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8630 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8631 "$define$define$define")
8632 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8633 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8638 : see if _fwalk exists
8642 : Initialize h_fcntl
8645 : Initialize h_sysfile
8648 : access call always available on UNIX
8652 : locate the flags for 'access()'
8656 $cat >access.c <<'EOCP'
8657 #include <sys/types.h>
8662 #include <sys/file.h>
8671 : check sys/file.h first, no particular reason here
8672 if $test `./findhdr sys/file.h` && \
8673 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8675 echo "<sys/file.h> defines the *_OK access constants." >&4
8676 elif $test `./findhdr fcntl.h` && \
8677 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8679 echo "<fcntl.h> defines the *_OK access constants." >&4
8680 elif $test `./findhdr unistd.h` && \
8681 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8682 echo "<unistd.h> defines the *_OK access constants." >&4
8684 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8690 : see if accessx exists
8691 set accessx d_accessx
8694 : see if alarm exists
8698 : see if atolf exists
8702 : see if atoll exists
8706 : Look for GNU-cc style attribute checking
8708 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8709 $cat >attrib.c <<'EOCP'
8711 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8713 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8714 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8715 echo "Your C compiler doesn't fully support __attribute__."
8718 echo "Your C compiler supports __attribute__."
8722 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8729 : see if bcmp exists
8733 : see if bcopy exists
8737 : see if this is a unistd.h system
8738 set unistd.h i_unistd
8741 : see if getpgrp exists
8742 set getpgrp d_getpgrp
8745 case "$d_getpgrp" in
8748 echo "Checking to see which flavor of getpgrp is in use..."
8751 #include <sys/types.h>
8753 # include <unistd.h>
8757 if (getuid() == 0) {
8758 printf("(I see you are running Configure as super-user...)\n");
8762 if (getpgrp(1) == 0)
8771 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8772 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8774 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8775 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8778 echo "I can't seem to compile and run the test program."
8780 xxx="a USG one, i.e. you use getpgrp()."
8782 # SVR4 systems can appear rather BSD-ish.
8785 xxx="a BSD one, i.e. you use getpgrp(pid)."
8789 xxx="probably a USG one, i.e. you use getpgrp()."
8794 echo "Assuming your getpgrp is $xxx" >&4
8803 : see if setpgrp exists
8804 set setpgrp d_setpgrp
8807 case "$d_setpgrp" in
8810 echo "Checking to see which flavor of setpgrp is in use..."
8813 #include <sys/types.h>
8815 # include <unistd.h>
8819 if (getuid() == 0) {
8820 printf("(I see you are running Configure as super-user...)\n");
8824 if (-1 == setpgrp(1, 1))
8827 if (setpgrp() != -1)
8833 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8834 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8836 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8837 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8840 echo "(I can't seem to compile and run the test program.)"
8842 xxx="a USG one, i.e. you use setpgrp()."
8844 # SVR4 systems can appear rather BSD-ish.
8847 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8851 xxx="probably a USG one, i.e. you use setpgrp()."
8856 echo "Assuming your setpgrp is $xxx" >&4
8864 : see if bzero exists
8868 : see if signal is declared as pointer to function returning int or void
8870 xxx=`./findhdr signal.h`
8871 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8872 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8873 echo "You have int (*signal())() instead of void." >&4
8875 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8876 echo "You have void (*signal())()." >&4
8878 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8879 echo "You have int (*signal())() instead of void." >&4
8881 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8882 echo "You have void (*signal())()." >&4
8885 case "$d_voidsig" in
8887 echo "I can't determine whether signal handler returns void or int..." >&4
8889 rp="What type does your signal handler return?"
8896 echo "As you already told me, signal handler returns void." >&4
8899 *) echo "As you already told me, signal handler returns int." >&4
8906 case "$d_voidsig" in
8907 "$define") signal_t="void";;
8912 : check for ability to cast large floats to 32-bit ints.
8914 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8915 if $test "$intsize" -ge 4; then
8922 #include <sys/types.h>
8924 $signal_t blech(s) int s; { exit(3); }
8931 signal(SIGFPE, blech);
8933 /* Don't let compiler optimize the test away. Store the number
8934 in a writable string for gcc to pass to sscanf under HP/UX.
8936 sprintf(str, "2147483647");
8937 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8941 /* x86 processors will probably give 0x8000 0000, which is a
8942 sign change. We don't want that. We want to mimic SPARC
8943 behavior here, which is to preserve the sign and give
8946 if (i32 != ($xxx) f)
8952 if eval $compile_ok; then
8956 echo "(I can't seem to compile the test program--assuming it can't)"
8964 echo "Nope, it can't."
8971 : check for ability to cast negative floats to unsigned
8973 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8976 #include <sys/types.h>
8978 $signal_t blech(s) int s; { exit(7); }
8979 $signal_t blech_in_list(s) int s; { exit(4); }
8980 unsigned long dummy_long(p) unsigned long p; { return p; }
8981 unsigned int dummy_int(p) unsigned int p; { return p; }
8982 unsigned short dummy_short(p) unsigned short p; { return p; }
8986 unsigned long along;
8988 unsigned short ashort;
8992 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8993 a direct f = -123. assignment. gcc-2.8.0 reportedly
8994 optimized the whole file away
8996 /* Store the number in a writable string for gcc to pass to
8999 sprintf(str, "-123");
9000 sscanf(str, "%lf", &f); /* f = -123.; */
9002 signal(SIGFPE, blech);
9003 along = (unsigned long)f;
9004 aint = (unsigned int)f;
9005 ashort = (unsigned short)f;
9006 if (along != (unsigned long)-123)
9008 if (aint != (unsigned int)-123)
9010 if (ashort != (unsigned short)-123)
9012 sprintf(str, "1073741824.");
9013 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9016 along = (unsigned long)f;
9017 if (along != 0x80000000)
9021 along = (unsigned long)f;
9022 if (along != 0x7fffffff)
9026 along = (unsigned long)f;
9027 if (along != 0x80000001)
9031 signal(SIGFPE, blech_in_list);
9032 sprintf(str, "123.");
9033 sscanf(str, "%lf", &f); /* f = 123.; */
9034 along = dummy_long((unsigned long)f);
9035 aint = dummy_int((unsigned int)f);
9036 ashort = dummy_short((unsigned short)f);
9037 if (along != (unsigned long)123)
9039 if (aint != (unsigned int)123)
9041 if (ashort != (unsigned short)123)
9048 if eval $compile_ok; then
9052 echo "(I can't seem to compile the test program--assuming it can't)"
9055 case "$castflags" in
9060 echo "Nope, it can't."
9067 : see if vprintf exists
9069 if set vprintf val -f d_vprintf; eval $csym; $val; then
9070 echo 'vprintf() found.' >&4
9073 #include <varargs.h>
9075 int main() { xxx("foo"); }
9084 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9088 if eval $compile && $run ./try; then
9089 echo "Your vsprintf() returns (int)." >&4
9092 echo "Your vsprintf() returns (char*)." >&4
9096 echo 'vprintf() NOT found.' >&4
9107 : see if chown exists
9111 : see if chroot exists
9115 : see if chsize exists
9119 : see if class exists
9123 hasstruct='varname=$1; struct=$2; shift; shift;
9124 while $test $# -ge 2; do
9126 $define) echo "#include <$2>";;
9130 echo "int main () { struct $struct foo; }" >> try.c;
9132 if eval $compile; then
9141 : see if sys/types.h has to be included
9142 set sys/types.h i_systypes
9145 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9146 while $test $# -ge 2; do
9148 $define) echo "#include <$2>";;
9152 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9154 if eval $compile; then
9165 : see whether socket exists
9167 $echo $n "Hmm... $c" >&4
9168 if set socket val -f d_socket; eval $csym; $val; then
9169 echo "Looks like you have Berkeley networking support." >&4
9171 if set setsockopt val -f; eval $csym; $val; then
9174 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9178 if $contains socklib libc.list >/dev/null 2>&1; then
9179 echo "Looks like you have Berkeley networking support." >&4
9181 : we will have to assume that it supports the 4.2 BSD interface
9184 echo "You don't have Berkeley networking in libc$_a..." >&4
9185 if test "X$d_socket" = "X$define"; then
9186 echo "...but you seem to believe that you have sockets." >&4
9188 for net in net socket
9190 if test -f /usr/lib/lib$net$_a; then
9191 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9192 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9193 if $contains socket libc.list >/dev/null 2>&1; then
9198 echo "...but the Wollongong group seems to have hacked it in." >&4
9199 sockethdr="-I/usr/netinclude"
9202 echo "Found Berkeley sockets interface in lib$net." >& 4
9203 if $contains setsockopt libc.list >/dev/null 2>&1; then
9206 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9213 if test "X$d_socket" != "X$define"; then
9214 echo "or anywhere else I see." >&4
9222 : see if socketpair exists
9223 set socketpair d_sockpair
9228 echo "Checking the availability of certain socket constants..." >& 4
9229 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9230 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9232 #include <sys/types.h>
9233 #include <sys/socket.h>
9239 set try; if eval $compile; then
9242 set d_${enum}; eval $setvar
9246 : see if this is a sys/uio.h system
9247 set sys/uio.h i_sysuio
9252 echo "Checking to see if your system supports struct cmsghdr..." >&4
9253 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9255 case "$d_cmsghdr_s" in
9256 "$define") echo "Yes, it does." ;;
9257 *) echo "No, it doesn't." ;;
9261 : check for const keyword
9263 echo 'Checking to see if your C compiler knows about "const"...' >&4
9264 $cat >const.c <<'EOCP'
9265 typedef struct spug { int drokk; } spug;
9272 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9274 echo "Yup, it does."
9277 echo "Nope, it doesn't."
9282 : see if crypt exists
9284 if set crypt val -f d_crypt; eval $csym; $val; then
9285 echo 'crypt() found.' >&4
9289 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9290 if $test -z "$cryptlib"; then
9291 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9295 if $test -z "$cryptlib"; then
9296 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9300 if $test -z "$cryptlib"; then
9301 cryptlib=`./loc libcrypt$_a "" $libpth`
9305 if $test -z "$cryptlib"; then
9306 echo 'crypt() NOT found.' >&4
9315 : get csh whereabouts
9317 'csh') val="$undef" ;;
9322 : Respect a hint or command line value for full_csh.
9324 '') full_csh=$csh ;;
9327 : see if cuserid exists
9328 set cuserid d_cuserid
9331 : see if this is a limits.h system
9332 set limits.h i_limits
9335 : see if this is a float.h system
9339 : See if number of significant digits in a double precision number is known
9341 $cat >dbl_dig.c <<EOM
9351 printf("Contains DBL_DIG");
9354 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9355 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9356 echo "DBL_DIG found." >&4
9359 echo "DBL_DIG NOT found." >&4
9366 hasproto='varname=$1; func=$2; shift; shift;
9367 while $test $# -ge 2; do
9369 $define) echo "#include <$2>";;
9373 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9374 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9375 echo "$func() prototype found.";
9378 echo "$func() prototype NOT found.";
9383 $rm -f try.c tryout.c'
9385 : see if dbm.h is available
9386 : see if dbmclose exists
9387 set dbmclose d_dbmclose
9390 case "$d_dbmclose" in
9400 *) set rpcsvc/dbm.h i_rpcsvcdbm
9405 *) echo "We won't be including <dbm.h>"
9415 : see if prototype for dbminit is available
9417 set d_dbminitproto dbminit $i_dbm dbm.h
9420 : see if difftime exists
9421 set difftime d_difftime
9424 : see if this is a dirent system
9426 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9428 echo "<dirent.h> found." >&4
9431 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9432 echo "<sys/dir.h> found." >&4
9435 xinc=`./findhdr sys/ndir.h`
9437 echo "<dirent.h> NOT found." >&4
9442 : Look for type of directory structure.
9444 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9446 case "$direntrytype" in
9449 $define) guess1='struct dirent' ;;
9450 *) guess1='struct direct' ;;
9453 *) guess1="$direntrytype"
9458 'struct dirent') guess2='struct direct' ;;
9459 *) guess2='struct dirent' ;;
9462 if $contains "$guess1" try.c >/dev/null 2>&1; then
9463 direntrytype="$guess1"
9464 echo "Your directory entries are $direntrytype." >&4
9465 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9466 direntrytype="$guess2"
9467 echo "Your directory entries seem to be $direntrytype." >&4
9469 echo "I don't recognize your system's directory entries." >&4
9470 rp="What type is used for directory entries on this system?"
9478 : see if the directory entry stores field length
9480 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9481 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9482 echo "Good, your directory entry keeps length information in d_namlen." >&4
9485 echo "Your directory entry does not know about the d_namlen field." >&4
9492 : see if dlerror exists
9495 set dlerror d_dlerror
9499 : see if dlfcn is available
9507 On a few systems, the dynamically loaded modules that perl generates and uses
9508 will need a different extension than shared libs. The default will probably
9516 rp='What is the extension of dynamically loaded modules'
9525 : Check if dlsym need a leading underscore
9531 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9532 $cat >dyna.c <<'EOM'
9541 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
9543 #include <sys/types.h>
9557 int mode = RTLD_LAZY ;
9559 handle = dlopen("./dyna.$dlext", mode) ;
9560 if (handle == NULL) {
9565 symbol = dlsym(handle, "fred") ;
9566 if (symbol == NULL) {
9567 /* try putting a leading underscore */
9568 symbol = dlsym(handle, "_fred") ;
9569 if (symbol == NULL) {
9582 : Call the object file tmp-dyna.o in case dlext=o.
9583 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9584 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
9585 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
9586 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9589 1) echo "Test program failed using dlopen." >&4
9590 echo "Perhaps you should not use dynamic loading." >&4;;
9591 2) echo "Test program failed using dlsym." >&4
9592 echo "Perhaps you should not use dynamic loading." >&4;;
9593 3) echo "dlsym needs a leading underscore" >&4
9595 4) echo "dlsym doesn't need a leading underscore." >&4;;
9598 echo "I can't compile and run the test program." >&4
9599 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9604 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9609 : see if prototype for drand48 is available
9611 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9614 : see if dup2 exists
9618 : see if eaccess exists
9619 set eaccess d_eaccess
9622 : see if endgrent exists
9623 set endgrent d_endgrent
9626 : see if endhostent exists
9627 set endhostent d_endhent
9630 : see if endnetent exists
9631 set endnetent d_endnent
9634 : see if endprotoent exists
9635 set endprotoent d_endpent
9638 : see if endpwent exists
9639 set endpwent d_endpwent
9642 : see if endservent exists
9643 set endservent d_endsent
9646 : Locate the flags for 'open()'
9648 $cat >try.c <<'EOCP'
9649 #include <sys/types.h>
9654 #include <sys/file.h>
9665 : check sys/file.h first to get FREAD on Sun
9666 if $test `./findhdr sys/file.h` && \
9667 set try -DI_SYS_FILE && eval $compile; then
9669 echo "<sys/file.h> defines the O_* constants..." >&4
9671 echo "and you have the 3 argument form of open()." >&4
9674 echo "but not the 3 argument form of open(). Oh, well." >&4
9677 elif $test `./findhdr fcntl.h` && \
9678 set try -DI_FCNTL && eval $compile; then
9680 echo "<fcntl.h> defines the O_* constants..." >&4
9682 echo "and you have the 3 argument form of open()." >&4
9685 echo "but not the 3 argument form of open(). Oh, well." >&4
9690 echo "I can't find the O_* constant definitions! You got problems." >&4
9696 : see which of string.h or strings.h is needed
9698 strings=`./findhdr string.h`
9699 if $test "$strings" && $test -r "$strings"; then
9700 echo "Using <string.h> instead of <strings.h>." >&4
9704 strings=`./findhdr strings.h`
9705 if $test "$strings" && $test -r "$strings"; then
9706 echo "Using <strings.h> instead of <string.h>." >&4
9708 echo "No string header found -- You'll surely have problems." >&4
9714 "$undef") strings=`./findhdr strings.h`;;
9715 *) strings=`./findhdr string.h`;;
9718 : check for non-blocking I/O stuff
9719 case "$h_sysfile" in
9720 true) echo "#include <sys/file.h>" > head.c;;
9723 true) echo "#include <fcntl.h>" > head.c;;
9724 *) echo "#include <sys/fcntl.h>" > head.c;;
9729 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9730 case "$o_nonblock" in
9733 $cat >>try.c <<'EOCP'
9738 printf("O_NONBLOCK\n");
9742 printf("O_NDELAY\n");
9746 printf("FNDELAY\n");
9753 if eval $compile_ok; then
9754 o_nonblock=`$run ./try`
9755 case "$o_nonblock" in
9756 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9757 *) echo "Seems like we can use $o_nonblock.";;
9760 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9763 *) echo "Using $hint value $o_nonblock.";;
9765 $rm -f try try.* .out core
9768 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9774 #include <sys/types.h>
9778 #define MY_O_NONBLOCK $o_nonblock
9779 #ifndef errno /* XXX need better Configure test */
9790 #include <strings.h>
9792 $signal_t blech(x) int x; { exit(3); }
9794 $cat >> try.c <<'EOCP'
9802 pipe(pd); /* Down: child -> parent */
9803 pipe(pu); /* Up: parent -> child */
9806 close(pd[1]); /* Parent reads from pd[0] */
9807 close(pu[0]); /* Parent writes (blocking) to pu[1] */
9809 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9814 signal(SIGALRM, blech);
9816 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9818 sprintf(string, "%d\n", ret);
9819 write(2, string, strlen(string));
9822 if (errno == EAGAIN) {
9828 if (errno == EWOULDBLOCK)
9829 printf("EWOULDBLOCK\n");
9832 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9833 sleep(2); /* Give it time to close our pipe */
9835 ret = read(pd[0], buf, 1); /* Should read EOF */
9837 sprintf(string, "%d\n", ret);
9838 write(3, string, strlen(string));
9842 close(pd[0]); /* We write to pd[1] */
9843 close(pu[1]); /* We read from pu[0] */
9844 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9845 close(pd[1]); /* Pipe pd is now fully closed! */
9846 exit(0); /* Bye bye, thank you for playing! */
9850 if eval $compile_ok; then
9851 echo "$startsh" >mtry
9852 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9854 ./mtry >/dev/null 2>&1
9856 0) eagain=`$cat try.out`;;
9857 1) echo "Could not perform non-blocking setting!";;
9858 2) echo "I did a successful read() for something that was not there!";;
9859 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9860 4) echo "Could not find F_SETFL!";;
9861 *) echo "Something terribly wrong happened during testing.";;
9863 rd_nodata=`$cat try.ret`
9864 echo "A read() system call with no data present returns $rd_nodata."
9865 case "$rd_nodata" in
9868 echo "(That's peculiar, fixing that to be -1.)"
9874 echo "Forcing errno EAGAIN on read() with no data available."
9878 echo "Your read() sets errno to $eagain when no data is available."
9881 status=`$cat try.err`
9883 0) echo "And it correctly returns 0 to signal EOF.";;
9884 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9885 *) echo "However, your read() returns '$status' on EOF??";;
9888 if test "$status" = "$rd_nodata"; then
9889 echo "WARNING: you can't distinguish between EOF and no data!"
9893 echo "I can't compile the test program--assuming errno EAGAIN will do."
9900 echo "Using $hint value $eagain."
9901 echo "Your read() returns $rd_nodata when no data is present."
9902 case "$d_eofnblk" in
9903 "$define") echo "And you can see EOF because read() returns 0.";;
9904 "$undef") echo "But you can't see EOF status from read() returned value.";;
9906 echo "(Assuming you can't see EOF status from read anyway.)"
9912 $rm -f try try.* .out core head.c mtry
9914 : see if fchdir exists
9918 : see if fchmod exists
9922 : see if fchown exists
9926 : see if this is an fcntl system
9931 : See if fcntl-based locking works.
9937 $signal_t blech(x) int x; { exit(3); }
9939 #if defined(F_SETLK) && defined(F_SETLKW)
9942 fd = open("try.c", O_RDONLY);
9943 flock.l_type = F_RDLCK;
9944 flock.l_whence = SEEK_SET;
9945 flock.l_start = flock.l_len = 0;
9946 signal(SIGALRM, blech);
9948 retval = fcntl(fd, F_SETLK, &flock);
9950 (retval < 0 ? exit(2) : exit(0));
9956 echo "Checking if fcntl-based file locking works... "
9960 if eval $compile_ok; then
9962 echo "Yes, it seems to work."
9965 echo "Nope, it didn't work."
9970 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9971 *** This is (almost) impossible.
9972 *** If your NFS lock daemons are not feeling well, something like
9973 *** this may happen, please investigate. Cannot continue, aborting.
9981 echo "I'm unable to compile the test program, so I'll assume not."
9986 echo "Nope, since you don't even have fcntl()."
9989 set d_fcntl_can_lock
9994 : see if sys/select.h has to be included
9995 set sys/select.h i_sysselct
9998 : see if we should include time.h, sys/time.h, or both
10000 if test "X$timeincl" = X; then
10001 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10002 $echo $n "I'm now running the test program...$c"
10003 $cat >try.c <<'EOCP'
10004 #include <sys/types.h>
10009 #ifdef SYSTIMEKERNEL
10012 #include <sys/time.h>
10015 #include <sys/select.h>
10021 struct timeval bar;
10024 struct timezone tzp;
10026 if (foo.tm_sec == foo.tm_sec)
10029 if (bar.tv_sec == bar.tv_sec)
10036 for s_timezone in '-DS_TIMEZONE' ''; do
10038 for s_timeval in '-DS_TIMEVAL' ''; do
10039 for i_systimek in '' '-DSYSTIMEKERNEL'; do
10040 for i_time in '' '-DI_TIME'; do
10041 for i_systime in '-DI_SYSTIME' ''; do
10044 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10045 if eval $compile; then
10046 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10050 $echo $n "Succeeded with $flags$c"
10062 *SYSTIMEKERNEL*) i_systimek="$define"
10063 timeincl=`./findhdr sys/time.h`
10064 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10065 *) i_systimek="$undef";;
10068 *I_TIME*) i_time="$define"
10069 timeincl=`./findhdr time.h`" $timeincl"
10070 echo "We'll include <time.h>." >&4;;
10071 *) i_time="$undef";;
10074 *I_SYSTIME*) i_systime="$define"
10075 timeincl=`./findhdr sys/time.h`" $timeincl"
10076 echo "We'll include <sys/time.h>." >&4;;
10077 *) i_systime="$undef";;
10082 : check for fd_set items
10085 Checking to see how well your C compiler handles fd_set and friends ...
10088 #$i_systime I_SYS_TIME
10089 #$i_sysselct I_SYS_SELECT
10090 #$d_socket HAS_SOCKET
10091 #include <sys/types.h>
10093 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10096 #include <sys/time.h>
10098 #ifdef I_SYS_SELECT
10099 #include <sys/select.h>
10108 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10116 if eval $compile; then
10117 d_fds_bits="$define"
10119 echo "Well, your system knows about the normal fd_set typedef..." >&4
10120 if $run ./try; then
10121 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10122 d_fd_macros="$define"
10125 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10127 d_fd_macros="$undef"
10131 Hmm, your compiler has some difficulty with fd_set. Checking further...
10134 if eval $compile; then
10135 d_fds_bits="$undef"
10137 echo "Well, your system has some sort of fd_set available..." >&4
10138 if $run ./try; then
10139 echo "and you have the normal fd_set macros." >&4
10140 d_fd_macros="$define"
10143 but not the normal fd_set macros! Gross! More work for me...
10145 d_fd_macros="$undef"
10148 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10150 d_fds_bits="$undef"
10151 d_fd_macros="$undef"
10156 : see if fgetpos exists
10157 set fgetpos d_fgetpos
10160 : see if finite exists
10161 set finite d_finite
10164 : see if finitel exists
10165 set finitel d_finitel
10168 : see if flock exists
10172 : see if this is a sys/file.h system
10177 : do we need to include sys/file.h ?
10181 if $h_sysfile; then
10183 echo "We'll be including <sys/file.h>." >&4
10186 echo "We won't be including <sys/file.h>." >&4
10196 : see if prototype for flock is available
10198 set d_flockproto flock $i_sysfile sys/file.h
10201 : see if fork exists
10205 : see if fp_class exists
10206 set fp_class d_fp_class
10209 : see if pathconf exists
10210 set pathconf d_pathconf
10213 : see if fpathconf exists
10214 set fpathconf d_fpathconf
10217 : see if fpclass exists
10218 set fpclass d_fpclass
10221 : see if fpclassify exists
10222 set fpclassify d_fpclassify
10225 : see if fpclassl exists
10226 set fpclassl d_fpclassl
10230 : check for fpos64_t
10232 echo "Checking to see if you have fpos64_t..." >&4
10235 int main() { fpos64_t x = 7; }
10238 if eval $compile; then
10240 echo "You have fpos64_t."
10243 echo "You do not have fpos64_t."
10244 case "$fpossize" in
10245 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10252 : see if frexpl exists
10253 set frexpl d_frexpl
10256 : see if this is a sys/param system
10257 set sys/param.h i_sysparam
10260 : see if this is a sys/mount.h system
10261 set sys/mount.h i_sysmount
10266 echo "Checking to see if your system supports struct fs_data..." >&4
10267 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10269 case "$d_fs_data_s" in
10270 "$define") echo "Yes, it does." ;;
10271 *) echo "No, it doesn't." ;;
10274 : see if fseeko exists
10275 set fseeko d_fseeko
10277 case "$longsize" in
10278 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10281 : see if fsetpos exists
10282 set fsetpos d_fsetpos
10286 : see if fstatfs exists
10287 set fstatfs d_fstatfs
10291 : see if statvfs exists
10292 set statvfs d_statvfs
10295 : see if fstatvfs exists
10296 set fstatvfs d_fstatvfs
10300 : see if fsync exists
10304 : see if ftello exists
10305 set ftello d_ftello
10307 case "$longsize" in
10308 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10311 : see if getcwd exists
10312 set getcwd d_getcwd
10315 : see if getespwnam exists
10316 set getespwnam d_getespwnam
10320 : see if getfsstat exists
10321 set getfsstat d_getfsstat
10324 : see if getgrent exists
10325 set getgrent d_getgrent
10328 : see if gethostbyaddr exists
10329 set gethostbyaddr d_gethbyaddr
10332 : see if gethostbyname exists
10333 set gethostbyname d_gethbyname
10336 : see if gethostent exists
10337 set gethostent d_gethent
10340 : see how we will look up host name
10343 if set gethostname val -f d_gethname; eval $csym; $val; then
10344 echo 'gethostname() found.' >&4
10345 d_gethname="$define"
10348 if set uname val -f d_uname; eval $csym; $val; then
10351 uname() was found, but you're running xenix, and older versions of xenix
10352 have a broken uname(). If you don't really know whether your xenix is old
10353 enough to have a broken system call, use the default answer.
10358 "$define") dflt=n;;
10360 rp='Is your uname() broken?'
10363 n*) d_uname="$define"; call=uname;;
10366 echo 'uname() found.' >&4
10373 case "$d_gethname" in
10374 '') d_gethname="$undef";;
10377 '') d_uname="$undef";;
10379 case "$d_uname$d_gethname" in
10384 Every now and then someone has a $call() that lies about the hostname
10385 but can't be fixed for political or economic reasons. If you wish, I can
10386 pretend $call() isn't there and maybe compute hostname at run-time
10387 thanks to the '$phostname' command.
10390 rp="Shall I ignore $call() from now on?"
10393 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10396 case "$phostname" in
10397 '') aphostname='';;
10398 *) case "$aphostname" in
10400 *) set X $phostname
10404 file=`./loc $file $file $pth`
10405 aphostname=`echo $file $*`
10410 case "$d_uname$d_gethname" in
10413 case "$phostname" in
10415 echo "There will be no way for $package to get your hostname." >&4;;
10417 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10421 case "$d_phostname" in
10422 '') d_phostname="$undef";;
10425 : see if this is a netdb.h system
10426 set netdb.h i_netdb
10429 : see if prototypes for various gethostxxx netdb.h functions are available
10431 set d_gethostprotos gethostent $i_netdb netdb.h
10434 : see if getitimer exists
10435 set getitimer d_getitimer
10438 : see if getlogin exists
10439 set getlogin d_getlogin
10442 : see if getmnt exists
10443 set getmnt d_getmnt
10446 : see if getmntent exists
10447 set getmntent d_getmntent
10450 : see if getnetbyaddr exists
10451 set getnetbyaddr d_getnbyaddr
10454 : see if getnetbyname exists
10455 set getnetbyname d_getnbyname
10458 : see if getnetent exists
10459 set getnetent d_getnent
10462 : see if prototypes for various getnetxxx netdb.h functions are available
10464 set d_getnetprotos getnetent $i_netdb netdb.h
10467 : see if getpagesize exists
10468 set getpagesize d_getpagsz
10472 : see if getprotobyname exists
10473 set getprotobyname d_getpbyname
10476 : see if getprotobynumber exists
10477 set getprotobynumber d_getpbynumber
10480 : see if getprotoent exists
10481 set getprotoent d_getpent
10484 : see if getpgid exists
10485 set getpgid d_getpgid
10488 : see if getpgrp2 exists
10489 set getpgrp2 d_getpgrp2
10492 : see if getppid exists
10493 set getppid d_getppid
10496 : see if getpriority exists
10497 set getpriority d_getprior
10500 : see if prototypes for various getprotoxxx netdb.h functions are available
10502 set d_getprotoprotos getprotoent $i_netdb netdb.h
10505 : see if getprpwnam exists
10506 set getprpwnam d_getprpwnam
10509 : see if getpwent exists
10510 set getpwent d_getpwent
10514 : see if getservbyname exists
10515 set getservbyname d_getsbyname
10518 : see if getservbyport exists
10519 set getservbyport d_getsbyport
10522 : see if getservent exists
10523 set getservent d_getsent
10526 : see if prototypes for various getservxxx netdb.h functions are available
10528 set d_getservprotos getservent $i_netdb netdb.h
10531 : see if getspnam exists
10532 set getspnam d_getspnam
10535 : see if gettimeofday or ftime exists
10536 set gettimeofday d_gettimeod
10538 case "$d_gettimeod" in
10544 val="$undef"; set d_ftime; eval $setvar
10547 case "$d_gettimeod$d_ftime" in
10550 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10554 : see if this is an grp system
10560 xxx=`./findhdr grp.h`
10561 $cppstdin $cppflags $cppminus < $xxx >$$.h
10563 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10575 set d_grpasswd; eval $setvar
10579 : see if hasmntopt exists
10580 set hasmntopt d_hasmntopt
10583 : see if this is a netinet/in.h or sys/in.h system
10584 set netinet/in.h i_niin sys/in.h i_sysin
10587 : see if arpa/inet.h has to be included
10588 set arpa/inet.h i_arpainet
10591 : see if htonl --and friends-- exists
10596 : Maybe they are macros.
10599 $cat >htonl.c <<EOM
10601 #include <sys/types.h>
10602 #$i_niin I_NETINET_IN
10604 #$i_arpainet I_ARPA_INET
10605 #ifdef I_NETINET_IN
10606 #include <netinet/in.h>
10609 #include <sys/in.h>
10612 #include <arpa/inet.h>
10615 printf("Defined as a macro.");
10618 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10619 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10621 echo "But it seems to be defined as a macro." >&4
10631 if set index val -f; eval $csym; $val; then
10632 if set strchr val -f d_strchr; eval $csym; $val; then
10633 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10636 echo "strchr() found." >&4
10640 echo "index() found." >&4
10645 echo "index() found." >&4
10648 if set strchr val -f d_strchr; eval $csym; $val; then
10651 echo "strchr() found." >&4
10653 echo "No index() or strchr() found!" >&4
10658 set d_strchr; eval $setvar
10660 set d_index; eval $setvar
10662 : check whether inet_aton exists
10663 set inet_aton d_inetaton
10668 $cat >isascii.c <<'EOCP'
10680 if eval $compile; then
10681 echo "isascii() found." >&4
10684 echo "isascii() NOT found." >&4
10691 : see if isfinite exists
10692 set isfinite d_isfinite
10695 : see if isinf exists
10699 : see if isnan exists
10703 : see if isnanl exists
10704 set isnanl d_isnanl
10707 : see if killpg exists
10708 set killpg d_killpg
10711 : see if lchown exists
10713 $cat > try.c <<'EOCP'
10714 /* System header to define __stub macros and hopefully few prototypes,
10715 which can conflict with char lchown(); below. */
10716 #include <assert.h>
10717 /* Override any gcc2 internal prototype to avoid an error. */
10718 /* We use char because int might match the return type of a gcc2
10719 builtin and then its argument prototype would still apply. */
10722 /* The GNU C library defines this for functions which it implements
10723 to always fail with ENOSYS. Some functions are actually named
10724 something starting with __ and the normal name is an alias. */
10725 #if defined (__stub_lchown) || defined (__stub___lchown)
10733 if eval $compile; then
10734 $echo "lchown() found." >&4
10737 $echo "lchown() NOT found." >&4
10743 : See if number of significant digits in a double precision number is known
10745 $cat >ldbl_dig.c <<EOM
10746 #$i_limits I_LIMITS
10749 #include <limits.h>
10755 printf("Contains LDBL_DIG");
10758 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10759 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10760 echo "LDBL_DIG found." >&4
10763 echo "LDBL_DIG NOT found." >&4
10770 : see if link exists
10774 : see if localeconv exists
10775 set localeconv d_locconv
10778 : see if lockf exists
10782 : see if prototype for lseek is available
10784 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10787 : see if lstat exists
10791 : see if madvise exists
10792 set madvise d_madvise
10795 : see if mblen exists
10799 : see if mbstowcs exists
10800 set mbstowcs d_mbstowcs
10803 : see if mbtowc exists
10804 set mbtowc d_mbtowc
10807 : see if memchr exists
10808 set memchr d_memchr
10811 : see if memcmp exists
10812 set memcmp d_memcmp
10815 : see if memcpy exists
10816 set memcpy d_memcpy
10819 : see if memmove exists
10820 set memmove d_memmove
10823 : see if memset exists
10824 set memset d_memset
10827 : see if mkdir exists
10831 : see if mkdtemp exists
10832 set mkdtemp d_mkdtemp
10835 : see if mkfifo exists
10836 set mkfifo d_mkfifo
10839 : see if mkstemp exists
10840 set mkstemp d_mkstemp
10843 : see if mkstemps exists
10844 set mkstemps d_mkstemps
10847 : see if mktime exists
10848 set mktime d_mktime
10851 : see if this is a sys/mman.h system
10852 set sys/mman.h i_sysmman
10855 : see if mmap exists
10858 : see what shmat returns
10859 : default to something harmless
10861 case "$i_sysmman$d_mmap" in
10863 $cat >mmap.c <<'END'
10864 #include <sys/mman.h>
10867 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10872 echo "and it returns ($mmaptype)." >&4
10878 : see if modfl exists
10882 d_modfl_pow32_bug="$undef"
10884 case "$d_longdbl$d_modfl" in
10887 Checking to see whether your modfl() is okay for large values...
10893 long double nv = 4294967303.15;
10899 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10903 case "$osname:$gccversion" in
10904 aix:) saveccflags="$ccflags"
10905 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10908 if eval $compile; then
10911 *" 4294967303.150000 1.150000 4294967302.000000")
10912 echo >&4 "Your modfl() is broken for large values."
10913 d_modfl_pow32_bug="$define"
10915 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10919 *" 4294967303.150000 0.150000 4294967303.000000")
10920 echo >&4 "Your modfl() seems okay for large values."
10922 *) echo >&4 "I don't understand your modfl() at all."
10926 $rm -f try.* try core core.try.*
10928 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10931 case "$osname:$gccversion" in
10932 aix:) ccflags="$saveccflags" ;; # restore
10937 : see if mprotect exists
10938 set mprotect d_mprotect
10941 : see if msgctl exists
10942 set msgctl d_msgctl
10945 : see if msgget exists
10946 set msgget d_msgget
10949 : see if msgsnd exists
10950 set msgsnd d_msgsnd
10953 : see if msgrcv exists
10954 set msgrcv d_msgrcv
10957 : see how much of the 'msg*(2)' library is present.
10960 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10961 *"$undef"*) h_msg=false;;
10965 case "`ipcs 2>&1`" in
10966 "SVID messages"*"not configured"*)
10967 echo "Your $osname does not have the msg*(2) configured." >&4
10970 set msgctl d_msgctl
10972 set msgget d_msgget
10974 set msgsnd d_msgsnd
10976 set msgrcv d_msgrcv
10982 : we could also check for sys/ipc.h ...
10983 if $h_msg && $test `./findhdr sys/msg.h`; then
10984 echo "You have the full msg*(2) library." >&4
10987 echo "You don't have the full msg*(2) library." >&4
10995 echo "Checking to see if your system supports struct msghdr..." >&4
10996 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10998 case "$d_msghdr_s" in
10999 "$define") echo "Yes, it does." ;;
11000 *) echo "No, it doesn't." ;;
11004 : see if msync exists
11008 : see if munmap exists
11009 set munmap d_munmap
11012 : see if nice exists
11016 : see if this is a langinfo.h system
11017 set langinfo.h i_langinfo
11020 : see if nl_langinfo exists
11021 set nl_langinfo d_nl_langinfo
11024 : check for length of character
11026 case "$charsize" in
11028 echo "Checking to see how big your characters are (hey, you never know)..." >&4
11029 $cat >try.c <<'EOCP'
11033 printf("%d\n", (int)sizeof(char));
11038 if eval $compile_ok; then
11042 echo "(I can't seem to compile the test program. Guessing...)"
11049 rp="What is the size of a character (in bytes)?"
11054 : check for volatile keyword
11056 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11057 $cat >try.c <<'EOCP'
11060 typedef struct _goo_struct goo_struct;
11061 goo_struct * volatile goo = ((goo_struct *)0);
11062 struct _goo_struct {
11067 typedef unsigned short foo_t;
11068 char *volatile foo;
11070 volatile foo_t blech;
11074 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11076 echo "Yup, it does."
11079 echo "Nope, it doesn't."
11087 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11089 case "$use64bitint:$d_quad:$quadtype" in
11092 uvtype="$uquadtype"
11097 uvtype="unsigned long"
11103 case "$uselongdouble:$d_longdbl" in
11105 nvtype="long double"
11106 nvsize=$longdblsize
11113 $echo "(IV will be "$ivtype", $ivsize bytes)"
11114 $echo "(UV will be "$uvtype", $uvsize bytes)"
11115 $echo "(NV will be "$nvtype", $nvsize bytes)"
11118 #$i_inttypes I_INTTYPES
11120 #include <inttypes.h>
11125 int8_t i = INT8_MAX;
11126 uint8_t u = UINT8_MAX;
11127 printf("int8_t\n");
11130 int16_t i = INT16_MAX;
11131 uint16_t i = UINT16_MAX;
11132 printf("int16_t\n");
11135 int32_t i = INT32_MAX;
11136 uint32_t u = UINT32_MAX;
11137 printf("int32_t\n");
11143 '') case "$charsize" in
11145 u8type="unsigned char"
11154 if eval $compile; then
11155 case "`$run ./try`" in
11156 int8_t) i8type=int8_t
11166 '') if $test $charsize -ge 1; then
11168 u8type="unsigned char"
11176 '') case "$shortsize" in
11178 u16type="unsigned short"
11186 '') set try -DINT16
11187 if eval $compile; then
11188 case "`$run ./try`" in
11200 '') if $test $shortsize -ge 2; then
11202 u16type="unsigned short"
11210 '') case "$longsize" in
11212 u32type="unsigned long"
11216 *) case "$intsize" in
11218 u32type="unsigned int"
11228 '') set try -DINT32
11229 if eval $compile; then
11230 case "`$run ./try`" in
11242 '') if $test $intsize -ge 4; then
11244 u32type="unsigned int"
11252 '') case "$d_quad:$quadtype" in
11254 i64type="$quadtype"
11255 u64type="$uquadtype"
11263 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11264 : volatile so that the compiler has to store it out to memory.
11265 if test X"$d_volatile" = X"$define"; then
11270 #include <sys/types.h>
11271 #include <signal.h>
11273 $volatile int bletched = 0;
11274 $signal_t blech(s) int s; { bletched = 1; }
11279 int n = 8 * $uvsize;
11282 signal(SIGFPE, blech);
11285 for (i = 0; i < n; i++) {
11286 u = u << 1 | ($uvtype)1;
11288 if (($uvtype)d != u)
11292 d = ($nvtype)(u - 1);
11293 if (($uvtype)d != (u - 1))
11301 printf("%d\n", ((i == n) ? -n : i));
11307 d_nv_preserves_uv="$undef"
11308 if eval $compile; then
11309 d_nv_preserves_uv_bits="`$run ./try`"
11311 case "$d_nv_preserves_uv_bits" in
11313 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11314 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11315 d_nv_preserves_uv="$define"
11317 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11318 d_nv_preserves_uv="$undef" ;;
11319 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11320 d_nv_preserves_uv_bits="$undef" ;;
11326 : check for off64_t
11328 echo "Checking to see if you have off64_t..." >&4
11330 #include <sys/types.h>
11331 #include <unistd.h>
11332 int main() { off64_t x = 7; }
11335 if eval $compile; then
11337 echo "You have off64_t."
11340 echo "You do not have off64_t."
11341 case "$lseeksize" in
11342 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11349 : see if POSIX threads are available
11350 set pthread.h i_pthread
11356 : how to create joinable pthreads
11357 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11359 echo "Checking what constant to use for creating joinable pthreads..." >&4
11360 $cat >try.c <<'EOCP'
11361 #include <pthread.h>
11363 int detachstate = JOINABLE;
11366 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11367 if eval $compile; then
11368 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11369 val="$undef" # Yes, undef.
11370 set d_old_pthread_create_joinable
11373 set old_pthread_create_joinable
11376 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11377 if eval $compile; then
11378 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11380 set d_old_pthread_create_joinable
11382 val=PTHREAD_CREATE_UNDETACHED
11383 set old_pthread_create_joinable
11386 set try -DJOINABLE=__UNDETACHED
11387 if eval $compile; then
11388 echo "You seem to use __UNDETACHED." >&4
11390 set d_old_pthread_create_joinable
11393 set old_pthread_create_joinable
11396 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11398 set d_old_pthread_create_joinable
11401 set old_pthread_create_joinable
11408 d_old_pthread_create_joinable="$undef"
11409 old_pthread_create_joinable=""
11412 : see if pause exists
11416 : see if pipe exists
11420 : see if poll exists
11424 : see if pthread_atfork exists
11425 set pthread_atfork d_pthread_atfork
11429 : see whether the various POSIXish _yields exist
11431 #include <pthread.h>
11437 #ifdef PTHREAD_YIELD
11440 #ifdef PTHREAD_YIELD_NULL
11441 pthread_yield(NULL);
11447 : see if sched_yield exists
11448 set try -DSCHED_YIELD
11449 if eval $compile; then
11451 sched_yield='sched_yield()'
11455 case "$usethreads" in
11458 $define) echo 'sched_yield() found.' >&4 ;;
11459 *) echo 'sched_yield() NOT found.' >&4 ;;
11465 : see if pthread_yield exists
11466 set try -DPTHREAD_YIELD
11467 if eval $compile; then
11469 case "$sched_yield" in
11470 '') sched_yield='pthread_yield()' ;;
11473 set try -DPTHREAD_YIELD_NULL
11474 if eval $compile; then
11476 case "$sched_yield" in
11477 '') sched_yield='pthread_yield(NULL)' ;;
11483 case "$usethreads" in
11486 $define) echo 'pthread_yield() found.' >&4 ;;
11487 *) echo 'pthread_yield() NOT found.' >&4 ;;
11491 set d_pthread_yield
11494 case "$sched_yield" in
11495 '') sched_yield=undef ;;
11500 : see if this is a pwd.h system
11506 xxx=`./findhdr pwd.h`
11507 $cppstdin $cppflags $cppminus < $xxx >$$.h
11509 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11517 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11525 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11533 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11541 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11549 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11557 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11565 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11577 set d_pwquota; eval $setvar
11578 set d_pwage; eval $setvar
11579 set d_pwchange; eval $setvar
11580 set d_pwclass; eval $setvar
11581 set d_pwexpire; eval $setvar
11582 set d_pwcomment; eval $setvar
11583 set d_pwgecos; eval $setvar
11584 set d_pwpasswd; eval $setvar
11588 : see if readdir and friends exist
11589 set readdir d_readdir
11591 set seekdir d_seekdir
11593 set telldir d_telldir
11595 set rewinddir d_rewinddir
11598 : see if readlink exists
11599 set readlink d_readlink
11602 : see if readv exists
11606 : see if recvmsg exists
11607 set recvmsg d_recvmsg
11610 : see if rename exists
11611 set rename d_rename
11614 : see if rmdir exists
11618 : see if memory.h is available.
11623 : See if it conflicts with string.h
11629 $cppstdin $cppflags $cppminus < $strings > mem.h
11630 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11632 echo "We won't be including <memory.h>."
11642 : can bcopy handle overlapping blocks?
11645 case "$d_memmove" in
11646 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11647 *) case "$d_bcopy" in
11649 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11651 #$i_memory I_MEMORY
11652 #$i_stdlib I_STDLIB
11653 #$i_string I_STRING
11654 #$i_unistd I_UNISTD
11656 $cat >>try.c <<'EOCP'
11659 # include <memory.h>
11662 # include <stdlib.h>
11665 # include <string.h>
11667 # include <strings.h>
11670 # include <unistd.h> /* Needed for NetBSD */
11674 char buf[128], abc[128];
11680 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11681 try to store the string in read-only memory. */
11682 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11684 for (align = 7; align >= 0; align--) {
11685 for (len = 36; len; len--) {
11687 bcopy(abc, b, len);
11688 for (off = 1; off <= len; off++) {
11689 bcopy(b, b+off, len);
11690 bcopy(b+off, b, len);
11691 if (bcmp(b, abc, len))
11700 if eval $compile_ok; then
11701 if ./try 2>/dev/null; then
11702 echo "Yes, it can."
11705 echo "It can't, sorry."
11708 echo "(I can't compile the test program, so we'll assume not...)"
11712 $rm -f try.* try core
11718 : can memcpy handle overlapping blocks?
11721 case "$d_memmove" in
11722 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11723 *) case "$d_memcpy" in
11725 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11727 #$i_memory I_MEMORY
11728 #$i_stdlib I_STDLIB
11729 #$i_string I_STRING
11730 #$i_unistd I_UNISTD
11732 $cat >>try.c <<'EOCP'
11735 # include <memory.h>
11738 # include <stdlib.h>
11741 # include <string.h>
11743 # include <strings.h>
11746 # include <unistd.h> /* Needed for NetBSD */
11750 char buf[128], abc[128];
11756 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11757 try to store the string in read-only memory. */
11758 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11760 for (align = 7; align >= 0; align--) {
11761 for (len = 36; len; len--) {
11763 memcpy(b, abc, len);
11764 for (off = 1; off <= len; off++) {
11765 memcpy(b+off, b, len);
11766 memcpy(b, b+off, len);
11767 if (memcmp(b, abc, len))
11776 if eval $compile_ok; then
11777 if ./try 2>/dev/null; then
11778 echo "Yes, it can."
11781 echo "It can't, sorry."
11784 echo "(I can't compile the test program, so we'll assume not...)"
11788 $rm -f try.* try core
11794 : can memcmp be trusted to compare relative magnitude?
11796 case "$d_memcmp" in
11799 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11801 #$i_memory I_MEMORY
11802 #$i_stdlib I_STDLIB
11803 #$i_string I_STRING
11804 #$i_unistd I_UNISTD
11806 $cat >>try.c <<'EOCP'
11809 # include <memory.h>
11812 # include <stdlib.h>
11815 # include <string.h>
11817 # include <strings.h>
11820 # include <unistd.h> /* Needed for NetBSD */
11826 if ((a < b) && memcmp(&a, &b, 1) < 0)
11832 if eval $compile_ok; then
11833 if $run ./try 2>/dev/null; then
11834 echo "Yes, it can."
11837 echo "No, it can't (it uses signed chars)."
11840 echo "(I can't compile the test program, so we'll assume not...)"
11844 $rm -f try.* try core
11848 : see if prototype for sbrk is available
11850 set d_sbrkproto sbrk $i_unistd unistd.h
11853 : see if select exists
11854 set select d_select
11857 : see if semctl exists
11858 set semctl d_semctl
11861 : see if semget exists
11862 set semget d_semget
11865 : see if semop exists
11869 : see how much of the 'sem*(2)' library is present.
11872 case "$d_semctl$d_semget$d_semop" in
11873 *"$undef"*) h_sem=false;;
11877 case "`ipcs 2>&1`" in
11878 "SVID messages"*"not configured"*)
11879 echo "Your $osname does not have the sem*(2) configured." >&4
11882 set semctl d_semctl
11884 set semget d_semget
11892 : we could also check for sys/ipc.h ...
11893 if $h_sem && $test `./findhdr sys/sem.h`; then
11894 echo "You have the full sem*(2) library." >&4
11897 echo "You don't have the full sem*(2) library." >&4
11903 : see whether sys/sem.h defines union semun
11905 $cat > try.c <<'END'
11906 #include <sys/types.h>
11907 #include <sys/ipc.h>
11908 #include <sys/sem.h>
11909 int main () { union semun semun; semun.buf = 0; }
11912 if eval $compile; then
11913 echo "You have union semun in <sys/sem.h>." >&4
11916 echo "You do not have union semun in <sys/sem.h>." >&4
11919 $rm -f try try.c try.h
11923 : see how to do semctl IPC_STAT
11926 : see whether semctl IPC_STAT can use union semun
11931 # define S_IRUSR S_IREAD
11932 # define S_IWUSR S_IWRITE
11933 # define S_IXUSR S_IEXEC
11935 # define S_IRUSR 0400
11936 # define S_IWUSR 0200
11937 # define S_IXUSR 0100
11939 # define S_IRGRP (S_IRUSR>>3)
11940 # define S_IWGRP (S_IWUSR>>3)
11941 # define S_IXGRP (S_IXUSR>>3)
11942 # define S_IROTH (S_IRUSR>>6)
11943 # define S_IWOTH (S_IWUSR>>6)
11944 # define S_IXOTH (S_IXUSR>>6)
11947 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11948 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11949 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11954 #include <sys/types.h>
11955 #include <sys/ipc.h>
11956 #include <sys/sem.h>
11957 #include <sys/stat.h>
11964 #$d_union_semun HAS_UNION_SEMUN
11967 #ifndef HAS_UNION_SEMUN
11970 struct semid_ds *buf;
11971 unsigned short *array;
11977 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11978 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11980 struct semid_ds argbuf;
11983 st = semctl(sem, 0, IPC_STAT, arg);
11987 # endif /* IPC_STAT */
11988 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11990 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11991 # endif /* IPC_RMID */
11992 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11994 #endif /* IPC_PRIVATE && ... */
11995 printf("semget failed: errno = %d\n", errno);
12001 if eval $compile; then
12004 semun) val="$define" ;;
12010 case "$d_semctl_semun" in
12012 echo "You can use union semun for semctl IPC_STAT." >&4
12015 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
12020 : see whether semctl IPC_STAT can use struct semid_ds pointer
12021 $cat > try.c <<'END'
12022 #include <sys/types.h>
12023 #include <sys/ipc.h>
12024 #include <sys/sem.h>
12025 #include <sys/stat.h>
12033 struct semid_ds arg;
12036 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12037 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12040 st = semctl(sem, 0, IPC_STAT, &arg);
12042 printf("semid_ds\n");
12044 # endif /* IPC_STAT */
12045 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12047 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12048 # endif /* IPC_RMID */
12049 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12051 #endif /* IPC_PRIVATE && ... */
12052 printf("semget failed: errno = %d\n", errno);
12059 if eval $compile; then
12062 semid_ds) val="$define" ;;
12066 set d_semctl_semid_ds
12068 case "$d_semctl_semid_ds" in
12070 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12072 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12079 # We do not have the full sem*(2) library, so assume we can not
12085 set d_semctl_semid_ds
12090 : see if sendmsg exists
12091 set sendmsg d_sendmsg
12094 : see if setegid exists
12095 set setegid d_setegid
12098 : see if seteuid exists
12099 set seteuid d_seteuid
12102 : see if setgrent exists
12103 set setgrent d_setgrent
12106 : see if sethostent exists
12107 set sethostent d_sethent
12110 : see if setitimer exists
12111 set setitimer d_setitimer
12114 : see if setlinebuf exists
12115 set setlinebuf d_setlinebuf
12118 : see if setlocale exists
12119 set setlocale d_setlocale
12122 : see if setnetent exists
12123 set setnetent d_setnent
12126 : see if setprotoent exists
12127 set setprotoent d_setpent
12130 : see if setpgid exists
12131 set setpgid d_setpgid
12134 : see if setpgrp2 exists
12135 set setpgrp2 d_setpgrp2
12138 : see if setpriority exists
12139 set setpriority d_setprior
12142 : see if setproctitle exists
12143 set setproctitle d_setproctitle
12146 : see if setpwent exists
12147 set setpwent d_setpwent
12150 : see if setregid exists
12151 set setregid d_setregid
12153 set setresgid d_setresgid
12156 : see if setreuid exists
12157 set setreuid d_setreuid
12159 set setresuid d_setresuid
12162 : see if setrgid exists
12163 set setrgid d_setrgid
12166 : see if setruid exists
12167 set setruid d_setruid
12170 : see if setservent exists
12171 set setservent d_setsent
12174 : see if setsid exists
12175 set setsid d_setsid
12178 : see if setvbuf exists
12179 set setvbuf d_setvbuf
12182 : see if sfio.h is available
12187 : see if sfio library is available
12198 : Ok, but do we want to use it.
12202 true|$define|[yY]*) dflt='y';;
12205 echo "$package can use the sfio library, but it is experimental."
12206 case "$useperlio" in
12208 echo "For sfio also the PerlIO abstraction layer is needed."
12209 echo "Earlier you said you wouldn't want that."
12212 rp="You seem to have sfio available, do you want to try using it?"
12215 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12216 useperlio="$define"
12219 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12224 *) case "$usesfio" in
12225 true|$define|[yY]*)
12226 echo "Sorry, cannot find sfio on this machine." >&4
12227 echo "Ignoring your setting of usesfio=$usesfio." >&4
12236 $define) usesfio='true';;
12237 *) usesfio='false';;
12241 *) : Remove sfio from list of libraries to use
12244 echo "Removing unneeded -lsfio from library list" >&4
12245 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12248 echo "libs = $libs" >&4
12255 : see if shmctl exists
12256 set shmctl d_shmctl
12259 : see if shmget exists
12260 set shmget d_shmget
12263 : see if shmat exists
12266 : see what shmat returns
12269 $cat >shmat.c <<'END'
12270 #include <sys/shm.h>
12273 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12278 echo "and it returns ($shmattype)." >&4
12279 : see if a prototype for shmat is available
12280 xxx=`./findhdr sys/shm.h`
12281 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12282 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12293 set d_shmatprototype
12296 : see if shmdt exists
12300 : see how much of the 'shm*(2)' library is present.
12303 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12304 *"$undef"*) h_shm=false;;
12308 case "`ipcs 2>&1`" in
12309 "SVID shared memory"*"not configured"*)
12310 echo "Your $osname does not have the shm*(2) configured." >&4
12313 set shmctl d_shmctl
12315 set shmget d_shmget
12325 : we could also check for sys/ipc.h ...
12326 if $h_shm && $test `./findhdr sys/shm.h`; then
12327 echo "You have the full shm*(2) library." >&4
12330 echo "You don't have the full shm*(2) library." >&4
12337 : see if we have sigaction
12338 if set sigaction val -f d_sigaction; eval $csym; $val; then
12339 echo 'sigaction() found.' >&4
12340 $cat > try.c <<'EOP'
12342 #include <sys/types.h>
12343 #include <signal.h>
12346 struct sigaction act, oact;
12348 oact.sa_handler = 0;
12349 /* so that act and oact are used */
12350 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12354 if eval $compile_ok; then
12357 echo "But you don't seem to have a useable struct sigaction." >&4
12361 echo 'sigaction NOT found.' >&4
12364 set d_sigaction; eval $setvar
12365 $rm -f try try$_o try.c
12367 : see if sigprocmask exists
12368 set sigprocmask d_sigprocmask
12371 : see if sigsetjmp exists
12373 case "$d_sigsetjmp" in
12375 $cat >try.c <<'EOP'
12376 #include <setjmp.h>
12381 if (sigsetjmp(env,1))
12384 siglongjmp(env, 1);
12389 if eval $compile; then
12390 if $run ./try >/dev/null 2>&1; then
12391 echo "POSIX sigsetjmp found." >&4
12395 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12401 echo "sigsetjmp not found." >&4
12405 *) val="$d_sigsetjmp"
12406 case "$d_sigsetjmp" in
12407 $define) echo "POSIX sigsetjmp found." >&4;;
12408 $undef) echo "sigsetjmp not found." >&4;;
12416 : see if sockatmark exists
12417 set sockatmark d_sockatmark
12420 : see if prototype for sockatmark is available
12422 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12425 : see if socks5_init exists
12426 set socks5_init d_socks5_init
12429 : see if prototype for setresgid is available
12431 set d_sresgproto setresgid $i_unistd unistd.h
12434 : see if prototype for setresuid is available
12436 set d_sresuproto setresuid $i_unistd unistd.h
12439 : see if sys/stat.h is available
12440 set sys/stat.h i_sysstat
12444 : see if stat knows about block sizes
12446 echo "Checking to see if your struct stat has st_blocks field..." >&4
12447 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12451 : see if this is a sys/vfs.h system
12452 set sys/vfs.h i_sysvfs
12456 : see if this is a sys/statfs.h system
12457 set sys/statfs.h i_sysstatfs
12462 echo "Checking to see if your system supports struct statfs..." >&4
12463 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
12465 case "$d_statfs_s" in
12466 "$define") echo "Yes, it does." ;;
12467 *) echo "No, it doesn't." ;;
12472 : see if struct statfs knows about f_flags
12473 case "$d_statfs_s" in
12476 echo "Checking to see if your struct statfs has f_flags field..." >&4
12477 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
12481 set d_statfs_f_flags
12485 case "$d_statfs_f_flags" in
12486 "$define") echo "Yes, it does." ;;
12487 *) echo "No, it doesn't." ;;
12490 : see if _ptr and _cnt from stdio act std
12493 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12494 echo "(Looks like you have stdio.h from BSD.)"
12495 case "$stdio_ptr" in
12496 '') stdio_ptr='((fp)->_p)'
12499 *) ptr_lval=$d_stdio_ptr_lval;;
12501 case "$stdio_cnt" in
12502 '') stdio_cnt='((fp)->_r)'
12505 *) cnt_lval=$d_stdio_cnt_lval;;
12507 case "$stdio_base" in
12508 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12510 case "$stdio_bufsiz" in
12511 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12513 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12514 echo "(Looks like you have stdio.h from Linux.)"
12515 case "$stdio_ptr" in
12516 '') stdio_ptr='((fp)->_IO_read_ptr)'
12519 *) ptr_lval=$d_stdio_ptr_lval;;
12521 case "$stdio_cnt" in
12522 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12525 *) cnt_lval=$d_stdio_cnt_lval;;
12527 case "$stdio_base" in
12528 '') stdio_base='((fp)->_IO_read_base)';;
12530 case "$stdio_bufsiz" in
12531 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12534 case "$stdio_ptr" in
12535 '') stdio_ptr='((fp)->_ptr)'
12538 *) ptr_lval=$d_stdio_ptr_lval;;
12540 case "$stdio_cnt" in
12541 '') stdio_cnt='((fp)->_cnt)'
12544 *) cnt_lval=$d_stdio_cnt_lval;;
12546 case "$stdio_base" in
12547 '') stdio_base='((fp)->_base)';;
12549 case "$stdio_bufsiz" in
12550 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12554 : test whether _ptr and _cnt really work
12555 echo "Checking how std your stdio is..." >&4
12558 #define FILE_ptr(fp) $stdio_ptr
12559 #define FILE_cnt(fp) $stdio_cnt
12561 FILE *fp = fopen("try.c", "r");
12564 18 <= FILE_cnt(fp) &&
12565 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12573 if eval $compile && $to try.c; then
12574 if $run ./try; then
12575 echo "Your stdio acts pretty std."
12578 echo "Your stdio isn't very std."
12581 echo "Your stdio doesn't appear very std."
12587 : Can _ptr be used as an lvalue?
12588 case "$d_stdstdio$ptr_lval" in
12589 $define$define) val=$define ;;
12592 set d_stdio_ptr_lval
12595 : Can _cnt be used as an lvalue?
12596 case "$d_stdstdio$cnt_lval" in
12597 $define$define) val=$define ;;
12600 set d_stdio_cnt_lval
12604 : test whether setting _ptr sets _cnt as a side effect
12605 d_stdio_ptr_lval_sets_cnt="$undef"
12606 d_stdio_ptr_lval_nochange_cnt="$undef"
12607 case "$d_stdio_ptr_lval$d_stdstdio" in
12609 echo "Checking to see what happens if we set the stdio ptr..." >&4
12612 /* Can we scream? */
12613 /* Eat dust sed :-) */
12614 /* In the buffer space, no one can hear you scream. */
12615 #define FILE_ptr(fp) $stdio_ptr
12616 #define FILE_cnt(fp) $stdio_cnt
12617 #include <sys/types.h>
12619 FILE *fp = fopen("try.c", "r");
12624 puts("Fail even to read");
12627 c = getc(fp); /* Read away the first # */
12629 puts("Fail even to read");
12633 18 <= FILE_cnt(fp) &&
12634 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12636 puts("Fail even to read");
12639 ptr = (char*) FILE_ptr(fp);
12640 cnt = (size_t)FILE_cnt(fp);
12642 FILE_ptr(fp) += 42;
12644 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12645 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12648 if (FILE_cnt(fp) <= 20) {
12649 printf ("Fail (<20 chars to test)");
12652 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12653 puts("Fail compare");
12656 if (cnt == FILE_cnt(fp)) {
12657 puts("Pass_unchanged");
12660 if (FILE_cnt(fp) == (cnt - 42)) {
12661 puts("Pass_changed");
12664 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12670 if eval $compile && $to try.c; then
12671 case `$run ./try` in
12673 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12674 d_stdio_ptr_lval_sets_cnt="$define" ;;
12676 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12677 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12679 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12681 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12684 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12690 : see if _base is also standard
12692 case "$d_stdstdio" in
12696 #define FILE_base(fp) $stdio_base
12697 #define FILE_bufsiz(fp) $stdio_bufsiz
12699 FILE *fp = fopen("try.c", "r");
12702 19 <= FILE_bufsiz(fp) &&
12703 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12710 if eval $compile && $to try.c; then
12711 if $run ./try; then
12712 echo "And its _base field acts std."
12715 echo "But its _base field isn't std."
12718 echo "However, it seems to be lacking the _base field."
12727 Checking how to access stdio streams by file descriptor number...
12729 case "$stdio_stream_array" in
12730 '') $cat >try.c <<EOCP
12733 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12737 for s in _iob __iob __sF
12739 set try -DSTDIO_STREAM_ARRAY=$s
12740 if eval $compile; then
12741 case "`$run ./try`" in
12742 yes) stdio_stream_array=$s; break ;;
12746 $rm -f try.* try$exe_ext
12748 case "$stdio_stream_array" in
12750 I can't figure out how to access stdio streams by file descriptor number.
12752 d_stdio_stream_array="$undef"
12755 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12757 d_stdio_stream_array="$define"
12761 : see if strcoll exists
12762 set strcoll d_strcoll
12765 : check for structure copying
12767 echo "Checking to see if your C compiler can copy structs..." >&4
12768 $cat >try.c <<'EOCP'
12778 if $cc -c try.c >/dev/null 2>&1 ; then
12780 echo "Yup, it can."
12783 echo "Nope, it can't."
12789 : see if strerror and/or sys_errlist[] exist
12791 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12792 if set strerror val -f d_strerror; eval $csym; $val; then
12793 echo 'strerror() found.' >&4
12794 d_strerror="$define"
12795 d_strerrm='strerror(e)'
12796 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12797 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12798 d_syserrlst="$define"
12800 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12801 d_syserrlst="$undef"
12803 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12804 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12805 echo 'strerror() found in string header.' >&4
12806 d_strerror="$define"
12807 d_strerrm='strerror(e)'
12808 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12809 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12810 d_syserrlst="$define"
12812 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12813 d_syserrlst="$undef"
12815 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12816 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12817 d_strerror="$undef"
12818 d_syserrlst="$define"
12819 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12821 echo 'strerror() and sys_errlist[] NOT found.' >&4
12822 d_strerror="$undef"
12823 d_syserrlst="$undef"
12824 d_strerrm='"unknown"'
12828 : see if strftime exists
12829 set strftime d_strftime
12832 : see if strtod exists
12833 set strtod d_strtod
12836 : see if strtol exists
12837 set strtol d_strtol
12840 : see if strtold exists
12841 set strtold d_strtold
12844 : see if strtoll exists
12845 set strtoll d_strtoll
12848 case "$d_longlong-$d_strtoll" in
12851 Checking whether your strtoll() works okay...
12853 $cat >try.c <<'EOCP'
12856 #define strtoll __strtoll
12859 #define strtoll _strtoll
12862 extern long long int strtoll(char *s, char **, int);
12863 static int bad = 0;
12864 int check(char *s, long long ell, int een) {
12867 gll = strtoll(s, 0, 10);
12868 if (!((gll == ell) && (errno == een)))
12872 check(" 1", 1LL, 0);
12873 check(" 0", 0LL, 0);
12874 check("-1", -1LL, 0);
12875 check("-9223372036854775808", -9223372036854775808LL, 0);
12876 check("-9223372036854775808", -9223372036854775808LL, 0);
12877 check(" 9223372036854775807", 9223372036854775807LL, 0);
12878 check("-9223372036854775808", -9223372036854775808LL, 0);
12879 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12880 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12886 if eval $compile; then
12889 ok) echo "Your strtoll() seems to be working okay." ;;
12891 Your strtoll() doesn't seem to be working okay.
12897 echo "(I can't seem to compile the test program--assuming it doesn't)"
12903 : see if strtoq exists
12904 set strtoq d_strtoq
12907 : see if strtoul exists
12908 set strtoul d_strtoul
12911 case "$d_strtoul" in
12914 Checking whether your strtoul() works okay...
12916 $cat >try.c <<'EOCP'
12919 extern unsigned long int strtoul(char *s, char **, int);
12920 static int bad = 0;
12921 void check(char *s, unsigned long eul, int een) {
12924 gul = strtoul(s, 0, 10);
12925 if (!((gul == eul) && (errno == een)))
12929 check(" 1", 1L, 0);
12930 check(" 0", 0L, 0);
12932 case "$longsize" in
12934 $cat >>try.c <<'EOCP'
12935 check("18446744073709551615", 18446744073709551615UL, 0);
12936 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12937 #if 0 /* strtoul() for /^-/ strings is undefined. */
12938 check("-1", 18446744073709551615UL, 0);
12939 check("-18446744073709551614", 2, 0);
12940 check("-18446744073709551615", 1, 0);
12941 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12942 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12947 $cat >>try.c <<'EOCP'
12948 check("4294967295", 4294967295UL, 0);
12949 check("4294967296", 4294967295UL, ERANGE);
12950 #if 0 /* strtoul() for /^-/ strings is undefined. */
12951 check("-1", 4294967295UL, 0);
12952 check("-4294967294", 2, 0);
12953 check("-4294967295", 1, 0);
12954 check("-4294967296", 4294967295UL, ERANGE);
12955 check("-4294967297", 4294967295UL, ERANGE);
12960 : Should we write these tests to be more portable by sprintf-ing
12961 : ~0 and then manipulating that char string as input for strtol?
12964 $cat >>try.c <<'EOCP'
12971 if eval $compile; then
12972 case "`$run ./try`" in
12973 ok) echo "Your strtoul() seems to be working okay." ;;
12975 Your strtoul() doesn't seem to be working okay.
12984 : see if strtoull exists
12985 set strtoull d_strtoull
12988 case "$d_longlong-$d_strtoull" in
12991 Checking whether your strtoull() works okay...
12993 $cat >try.c <<'EOCP'
12996 #define strtoull __strtoull
12999 extern unsigned long long int strtoull(char *s, char **, int);
13000 static int bad = 0;
13001 int check(char *s, long long eull, int een) {
13004 gull = strtoull(s, 0, 10);
13005 if (!((gull == eull) && (errno == een)))
13009 check(" 1", 1LL, 0);
13010 check(" 0", 0LL, 0);
13011 check("18446744073709551615", 18446744073709551615ULL, 0);
13012 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
13013 #if 0 /* strtoull() for /^-/ strings is undefined. */
13014 check("-1", 18446744073709551615ULL, 0);
13015 check("-18446744073709551614", 2LL, 0);
13016 check("-18446744073709551615", 1LL, 0);
13017 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13018 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13025 if eval $compile; then
13026 case "`$run ./try`" in
13027 ok) echo "Your strtoull() seems to be working okay." ;;
13029 Your strtoull() doesn't seem to be working okay.
13031 d_strtoull="$undef"
13038 : see if strtouq exists
13039 set strtouq d_strtouq
13042 case "$d_strtouq" in
13045 Checking whether your strtouq() works okay...
13047 $cat >try.c <<'EOCP'
13050 extern unsigned long long int strtouq(char *s, char **, int);
13051 static int bad = 0;
13052 void check(char *s, unsigned long long eull, int een) {
13053 unsigned long long gull;
13055 gull = strtouq(s, 0, 10);
13056 if (!((gull == eull) && (errno == een)))
13060 check(" 1", 1LL, 0);
13061 check(" 0", 0LL, 0);
13062 check("18446744073709551615", 18446744073709551615ULL, 0);
13063 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
13064 #if 0 /* strtouq() for /^-/ strings is undefined. */
13065 check("-1", 18446744073709551615ULL, 0);
13066 check("-18446744073709551614", 2LL, 0);
13067 check("-18446744073709551615", 1LL, 0);
13068 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13069 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13077 if eval $compile; then
13078 case "`$run ./try`" in
13079 ok) echo "Your strtouq() seems to be working okay." ;;
13081 Your strtouq() doesn't seem to be working okay.
13090 : see if strxfrm exists
13091 set strxfrm d_strxfrm
13094 : see if symlink exists
13095 set symlink d_symlink
13098 : see if syscall exists
13099 set syscall d_syscall
13102 : see if prototype for syscall is available
13104 set d_syscallproto syscall $i_unistd unistd.h
13107 : see if sysconf exists
13108 set sysconf d_sysconf
13111 : see if system exists
13112 set system d_system
13115 : see if tcgetpgrp exists
13116 set tcgetpgrp d_tcgetpgrp
13119 : see if tcsetpgrp exists
13120 set tcsetpgrp d_tcsetpgrp
13123 : see if prototype for telldir is available
13125 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13128 : see if this is a sys/times.h system
13129 set sys/times.h i_systimes
13132 : see if times exists
13134 if set times val -f d_times; eval $csym; $val; then
13135 echo 'times() found.' >&4
13138 case "$i_systimes" in
13139 "$define") inc='sys/times.h';;
13141 rp="What is the type returned by times() on this system?"
13142 set clock_t clocktype long stdio.h sys/types.h $inc
13145 echo 'times() NOT found, hope that will do.' >&4
13150 : see if truncate exists
13151 set truncate d_truncate
13154 : see if tzname[] exists
13156 if set tzname val -a d_tzname; eval $csym; $val; then
13158 echo 'tzname[] found.' >&4
13161 echo 'tzname[] NOT found.' >&4
13167 next|rhapsody|darwin) multiarch="$define" ;;
13169 case "$multiarch" in
13170 ''|[nN]*) multiarch="$undef" ;;
13173 : check for ordering of bytes in a long
13175 case "$usecrosscompile$multiarch" in
13178 You seem to be either cross-compiling or doing a multiarchitecture build,
13179 skipping the byteorder check.
13185 case "$byteorder" in
13188 In the following, larger digits indicate more significance. A big-endian
13189 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13190 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13191 machines may have weird orders like 3412. A Cray will report 87654321,
13192 an Alpha will report 12345678. If the test program works the default is
13194 I'm now running the test program...
13196 $cat >try.c <<'EOCP'
13203 char c[sizeof(long)];
13206 if (sizeof(long) > 4)
13207 u.l = (0x08070605L << 32) | 0x04030201L;
13210 for (i = 0; i < sizeof(long); i++)
13211 printf("%c", u.c[i]+'0');
13218 if eval $compile && ./try > /dev/null; then
13221 [1-4][1-4][1-4][1-4]|12345678|87654321)
13222 echo "(The test program ran ok.)"
13223 echo "byteorder=$dflt"
13226 ????|????????) echo "(The test program ran ok.)" ;;
13227 *) echo "(The test program didn't run right for some reason.)" ;;
13232 (I can't seem to compile the test program. Guessing big-endian...)
13235 case "$xxx_prompt" in
13237 rp="What is the order of bytes in a long?"
13253 Checking to see whether you can access character data unalignedly...
13257 #define U32 $u32type
13258 #define BYTEORDER $byteorder
13260 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13261 U8 buf[] = "\0\0\0\1\0\0\0\0";
13265 if (sizeof(U32) != 4) {
13266 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13272 for (i = 0; i < 4; i++) {
13273 up = (U32*)(buf + i);
13274 if (! ((*up == 1 << (8*i)) || /* big-endian */
13275 (*up == 1 << (8*(3-i))) /* little-endian */
13279 printf("read failed (%x)\n", *up);
13285 for (i = 0; i < 4; i++) {
13286 up = (U32*)(buf + i);
13288 if (*up != 0xBeef) {
13289 printf("write failed (%x)\n", *up);
13303 if eval $compile_ok; then
13304 echo "(Testing for character data alignment may dump core.)" >&4
13305 $run ./try 2>&1 >/dev/null
13308 You can access character data pretty unalignedly.
13310 d_u32align="$undef"
13313 It seems that you must access character data in an aligned manner.
13315 d_u32align="$define"
13318 $rm -f core core.try.* try.core
13320 rp='Can you access character data at unaligned addresses?'
13324 [yY]*) d_u32align="$undef" ;;
13325 *) d_u32align="$define" ;;
13329 : see if ualarm exists
13330 set ualarm d_ualarm
13333 : see if umask exists
13337 : see if unordered exists
13338 set unordered d_unordered
13341 : see if usleep exists
13342 set usleep d_usleep
13345 : see if prototype for usleep is available
13347 set d_usleepproto usleep $i_unistd unistd.h
13350 : see if ustat exists
13354 : backward compatibility for d_hvfork
13355 if test X$d_hvfork != X; then
13356 d_vfork="$d_hvfork"
13359 : see if there is a vfork
13364 : Ok, but do we want to use it. vfork is reportedly unreliable in
13365 : perl on Solaris 2.x, and probably elsewhere.
13369 case "$usevfork" in
13375 Perl can only use a vfork() that doesn't suffer from strict
13376 restrictions on calling functions or modifying global data in
13377 the child. For example, glibc-2.1 contains such a vfork()
13378 that is unsuitable. If your system provides a proper fork()
13379 call, chances are that you do NOT want perl to use vfork().
13382 rp="Do you still want to use vfork()?"
13387 echo "Ok, we won't use vfork()."
13396 $define) usevfork='true';;
13397 *) usevfork='false';;
13400 : see if this is an sysdir system
13401 set sys/dir.h i_sysdir
13404 : see if this is an sysndir system
13405 set sys/ndir.h i_sysndir
13408 : see if closedir exists
13409 set closedir d_closedir
13412 case "$d_closedir" in
13415 echo "Checking whether closedir() returns a status..." >&4
13417 #$i_dirent I_DIRENT /**/
13418 #$i_sysdir I_SYS_DIR /**/
13419 #$i_sysndir I_SYS_NDIR /**/
13420 #$i_systypes I_SYS_TYPES /**/
13422 #if defined(I_SYS_TYPES)
13423 #include <sys/types.h>
13425 #if defined(I_DIRENT)
13426 #include <dirent.h>
13427 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13428 #include <sys/dir.h>
13432 #include <sys/ndir.h>
13436 #include <ndir.h> /* may be wrong in the future */
13438 #include <sys/dir.h>
13443 int main() { return closedir(opendir(".")); }
13446 if eval $compile_ok; then
13447 if $run ./try > /dev/null 2>&1 ; then
13448 echo "Yes, it does."
13451 echo "No, it doesn't."
13455 echo "(I can't seem to compile the test program--assuming it doesn't)"
13463 set d_void_closedir
13466 : see if there is a wait4
13470 : see if waitpid exists
13471 set waitpid d_waitpid
13474 : see if wcstombs exists
13475 set wcstombs d_wcstombs
13478 : see if wctomb exists
13479 set wctomb d_wctomb
13482 : see if writev exists
13483 set writev d_writev
13486 : preserve RCS keywords in files with variable substitution, grrr
13491 Revision='$Revision'
13493 : check for alignment requirements
13495 case "$usecrosscompile$multiarch" in
13498 You seem to be either cross-compiling or doing a multiarchitecture build,
13499 skipping the memory alignment check.
13502 case "$alignbytes" in
13503 '') alignbytes=8 ;;
13507 case "$alignbytes" in
13508 '') echo "Checking alignment constraints..." >&4
13509 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13510 $cat >try.c <<'EOCP'
13511 typedef long double NV;
13514 $cat >try.c <<'EOCP'
13518 $cat >>try.c <<'EOCP'
13526 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13531 if eval $compile_ok; then
13535 echo "(I can't seem to compile the test program...)"
13538 *) dflt="$alignbytes"
13541 rp="Doubles must be aligned on a how-many-byte boundary?"
13549 : set the base revision
13552 : how do we catenate cpp tokens here?
13554 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13555 $cat >cpp_stuff.c <<'EOCP'
13556 #define RCAT(a,b)a/**/b
13557 #define ACAT(a,b)a ## b
13561 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13562 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13563 echo "Oh! Smells like ANSI's been here." >&4
13564 echo "We can catify or stringify, separately or together!"
13566 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13567 echo "Ah, yes! The good old days!" >&4
13568 echo "However, in the good old days we don't know how to stringify and"
13569 echo "catify at the same time."
13573 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13574 to have to edit the values of CAT[2-5] in config.h...
13576 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13580 : see if this is a db.h system
13586 : Check db version.
13588 echo "Checking Berkeley DB version ..." >&4
13594 #include <sys/types.h>
13597 int main(int argc, char *argv[])
13599 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13600 int Major, Minor, Patch ;
13601 unsigned long Version ;
13602 (void)db_version(&Major, &Minor, &Patch) ;
13604 printf("%d %d %d %d %d %d\n",
13605 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13606 Major, Minor, Patch);
13609 printf("You have Berkeley DB Version 2 or greater.\n");
13611 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13612 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13613 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13614 Major, Minor, Patch) ;
13616 /* check that db.h & libdb are compatible */
13617 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13618 printf("db.h and libdb are incompatible.\n") ;
13622 printf("db.h and libdb are compatible.\n") ;
13624 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13625 + DB_VERSION_PATCH ;
13627 /* needs to be >= 2.3.4 */
13628 if (Version < 2003004) {
13629 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13630 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13636 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13641 printf("You have Berkeley DB Version 1.\n");
13642 exit(0); /* DB version < 2: the coast is clear. */
13644 exit(1); /* <db.h> not Berkeley DB? */
13650 if eval $compile_ok && $run ./try; then
13651 echo 'Looks OK.' >&4
13653 db_version_major=$1
13654 db_version_minor=$2
13655 db_version_patch=$3
13657 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13661 : Remove db from list of libraries to use
13662 echo "Removing unusable -ldb from library list" >&4
13663 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13666 echo "libs = $libs" >&4
13676 : Check the return type needed for hash
13678 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13684 #include <sys/types.h>
13687 #ifndef DB_VERSION_MAJOR
13688 u_int32_t hash_cb (ptr, size)
13696 info.hash = hash_cb;
13700 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13701 if $contains warning try.out >>/dev/null 2>&1 ; then
13704 db_hashtype='u_int32_t'
13707 : XXX Maybe we should just give up here.
13708 db_hashtype=u_int32_t
13710 echo "Help: I can't seem to compile the db test program." >&4
13711 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13714 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13716 *) db_hashtype=u_int32_t
13721 : Check the return type needed for prefix
13723 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13729 #include <sys/types.h>
13732 #ifndef DB_VERSION_MAJOR
13733 size_t prefix_cb (key1, key2)
13741 info.prefix = prefix_cb;
13745 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13746 if $contains warning try.out >>/dev/null 2>&1 ; then
13747 db_prefixtype='int'
13749 db_prefixtype='size_t'
13752 db_prefixtype='size_t'
13753 : XXX Maybe we should just give up here.
13755 echo "Help: I can't seem to compile the db test program." >&4
13756 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13759 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13761 *) db_prefixtype='size_t'
13766 : How can we generate normalized random numbers ?
13768 echo "Looking for a random number function..." >&4
13769 case "$randfunc" in
13771 if set drand48 val -f; eval $csym; $val; then
13773 echo "Good, found drand48()." >&4
13774 elif set random val -f; eval $csym; $val; then
13776 echo "OK, found random()." >&4
13779 echo "Yick, looks like I have to use rand()." >&4
13790 *-Dmy_rand=*|*-Dmy_srand=*)
13791 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13792 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13793 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13794 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13798 while $test "$cont"; do
13799 rp="Use which function to generate random numbers?"
13801 if $test "$ans" = "$dflt"; then
13807 if set $ans val -f; eval $csym; $val; then
13811 rp="I cannot find function $ans. Use that name anyway?"
13820 case "$randfunc" in
13822 drand01="drand48()"
13828 case "$randbits" in
13830 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13832 #$i_unistd I_UNISTD
13833 #$i_stdlib I_STDLIB
13836 # include <unistd.h>
13839 # include <stdlib.h>
13844 register unsigned long tmp;
13845 register unsigned long max = 0L;
13847 for (i = 1000; i; i--) {
13848 tmp = (unsigned long) $randfunc();
13849 if (tmp > max) max = tmp;
13851 for (i = 0; max; i++)
13857 if eval $compile_ok; then
13861 echo "(I can't seem to compile the test program...)"
13868 rp="How many bits does your $randfunc() function produce?"
13872 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13873 seedfunc="s$randfunc"
13874 randseedtype=unsigned
13878 rp="How many bits does your $randfunc() function produce?"
13881 seedfunc="s$randfunc"
13882 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13883 if set $seedfunc val -f; eval $csym; $val; then
13884 echo "(Using $seedfunc() to seed random generator)"
13886 echo "(Warning: no $seedfunc() to seed random generator)"
13889 randseedtype=unsigned
13897 echo "Determining whether or not we are on an EBCDIC system..." >&4
13898 $cat >try.c <<'EOM'
13901 if ('M'==0xd4) return 0;
13908 if eval $compile_ok; then
13909 if $run ./try; then
13910 echo "You seem to speak EBCDIC." >&4
13913 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13916 echo "I'm unable to compile the test program." >&4
13917 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13925 Checking how to flush all pending stdio output...
13927 # I only know how to find the first 32 possibly open files on SunOS.
13928 # See also hints/sunos_4_1.sh and util.c --AD
13930 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13932 $cat >>try.c <<EOCP
13934 #$i_unistd I_UNISTD
13936 # include <unistd.h>
13938 #$d_sysconf HAS_SYSCONF
13939 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13940 #ifdef HAS_STDIO_STREAM_ARRAY
13941 # define STDIO_STREAM_ARRAY $stdio_stream_array
13946 p = fopen("try.out", "w");
13950 # ifdef TRY_FPRINTF
13954 #ifdef TRY_FFLUSH_NULL
13957 #ifdef TRY_FFLUSH_ALL
13959 long open_max = -1;
13960 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13961 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13963 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13964 open_max = sysconf(_SC_OPEN_MAX);
13967 open_max = FOPEN_MAX;
13970 open_max = OPEN_MAX;
13979 # ifdef HAS_STDIO_STREAM_ARRAY
13980 if (open_max > 0) {
13982 for (i = 0; i < open_max; i++)
13983 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13984 STDIO_STREAM_ARRAY[i]._file < open_max &&
13985 STDIO_STREAM_ARRAY[i]._flag)
13986 fflush(&STDIO_STREAM_ARRAY[i]);
13994 : first we have to find out how _not_ to flush
13996 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13998 set try -DTRY_FPUTC
13999 if eval $compile; then
14000 $run ./try 2>/dev/null
14003 if $test ! -s try.out -a "X$code" = X42; then
14009 set try -DTRY_FPRINTF
14010 if eval $compile; then
14011 $run ./try 2>/dev/null
14014 if $test ! -s try.out -a "X$code" = X42; then
14015 output=-DTRY_FPRINTF
14021 : check for fflush NULL behaviour
14022 case "$fflushNULL" in
14023 '') set try -DTRY_FFLUSH_NULL $output
14024 if eval $compile; then
14025 $run ./try 2>/dev/null
14028 if $test -s try.out -a "X$code" = X42; then
14029 fflushNULL="`$cat try.out`"
14031 if $test "X$code" != X42; then
14033 (If this test failed, don't worry, we'll try another method shortly.)
14038 $rm -f core try.core core.try.*
14039 case "$fflushNULL" in
14041 Your fflush(NULL) works okay for output streams.
14042 Let's see if it clobbers input pipes...
14044 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14045 # bug that improperly flushes the input end of pipes. So we avoid the
14046 # autoflush on fork/system/exec support for now. :-(
14047 $cat >tryp.c <<EOCP
14050 main(int argc, char **argv)
14056 while ((i = getc(stdin)) != -1
14057 && (*bp++ = i) != '\n'
14058 && bp < &buf[1024])
14061 fprintf(stdout, "%s", buf);
14069 fflushNULL="$define"
14071 if eval $compile; then
14073 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14074 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14076 fflush(NULL) seems to behave okay with input streams.
14078 fflushNULL="$define"
14081 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
14083 fflushNULL="$undef"
14086 $rm -f core tryp.c tryp.core core.tryp.*
14089 Your fflush(NULL) isn't working (contrary to ANSI C).
14091 fflushNULL="$undef"
14094 Cannot figure out whether your fflush(NULL) works or not.
14095 I'm assuming it doesn't (contrary to ANSI C).
14097 fflushNULL="$undef"
14101 $define|true|[yY]*)
14102 fflushNULL="$define"
14105 fflushNULL="$undef"
14108 : check explicit looping only if NULL did not work, and if the pipe
14109 : bug does not show up on an explicit flush too
14110 case "$fflushNULL" in
14112 $cat >tryp.c <<EOCP
14115 main(int argc, char **argv)
14121 while ((i = getc(stdin)) != -1
14122 && (*bp++ = i) != '\n'
14123 && bp < &buf[1024])
14126 fprintf(stdout, "%s", buf);
14135 if eval $compile; then
14137 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14138 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14140 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14142 : now check for fflushall behaviour
14143 case "$fflushall" in
14144 '') set try -DTRY_FFLUSH_ALL $output
14145 if eval $compile; then
14147 (Now testing the other method--but note that this also may fail.)
14149 $run ./try 2>/dev/null
14152 if $test -s try.out -a "X$code" = X42; then
14153 fflushall="`$cat try.out`"
14156 $rm -f core try.core core.try.*
14157 case "$fflushall" in
14159 Whew. Flushing explicitly all the stdio streams works.
14161 fflushall="$define"
14164 Sigh. Flushing explicitly all the stdio streams doesn't work.
14169 Cannot figure out whether flushing stdio streams explicitly works or not.
14170 I'm assuming it doesn't.
14176 "$define"|true|[yY]*)
14177 fflushall="$define"
14185 All is futile. Even fflush(stdin) clobbers input pipes!
14192 $rm -f core tryp.c tryp.core core.tryp.*
14194 *) fflushall="$undef"
14198 case "$fflushNULL$fflushall" in
14201 OK, I give up. I cannot figure out how to flush pending stdio output.
14202 We won't be flushing handles at all before fork/exec/popen.
14206 $rm -f try.* try$exe_ext
14208 : Store the full pathname to the ar program for use in the C program
14209 : Respect a hint or command line value for full_ar.
14214 : Store the full pathname to the sed program for use in the C program
14217 : see what type gids are declared as in the kernel
14219 echo "Looking for the type for group ids returned by getgid()."
14220 set gid_t gidtype xxx stdio.h sys/types.h
14224 xxx=`./findhdr sys/user.h`
14225 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14227 unsigned) dflt="$1 $2" ;;
14231 *) dflt="$gidtype";;
14234 gid_t) echo "gid_t found." ;;
14235 *) rp="What is the type for group ids returned by getgid()?"
14243 *_t) zzz="$gidtype" ;;
14246 echo "Checking the size of $zzz..." >&4
14248 #include <sys/types.h>
14251 printf("%d\n", (int)sizeof($gidtype));
14256 if eval $compile_ok; then
14260 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14263 echo "Your $zzz is $gidsize bytes long."
14268 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14274 *_t) zzz="$gidtype" ;;
14277 echo "Checking the sign of $zzz..." >&4
14279 #include <sys/types.h>
14290 if eval $compile; then
14294 echo "(I can't execute the test program--guessing unsigned.)" >&4
14298 1) echo "Your $zzz is unsigned." ;;
14299 -1) echo "Your $zzz is signed." ;;
14305 echo "(I can't compile the test program--guessing unsigned.)" >&4
14311 if $test X"$quadtype" != X; then
14313 echo "Checking how to print 64-bit integers..." >&4
14315 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14316 $cat >try.c <<'EOCP'
14317 #include <sys/types.h>
14320 int q = 12345678901;
14321 printf("%ld\n", q);
14325 if eval $compile; then
14329 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14330 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14331 echo "We will use %d."
14337 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14338 $cat >try.c <<'EOCP'
14339 #include <sys/types.h>
14342 long q = 12345678901;
14343 printf("%ld\n", q);
14347 if eval $compile; then
14351 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14352 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14353 echo "We will use %ld."
14359 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14360 $cat >try.c <<'EOCP'
14361 #include <sys/types.h>
14362 #include <inttypes.h>
14365 int64_t q = 12345678901;
14366 printf("%" PRId64 "\n", q);
14370 if eval $compile; then
14374 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14375 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14376 echo "We will use the C9X style."
14382 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14384 #include <sys/types.h>
14387 $quadtype q = 12345678901;
14388 printf("%Ld\n", q);
14392 if eval $compile; then
14396 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14397 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14398 echo "We will use %Ld."
14404 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14405 $cat >try.c <<'EOCP'
14406 #include <sys/types.h>
14409 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14410 printf("%lld\n", q);
14414 if eval $compile; then
14418 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14419 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14420 echo "We will use the %lld style."
14426 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14428 #include <sys/types.h>
14431 $quadtype q = 12345678901;
14432 printf("%qd\n", q);
14436 if eval $compile; then
14440 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14441 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14442 echo "We will use %qd."
14448 if $test X"$sPRId64" = X; then
14449 echo "Cannot figure out how to print 64-bit integers." >&4
14457 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14458 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14460 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14461 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14467 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14469 if $test X"$ivsize" = X8; then
14470 ivdformat="$sPRId64"
14471 uvuformat="$sPRIu64"
14472 uvoformat="$sPRIo64"
14473 uvxformat="$sPRIx64"
14474 uvXUformat="$sPRIXU64"
14476 if $test X"$ivsize" = X"$longsize"; then
14483 if $test X"$ivsize" = X"$intsize"; then
14491 if $test X"$ivsize" = X"$shortsize"; then
14502 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14503 nveformat="$sPRIeldbl"
14504 nvfformat="$sPRIfldbl"
14505 nvgformat="$sPRIgldbl"
14506 nvEUformat="$sPRIEUldbl"
14507 nvFUformat="$sPRIFUldbl"
14508 nvGUformat="$sPRIGUldbl"
14518 case "$ivdformat" in
14519 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14526 $echo "Checking the format string to be used for gids..." >&4
14529 -1) if $test X"$gidsize" = X"$ivsize"; then
14530 gidformat="$ivdformat"
14532 if $test X"$gidsize" = X"$longsize"; then
14535 if $test X"$gidsize" = X"$intsize"; then
14538 if $test X"$gidsize" = X"$shortsize"; then
14545 *) if $test X"$gidsize" = X"$uvsize"; then
14546 gidformat="$uvuformat"
14548 if $test X"$gidsize" = X"$longsize"; then
14551 if $test X"$gidsize" = X"$intsize"; then
14554 if $test X"$gidsize" = X"$shortsize"; then
14563 : see if getgroups exists
14564 set getgroups d_getgrps
14567 : see if setgroups exists
14568 set setgroups d_setgrps
14572 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14574 case "$d_getgrps$d_setgrps" in
14576 case "$groupstype" in
14577 '') dflt="$gidtype" ;;
14578 *) dflt="$groupstype" ;;
14581 What type of pointer is the second argument to getgroups() and setgroups()?
14582 Usually this is the same as group ids, $gidtype, but not always.
14585 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14589 *) groupstype="$gidtype";;
14593 echo "Checking if your $make program sets \$(MAKE)..." >&4
14594 case "$make_set_make" in
14596 $sed 's/^X //' > testmake.mak << 'EOF'
14598 X @echo 'maketemp="$(MAKE)"'
14600 case "`$make -f testmake.mak 2>/dev/null`" in
14601 *maketemp=*) make_set_make='#' ;;
14602 *) make_set_make="MAKE=$make" ;;
14604 $rm -f testmake.mak
14607 case "$make_set_make" in
14608 '#') echo "Yup, it does.";;
14609 *) echo "Nope, it doesn't.";;
14612 : see what type is used for mode_t
14613 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14614 set mode_t modetype int stdio.h sys/types.h
14617 : see if stdarg is available
14619 if $test `./findhdr stdarg.h`; then
14620 echo "<stdarg.h> found." >&4
14623 echo "<stdarg.h> NOT found." >&4
14627 : see if varags is available
14629 if $test `./findhdr varargs.h`; then
14630 echo "<varargs.h> found." >&4
14632 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14635 : set up the varargs testing programs
14636 $cat > varargs.c <<EOP
14638 #include <stdarg.h>
14641 #include <varargs.h>
14645 int f(char *p, ...)
14659 p = va_arg(ap, char *);
14664 $cat > varargs <<EOP
14666 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14675 : now check which varargs header should be included
14680 if `./varargs I_STDARG`; then
14682 elif `./varargs I_VARARGS`; then
14687 if `./varargs I_VARARGS`; then
14694 echo "I could not find the definition for va_dcl... You have problems..." >&4
14695 val="$undef"; set i_stdarg; eval $setvar
14696 val="$undef"; set i_varargs; eval $setvar
14701 case "$i_varhdr" in
14703 val="$define"; set i_stdarg; eval $setvar
14704 val="$undef"; set i_varargs; eval $setvar
14707 val="$undef"; set i_stdarg; eval $setvar
14708 val="$define"; set i_varargs; eval $setvar
14711 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14715 : see if we need va_copy
14717 case "$i_stdarg" in
14720 #include <stdarg.h>
14722 #$i_stdlib I_STDLIB
14724 #include <stdlib.h>
14726 #include <signal.h>
14729 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14731 return vfprintf(f, fmt, *valp);
14735 myvfprintf(FILE *f, const char *fmt, va_list val)
14737 return ivfprintf(f, fmt, &val);
14741 myprintf(char *fmt, ...)
14744 va_start(val, fmt);
14745 return myvfprintf(stdout, fmt, val);
14749 main(int ac, char **av)
14751 signal(SIGSEGV, exit);
14753 myprintf("%s%cs all right, then\n", "that", '\'');
14758 if eval $compile && $run ./try 2>&1 >/dev/null; then
14759 case "`$run ./try`" in
14760 "that's all right, then")
14766 yes) echo "It seems that you don't need va_copy()." >&4
14767 need_va_copy="$undef"
14769 *) echo "It seems that va_copy() or similar will be needed." >&4
14770 need_va_copy="$define"
14773 $rm -f try.* core core.* *.core *.core.*
14775 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14779 : define a fucntion to check prototypes
14780 $cat > protochk <<EOSH
14783 optimize="$optimize"
14785 prototype="$prototype"
14790 $cat >> protochk <<'EOSH'
14795 while test $# -ge 2; do
14797 $define) echo "#include <$2>" >> try.c ;;
14798 literal) echo "$2" >> try.c ;;
14802 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14803 cat >> try.c <<'EOCP'
14804 #ifdef CAN_PROTOTYPE
14805 #define _(args) args
14810 echo "$foo" >> try.c
14811 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14812 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14818 $eunicefix protochk
14820 : see what type is used for size_t
14821 rp="What is the type used for the length parameter for string functions?"
14822 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14825 : check for type of arguments to gethostbyaddr.
14826 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14827 case "$d_gethbyaddr" in
14831 Checking to see what type of arguments are accepted by gethostbyaddr().
14833 hdrs="$define sys/types.h
14834 $d_socket sys/socket.h
14835 $i_niin netinet/in.h
14837 $i_unistd unistd.h"
14838 : The first arg can 'char *' or 'void *'
14839 : The second arg is some of integral type
14840 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14841 for yyy in size_t long int; do
14842 case "$netdb_host_type" in
14843 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14844 if ./protochk "$try" $hdrs; then
14845 echo "Your system accepts $xxx for the first arg."
14846 echo "...and $yyy for the second arg."
14847 netdb_host_type="$xxx"
14848 netdb_hlen_type="$yyy"
14854 : In case none of those worked, prompt the user.
14855 case "$netdb_host_type" in
14856 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14859 netdb_host_type=$ans
14860 rp='What is the type for the 2nd argument to gethostbyaddr?'
14863 netdb_hlen_type=$ans
14867 *) : no gethostbyaddr, so pick harmless defaults
14868 netdb_host_type='char *'
14869 netdb_hlen_type="$sizetype"
14872 # Remove the "const" if needed. -- but then we'll have a
14874 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14877 : check for type of argument to gethostbyname.
14878 if test "X$netdb_name_type" = X ; then
14879 case "$d_gethbyname" in
14883 Checking to see what type of argument is accepted by gethostbyname().
14885 hdrs="$define sys/types.h
14886 $d_socket sys/socket.h
14887 $i_niin netinet/in.h
14889 $i_unistd unistd.h"
14890 for xxx in "const char *" "char *"; do
14891 case "$netdb_name_type" in
14892 '') try="extern struct hostent *gethostbyname($xxx);"
14893 if ./protochk "$try" $hdrs; then
14894 echo "Your system accepts $xxx."
14895 netdb_name_type="$xxx"
14900 : In case none of those worked, prompt the user.
14901 case "$netdb_name_type" in
14902 '') rp='What is the type for the 1st argument to gethostbyname?'
14905 netdb_name_type=$ans
14909 *) : no gethostbyname, so pick harmless default
14910 netdb_name_type='char *'
14915 : check for type of 1st argument to getnetbyaddr.
14916 if test "X$netdb_net_type" = X ; then
14917 case "$d_getnbyaddr" in
14921 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14923 hdrs="$define sys/types.h
14924 $d_socket sys/socket.h
14925 $i_niin netinet/in.h
14927 $i_unistd unistd.h"
14928 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14929 case "$netdb_net_type" in
14930 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14931 if ./protochk "$try" $hdrs; then
14932 echo "Your system accepts $xxx."
14933 netdb_net_type="$xxx"
14938 : In case none of those worked, prompt the user.
14939 case "$netdb_net_type" in
14940 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14943 netdb_net_type=$ans
14947 *) : no getnetbyaddr, so pick harmless default
14948 netdb_net_type='long'
14952 : locate the preferred pager for this system
14958 [a-zA-Z]:/*) dflt=$pg;;
14962 [a-zA-Z]:/*) dflt=$more;;
14966 [a-zA-Z]:/*) dflt=$less;;
14969 '') dflt=/usr/ucb/more;;
14976 rp='What pager is used on your system?'
14980 : see what type pids are declared as in the kernel
14981 rp="What is the type of process ids on this system?"
14982 set pid_t pidtype int stdio.h sys/types.h
14985 : Find earliest binary compatible site_perl subdirectory perl can use.
14986 case "$bincompat5005" in
14987 "$define") xs_apiversion='5.005' ;;
14988 *) xs_apiversion=$version ;; # The current site_perl version.
14990 : Find earliest pure perl site_perl subdirectory perl can use.
14991 : The versioned directories started at 5.005.
14992 pm_apiversion='5.005'
14994 : see if ar generates random libraries by itself
14996 echo "Checking how to generate random libraries on your machine..." >&4
14997 echo 'int bar1() { return bar2(); }' > bar1.c
14998 echo 'int bar2() { return 2; }' > bar2.c
14999 $cat > foo.c <<'EOP'
15000 int main() { printf("%d\n", bar1()); exit(0); }
15002 $cc $ccflags -c bar1.c >/dev/null 2>&1
15003 $cc $ccflags -c bar2.c >/dev/null 2>&1
15004 $cc $ccflags -c foo.c >/dev/null 2>&1
15005 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15006 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15007 $run ./foobar >/dev/null 2>&1; then
15008 echo "$ar appears to generate random libraries itself."
15011 elif $ar ts bar$_a >/dev/null 2>&1 &&
15012 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15013 $run ./foobar >/dev/null 2>&1; then
15014 echo "a table of contents needs to be added with '$ar ts'."
15021 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15022 $test -f $ranlib || ranlib=''
15025 if $test -n "$ranlib"; then
15026 echo "your system has '$ranlib'; we'll use that."
15029 echo "your system doesn't seem to support random libraries"
15030 echo "so we'll use lorder and tsort to order the libraries."
15037 : check for type of arguments to select.
15038 case "$selecttype" in
15039 '') case "$d_select" in
15043 Checking to see what type of arguments are accepted by select().
15045 hdrs="$define sys/types.h
15046 $i_systime sys/time.h
15047 $i_sysselct sys/select.h
15048 $d_socket sys/socket.h"
15049 : The first arg can be int, unsigned, or size_t
15050 : The last arg may or may not be 'const'
15052 : void pointer has been seen but using that
15053 : breaks the selectminbits test
15054 for xxx in 'fd_set *' 'int *'; do
15055 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15056 for tmo in 'struct timeval *' 'const struct timeval *'; do
15058 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15059 if ./protochk "$try" $hdrs; then
15060 echo "Your system accepts $xxx."
15069 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15070 case "$d_fd_set" in
15071 $define) dflt="fd_set *" ;;
15080 *) : no select, so pick a harmless default
15087 : check for the select 'width'
15088 case "$selectminbits" in
15089 '') case "$d_select" in
15093 Checking to see on how many bits at a time your select() operates...
15096 #include <sys/types.h>
15098 #$i_systime I_SYS_TIME
15099 #$i_systimek I_SYS_TIME_KERNEL
15104 # ifdef I_SYS_TIME_KERNEL
15107 # include <sys/time.h>
15108 # ifdef I_SYS_TIME_KERNEL
15112 #$i_sysselct I_SYS_SELECT
15113 #ifdef I_SYS_SELECT
15114 #include <sys/select.h>
15116 #$d_socket HAS_SOCKET
15118 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15122 #define S sizeof(*(b))
15124 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15125 #define NBITS (NBYTES * 8)
15134 fp = fopen("try.c", "r");
15140 b = ($selecttype)s;
15141 for (i = 0; i < NBITS; i++)
15145 select(fd + 1, b, 0, 0, &t);
15146 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15147 printf("%d\n", i + 1);
15152 if eval $compile_ok; then
15153 selectminbits=`$run ./try`
15154 case "$selectminbits" in
15156 Cannot figure out on how many bits at a time your select() operates.
15157 I'll play safe and guess it is 32 bits.
15163 *) bits="$selectminbits bits" ;;
15165 echo "Your select() operates on $bits at a time." >&4
15167 rp='What is the minimum number of bits your select() operates on?'
15168 case "$byteorder" in
15169 1234|12345678) dflt=32 ;;
15174 selectminbits="$val"
15178 *) : no select, so pick a harmless default
15185 : Trace out the files included by signal.h, then look for SIGxxx names.
15186 : Remove SIGARRAYSIZE used by HPUX.
15187 : Remove SIGSTKSIZE used by Linux.
15188 : Remove SIGSTKSZ used by Posix.
15189 : Remove SIGTYP void lines used by OS2.
15190 : Some cpps, like os390, dont give the file name anywhere
15191 if [ "X$fieldn" = X ]; then
15192 : Just make some guesses. We check them later.
15193 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15195 xxx=`echo '#include <signal.h>' |
15196 $cppstdin $cppminus $cppflags 2>/dev/null |
15197 $grep '^[ ]*#.*include' |
15198 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15200 : Check this list of files to be sure we have parsed the cpp output ok.
15201 : This will also avoid potentially non-existent files, such
15204 for xx in $xxx /dev/null ; do
15205 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15207 : If we have found no files, at least try signal.h
15208 case "$xxxfiles" in
15209 '') xxxfiles=`./findhdr signal.h` ;;
15212 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15213 print substr($2, 4, 20)
15215 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15216 print substr($3, 4, 20)
15218 : Append some common names just in case the awk scan failed.
15219 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15220 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15221 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15222 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15223 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15225 : generate a few handy files for later
15226 $cat > signal.c <<'EOCP'
15227 #include <sys/types.h>
15228 #include <signal.h>
15232 /* Strange style to avoid deeply-nested #if/#else/#endif */
15235 # define NSIG (_NSIG)
15241 # define NSIG (SIGMAX+1)
15247 # define NSIG (SIG_MAX+1)
15253 # define NSIG (MAXSIG+1)
15259 # define NSIG (MAX_SIG+1)
15264 # ifdef SIGARRAYSIZE
15265 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15271 # define NSIG (_sys_nsig) /* Solaris 2.5 */
15275 /* Default to some arbitrary number that's big enough to get most
15276 of the common signals.
15282 printf("NSIG %d\n", NSIG);
15288 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15290 printf "#ifdef SIG"; printf $1; printf "\n"
15291 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15292 printf $1; printf ");\n"
15296 printf "#endif /* JUST_NSIG */\n";
15297 printf "exit(0);\n}\n";
15300 $cat >signal.awk <<'EOP'
15301 BEGIN { ndups = 0 }
15302 $1 ~ /^NSIG$/ { nsig = $2 }
15303 ($1 !~ /^NSIG$/) && (NF == 2) {
15304 if ($2 > maxsig) { maxsig = $2 }
15305 if (sig_name[$2]) {
15306 dup_name[ndups] = $1
15307 dup_num[ndups] = $2
15319 printf("NSIG %d\n", nsig);
15320 for (n = 1; n < nsig; n++) {
15322 printf("%s %d\n", sig_name[n], sig_num[n])
15325 printf("NUM%d %d\n", n, n)
15328 for (n = 0; n < ndups; n++) {
15329 printf("%s %d\n", dup_name[n], dup_num[n])
15333 $cat >signal_cmd <<EOS
15335 if $test -s signal.lst; then
15336 echo "Using your existing signal.lst file"
15341 $cat >>signal_cmd <<'EOS'
15344 if eval $compile_ok; then
15345 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15347 echo "(I can't seem be able to compile the whole test program)" >&4
15348 echo "(I'll try it in little pieces.)" >&4
15349 set signal -DJUST_NSIG
15350 if eval $compile_ok; then
15351 $run ./signal$_exe > signal.nsg
15354 echo "I can't seem to figure out how many signals you have." >&4
15355 echo "Guessing 50." >&4
15356 echo 'NSIG 50' > signal.nsg
15358 : Now look at all the signal names, one at a time.
15359 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15360 $cat > signal.c <<EOCP
15361 #include <sys/types.h>
15362 #include <signal.h>
15365 printf("$xx %d\n", SIG${xx});
15370 if eval $compile; then
15371 echo "SIG${xx} found."
15372 $run ./signal$_exe >> signal.ls1
15374 echo "SIG${xx} NOT found."
15377 if $test -s signal.ls1; then
15378 $cat signal.nsg signal.ls1 |
15379 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15383 if $test -s signal.lst; then
15386 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15387 echo 'kill -l' >signal
15388 set X `csh -f <signal`
15392 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15394 echo $@ | $tr ' ' $trnl | \
15395 $awk '{ printf "%s %d\n", $1, ++s; }
15396 END { printf "NSIG %d\n", ++s }' >signal.lst
15398 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15400 chmod a+x signal_cmd
15401 $eunicefix signal_cmd
15403 : generate list of signal names
15405 case "$sig_name_init" in
15407 *) case "$sig_num_init" in
15408 ''|*,*) doinit=yes ;;
15413 echo "Generating a list of signal names and numbers..." >&4
15415 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15416 sig_name=`$awk 'BEGIN { printf "ZERO " }
15417 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15418 sig_num=`$awk 'BEGIN { printf "0 " }
15419 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15420 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15421 !/^NSIG/ { printf "\"%s\", ", $1 }
15422 END { printf "0\n" }' signal.lst`
15423 sig_num_init=`$awk 'BEGIN { printf "0, " }
15424 !/^NSIG/ { printf "%d, ", $2}
15425 END { printf "0\n"}' signal.lst`
15428 echo "The following $sig_count signals are available:"
15430 echo $sig_name | $awk \
15431 'BEGIN { linelen = 0 }
15433 for (i = 1; i <= NF; i++) {
15434 name = "SIG" $i " "
15435 linelen = linelen + length(name)
15436 if (linelen > 70) {
15438 linelen = length(name)
15444 sig_size=`echo $sig_name | awk '{print NF}'`
15445 $rm -f signal signal.c signal.awk signal.lst signal_cmd
15448 case "$sizetype" in
15449 *_t) zzz="$sizetype" ;;
15450 *) zzz="filesize" ;;
15452 echo "Checking the size of $zzz..." >&4
15454 #include <sys/types.h>
15457 printf("%d\n", (int)sizeof($sizetype));
15462 if eval $compile_ok; then
15466 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15469 echo "Your $zzz size is $sizesize bytes."
15474 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15478 : check for socklen_t
15480 echo "Checking to see if you have socklen_t..." >&4
15482 #include <sys/types.h>
15483 #$d_socket HAS_SOCKET
15485 #include <sys/socket.h>
15487 int main() { socklen_t x = 16; }
15490 if eval $compile; then
15492 echo "You have socklen_t."
15495 echo "You do not have socklen_t."
15496 case "$sizetype" in
15497 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15504 : see if this is a socks.h system
15505 set socks.h i_socks
15508 : check for type of the size argument to socket calls
15509 case "$d_socket" in
15513 Checking to see what type is the last argument of accept().
15516 case "$d_socklen_t" in
15517 "$define") yyy="$yyy socklen_t"
15519 yyy="$yyy $sizetype int long unsigned"
15520 for xxx in $yyy; do
15521 case "$socksizetype" in
15522 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
15523 case "$usesocks" in
15525 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15526 echo "Your system accepts '$xxx *' for the last argument of accept()."
15527 socksizetype="$xxx"
15530 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15531 echo "Your system accepts '$xxx *' for the last argument of accept()."
15532 socksizetype="$xxx"
15539 : In case none of those worked, prompt the user.
15540 case "$socksizetype" in
15541 '') rp='What is the type for socket address structure sizes?'
15548 *) : no sockets, so pick relatively harmless default
15553 : see what type is used for signed size_t
15554 set ssize_t ssizetype int stdio.h sys/types.h
15559 #include <sys/types.h>
15560 #define Size_t $sizetype
15561 #define SSize_t $dflt
15564 if (sizeof(Size_t) == sizeof(SSize_t))
15566 else if (sizeof(Size_t) == sizeof(int))
15575 if eval $compile_ok && $run ./try > /dev/null; then
15576 ssizetype=`$run ./try`
15577 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15580 Help! I can't compile and run the ssize_t test program: please enlighten me!
15581 (This is probably a misconfiguration in your system or libraries, and
15582 you really ought to fix it. Still, I'll try anyway.)
15584 I need a type that is the same size as $sizetype, but is guaranteed to
15585 be signed. Common values are ssize_t, int and long.
15588 rp="What signed type is the same size as $sizetype?"
15594 : see what type of char stdio uses.
15596 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15597 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15598 echo "Your stdio uses unsigned chars." >&4
15599 stdchar="unsigned char"
15601 echo "Your stdio uses signed chars." >&4
15608 : see if time exists
15610 if test "X$d_time" = X -o X"$timetype" = X; then
15611 if set time val -f d_time; eval $csym; $val; then
15612 echo 'time() found.' >&4
15614 rp="What is the type returned by time() on this system?"
15615 set time_t timetype long stdio.h sys/types.h
15618 echo 'time() not found, hope that will do.' >&4
15626 : see what type uids are declared as in the kernel
15628 echo "Looking for the type for user ids returned by getuid()."
15629 set uid_t uidtype xxx stdio.h sys/types.h
15633 xxx=`./findhdr sys/user.h`
15634 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15636 unsigned) dflt="$1 $2" ;;
15640 *) dflt="$uidtype";;
15643 uid_t) echo "uid_t found." ;;
15644 *) rp="What is the type for user ids returned by getuid()?"
15652 *_t) zzz="$uidtype" ;;
15655 echo "Checking the size of $zzz..." >&4
15657 #include <sys/types.h>
15660 printf("%d\n", (int)sizeof($uidtype));
15665 if eval $compile_ok; then
15669 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15672 echo "Your $zzz is $uidsize bytes long."
15677 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15682 *_t) zzz="$uidtype" ;;
15685 echo "Checking the sign of $zzz..." >&4
15687 #include <sys/types.h>
15698 if eval $compile; then
15702 echo "(I can't execute the test program--guessing unsigned.)" >&4
15706 1) echo "Your $zzz is unsigned." ;;
15707 -1) echo "Your $zzz is signed." ;;
15713 echo "(I can't compile the test program--guessing unsigned.)" >&4
15719 $echo "Checking the format string to be used for uids..." >&4
15722 -1) if $test X"$uidsize" = X"$ivsize"; then
15723 uidformat="$ivdformat"
15725 if $test X"$uidsize" = X"$longsize"; then
15728 if $test X"$uidsize" = X"$intsize"; then
15731 if $test X"$uidsize" = X"$shortsize"; then
15738 *) if $test X"$uidsize" = X"$uvsize"; then
15739 uidformat="$uvuformat"
15741 if $test X"$uidsize" = X"$longsize"; then
15744 if $test X"$uidsize" = X"$intsize"; then
15747 if $test X"$uidsize" = X"$shortsize"; then
15756 : determine compiler compiler
15765 if $test -f "$byacc"; then
15767 comp="byacc or $comp"
15769 if $test -f "$bison"; then
15770 comp="$comp or bison -y"
15772 rp="Which compiler compiler ($comp) shall I use?"
15781 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15787 : see if fcntl.h is there
15792 : see if we can include fcntl.h
15798 echo "We'll be including <fcntl.h>." >&4
15801 if $h_sysfile; then
15802 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15804 echo "We won't be including <fcntl.h>." >&4
15816 : see if this is a fp.h system
15820 : see if this is a fp_class.h system
15821 set fp_class.h i_fp_class
15824 : see if this is a ieeefp.h system
15825 set ieeefp.h i_ieeefp
15828 : see if this is a libutil.h system
15829 set libutil.h i_libutil
15832 : see if locale.h is available
15833 set locale.h i_locale
15836 : see if mach cthreads are available
15837 if test "X$usethreads" = "X$define"; then
15838 set mach/cthreads.h i_machcthr
15841 i_machcthr="$undef"
15846 : see if this is a math.h system
15850 : see if this is a mntent.h system
15851 set mntent.h i_mntent
15854 : see if ndbm.h is available
15859 : see if dbm_open exists
15860 set dbm_open d_dbm_open
15862 case "$d_dbm_open" in
15865 echo "We won't be including <ndbm.h>"
15874 : see if net/errno.h is available
15876 set net/errno.h val
15879 : Unfortunately, it causes problems on some systems. Arrgh.
15882 cat > try.c <<'EOM'
15885 #include <net/errno.h>
15891 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15892 echo "We'll be including <net/errno.h>." >&4
15894 echo "We won't be including <net/errno.h>." >&4
15903 : see if netinet/tcp.h is available
15904 set netinet/tcp.h i_netinettcp
15907 : see if this is a poll.h system
15911 : see if this is a prot.h system
15916 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15917 $cat <<'EOSH' > Cppsym.know
15918 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15919 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15920 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15921 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15922 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15923 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15924 bull c cadmus clipper CMU COFF COMPILER_VERSION
15925 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15926 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15927 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15928 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15929 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15930 H3050R H3050RX hbullx20 hcx host_mips
15931 hp200 hp300 hp700 HP700 hp800 hp9000
15932 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15933 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15934 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15935 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15936 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15937 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15938 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15939 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15940 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15941 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15942 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15943 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15944 MATH_HAS_NO_SIDE_EFFECTS
15945 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15946 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15947 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15948 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15949 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15950 NetBSD news1500 news1700 news1800 news1900 news3700
15951 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15952 ns32016 ns32332 ns32k nsc32000
15953 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15954 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15955 pc532 pdp11 PGC PIC plexus PORTAR posix
15956 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15957 POSIX_C_SOURCE POSIX_SOURCE POWER
15958 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15959 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15960 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15961 sony sony_news sonyrisc sparc sparclite spectrum
15962 stardent stdc STDC_EXT stratos sun sun3 sun386
15963 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15964 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15965 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15966 sysV68 sysV88 Tek4132 Tek4300 titan
15967 TM3200 TM5400 TM5600
15968 tower tower32 tower32_200 tower32_600 tower32_700
15969 tower32_800 tower32_850 tss
15970 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15971 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15972 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15973 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15974 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15975 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15978 # Maybe put other stuff here too.
15979 cat <<EOSH >>Cppsym.know
15982 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15983 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15984 $cat Cppsym.know > Cppsym.c
15985 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15986 $rm -f Cppsym.a Cppsym.b Cppsym.c
15987 cat <<EOSH > Cppsym
15989 if $test \$# -gt 0; then
15990 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15991 if $test -s Cppsym.got; then
15998 $tr " " "$trnl" | ./Cppsym.try
16004 cat <<EOSH > Cppsym.try
16006 cat <<'EOCP' > try.c
16012 cat <<'EOSH' >> Cppsym.try
16014 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
16015 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
16016 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
16017 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
16019 echo 'return 0;}' >> try.c
16021 cat <<EOSH >> Cppsym.try
16023 case "$osname-$gccversion" in
16024 irix-) ccflags="\$ccflags -woff 1178" ;;
16025 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16027 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16029 chmod +x Cppsym.try
16030 $eunicefix Cppsym.try
16031 ./Cppsym < Cppsym.know > Cppsym.true
16032 : now check the C compiler for additional symbols
16033 postprocess_cc_v=''
16035 aix) postprocess_cc_v="|$tr , ' '" ;;
16042 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16045 -D*) echo "\$i" | $sed 's/^-D//';;
16046 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16051 postprocess_cc_v=''
16054 ./ccsym > ccsym1.raw
16055 if $test -s ccsym1.raw; then
16056 $sort ccsym1.raw | $uniq >ccsym.raw
16058 mv ccsym1.raw ccsym.raw
16061 $awk '/\=/ { print $0; next }
16062 { print $0"=1" }' ccsym.raw >ccsym.list
16063 $awk '/\=/ { print $0; next }
16064 { print $0"=1" }' Cppsym.true >ccsym.true
16065 $comm -13 ccsym.true ccsym.list >ccsym.own
16066 $comm -12 ccsym.true ccsym.list >ccsym.com
16067 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16069 if $test -z ccsym.raw; then
16070 echo "Your C compiler doesn't seem to define any symbols!" >&4
16072 echo "However, your C preprocessor defines the following symbols:"
16075 cppsymbols=`$cat Cppsym.true`
16076 cppsymbols=`echo $cppsymbols`
16077 cppccsymbols="$cppsymbols"
16079 if $test -s ccsym.com; then
16080 echo "Your C compiler and pre-processor define these symbols:"
16081 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16084 cppccsymbols=`$cat ccsym.com`
16085 cppccsymbols=`echo $cppccsymbols`
16086 $test "$silent" || sleep 1
16088 if $test -s ccsym.cpp; then
16089 $test "$also" && echo " "
16090 echo "Your C pre-processor ${also}defines the following symbols:"
16091 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16093 cppsymbols=`$cat ccsym.cpp`
16094 cppsymbols=`echo $cppsymbols`
16095 $test "$silent" || sleep 1
16097 if $test -s ccsym.own; then
16098 $test "$also" && echo " "
16099 echo "Your C compiler ${also}defines the following cpp symbols:"
16100 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16101 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16102 ccsymbols=`$cat ccsym.own`
16103 ccsymbols=`echo $ccsymbols`
16104 $test "$silent" || sleep 1
16108 : see if this is a termio system
16112 if $test `./findhdr termios.h`; then
16113 set tcsetattr i_termios
16119 "$define") echo "You have POSIX termios.h... good!" >&4;;
16120 *) if ./Cppsym pyr; then
16121 case "`/bin/universe`" in
16122 ucb) if $test `./findhdr sgtty.h`; then
16124 echo "<sgtty.h> found." >&4
16126 echo "System is pyramid with BSD universe."
16127 echo "<sgtty.h> not found--you could have problems." >&4
16129 *) if $test `./findhdr termio.h`; then
16131 echo "<termio.h> found." >&4
16133 echo "System is pyramid with USG universe."
16134 echo "<termio.h> not found--you could have problems." >&4
16138 if $test `./findhdr termio.h`; then
16139 echo "<termio.h> found." >&4
16141 elif $test `./findhdr sgtty.h`; then
16142 echo "<sgtty.h> found." >&4
16145 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16148 if $test `./findhdr sgtty.h`; then
16149 echo "<sgtty.h> found." >&4
16151 elif $test `./findhdr termio.h`; then
16152 echo "<termio.h> found." >&4
16155 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16159 set i_termio; eval $setvar
16160 val=$val2; set i_sgtty; eval $setvar
16161 val=$val3; set i_termios; eval $setvar
16163 : see if this is a shadow.h system
16164 set shadow.h i_shadow
16167 : see if stddef is available
16168 set stddef.h i_stddef
16171 : see if this is a sunmath.h system
16172 set sunmath.h i_sunmath
16175 : see if sys/access.h is available
16176 set sys/access.h i_sysaccess
16179 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16180 set sys/filio.h i_sysfilio
16183 if $test `./findhdr sys/ioctl.h`; then
16185 echo '<sys/ioctl.h> found.' >&4
16188 if $test $i_sysfilio = "$define"; then
16189 echo '<sys/ioctl.h> NOT found.' >&4
16191 $test $i_sgtty = "$define" && xxx="sgtty.h"
16192 $test $i_termio = "$define" && xxx="termio.h"
16193 $test $i_termios = "$define" && xxx="termios.h"
16194 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16200 : see if socket ioctl defs are in sys/sockio.h
16202 xxx=`./findhdr sys/sockio.h`
16203 if $test "$xxx"; then
16204 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16206 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16209 echo "No socket ioctls found in <sys/sockio.h>." >&4
16214 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16221 : see if this is a syslog.h system
16222 set syslog.h i_syslog
16226 : see if this is a sys/mode.h system
16227 set sys/mode.h i_sysmode
16230 : see if sys/resource.h has to be included
16231 set sys/resource.h i_sysresrc
16234 : see if sys/security.h is available
16235 set sys/security.h i_syssecrt
16238 : see if this is a sys/statvfs.h system
16239 set sys/statvfs.h i_sysstatvfs
16242 : see if this is a sys/un.h system
16243 set sys/un.h i_sysun
16247 : see if this is a sys/utsname.h system
16248 set sys/utsname.h i_sysutsname
16251 : see if this is a syswait system
16252 set sys/wait.h i_syswait
16255 : see if this is a ustat.h system
16256 set ustat.h i_ustat
16259 : see if this is an utime system
16260 set utime.h i_utime
16263 : see if this is a values.h system
16264 set values.h i_values
16267 : see if this is a vfork system
16270 set vfork.h i_vfork
16278 : see if gdbm.h is available
16283 : see if gdbm_open exists
16284 set gdbm_open d_gdbm_open
16286 case "$d_gdbm_open" in
16289 echo "We won't be including <gdbm.h>"
16299 echo "Looking for extensions..." >&4
16300 : If we are using the old config.sh, known_extensions may contain
16301 : old or inaccurate or duplicate values.
16302 known_extensions=''
16303 nonxs_extensions=''
16304 : We do not use find because it might not be available.
16305 : We do not just use MANIFEST because the user may have dropped
16306 : some additional extensions into the source tree and expect them
16309 : Function to recursively find available extensions, ignoring DynaLoader
16310 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16314 DynaLoader|dynaload) ;;
16316 if $test -f $xxx/$xxx.xs; then
16317 known_extensions="$known_extensions $1$xxx";
16318 elif $test -f $xxx/Makefile.PL; then
16319 nonxs_extensions="$nonxs_extensions $1$xxx";
16321 if $test -d $xxx -a $# -lt 10; then
16324 eval $find_extensions;
16336 eval $find_extensions
16337 set X $nonxs_extensions
16339 nonxs_extensions="$*"
16340 set X $known_extensions
16342 known_extensions="$*"
16345 : Now see which are supported on this system.
16347 for xxx in $known_extensions ; do
16351 $define) avail_ext="$avail_ext $xxx" ;;
16354 GDBM_File|gdbm_fil)
16356 $define) avail_ext="$avail_ext $xxx" ;;
16359 I18N/Langinfo|i18n_lan)
16360 case "$i_langinfo$d_nl_langinfo" in
16361 $define$define) avail_ext="$avail_ext $xxx" ;;
16364 NDBM_File|ndbm_fil)
16367 case "$osname-$use64bitint" in
16368 cygwin-*|hpux-define)
16370 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16373 *) avail_ext="$avail_ext $xxx" ;;
16378 ODBM_File|odbm_fil)
16379 case "${i_dbm}${i_rpcsvcdbm}" in
16381 case "$osname-$use64bitint" in
16382 cygwin-*|hpux-define)
16384 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16387 *) avail_ext="$avail_ext $xxx" ;;
16393 case "$useposix" in
16394 true|define|y) avail_ext="$avail_ext $xxx" ;;
16398 case "$useopcode" in
16399 true|define|y) avail_ext="$avail_ext $xxx" ;;
16403 case "$d_socket" in
16404 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16407 Sys/Syslog|sys/syslog)
16408 : XXX syslog requires socket
16409 case "$d_socket" in
16410 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16414 case "$usethreads" in
16416 case "$useithreads" in
16417 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16422 case "$usethreads" in
16424 case "$useithreads" in
16425 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16430 : XXX Do we need a useipcsysv variable here
16431 case "${d_msg}${d_sem}${d_shm}" in
16432 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16435 *) avail_ext="$avail_ext $xxx"
16444 : Now see which nonxs extensions are supported on this system.
16445 : For now assume all are.
16447 for xxx in $nonxs_extensions ; do
16449 *) nonxs_ext="$nonxs_ext $xxx"
16461 A number of extensions are supplied with $package. You may choose to
16462 compile these extensions for dynamic loading (the default), compile
16463 them into the $package executable (static loading), or not include
16464 them at all. Answer "none" to include no extensions.
16465 Note that DynaLoader is always built and need not be mentioned here.
16468 case "$dynamic_ext" in
16469 '') dflt="$avail_ext" ;;
16470 *) dflt="$dynamic_ext"
16471 # Perhaps we are reusing an old out-of-date config.sh.
16474 if test X"$dynamic_ext" != X"$avail_ext"; then
16476 NOTICE: Your previous config.sh list may be incorrect.
16477 The extensions now available to you are
16479 but the default list from your previous config.sh is
16491 rp="What extensions do you wish to load dynamically?"
16494 none) dynamic_ext=' ' ;;
16495 *) dynamic_ext="$ans" ;;
16498 case "$static_ext" in
16500 : Exclude those already listed in dynamic linking
16502 for xxx in $avail_ext; do
16503 case " $dynamic_ext " in
16505 *) dflt="$dflt $xxx" ;;
16512 *) dflt="$static_ext"
16519 rp="What extensions do you wish to load statically?"
16522 none) static_ext=' ' ;;
16523 *) static_ext="$ans" ;;
16528 A number of extensions are supplied with $package. Answer "none"
16529 to include no extensions.
16530 Note that DynaLoader is always built and need not be mentioned here.
16533 case "$static_ext" in
16534 '') dflt="$avail_ext" ;;
16535 *) dflt="$static_ext"
16536 # Perhaps we are reusing an old out-of-date config.sh.
16539 if test X"$static_ext" != X"$avail_ext"; then
16541 NOTICE: Your previous config.sh list may be incorrect.
16542 The extensions now available to you are
16544 but the default list from your previous config.sh is
16553 : Exclude those that are not xs extensions
16557 rp="What extensions do you wish to include?"
16560 none) static_ext=' ' ;;
16561 *) static_ext="$ans" ;;
16566 set X $dynamic_ext $static_ext $nonxs_ext
16570 : Remove libraries needed only for extensions
16571 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16572 : The exception is SunOS 4.x, which needs them.
16573 case "${osname}X${osvers}" in
16577 *) case "$usedl" in
16578 $define|true|[yY]*)
16579 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16583 *) perllibs="$libs"
16589 : Remove build directory name from cppstdin so it can be used from
16590 : either the present location or the final installed location.
16592 : Get out of the UU directory to get correct path name.
16594 case "$cppstdin" in
16596 echo "Stripping down cppstdin path name"
16602 : end of configuration questions
16604 echo "End of configuration questions."
16607 : back to where it started
16608 if test -d ../UU; then
16612 : configuration may be patched via a 'config.over' file
16613 if $test -f config.over; then
16616 rp='I see a config.over file. Do you wish to load it?'
16619 n*) echo "OK, I'll ignore it.";;
16621 echo "Configuration override changes have been loaded."
16626 : in case they want portability, strip down executable paths
16627 case "$d_portable" in
16630 echo "Stripping down executable paths..." >&4
16631 for file in $loclist $trylist; do
16633 eval $file=`basename $temp`
16638 : create config.sh file
16640 echo "Creating config.sh..." >&4
16641 $spitshell <<EOT >config.sh
16644 # This file was produced by running the Configure script. It holds all the
16645 # definitions figured out by Configure. Should you modify one of these values,
16646 # do not forget to propagate your changes by running "Configure -der". You may
16647 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16650 # Package name : $package
16651 # Source directory : $src
16652 # Configuration time: $cf_time
16653 # Configured by : $cf_by
16654 # Target system : $myuname
16664 Revision='$Revision'
16672 alignbytes='$alignbytes'
16673 ansi2knr='$ansi2knr'
16674 aphostname='$aphostname'
16675 api_revision='$api_revision'
16676 api_subversion='$api_subversion'
16677 api_version='$api_version'
16678 api_versionstring='$api_versionstring'
16681 archlibexp='$archlibexp'
16682 archname64='$archname64'
16683 archname='$archname'
16684 archobjs='$archobjs'
16689 bincompat5005='$bincompat5005'
16693 byteorder='$byteorder'
16695 castflags='$castflags'
16698 cccdlflags='$cccdlflags'
16699 ccdlflags='$ccdlflags'
16701 ccflags_uselargefiles='$ccflags_uselargefiles'
16703 ccsymbols='$ccsymbols'
16704 ccversion='$ccversion'
16706 cf_email='$cf_email'
16708 charsize='$charsize'
16712 clocktype='$clocktype'
16714 compress='$compress'
16715 contains='$contains'
16719 cpp_stuff='$cpp_stuff'
16720 cppccsymbols='$cppccsymbols'
16721 cppflags='$cppflags'
16723 cppminus='$cppminus'
16725 cppstdin='$cppstdin'
16726 cppsymbols='$cppsymbols'
16727 cryptlib='$cryptlib'
16729 d_Gconvert='$d_Gconvert'
16730 d_PRIEUldbl='$d_PRIEUldbl'
16731 d_PRIFUldbl='$d_PRIFUldbl'
16732 d_PRIGUldbl='$d_PRIGUldbl'
16733 d_PRIXU64='$d_PRIXU64'
16734 d_PRId64='$d_PRId64'
16735 d_PRIeldbl='$d_PRIeldbl'
16736 d_PRIfldbl='$d_PRIfldbl'
16737 d_PRIgldbl='$d_PRIgldbl'
16738 d_PRIi64='$d_PRIi64'
16739 d_PRIo64='$d_PRIo64'
16740 d_PRIu64='$d_PRIu64'
16741 d_PRIx64='$d_PRIx64'
16742 d_SCNfldbl='$d_SCNfldbl'
16743 d__fwalk='$d__fwalk'
16744 d_access='$d_access'
16745 d_accessx='$d_accessx'
16747 d_archlib='$d_archlib'
16750 d_attribut='$d_attribut'
16753 d_bincompat5005='$d_bincompat5005'
16755 d_bsdgetpgrp='$d_bsdgetpgrp'
16756 d_bsdsetpgrp='$d_bsdsetpgrp'
16758 d_casti32='$d_casti32'
16759 d_castneg='$d_castneg'
16760 d_charvspr='$d_charvspr'
16762 d_chroot='$d_chroot'
16763 d_chsize='$d_chsize'
16765 d_closedir='$d_closedir'
16766 d_cmsghdr_s='$d_cmsghdr_s'
16770 d_cuserid='$d_cuserid'
16771 d_dbl_dig='$d_dbl_dig'
16772 d_dbminitproto='$d_dbminitproto'
16773 d_difftime='$d_difftime'
16774 d_dirnamlen='$d_dirnamlen'
16775 d_dlerror='$d_dlerror'
16776 d_dlopen='$d_dlopen'
16777 d_dlsymun='$d_dlsymun'
16778 d_dosuid='$d_dosuid'
16779 d_drand48proto='$d_drand48proto'
16781 d_eaccess='$d_eaccess'
16782 d_endgrent='$d_endgrent'
16783 d_endhent='$d_endhent'
16784 d_endnent='$d_endnent'
16785 d_endpent='$d_endpent'
16786 d_endpwent='$d_endpwent'
16787 d_endsent='$d_endsent'
16788 d_eofnblk='$d_eofnblk'
16789 d_eunice='$d_eunice'
16790 d_fchdir='$d_fchdir'
16791 d_fchmod='$d_fchmod'
16792 d_fchown='$d_fchown'
16794 d_fcntl_can_lock='$d_fcntl_can_lock'
16795 d_fd_macros='$d_fd_macros'
16796 d_fd_set='$d_fd_set'
16797 d_fds_bits='$d_fds_bits'
16798 d_fgetpos='$d_fgetpos'
16799 d_finite='$d_finite'
16800 d_finitel='$d_finitel'
16801 d_flexfnam='$d_flexfnam'
16803 d_flockproto='$d_flockproto'
16805 d_fp_class='$d_fp_class'
16806 d_fpathconf='$d_fpathconf'
16807 d_fpclass='$d_fpclass'
16808 d_fpclassify='$d_fpclassify'
16809 d_fpclassl='$d_fpclassl'
16810 d_fpos64_t='$d_fpos64_t'
16811 d_frexpl='$d_frexpl'
16812 d_fs_data_s='$d_fs_data_s'
16813 d_fseeko='$d_fseeko'
16814 d_fsetpos='$d_fsetpos'
16815 d_fstatfs='$d_fstatfs'
16816 d_fstatvfs='$d_fstatvfs'
16818 d_ftello='$d_ftello'
16820 d_getcwd='$d_getcwd'
16821 d_getespwnam='$d_getespwnam'
16822 d_getfsstat='$d_getfsstat'
16823 d_getgrent='$d_getgrent'
16824 d_getgrps='$d_getgrps'
16825 d_gethbyaddr='$d_gethbyaddr'
16826 d_gethbyname='$d_gethbyname'
16827 d_gethent='$d_gethent'
16828 d_gethname='$d_gethname'
16829 d_gethostprotos='$d_gethostprotos'
16830 d_getitimer='$d_getitimer'
16831 d_getlogin='$d_getlogin'
16832 d_getmnt='$d_getmnt'
16833 d_getmntent='$d_getmntent'
16834 d_getnbyaddr='$d_getnbyaddr'
16835 d_getnbyname='$d_getnbyname'
16836 d_getnent='$d_getnent'
16837 d_getnetprotos='$d_getnetprotos'
16838 d_getpagsz='$d_getpagsz'
16839 d_getpbyname='$d_getpbyname'
16840 d_getpbynumber='$d_getpbynumber'
16841 d_getpent='$d_getpent'
16842 d_getpgid='$d_getpgid'
16843 d_getpgrp2='$d_getpgrp2'
16844 d_getpgrp='$d_getpgrp'
16845 d_getppid='$d_getppid'
16846 d_getprior='$d_getprior'
16847 d_getprotoprotos='$d_getprotoprotos'
16848 d_getprpwnam='$d_getprpwnam'
16849 d_getpwent='$d_getpwent'
16850 d_getsbyname='$d_getsbyname'
16851 d_getsbyport='$d_getsbyport'
16852 d_getsent='$d_getsent'
16853 d_getservprotos='$d_getservprotos'
16854 d_getspnam='$d_getspnam'
16855 d_gettimeod='$d_gettimeod'
16856 d_gnulibc='$d_gnulibc'
16857 d_grpasswd='$d_grpasswd'
16858 d_hasmntopt='$d_hasmntopt'
16861 d_inetaton='$d_inetaton'
16862 d_int64_t='$d_int64_t'
16863 d_isascii='$d_isascii'
16864 d_isfinite='$d_isfinite'
16867 d_isnanl='$d_isnanl'
16868 d_killpg='$d_killpg'
16869 d_lchown='$d_lchown'
16870 d_ldbl_dig='$d_ldbl_dig'
16872 d_locconv='$d_locconv'
16874 d_longdbl='$d_longdbl'
16875 d_longlong='$d_longlong'
16876 d_lseekproto='$d_lseekproto'
16878 d_madvise='$d_madvise'
16880 d_mbstowcs='$d_mbstowcs'
16881 d_mbtowc='$d_mbtowc'
16882 d_memchr='$d_memchr'
16883 d_memcmp='$d_memcmp'
16884 d_memcpy='$d_memcpy'
16885 d_memmove='$d_memmove'
16886 d_memset='$d_memset'
16888 d_mkdtemp='$d_mkdtemp'
16889 d_mkfifo='$d_mkfifo'
16890 d_mkstemp='$d_mkstemp'
16891 d_mkstemps='$d_mkstemps'
16892 d_mktime='$d_mktime'
16895 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16896 d_mprotect='$d_mprotect'
16898 d_msg_ctrunc='$d_msg_ctrunc'
16899 d_msg_dontroute='$d_msg_dontroute'
16900 d_msg_oob='$d_msg_oob'
16901 d_msg_peek='$d_msg_peek'
16902 d_msg_proxy='$d_msg_proxy'
16903 d_msgctl='$d_msgctl'
16904 d_msgget='$d_msgget'
16905 d_msghdr_s='$d_msghdr_s'
16906 d_msgrcv='$d_msgrcv'
16907 d_msgsnd='$d_msgsnd'
16909 d_munmap='$d_munmap'
16910 d_mymalloc='$d_mymalloc'
16912 d_nl_langinfo='$d_nl_langinfo'
16913 d_nv_preserves_uv='$d_nv_preserves_uv'
16914 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16915 d_off64_t='$d_off64_t'
16916 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16917 d_oldpthreads='$d_oldpthreads'
16918 d_oldsock='$d_oldsock'
16920 d_pathconf='$d_pathconf'
16922 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16923 d_phostname='$d_phostname'
16926 d_portable='$d_portable'
16927 d_pthread_atfork='$d_pthread_atfork'
16928 d_pthread_yield='$d_pthread_yield'
16930 d_pwchange='$d_pwchange'
16931 d_pwclass='$d_pwclass'
16932 d_pwcomment='$d_pwcomment'
16933 d_pwexpire='$d_pwexpire'
16934 d_pwgecos='$d_pwgecos'
16935 d_pwpasswd='$d_pwpasswd'
16936 d_pwquota='$d_pwquota'
16939 d_readdir='$d_readdir'
16940 d_readlink='$d_readlink'
16942 d_recvmsg='$d_recvmsg'
16943 d_rename='$d_rename'
16944 d_rewinddir='$d_rewinddir'
16946 d_safebcpy='$d_safebcpy'
16947 d_safemcpy='$d_safemcpy'
16948 d_sanemcmp='$d_sanemcmp'
16949 d_sbrkproto='$d_sbrkproto'
16950 d_sched_yield='$d_sched_yield'
16951 d_scm_rights='$d_scm_rights'
16952 d_seekdir='$d_seekdir'
16953 d_select='$d_select'
16955 d_semctl='$d_semctl'
16956 d_semctl_semid_ds='$d_semctl_semid_ds'
16957 d_semctl_semun='$d_semctl_semun'
16958 d_semget='$d_semget'
16960 d_sendmsg='$d_sendmsg'
16961 d_setegid='$d_setegid'
16962 d_seteuid='$d_seteuid'
16963 d_setgrent='$d_setgrent'
16964 d_setgrps='$d_setgrps'
16965 d_sethent='$d_sethent'
16966 d_setitimer='$d_setitimer'
16967 d_setlinebuf='$d_setlinebuf'
16968 d_setlocale='$d_setlocale'
16969 d_setnent='$d_setnent'
16970 d_setpent='$d_setpent'
16971 d_setpgid='$d_setpgid'
16972 d_setpgrp2='$d_setpgrp2'
16973 d_setpgrp='$d_setpgrp'
16974 d_setprior='$d_setprior'
16975 d_setproctitle='$d_setproctitle'
16976 d_setpwent='$d_setpwent'
16977 d_setregid='$d_setregid'
16978 d_setresgid='$d_setresgid'
16979 d_setresuid='$d_setresuid'
16980 d_setreuid='$d_setreuid'
16981 d_setrgid='$d_setrgid'
16982 d_setruid='$d_setruid'
16983 d_setsent='$d_setsent'
16984 d_setsid='$d_setsid'
16985 d_setvbuf='$d_setvbuf'
16989 d_shmatprototype='$d_shmatprototype'
16990 d_shmctl='$d_shmctl'
16992 d_shmget='$d_shmget'
16993 d_sigaction='$d_sigaction'
16994 d_sigprocmask='$d_sigprocmask'
16995 d_sigsetjmp='$d_sigsetjmp'
16996 d_sockatmark='$d_sockatmark'
16997 d_sockatmarkproto='$d_sockatmarkproto'
16998 d_socket='$d_socket'
16999 d_socklen_t='$d_socklen_t'
17000 d_sockpair='$d_sockpair'
17001 d_socks5_init='$d_socks5_init'
17003 d_sresgproto='$d_sresgproto'
17004 d_sresuproto='$d_sresuproto'
17005 d_statblks='$d_statblks'
17006 d_statfs_f_flags='$d_statfs_f_flags'
17007 d_statfs_s='$d_statfs_s'
17008 d_statvfs='$d_statvfs'
17009 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17010 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17011 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17012 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17013 d_stdio_stream_array='$d_stdio_stream_array'
17014 d_stdiobase='$d_stdiobase'
17015 d_stdstdio='$d_stdstdio'
17016 d_strchr='$d_strchr'
17017 d_strcoll='$d_strcoll'
17018 d_strctcpy='$d_strctcpy'
17019 d_strerrm='$d_strerrm'
17020 d_strerror='$d_strerror'
17021 d_strftime='$d_strftime'
17022 d_strtod='$d_strtod'
17023 d_strtol='$d_strtol'
17024 d_strtold='$d_strtold'
17025 d_strtoll='$d_strtoll'
17026 d_strtoq='$d_strtoq'
17027 d_strtoul='$d_strtoul'
17028 d_strtoull='$d_strtoull'
17029 d_strtouq='$d_strtouq'
17030 d_strxfrm='$d_strxfrm'
17031 d_suidsafe='$d_suidsafe'
17032 d_symlink='$d_symlink'
17033 d_syscall='$d_syscall'
17034 d_syscallproto='$d_syscallproto'
17035 d_sysconf='$d_sysconf'
17036 d_sysernlst='$d_sysernlst'
17037 d_syserrlst='$d_syserrlst'
17038 d_system='$d_system'
17039 d_tcgetpgrp='$d_tcgetpgrp'
17040 d_tcsetpgrp='$d_tcsetpgrp'
17041 d_telldir='$d_telldir'
17042 d_telldirproto='$d_telldirproto'
17045 d_truncate='$d_truncate'
17046 d_tzname='$d_tzname'
17047 d_u32align='$d_u32align'
17048 d_ualarm='$d_ualarm'
17051 d_union_semun='$d_union_semun'
17052 d_unordered='$d_unordered'
17053 d_usleep='$d_usleep'
17054 d_usleepproto='$d_usleepproto'
17056 d_vendorarch='$d_vendorarch'
17057 d_vendorbin='$d_vendorbin'
17058 d_vendorlib='$d_vendorlib'
17060 d_void_closedir='$d_void_closedir'
17061 d_voidsig='$d_voidsig'
17062 d_voidtty='$d_voidtty'
17063 d_volatile='$d_volatile'
17064 d_vprintf='$d_vprintf'
17066 d_waitpid='$d_waitpid'
17067 d_wcstombs='$d_wcstombs'
17068 d_wctomb='$d_wctomb'
17069 d_writev='$d_writev'
17072 db_hashtype='$db_hashtype'
17073 db_prefixtype='$db_prefixtype'
17074 db_version_major='$db_version_major'
17075 db_version_minor='$db_version_minor'
17076 db_version_patch='$db_version_patch'
17077 defvoidused='$defvoidused'
17078 direntrytype='$direntrytype'
17081 doublesize='$doublesize'
17083 dynamic_ext='$dynamic_ext'
17089 eunicefix='$eunicefix'
17092 extensions='$extensions'
17094 fflushNULL='$fflushNULL'
17095 fflushall='$fflushall'
17097 firstmakefile='$firstmakefile'
17099 fpossize='$fpossize'
17100 fpostype='$fpostype'
17101 freetype='$freetype'
17104 full_csh='$full_csh'
17105 full_sed='$full_sed'
17106 gccosandvers='$gccosandvers'
17107 gccversion='$gccversion'
17108 gidformat='$gidformat'
17114 groupcat='$groupcat'
17115 groupstype='$groupstype'
17118 h_sysfile='$h_sysfile'
17129 i_arpainet='$i_arpainet'
17130 i_bsdioctl='$i_bsdioctl'
17133 i_dirent='$i_dirent'
17139 i_fp_class='$i_fp_class'
17142 i_ieeefp='$i_ieeefp'
17143 i_inttypes='$i_inttypes'
17144 i_langinfo='$i_langinfo'
17145 i_libutil='$i_libutil'
17146 i_limits='$i_limits'
17147 i_locale='$i_locale'
17148 i_machcthr='$i_machcthr'
17149 i_malloc='$i_malloc'
17151 i_memory='$i_memory'
17152 i_mntent='$i_mntent'
17155 i_neterrno='$i_neterrno'
17156 i_netinettcp='$i_netinettcp'
17160 i_pthread='$i_pthread'
17162 i_rpcsvcdbm='$i_rpcsvcdbm'
17165 i_shadow='$i_shadow'
17167 i_stdarg='$i_stdarg'
17168 i_stddef='$i_stddef'
17169 i_stdlib='$i_stdlib'
17170 i_string='$i_string'
17171 i_sunmath='$i_sunmath'
17172 i_sysaccess='$i_sysaccess'
17173 i_sysdir='$i_sysdir'
17174 i_sysfile='$i_sysfile'
17175 i_sysfilio='$i_sysfilio'
17177 i_sysioctl='$i_sysioctl'
17178 i_syslog='$i_syslog'
17179 i_sysmman='$i_sysmman'
17180 i_sysmode='$i_sysmode'
17181 i_sysmount='$i_sysmount'
17182 i_sysndir='$i_sysndir'
17183 i_sysparam='$i_sysparam'
17184 i_sysresrc='$i_sysresrc'
17185 i_syssecrt='$i_syssecrt'
17186 i_sysselct='$i_sysselct'
17187 i_syssockio='$i_syssockio'
17188 i_sysstat='$i_sysstat'
17189 i_sysstatfs='$i_sysstatfs'
17190 i_sysstatvfs='$i_sysstatvfs'
17191 i_systime='$i_systime'
17192 i_systimek='$i_systimek'
17193 i_systimes='$i_systimes'
17194 i_systypes='$i_systypes'
17195 i_sysuio='$i_sysuio'
17197 i_sysutsname='$i_sysutsname'
17198 i_sysvfs='$i_sysvfs'
17199 i_syswait='$i_syswait'
17200 i_termio='$i_termio'
17201 i_termios='$i_termios'
17203 i_unistd='$i_unistd'
17206 i_values='$i_values'
17207 i_varargs='$i_varargs'
17208 i_varhdr='$i_varhdr'
17210 ignore_versioned_solibs='$ignore_versioned_solibs'
17211 inc_version_list='$inc_version_list'
17212 inc_version_list_init='$inc_version_list_init'
17215 installarchlib='$installarchlib'
17216 installbin='$installbin'
17217 installman1dir='$installman1dir'
17218 installman3dir='$installman3dir'
17219 installprefix='$installprefix'
17220 installprefixexp='$installprefixexp'
17221 installprivlib='$installprivlib'
17222 installscript='$installscript'
17223 installsitearch='$installsitearch'
17224 installsitebin='$installsitebin'
17225 installsitelib='$installsitelib'
17226 installstyle='$installstyle'
17227 installusrbinperl='$installusrbinperl'
17228 installvendorarch='$installvendorarch'
17229 installvendorbin='$installvendorbin'
17230 installvendorlib='$installvendorlib'
17232 issymlink='$issymlink'
17233 ivdformat='$ivdformat'
17236 known_extensions='$known_extensions'
17239 lddlflags='$lddlflags'
17241 ldflags_uselargefiles='$ldflags_uselargefiles'
17242 ldlibpthname='$ldlibpthname'
17249 libsdirs='$libsdirs'
17250 libsfiles='$libsfiles'
17251 libsfound='$libsfound'
17252 libspath='$libspath'
17253 libswanted='$libswanted'
17254 libswanted_uselargefiles='$libswanted_uselargefiles'
17260 locincpth='$locincpth'
17261 loclibpth='$loclibpth'
17262 longdblsize='$longdblsize'
17263 longlongsize='$longlongsize'
17264 longsize='$longsize'
17268 lseeksize='$lseeksize'
17269 lseektype='$lseektype'
17273 make_set_make='$make_set_make'
17274 mallocobj='$mallocobj'
17275 mallocsrc='$mallocsrc'
17276 malloctype='$malloctype'
17278 man1direxp='$man1direxp'
17281 man3direxp='$man3direxp'
17283 mips_type='$mips_type'
17285 mmaptype='$mmaptype'
17286 modetype='$modetype'
17288 multiarch='$multiarch'
17290 myarchname='$myarchname'
17291 mydomain='$mydomain'
17292 myhostname='$myhostname'
17295 need_va_copy='$need_va_copy'
17296 netdb_hlen_type='$netdb_hlen_type'
17297 netdb_host_type='$netdb_host_type'
17298 netdb_name_type='$netdb_name_type'
17299 netdb_net_type='$netdb_net_type'
17302 nm_so_opt='$nm_so_opt'
17303 nonxs_ext='$nonxs_ext'
17305 nvEUformat='$nvEUformat'
17306 nvFUformat='$nvFUformat'
17307 nvGUformat='$nvGUformat'
17308 nveformat='$nveformat'
17309 nvfformat='$nvfformat'
17310 nvgformat='$nvgformat'
17313 o_nonblock='$o_nonblock'
17315 old_pthread_create_joinable='$old_pthread_create_joinable'
17316 optimize='$optimize'
17317 orderlib='$orderlib'
17320 otherlibdirs='$otherlibdirs'
17324 patchlevel='$patchlevel'
17325 path_sep='$path_sep'
17328 perl_patchlevel='$perl_patchlevel'
17329 perladmin='$perladmin'
17330 perllibs='$perllibs'
17331 perlpath='$perlpath'
17333 phostname='$phostname'
17336 pm_apiversion='$pm_apiversion'
17340 prefixexp='$prefixexp'
17342 privlibexp='$privlibexp'
17343 prototype='$prototype'
17345 quadkind='$quadkind'
17346 quadtype='$quadtype'
17347 randbits='$randbits'
17348 randfunc='$randfunc'
17349 randseedtype='$randseedtype'
17351 rd_nodata='$rd_nodata'
17352 revision='$revision'
17357 sPRIEUldbl='$sPRIEUldbl'
17358 sPRIFUldbl='$sPRIFUldbl'
17359 sPRIGUldbl='$sPRIGUldbl'
17360 sPRIXU64='$sPRIXU64'
17362 sPRIeldbl='$sPRIeldbl'
17363 sPRIfldbl='$sPRIfldbl'
17364 sPRIgldbl='$sPRIgldbl'
17369 sSCNfldbl='$sSCNfldbl'
17370 sched_yield='$sched_yield'
17371 scriptdir='$scriptdir'
17372 scriptdirexp='$scriptdirexp'
17374 seedfunc='$seedfunc'
17375 selectminbits='$selectminbits'
17376 selecttype='$selecttype'
17377 sendmail='$sendmail'
17380 sharpbang='$sharpbang'
17381 shmattype='$shmattype'
17382 shortsize='$shortsize'
17385 sig_count='$sig_count'
17386 sig_name='$sig_name'
17387 sig_name_init='$sig_name_init'
17389 sig_num_init='$sig_num_init'
17390 sig_size='$sig_size'
17391 signal_t='$signal_t'
17392 sitearch='$sitearch'
17393 sitearchexp='$sitearchexp'
17395 sitebinexp='$sitebinexp'
17397 sitelib_stem='$sitelib_stem'
17398 sitelibexp='$sitelibexp'
17399 siteprefix='$siteprefix'
17400 siteprefixexp='$siteprefixexp'
17401 sizesize='$sizesize'
17402 sizetype='$sizetype'
17406 sockethdr='$sockethdr'
17407 socketlib='$socketlib'
17408 socksizetype='$socksizetype'
17410 spackage='$spackage'
17411 spitshell='$spitshell'
17413 ssizetype='$ssizetype'
17414 startperl='$startperl'
17416 static_ext='$static_ext'
17418 stdio_base='$stdio_base'
17419 stdio_bufsiz='$stdio_bufsiz'
17420 stdio_cnt='$stdio_cnt'
17421 stdio_filbuf='$stdio_filbuf'
17422 stdio_ptr='$stdio_ptr'
17423 stdio_stream_array='$stdio_stream_array'
17426 subversion='$subversion'
17430 targetarch='$targetarch'
17434 timeincl='$timeincl'
17435 timetype='$timetype'
17449 uidformat='$uidformat'
17455 uquadtype='$uquadtype'
17456 use5005threads='$use5005threads'
17457 use64bitall='$use64bitall'
17458 use64bitint='$use64bitint'
17459 usecrosscompile='$usecrosscompile'
17461 useithreads='$useithreads'
17462 uselargefiles='$uselargefiles'
17463 uselongdouble='$uselongdouble'
17464 usemorebits='$usemorebits'
17465 usemultiplicity='$usemultiplicity'
17466 usemymalloc='$usemymalloc'
17468 useopcode='$useopcode'
17469 useperlio='$useperlio'
17470 useposix='$useposix'
17471 usereentrant='$usereentrant'
17473 useshrplib='$useshrplib'
17474 usesocks='$usesocks'
17475 usethreads='$usethreads'
17476 usevendorprefix='$usevendorprefix'
17477 usevfork='$usevfork'
17480 uvXUformat='$uvXUformat'
17481 uvoformat='$uvoformat'
17484 uvuformat='$uvuformat'
17485 uvxformat='$uvxformat'
17486 vendorarch='$vendorarch'
17487 vendorarchexp='$vendorarchexp'
17488 vendorbin='$vendorbin'
17489 vendorbinexp='$vendorbinexp'
17490 vendorlib='$vendorlib'
17491 vendorlib_stem='$vendorlib_stem'
17492 vendorlibexp='$vendorlibexp'
17493 vendorprefix='$vendorprefix'
17494 vendorprefixexp='$vendorprefixexp'
17496 version_patchlevel_string='$version_patchlevel_string'
17497 versiononly='$versiononly'
17499 voidflags='$voidflags'
17501 xs_apiversion='$xs_apiversion'
17503 yaccflags='$yaccflags'
17508 : Add in command line options if available
17509 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17511 : add special variables
17512 $test -f $src/patchlevel.h && \
17513 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17514 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17515 echo "PERL_CONFIG_SH=true" >>config.sh
17517 : propagate old symbols
17518 if $test -f UU/config.sh; then
17519 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17520 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17521 $sort | $uniq -u >UU/oldsyms
17522 set X `cat UU/oldsyms`
17528 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17530 echo "# Variables propagated from previous config.sh file." >>config.sh
17531 for sym in `cat UU/oldsyms`; do
17532 echo " Propagating $hint variable "'$'"$sym..."
17533 eval 'tmp="$'"${sym}"'"'
17535 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17541 : Finish up by extracting the .SH files
17545 echo "Extraction done."
17555 If you'd like to make any changes to the config.sh file before I begin
17556 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17559 rp="Press return or use a shell escape to edit config.sh:"
17564 *) : in case they cannot read
17565 sh 1>&4 -c "$ans";;
17570 : if this fails, just run all the .SH files by hand
17579 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17586 Now you need to generate make dependencies by running "$make depend".
17587 You might prefer to run it in background: "$make depend > makedepend.out &"
17588 It can take a while, so you might not want to run it right now.
17593 rp="Run $make depend now?"
17597 $make depend && echo "Now you must run '$make'."
17600 echo "You must run '$make depend' then '$make'."
17603 elif test -f [Mm]akefile; then
17605 echo "Now you must run a $make."
17607 echo "Configure done."
17610 if $test -f Policy.sh; then
17613 If you compile $package on a different machine or from a different object
17614 directory, copy the Policy.sh file from this object directory to the
17615 new one before you run Configure -- this will help you with most of
17616 the policy defaults.
17620 if $test -f config.msg; then
17621 echo "Hmm. I also noted the following information while running:"
17623 $cat config.msg >&4
17626 $rm -f kit*isdone ark*isdone