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 Sun Nov 5 00:37:41 EET 2000 [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...
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
118 case "$inksh/$needksh" in
125 case "$inksh/$avoidksh" in
131 case "$inksh/$needksh-$avoidksh-" in
134 (I see you are using the Korn shell. Some ksh's blow up on $me,
135 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
141 echo "(Feeding myself to $newsh $reason.)"
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
154 *bash*) CDPATH='.' ;;
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
462 d_old_pthread_create_joinable=''
463 old_pthread_create_joinable=''
540 d_stdio_ptr_lval_nochange_cnt=''
541 d_stdio_ptr_lval_sets_cnt=''
712 inc_version_list_init=''
730 ignore_versioned_solibs=''
788 d_perl_otherlibdirs=''
805 d_nv_preserves_uv_bits=''
903 d_stdio_stream_array=''
904 stdio_stream_array=''
914 ccflags_uselargefiles=''
915 ldflags_uselargefiles=''
916 libswanted_uselargefiles=''
959 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
962 : We must find out about Eunice early
964 if test -f /etc/unixtovms; then
965 eunicefix=/etc/unixtovms
967 if test -f /etc/unixtovms.exe; then
968 eunicefix=/etc/unixtovms.exe
975 : set useposix=false in your hint file to disable the POSIX extension.
977 : set useopcode=false in your hint file to disable the Opcode extension.
979 : Trailing extension. Override this in a hint file, if needed.
981 : Extra object files, if any, needed on this platform.
984 : Possible local include directories to search.
985 : Set locincpth to "" in a hint file to defeat local include searches.
986 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
987 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
989 : no include file wanted by default
993 : change the next line if compiling for Xenix/286 on Xenix/386
994 xlibpth='/usr/lib/386 /lib/386'
995 : Possible local library directories to search.
996 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
997 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
999 : general looking path for locating libraries
1000 glibpth="/lib /usr/lib $xlibpth"
1001 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1002 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1003 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1005 : Private path used by Configure to find libraries. Its value
1006 : is prepended to libpth. This variable takes care of special
1007 : machines, like the mips. Usually, it should be empty.
1010 : default library list
1012 : some systems want to use only the non-versioned libso:s
1013 ignore_versioned_solibs=''
1015 ccflags_uselargefiles=''
1016 ldflags_uselargefiles=''
1017 libswanted_uselargefiles=''
1018 : set usemultiplicity on the Configure command line to enable multiplicity.
1019 : set usesocks on the Configure command line to enable socks.
1020 : set usethreads on the Configure command line to enable threads.
1021 : full support for void wanted by default
1024 : List of libraries we want.
1025 : If anyone needs -lnet, put it in a hint file.
1026 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1027 libswanted="$libswanted dld ld sun m c cposix posix"
1028 libswanted="$libswanted ndir dir crypt sec"
1029 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1030 : We probably want to search /usr/shlib before most other libraries.
1031 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1032 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1033 glibpth="/usr/shlib $glibpth"
1034 : Do not use vfork unless overridden by a hint file.
1037 : Find the basic shell for Bourne shell scripts
1041 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1044 if test -f "$xxx"; then
1047 : Build up a list and do a single loop so we can 'break' out.
1048 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1049 for xxx in sh bash ksh pdksh ash; do
1051 try="$try ${p}/${xxx}"
1055 if test -f "$xxx"; then
1058 elif test -f "$xxx.exe"; then
1069 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1071 Usually it's in /bin/sh. How did you even get this far?
1072 Please contact me (Perl Maintainers) at perlbug@perl.org and
1073 we'll try to straighten this all out.
1079 : see if sh knows # comments
1080 if `$sh -c '#' >/dev/null 2>&1`; then
1084 test -f $xcat || xcat=/usr/bin/cat
1089 if test -s today; then
1092 echo "#! $xcat" > try
1096 if test -s today; then
1104 echo "Your $sh doesn't grok # comments--I will strip them later on."
1107 echo "exec grep -v '^[ ]*#'" >spitshell
1109 $eunicefix spitshell
1110 spitshell=`pwd`/spitshell
1112 echo "I presume that if # doesn't work, #! won't work either!"
1117 : figure out how to guarantee sh startup
1119 '') startsh=${sharpbang}${sh} ;;
1131 : echo "Yup, it does."
1133 echo "Hmm... '$startsh' does not guarantee sh startup..."
1134 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1139 : Save command line options in file UU/cmdline.opt for later use in
1140 : generating config.sh.
1141 cat > cmdline.opt <<EOSH
1142 # Configure command line arguments.
1149 cat >>cmdline.opt <<EOSH
1150 config_arg$argn='$arg'
1152 argn=`expr $argn + 1`
1155 : produce awk script to parse command line options
1156 cat >options.awk <<'EOF'
1158 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1160 len = length(optstr);
1161 for (i = 1; i <= len; i++) {
1162 c = substr(optstr, i, 1);
1163 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1174 if (substr(str, 1, 1) != "-") {
1175 printf("'%s'\n", str);
1179 for (i = 2; i <= len; i++) {
1180 c = substr(str, i, 1);
1182 printf("-%s\n", substr(str, i));
1188 printf("'%s'\n", substr(str, i + 1));
1201 : process the command line options
1202 set X `for arg in "$@"; do echo "X$arg"; done |
1203 sed -e s/X// | awk -f options.awk`
1208 : set up default values
1218 rm -f optdef.sh posthint.sh
1219 cat >optdef.sh <<EOS
1225 while test $# -gt 0; do
1227 -d) shift; fastread=yes;;
1228 -e) shift; alldone=cont;;
1232 if test -r "$1"; then
1235 echo "$me: cannot read config file $1." >&2
1240 -h) shift; error=true;;
1241 -r) shift; reuseval=true;;
1242 -s) shift; silent=true; realsilent=true;;
1243 -E) shift; alldone=exit;;
1244 -K) shift; knowitall=true;;
1245 -O) shift; override=true;;
1246 -S) shift; silent=true; extractsh=true;;
1251 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1252 echo "$me: ignoring -D $1" >&2
1255 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1256 *) echo "$1='define'" >> optdef.sh;;
1263 *=) echo "$1" >> optdef.sh;;
1265 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1266 echo "$me: ignoring -U $1" >&2
1268 *) echo "$1='undef'" >> optdef.sh;;
1279 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1283 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1284 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1290 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1291 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1292 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1293 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1294 *) xxx=`echo $yyy|sed 's!:.*!!'`
1295 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1301 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1303 echo "$yyy=''" >> posthint.sh ;;
1308 echo "$yyy='$zzz'" >> posthint.sh ;;
1310 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1312 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1317 echo "$yyy=$zzz" >> posthint.sh ;;
1318 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1322 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1325 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1333 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1334 [-U symbol] [-U symbol=] [-A command:symbol...]
1335 -d : use defaults for all answers.
1336 -e : go on without questioning past the production of config.sh.
1337 -f : specify an alternate default configuration file.
1338 -h : print this help message and exit (with an error status).
1339 -r : reuse C symbols value if possible (skips costly nm extraction).
1340 -s : silent mode, only echoes questions and essential information.
1341 -D : define symbol to have some value:
1342 -D symbol symbol gets the value 'define'
1343 -D symbol=value symbol gets the value 'value'
1344 -E : stop at the end of questions, after having produced config.sh.
1345 -K : do not use unless you know what you are doing.
1346 -O : let -D and -U override definitions from loaded configuration file.
1347 -S : perform variable substitutions on all .SH files (can mix with -f)
1348 -U : undefine symbol:
1349 -U symbol symbol gets the value 'undef'
1350 -U symbol= symbol gets completely empty
1351 -A : manipulate symbol after the platform specific hints have been applied:
1352 -A symbol=value append " "value to symbol
1353 -A append:symbol=value append value to symbol
1354 -A define:symbol=value define symbol to have value
1355 -A clear:symbol define symbol to be ''
1356 -A define:symbol define symbol to be 'define'
1357 -A eval:symbol=value define symbol to be eval of value
1358 -A prepend:symbol=value prepend value to symbol
1359 -A undef:symbol define symbol to be 'undef'
1360 -A undef:symbol= define symbol to be ''
1361 -V : print version number and exit (with a zero status).
1368 case "$fastread$alldone" in
1371 case "$extractsh" in
1374 if test ! -t 0; then
1375 echo "Say 'sh Configure', not 'sh <Configure'"
1385 true) exec 1>/dev/null;;
1388 : run the defines and the undefines, if any, but leave the file out there...
1391 : create the posthint manipulation script and leave the file out there...
1396 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1397 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1398 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1399 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1400 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1403 : Some greps do not return status, grrr.
1404 echo "grimblepritz" >grimble
1405 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1407 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1413 : the following should work in any shell
1417 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1418 cat >contains <<'EOSS'
1419 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1424 : Find the path to the source tree
1427 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1430 *) src=`cd ../$src && pwd` ;;
1443 if test -f $rsrc/Configure && \
1444 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1446 : found it, so we are ok.
1449 for src in . .. ../.. ../../.. ../../../..; do
1450 if test -f ../$src/Configure && \
1451 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1462 Sorry, I can't seem to locate the source dir for $package. Please start
1463 Configure with an explicit path -- i.e. /some/path/Configure.
1471 echo "Sources for $package found in \"$src\"." >&4
1475 : script used to extract .SH files with variable substitutions
1476 cat >extract <<'EOS'
1478 echo "Doing variable substitutions on .SH files..."
1479 if test -f $src/MANIFEST; then
1480 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1482 echo "(Looking for .SH files under the source directory.)"
1483 set x `(cd $src; find . -name "*.SH" -print)`
1487 0) set x `(cd $src; echo *.SH)`; shift;;
1489 if test ! -f $src/$1; then
1495 while test $name; do
1496 if test ! -d "$name"; then
1497 create="$name $create";
1498 name=`echo $name | sed -e "s|^[^/]*$||"`;
1499 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1504 for file in $create; do
1513 dir=`expr X$file : 'X\(.*\)/'`
1514 file=`expr X$file : 'X.*/\(.*\)'`
1515 (cd $dir && . ./$file)
1525 dir=`expr X$file : 'X\(.*\)/'`
1526 file=`expr X$file : 'X.*/\(.*\)'`
1527 (set x $dir; shift; eval $mkdir_p)
1537 if test -f $src/config_h.SH; then
1538 if test ! -f config.h; then
1539 : oops, they left it out of MANIFEST, probably, so do it anyway.
1545 : extract files and exit if asked to do so
1546 case "$extractsh" in
1548 case "$realsilent" in
1552 case "$config_sh" in
1553 '') config_sh='config.sh';;
1556 echo "Fetching answers from $config_sh..."
1559 test "$override" && . ./optdef.sh
1568 : Eunice requires " " instead of "", can you believe it
1571 echo "Beginning of configuration questions for $package."
1573 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1575 : first determine how to suppress newline on echo command
1577 echo "Checking echo to see how to suppress newlines..."
1578 (echo "hi there\c" ; echo " ") >.echotmp
1579 if $contains c .echotmp >/dev/null 2>&1 ; then
1590 echo $n "The star should be here-->$c"
1594 : Now test for existence of everything in MANIFEST
1596 if test -f $rsrc/MANIFEST; then
1597 echo "First let's make sure your kit is complete. Checking..." >&4
1598 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1601 for filelist in x??; do
1602 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1604 if test -s missing; then
1608 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1610 You have the option of continuing the configuration process, despite the
1611 distinct possibility that your kit is damaged, by typing 'y'es. If you
1612 do, don't blame me if something goes wrong. I advise you to type 'n'o
1613 and contact the author (perlbug@perl.org).
1616 echo $n "Continue? [n] $c" >&4
1620 echo "Continuing..." >&4
1624 echo "ABORTING..." >&4
1629 echo "Looks good..."
1632 echo "There is no MANIFEST file. I hope your kit is complete !"
1637 : Find the appropriate value for a newline for tr
1638 if test -n "$DJGPP"; then
1641 if test X"$trnl" = X; then
1642 case "`echo foo|tr '\n' x 2>/dev/null`" in
1646 if test X"$trnl" = X; then
1647 case "`echo foo|tr '\012' x 2>/dev/null`" in
1648 foox) trnl='\012' ;;
1651 if test X"$trnl" = X; then
1654 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1660 : compute the number of columns on the terminal for proper question formatting
1665 : set up the echo used in my read
1666 myecho="case \"\$xxxm\" in
1667 '') echo $n \"\$rp $c\" >&4;;
1669 '') echo $n \"[\$xxxm] $c\";;
1671 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1673 echo $n \"[\$xxxm] $c\" >&4
1675 echo $n \"\$rp [\$xxxm] $c\" >&4
1681 : now set up to do reads with possible shell escape and default assignment
1687 case "\$fastread" in
1688 yes) case "\$dflt" in
1691 case "\$silent-\$rp" in
1696 *) case "\$silent" in
1697 true) case "\$rp" in
1702 while expr "X\$ans" : "X!" >/dev/null; do
1706 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1714 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1723 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1728 echo "(OK, I'll run with -d after this question.)" >&4
1731 echo "*** Sorry, \$1 not supported yet." >&4
1741 echo "*** Substitution done -- please confirm."
1743 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1748 echo "*** Error -- try again."
1755 case "\$ans\$xxxm\$nostick" in
1767 : create .config dir to save info across Configure sessions
1768 test -d ../.config || mkdir ../.config
1769 cat >../.config/README <<EOF
1770 This directory created by Configure to save information that should
1771 persist across sessions for $package.
1773 You may safely delete it if you wish.
1776 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1778 $define|true|[yY]*) ;;
1779 *) case "$xversion" in
1782 *** WHOA THERE!!! ***
1784 This is an UNSTABLE DEVELOPMENT release.
1785 The version of this $package distribution is $xversion, that is, odd,
1786 (as opposed to even) and that signifies a development release.
1787 If you want a maintenance release, you want an even-numbered version.
1789 Do ***NOT*** install this into production use.
1790 Data corruption and crashes are possible.
1792 It is most seriously suggested that you do not continue any further
1793 unless you want to help in developing and debugging Perl.
1796 rp='Do you really want to continue?'
1800 [yY]) echo >&4 "Okay, continuing." ;;
1801 *) echo >&4 "Okay, bye."
1810 : general instructions
1813 user=`(logname) 2>/dev/null`
1815 '') user=`whoami 2>&1`;;
1817 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1820 rp='Would you like to see the instructions?'
1831 This installation shell script will examine your system and ask you questions
1832 to determine how the perl5 package should be installed. If you get
1833 stuck on a question, you may use a ! shell escape to start a subshell or
1834 execute a command. Many of the questions will have default answers in square
1835 brackets; typing carriage return will give you the default.
1837 On some of the questions which ask for file or directory names you are allowed
1838 to use the ~name construct to specify the login directory belonging to "name",
1839 even if you don't have a shell which knows about that. Questions where this is
1840 allowed will be marked "(~name ok)".
1844 dflt='Type carriage return to continue'
1848 The prompter used in this script allows you to use shell variables and
1849 backticks in your answers. You may use $1, $2, etc... to refer to the words
1850 in the default answer, as if the default line was a set of arguments given to a
1851 script shell. This means you may also use $* to repeat the whole default line,
1852 so you do not have to re-type everything to add something to the default.
1854 Everytime there is a substitution, you will have to confirm. If there is an
1855 error (e.g. an unmatched backtick), the default answer will remain unchanged
1856 and you will be prompted again.
1858 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1859 the questions and use the computed defaults (or the previous answers if there
1860 was already a config.sh file). Type 'Configure -h' for a list of options.
1861 You may also start interactively and then answer '& -d' at any prompt to turn
1862 on the non-interactive behaviour for the remainder of the execution.
1868 Much effort has been expended to ensure that this shell script will run on any
1869 Unix system. If despite that it blows up on yours, your best bet is to edit
1870 Configure and run it again. If you can't run Configure for some reason,
1871 you'll have to generate a config.sh file by hand. Whatever problems you
1872 have, let me (perlbug@perl.org) know how I blew it.
1874 This installation script affects things in two ways:
1876 1) it may do direct variable substitutions on some of the files included
1878 2) it builds a config.h file for inclusion in C programs. You may edit
1879 any of these files as the need arises after running this script.
1881 If you make a mistake on a question, there is no easy way to back up to it
1882 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1883 files. Configure will offer to let you do this before it runs the SH files.
1886 dflt='Type carriage return to continue'
1888 case "$firsttime" in
1889 true) echo $user >>../.config/instruct;;
1893 : find out where common programs are
1895 echo "Locating common programs..." >&4
1908 if test -d \$dir/\$thing; then
1914 for thisthing in \$dir/\$thing; do
1915 : just loop through to pick last item
1917 if test -f \$thisthing; then
1920 elif test -f \$dir/\$thing.exe; then
1921 if test -n "$DJGPP"; then
1922 echo \$dir/\$thing.exe
1924 : on Eunice apparently
1974 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1975 pth="$pth /lib /usr/lib"
1976 for file in $loclist; do
1980 if test -f "$xxx"; then
1983 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1984 xxx=`./loc $file $file $pth`
1987 '') xxx=`./loc $file $file $pth`;;
1988 *) xxx=`./loc $xxx $xxx $pth`;;
1994 echo $file is in $xxx.
1997 echo $file is in $xxx.
2000 echo "I don't know where '$file' is, and my life depends on it." >&4
2001 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2007 echo "Don't worry if any of the following aren't found..."
2009 for file in $trylist; do
2013 if test -f "$xxx"; then
2016 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2017 xxx=`./loc $file $file $pth`
2020 '') xxx=`./loc $file $file $pth`;;
2021 *) xxx=`./loc $xxx $xxx $pth`;;
2027 echo $file is in $xxx.
2030 echo $file is in $xxx.
2033 echo "I don't see $file out there, $say."
2040 echo "Substituting grep for egrep."
2046 echo "Substituting cp for ln."
2052 echo "Hopefully test is built into your sh."
2055 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2056 echo "Using the test built into your sh."
2064 echo "Hopefully echo is built into your sh."
2069 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2070 $echo $n "hi there$c" >foo1
2071 echo $n "hi there$c" >foo2
2072 if cmp foo1 foo2 >/dev/null 2>&1; then
2073 echo "They are compatible. In fact, they may be identical."
2080 They are not compatible! You are probably running ksh on a non-USG system.
2081 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2082 have echo built in and we may have to run some Bourne shell scripts. That
2083 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2086 $echo $n "The star should be here-->$c"
2096 cat <<'EOSC' >>checkcc
2101 int main(int argc, char *argv[]) {
2105 if $cc -o try $ccflags try.c; then
2108 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2114 case "`$cc -v -c try.c 2>&1`" in
2117 if $test X"$trygcc" = Xyes; then
2118 if gcc -o try -c try.c; then
2120 echo "You seem to have a working gcc, though." >&4
2121 rp="Would you like to use it?"
2123 if $test -f myread; then
2126 if $test -f UU/myread; then
2129 echo "Cannot find myread, sorry. Aborting." >&2
2134 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2138 if $test X"$despair" = Xyes; then
2140 You need to find a working C compiler.
2141 Either (purchase and) install the C compiler supplied by your OS vendor,
2142 or for a free C compiler try http://gcc.gnu.org/
2143 I cannot continue any further, aborting.
2153 : determine whether symbolic links are supported
2156 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2157 echo "Symbolic links are supported." >&4
2160 echo "Symbolic links are NOT supported." >&4
2165 : see whether [:lower:] and [:upper:] are supported character classes
2167 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2169 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2173 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2174 # (0xc9 and 0xd1), therefore that is a nice testing point.
2175 if test "X$up" = X -o "X$low" = X; then
2176 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2182 if test "X$up" = X -o "X$low" = X; then
2183 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2189 if test "X$up" = X -o "X$low" = X; then
2190 case "`echo IJ | od -x 2>/dev/null`" in
2192 echo "Hey, this might be EBCDIC." >&4
2193 if test "X$up" = X -o "X$low" = X; then
2194 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2195 ij) up='[A-IJ-RS-Z]'
2200 if test "X$up" = X -o "X$low" = X; then
2201 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2211 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2213 echo "Using $up and $low to convert case." >&4
2216 echo "I don't know how to translate letters from upper to lower case." >&4
2217 echo "Your tr is not acting any way I know of." >&4
2221 : set up the translation script tr, must be called with ./tr of course
2225 '[A-Z][a-z]') exec $tr '$up' '$low';;
2226 '[a-z][A-Z]') exec $tr '$low' '$up';;
2233 : Try to determine whether config.sh was made on this system
2234 case "$config_sh" in
2236 myuname=`$uname -a 2>/dev/null`
2237 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2238 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2239 # because the A-Z/a-z are not consecutive.
2240 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2241 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2242 newmyuname="$myuname"
2244 case "$knowitall" in
2246 if test -f ../config.sh; then
2247 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2248 eval "`grep myuname= ../config.sh`"
2250 if test "X$myuname" = "X$newmyuname"; then
2258 : Get old answers from old config file if Configure was run on the
2259 : same system, otherwise use the hints.
2262 if test -f config.sh; then
2264 rp="I see a config.sh file. Shall I use it to set the defaults?"
2267 n*|N*) echo "OK, I'll ignore it."
2268 mv config.sh config.sh.old
2269 myuname="$newmyuname"
2271 *) echo "Fetching default answers from your old config.sh file..." >&4
2279 : Older versions did not always set $sh. Catch re-use of such
2289 if test ! -f config.sh; then
2292 First time through, eh? I have some defaults handy for some systems
2293 that need some extra help getting the Configure answers right:
2296 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2298 : Half the following guesses are probably wrong... If you have better
2299 : tests or hints, please send them to perlbug@perl.org
2300 : The metaconfig authors would also appreciate a copy...
2301 $test -f /irix && osname=irix
2302 $test -f /xenix && osname=sco_xenix
2303 $test -f /dynix && osname=dynix
2304 $test -f /dnix && osname=dnix
2305 $test -f /lynx.os && osname=lynxos
2306 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2307 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2308 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2309 $test -f /bin/mips && /bin/mips && osname=mips
2310 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2311 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2312 $test -d /usr/apollo/bin && osname=apollo
2313 $test -f /etc/saf/_sactab && osname=svr4
2314 $test -d /usr/include/minix && osname=minix
2315 if $test -d /MachTen -o -d /MachTen_Folder; then
2317 if $test -x /sbin/version; then
2318 osvers=`/sbin/version | $awk '{print $2}' |
2319 $sed -e 's/[A-Za-z]$//'`
2320 elif $test -x /usr/etc/version; then
2321 osvers=`/usr/etc/version | $awk '{print $2}' |
2322 $sed -e 's/[A-Za-z]$//'`
2328 $test -f /sys/posix.dll &&
2329 $test -f /usr/bin/what &&
2330 set X `/usr/bin/what /sys/posix.dll` &&
2331 $test "$3" = UWIN &&
2335 if $test -f $uname; then
2343 umips) osname=umips ;;
2346 [23]100) osname=mips ;;
2347 next*) osname=next ;;
2349 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2350 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2353 elif $test -f /etc/kconfig; then
2355 if test "$lns" = "$ln -s"; then
2357 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2359 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2366 if test -n "$DJGPP"; then
2375 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2377 'not found') osvers="$4"."$3" ;;
2378 '<3240'|'<>3240') osvers=3.2.0 ;;
2379 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2380 '=3250'|'>3250') osvers=3.2.5 ;;
2384 bsd386) osname=bsd386
2387 cygwin*) osname=cygwin
2390 *dc.osx) osname=dcosx
2396 domainos) osname=apollo
2402 dynixptx*) osname=dynixptx
2403 osvers=`echo "$4"|sed 's/^v//'`
2405 freebsd) osname=freebsd
2407 genix) osname=genix ;;
2409 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2425 netbsd*) osname=netbsd
2428 news-os) osvers="$3"
2430 4*) osname=newsos4 ;;
2434 next*) osname=next ;;
2435 nonstop-ux) osname=nonstopux ;;
2436 POSIX-BC | posix-bc ) osname=posix-bc
2439 powerux | power_ux | powermax_os | powermaxos | \
2440 powerunix | power_unix) osname=powerux
2446 solaris) osname=solaris
2448 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2455 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2459 titanos) osname=titanos
2468 ultrix) osname=ultrix
2471 osf1|mls+) case "$5" in
2474 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2477 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2480 hp*) osname=hp_osf1 ;;
2481 mips) osname=mips_osf1 ;;
2484 unixware) osname=svr5
2490 $2) case "$osname" in
2494 : svr4.x or possibly later
2504 if test -f /stand/boot ; then
2505 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2506 if test -n "$INITPROG" -a -f "$INITPROG"; then
2507 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2508 if test -n "$isesix"; then
2516 *) if test -f /etc/systemid; then
2518 set `echo $3 | $sed 's/\./ /g'` $4
2519 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2521 elif $test -f $src/hints/sco_$1_$2.sh; then
2523 elif $test -f $src/hints/sco_$1.sh; then
2528 '') : Still unknown. Probably a generic Sys V.
2537 *) case "$osname" in
2538 '') : Still unknown. Probably a generic BSD.
2546 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2547 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2548 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2551 $rm -f UU/kernel.what
2552 elif test -d c:/.; then
2559 : Now look for a hint file osname_osvers, unless one has been
2560 : specified already.
2563 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2564 : Also try without trailing minor version numbers.
2565 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2566 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2567 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2568 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2571 *) case "$osvers" in
2574 *) if $test -f $src/hints/$file.sh ; then
2576 elif $test -f $src/hints/$xfile.sh ; then
2578 elif $test -f $src/hints/$xxfile.sh ; then
2580 elif $test -f $src/hints/$xxxfile.sh ; then
2582 elif $test -f $src/hints/$xxxxfile.sh ; then
2584 elif $test -f "$src/hints/${osname}.sh" ; then
2593 if $test -f Policy.sh ; then
2596 none) dflt="Policy" ;;
2597 *) dflt="Policy $dflt" ;;
2602 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2606 if $test -f Policy.sh ; then
2609 There's also a Policy hint file available, which should make the
2610 site-specific (policy) questions easier to answer.
2617 You may give one or more space-separated answers, or "none" if appropriate.
2618 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2619 is a good thing. DO NOT give a wrong version or a wrong OS.
2623 rp="Which of these apply, if any?"
2626 for file in $tans; do
2627 if $test X$file = XPolicy -a -f Policy.sh; then
2629 $cat Policy.sh >> UU/config.sh
2630 elif $test -f $src/hints/$file.sh; then
2631 . $src/hints/$file.sh
2632 $cat $src/hints/$file.sh >> UU/config.sh
2633 elif $test X$tans = X -o X$tans = Xnone ; then
2636 : Give one chance to correct a possible typo.
2637 echo "$file.sh does not exist"
2639 rp="hint to use instead?"
2641 for file in $ans; do
2642 if $test -f "$src/hints/$file.sh"; then
2643 . $src/hints/$file.sh
2644 $cat $src/hints/$file.sh >> UU/config.sh
2645 elif $test X$ans = X -o X$ans = Xnone ; then
2648 echo "$file.sh does not exist -- ignored."
2655 : Remember our hint file for later.
2656 if $test -f "$src/hints/$file.sh" ; then
2666 echo "Fetching default answers from $config_sh..." >&4
2670 cp $config_sh config.sh 2>/dev/null
2680 test "$override" && . ./optdef.sh
2682 : Restore computed paths
2683 for file in $loclist $trylist; do
2684 eval $file="\$_$file"
2689 Configure uses the operating system name and version to set some defaults.
2690 The default value is probably right if the name rings a bell. Otherwise,
2691 since spelling matters for me, either accept the default or answer "none"
2698 ''|' '|none) dflt=none ;;
2699 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2702 *) dflt="$osname" ;;
2704 rp="Operating system name?"
2708 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2714 ''|' '|none) dflt=none ;;
2715 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2716 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2718 ''|' ') dflt=none ;;
2723 *) dflt="$osvers" ;;
2725 rp="Operating system version?"
2735 : who configured the system
2736 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2737 cf_by=`(logname) 2>/dev/null`
2740 cf_by=`(whoami) 2>/dev/null`
2742 "") cf_by=unknown ;;
2746 : set up the script used to warn in case of inconsistency
2753 echo "*** WHOA THERE!!! ***" >&4
2754 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2755 rp=" Keep the $hint value?"
2758 y) td=$was; tu=$was;;
2762 : function used to set $1 to $val
2763 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2765 $define$undef) . ./whoa; eval "$var=\$td";;
2766 $undef$define) . ./whoa; eval "$var=\$tu";;
2767 *) eval "$var=$val";;
2770 case "$usethreads" in
2771 $define|true|[yY]*) dflt='y';;
2776 Perl can be built to take advantage of threads on some systems.
2777 To do so, Configure can be run with -Dusethreads.
2779 Note that threading is a highly experimental feature, and
2780 some known race conditions still remain. If you choose to try
2781 it, be very sure to not actually deploy it for production
2782 purposes. README.threads has more details, and is required
2783 reading if you enable threads.
2785 If this doesn't make any sense to you, just accept the default '$dflt'.
2787 rp='Build a threading Perl?'
2790 y|Y) val="$define" ;;
2796 case "$usethreads" in
2800 As of 5.5.640, Perl has two different internal threading implementations,
2801 the 5.005 version (5005threads) and an interpreter-based version
2802 (ithreads) that has one interpreter per thread. Both are very
2803 experimental. This arrangement exists to help developers work out
2804 which one is better.
2806 If you're a casual user, you probably don't want interpreter-threads
2807 at this time. There doesn't yet exist a way to create threads from
2808 within Perl in this model, i.e., "use Thread;" will NOT work.
2810 : Default to ithreads unless overridden on command line or with
2813 case "$use5005threads" in
2814 $define|true|[yY]*) dflt='n';;
2816 case "$useithreads" in
2817 $undef|false|[nN]*) dflt='n';;
2819 rp='Use interpreter-based ithreads?'
2822 y|Y) val="$define" ;;
2827 : Now set use5005threads to the opposite value.
2828 case "$useithreads" in
2829 $define) val="$undef" ;;
2836 useithreads="$undef"
2837 use5005threads="$undef"
2841 case "$d_oldpthreads" in
2842 '') : Configure tests would be welcome here. For now, assume undef.
2844 *) val="$d_oldpthreads" ;;
2850 case "$usethreads" in
2851 "$define"|true|[yY]*)
2852 : Look for a hint-file generated 'call-back-unit'. If the
2853 : user has specified that a threading perl is to be built,
2854 : we may need to set or change some other defaults.
2855 if $test -f usethreads.cbu; then
2856 echo "Your platform has some specific hints for threaded builds, using them..."
2860 (Your platform doesn't have any specific hints for threaded builds.
2861 Assuming POSIX threads, then.)
2869 Perl can be built so that multiple Perl interpreters can coexist
2870 within the same Perl executable.
2873 case "$useithreads" in
2876 This multiple interpreter support is required for interpreter-based threads.
2880 *) case "$usemultiplicity" in
2881 $define|true|[yY]*) dflt='y';;
2885 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2886 rp='Build Perl for multiplicity?'
2889 y|Y) val="$define" ;;
2897 : make some quick guesses about what we are up against
2899 $echo $n "Hmm... $c"
2909 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2910 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2912 echo "Looks kind of like an OSF/1 system, but we'll see..."
2914 elif test `echo abc | $tr a-z A-Z` = Abc ; then
2915 xxx=`./loc addbib blurfl $pth`
2916 if $test -f $xxx; then
2917 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2921 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2922 echo "Looks kind of like an extended USG system, but we'll see..."
2924 echo "Looks kind of like a USG system, but we'll see..."
2928 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2929 echo "Looks kind of like a BSD system, but we'll see..."
2933 echo "Looks kind of like a Version 7 system, but we'll see..."
2936 case "$eunicefix" in
2939 There is, however, a strange, musty smell in the air that reminds me of
2940 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2944 : it so happens the Eunice I know will not run shell scripts in Unix format
2948 echo "Congratulations. You aren't running Eunice."
2952 : Detect OS2. The p_ variable is set above in the Head.U unit.
2953 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2954 : semicolon as a patch separator
2959 I have the feeling something is not exactly right, however...don't tell me...
2960 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2961 (Or you may be running DOS with DJGPP.)
2966 if test -f /xenix; then
2967 echo "Actually, this looks more like a XENIX system..."
2972 echo "It's not Xenix..."
2977 if test -f /venix; then
2978 echo "Actually, this looks more like a VENIX system..."
2985 echo "Nor is it Venix..."
2988 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2989 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2996 rp="Use which C compiler?"
2999 : Look for a hint-file generated 'call-back-unit'. Now that the
3000 : user has specified the compiler, we may need to set or change some
3002 if $test -f cc.cbu; then
3008 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3009 $cat >gccvers.c <<EOM
3014 printf("%s\n", __VERSION__);
3016 printf("%s\n", "1");
3022 if $cc -o gccvers $ldflags gccvers.c; then
3023 gccversion=`./gccvers`
3024 case "$gccversion" in
3025 '') echo "You are not using GNU cc." ;;
3026 *) echo "You are using GNU cc $gccversion."
3032 echo "*** WHOA THERE!!! ***" >&4
3033 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3034 case "$knowitall" in
3036 echo " You'd better start hunting for one and let me know about it." >&4
3042 case "$gccversion" in
3043 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3045 case "$gccversion" in
3046 '') gccosandvers='' ;;
3047 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3048 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3050 case "$gccosandvers" in
3051 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3052 $osname$osvers) ;; # looking good
3053 $osname*) cat <<EOM >&4
3055 *** WHOA THERE!!! ***
3057 Your gcc has not been compiled for the exact release of
3058 your operating system ($gccosandvers versus $osname$osvers).
3060 In general it is a good idea to keep gcc synchronized with
3061 the operating system because otherwise serious problems
3062 may ensue when trying to compile software, like Perl.
3064 I'm trying to be optimistic here, though, and will continue.
3065 If later during the configuration and build icky compilation
3066 problems appear (headerfile conflicts being the most common
3067 manifestation), I suggest reinstalling the gcc to match
3068 your operating system release.
3072 *) gccosandvers='' ;; # failed to parse, better be silent
3080 : see how we invoke the C preprocessor
3082 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3083 cat <<'EOT' >testcpp.c
3089 if test ! -f cppstdin; then
3090 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3091 # AIX cc -E doesn't show the absolute headerfile
3092 # locations but we'll cheat by using the -M flag.
3093 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
3095 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3098 echo "Keeping your $hint cppstdin wrapper."
3101 wrapper=`pwd`/cppstdin
3105 if $test "X$cppstdin" != "X" && \
3106 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3107 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3109 echo "You used to use $cppstdin $cppminus so we'll use that again."
3111 '') echo "But let's see if we can live without a wrapper..." ;;
3113 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3114 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3116 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3119 echo "(However, $cpprun $cpplast does not work, let's see...)"
3127 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3134 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3135 $cc -E <testcpp.c >testcpp.out 2>&1; \
3136 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3137 echo "Yup, it does."
3140 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3141 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3142 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3143 echo "Yup, it does."
3146 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3147 $cc -P <testcpp.c >testcpp.out 2>&1; \
3148 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3149 echo "Yipee, that works!"
3152 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3153 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3154 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3155 echo "At long last!"
3158 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3159 $cpp <testcpp.c >testcpp.out 2>&1; \
3160 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3164 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3165 $cpp - <testcpp.c >testcpp.out 2>&1; \
3166 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3167 echo "Hooray, it works! I was beginning to wonder."
3170 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3171 $wrapper <testcpp.c >testcpp.out 2>&1; \
3172 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3178 rp="No dice. I can't find a C preprocessor. Name one:"
3182 $x_cpp <testcpp.c >testcpp.out 2>&1
3183 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3184 echo "OK, that will do." >&4
3186 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3201 echo "Perhaps can we force $cc -E using a wrapper..."
3202 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3203 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3209 echo "Nope, we'll have to live without it..."
3223 "$wrapper"|'cppstdin') ;;
3224 *) $rm -f $wrapper;;
3226 $rm -f testcpp.c testcpp.out
3228 : decide how portable to be. Allow command line overrides.
3229 case "$d_portable" in
3231 *) d_portable="$define" ;;
3234 : set up shell script to do ~ expansion
3240 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3243 if $test -f /bin/csh; then
3244 /bin/csh -f -c "glob \$1"
3249 name=\`$expr x\$1 : '..\([^/]*\)'\`
3250 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3251 if $test ! -d "\$dir"; then
3253 echo "\$me: can't locate home directory for: \$name" >&2
3258 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3274 : now set up to get a file name
3278 cat <<'EOSC' >>getfile
3294 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3295 fn=`echo $fn | sed 's/(.*)//'`
3301 loc_file=`expr $fn : '.*:\(.*\)'`
3302 fn=`expr $fn : '\(.*\):.*'`
3310 */*) fullpath=true;;
3319 *e*) exp_file=true;;
3322 *p*) nopath_ok=true;;
3327 *d*) type='Directory';;
3328 *l*) type='Locate';;
3333 Locate) what='File';;
3338 case "$d_portable" in
3346 while test "$type"; do
3351 true) rp="$rp (~name ok)";;
3354 if test -f UU/getfile.ok && \
3355 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3374 value=`UU/filexp $ans`
3377 if test "$ans" != "$value"; then
3378 echo "(That expands to $value on this system.)"
3392 /*) value="$ansexp" ;;
3393 [a-zA-Z]:/*) value="$ansexp" ;;
3398 echo "I shall only accept a full path name, as in /bin/ls." >&4
3399 echo "Use a ! shell escape if you wish to check pathnames." >&4
3402 echo "Please give a full path name, starting with slash." >&4
3405 echo "Note that using ~name is ok provided it expands well." >&4
3418 for fp in $gfpth; do
3419 if test "X$fp" = X.; then
3424 if test -f "$pf"; then
3426 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3428 echo "($value is not a plain file, but that's ok.)"
3431 if test X"$type" = X; then
3438 for fp in $gfpth; do
3439 if test "X$fp" = X.; then
3444 direxp="$fp/$ansexp"
3446 if test -d "$direxp"; then
3454 if test -d "$ansexp"; then
3455 echo "(Looking for $loc_file in directory $value.)"
3456 value="$value/$loc_file"
3457 ansexp="$ansexp/$loc_file"
3459 if test -f "$ansexp"; then
3462 case "$nopath_ok" in
3463 true) case "$value" in
3465 *) echo "Assuming $value will be in people's path."
3481 if test "$fastread" = yes; then
3486 rp="$what $value doesn't exist. Use that name anyway?"
3505 test "X$gfpthkeep" != Xy && gfpth=""
3508 : What should the include directory be ?
3510 $echo $n "Hmm... $c"
3514 if $test -f /bin/mips && /bin/mips; then
3515 echo "Looks like a MIPS system..."
3516 $cat >usr.c <<'EOCP'
3517 #ifdef SYSTYPE_BSD43
3521 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3522 dflt='/bsd43/usr/include'
3526 mips_type='System V'
3528 $rm -f usr.c usr.out
3529 echo "and you're compiling with the $mips_type compiler and libraries."
3533 echo "Doesn't look like a MIPS system."
3543 case "$xxx_prompt" in
3546 rp='Where are the include files you want to use?'
3554 : Set private lib path
3557 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3562 '') dlist="$loclibpth $plibpth $glibpth";;
3563 *) dlist="$libpth";;
3566 : Now check and see which directories actually exist, avoiding duplicates
3570 if $test -d $xxx; then
3573 *) libpth="$libpth $xxx";;
3579 Some systems have incompatible or broken versions of libraries. Among
3580 the directories listed in the question below, please remove any you
3581 know not to be holding relevant libraries, and add any that are needed.
3582 Say "none" for none.
3593 rp="Directories to use for library searches?"
3600 : compute shared library extension
3603 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3613 On some systems, shared libraries may be available. Answer 'none' if
3614 you want to suppress searching of shared libraries for the remainder
3615 of this configuration.
3618 rp='What is the file extension used for shared libraries?'
3622 : Define several unixisms.
3623 : Hints files or command line option can be used to override them.
3624 : The convoluted testing is in case hints files set either the old
3627 '') case "$exe_ext" in
3629 *) _exe="$exe_ext" ;;
3634 '') case "$lib_ext" in
3641 '') case "$obj_ext" in
3648 '') case "$path_sep" in
3659 : Which makefile gets called first. This is used by make depend.
3660 case "$firstmakefile" in
3661 '') firstmakefile='makefile';;
3665 $define|true|[yY]*) dflt='y';;
3670 Perl can be built to use the SOCKS proxy protocol library. To do so,
3671 Configure must be run with -Dusesocks.
3673 If this doesn't make any sense to you, just accept the default '$dflt'.
3675 rp='Build Perl for SOCKS?'
3678 y|Y) val="$define" ;;
3684 : Looking for optional libraries
3686 echo "Checking for optional libraries..." >&4
3691 case "$libswanted" in
3692 '') libswanted='c_s';;
3695 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3701 for thisdir in $libpth $xlibpth; do
3702 test -d $thisdir && libspath="$libspath $thisdir"
3704 for thislib in $libswanted; do
3705 for thisdir in $libspath; do
3707 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3708 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3709 $test -f "$xxx" && eval $libscheck
3710 $test -f "$xxx" && libstyle=shared
3712 if test ! -f "$xxx"; then
3713 xxx=$thisdir/lib$thislib.$so
3714 $test -f "$xxx" && eval $libscheck
3715 $test -f "$xxx" && libstyle=shared
3717 if test ! -f "$xxx"; then
3718 xxx=$thisdir/lib$thislib$_a
3719 $test -f "$xxx" && eval $libscheck
3720 $test -f "$xxx" && libstyle=static
3722 if test ! -f "$xxx"; then
3723 xxx=$thisdir/$thislib$_a
3724 $test -f "$xxx" && eval $libscheck
3725 $test -f "$xxx" && libstyle=static
3727 if test ! -f "$xxx"; then
3728 xxx=$thisdir/lib${thislib}_s$_a
3729 $test -f "$xxx" && eval $libscheck
3730 $test -f "$xxx" && libstyle=static
3731 $test -f "$xxx" && thislib=${thislib}_s
3733 if test ! -f "$xxx"; then
3734 xxx=$thisdir/Slib$thislib$_a
3735 $test -f "$xxx" && eval $libscheck
3736 $test -f "$xxx" && libstyle=static
3738 if $test -f "$xxx"; then
3740 shared) echo "Found -l$thislib (shared)." ;;
3741 static) echo "Found -l$thislib." ;;
3742 *) echo "Found -l$thislib ($libstyle)." ;;
3746 *) dflt="$dflt -l$thislib"
3747 libsfound="$libsfound $xxx"
3749 libsfiles="$libsfiles $yyy"
3750 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3751 case " $libsdirs " in
3753 *) libsdirs="$libsdirs $yyy" ;;
3760 if $test ! -f "$xxx"; then
3761 echo "No -l$thislib."
3772 ' '|'') dflt='none';;
3777 In order to compile $package on your machine, a number of libraries
3778 are usually needed. Include any other special libraries here as well.
3779 Say "none" for none. The default list is almost always right.
3783 rp="What libraries to use?"
3790 : determine optimization, if desired, or use for debug flag also
3792 ' '|$undef) dflt='none';;
3794 *) dflt="$optimize";;
3798 By default, $package compiles with the -O flag to use the optimizer.
3799 Alternately, you might want to use the symbolic debugger, which uses
3800 the -g flag (on traditional Unix systems). Either flag can be
3801 specified here. To use neither flag, specify the word "none".
3804 rp="What optimizer/debugger flag should be used?"
3808 'none') optimize=" ";;
3812 : We will not override a previous value, but we might want to
3813 : augment a hint file
3815 default|recommended)
3816 case "$gccversion" in
3817 1*) dflt='-fpcc-struct-return' ;;
3820 *-g*) dflt="$dflt -DDEBUGGING";;
3822 case "$gccversion" in
3823 2*) if test -d /etc/conf/kconfig.d &&
3824 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3830 case "$gccversion" in
3834 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3835 echo 'int main(void) { return 0; }' > gcctest.c
3836 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3837 echo "Yes, it does." 2>&1
3840 echo "Leaving current flags $ccflags alone." 2>&1
3842 *) dflt="$dflt -fno-strict-aliasing" ;;
3845 echo "Nope, it doesn't, but that's ok." 2>&1
3852 case "$mips_type" in
3853 *BSD*|'') inclwanted="$locincpth $usrinc";;
3854 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3856 for thisincl in $inclwanted; do
3857 if $test -d $thisincl; then
3858 if $test x$thisincl != x$usrinc; then
3860 *" -I$thisincl "*);;
3861 *) dflt="$dflt -I$thisincl ";;
3867 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3869 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3877 *) dflt="$dflt -D$2";;
3881 set signal.h LANGUAGE_C; eval $inctest
3885 ccflags="$ccflags -DSOCKS"
3890 default|recommended) dflt="$ccflags $dflt" ;;
3891 *) dflt="$ccflags";;
3900 Your C compiler may want other flags. For this question you should include
3901 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3902 but you should NOT include libraries or ld flags like -lwhatever. If you
3903 want $package to honor its debug switch, you should include -DDEBUGGING here.
3904 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3906 To use no flags, specify the word "none".
3912 rp="Any additional cc flags?"
3919 : the following weeds options from ccflags that are of no interest to cpp
3921 case "$gccversion" in
3922 1*) cppflags="$cppflags -D__GNUC__"
3924 case "$mips_type" in
3926 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3932 echo "Let me guess what the preprocessor flags are..." >&4
3946 *) ftry="$previous $flag";;
3948 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3949 >cpp1.out 2>/dev/null && \
3950 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3951 >cpp2.out 2>/dev/null && \
3952 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3953 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3955 cppflags="$cppflags $ftry"
3965 *-*) echo "They appear to be: $cppflags";;
3967 $rm -f cpp.c cpp?.out
3971 : flags used in final linking phase
3973 '') if ./venix; then
3979 *-posix*) dflt="$dflt -posix" ;;
3982 *) dflt="$ldflags";;
3985 : Try to guess additional flags to pick up local libraries.
3986 for thislibdir in $libpth; do
3987 case " $loclibpth " in
3990 *"-L$thislibdir "*) ;;
3991 *) dflt="$dflt -L$thislibdir" ;;
4003 Your C linker may need flags. For this question you should
4004 include -L/whatever and any other flags used by the C linker, but you
4005 should NOT include libraries like -lwhatever.
4007 Make sure you include the appropriate -L/path flags if your C linker
4008 does not normally search all of the directories you specified above,
4011 To use no flags, specify the word "none".
4015 rp="Any additional ld flags (NOT including libraries)?"
4021 rmlist="$rmlist pdp11"
4025 echo "Checking your choice of C compiler and flags for coherency..." >&4
4026 $cat > try.c <<'EOF'
4028 int main() { printf("Ok\n"); exit(0); }
4030 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4032 $cat >try.msg <<'EOM'
4033 I've tried to compile and run the following simple program:
4036 $cat try.c >> try.msg
4038 $cat >> try.msg <<EOM
4045 and I got the following output:
4049 if sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4050 if sh -c './try' >>try.msg 2>&1; then
4054 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4057 cat >> try.msg <<'EOQS'
4058 If $libs contains -lsfio, and sfio is mis-configured, then it
4059 sometimes (apparently) runs and exits with a 0 status, but with no
4060 output! It may have to do with sfio's use of _exit vs. exit.
4063 rp="You have a big problem. Shall I abort Configure"
4070 echo "The program compiled OK, but exited with status $?." >>try.msg
4071 rp="You have a problem. Shall I abort Configure"
4075 echo "I can't compile the test program." >>try.msg
4076 rp="You have a BIG problem. Shall I abort Configure"
4082 case "$knowitall" in
4084 echo "(The supplied flags or libraries might be incorrect.)"
4092 *) echo "Ok. Stopping Configure." >&4
4097 n) echo "OK, that should do.";;
4099 $rm -f try try.* core
4101 : define an is-a-typedef? function
4102 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4104 "") inclist="sys/types.h";;
4106 eval "varval=\$$var";
4110 for inc in $inclist; do
4111 echo "#include <$inc>" >>temp.c;
4113 echo "#ifdef $type" >> temp.c;
4114 echo "printf(\"We have $type\");" >> temp.c;
4115 echo "#endif" >> temp.c;
4116 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4117 if $contains $type temp.E >/dev/null 2>&1; then
4123 *) eval "$var=\$varval";;
4126 : define an is-a-typedef? function that prompts if the type is not available.
4127 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4129 "") inclist="sys/types.h";;
4131 eval "varval=\$$var";
4135 for inc in $inclist; do
4136 echo "#include <$inc>" >>temp.c;
4138 echo "#ifdef $type" >> temp.c;
4139 echo "printf(\"We have $type\");" >> temp.c;
4140 echo "#endif" >> temp.c;
4141 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4143 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4144 if $contains $type temp.E >/dev/null 2>&1; then
4145 echo "$type found." >&4;
4148 echo "$type NOT found." >&4;
4154 *) eval "$var=\$varval";;
4157 : define a shorthand compile call
4161 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4162 : define a shorthand compile call for compilations that should be ok.
4166 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4168 : check for lengths of integral types
4172 echo "Checking to see how big your integers are..." >&4
4173 $cat >intsize.c <<'EOCP'
4177 printf("intsize=%d;\n", (int)sizeof(int));
4178 printf("longsize=%d;\n", (int)sizeof(long));
4179 printf("shortsize=%d;\n", (int)sizeof(short));
4184 if eval $compile_ok && ./intsize > /dev/null; then
4186 echo "Your integers are $intsize bytes long."
4187 echo "Your long integers are $longsize bytes long."
4188 echo "Your short integers are $shortsize bytes long."
4192 Help! I can't compile and run the intsize test program: please enlighten me!
4193 (This is probably a misconfiguration in your system or libraries, and
4194 you really ought to fix it. Still, I'll try anyway.)
4198 rp="What is the size of an integer (in bytes)?"
4202 rp="What is the size of a long integer (in bytes)?"
4206 rp="What is the size of a short integer (in bytes)?"
4212 $rm -f intsize intsize.*
4214 : see what type lseek is declared as in the kernel
4215 rp="What is the type used for lseek's offset on this system?"
4216 set off_t lseektype long stdio.h sys/types.h
4220 echo "Checking to see how big your file offsets are..." >&4
4222 #include <sys/types.h>
4226 printf("%d\n", (int)sizeof($lseektype));
4231 if eval $compile_ok; then
4233 echo "Your file offsets are $lseeksize bytes long."
4237 echo "(I can't seem to compile the test program. Guessing...)"
4238 rp="What is the size of your file offsets (in bytes)?"
4244 : see what type file positions are declared as in the library
4245 rp="What is the type for file position used by fsetpos()?"
4246 set fpos_t fpostype long stdio.h sys/types.h
4251 *_t) zzz="$fpostype" ;;
4254 echo "Checking the size of $zzz..." >&4
4256 #include <sys/types.h>
4259 printf("%d\n", (int)sizeof($fpostype));
4264 if eval $compile_ok; then
4268 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4271 echo "Your $zzz is $fpossize bytes long."
4277 echo "(I can't compile the test program. Guessing...)" >&4
4278 rp="What is the size of your file positions (in bytes)?"
4285 # Backward compatibility (uselfs is deprecated).
4287 "$define"|true|[yY]*)
4290 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4292 uselargefiles="$define"
4296 case "$lseeksize:$fpossize" in
4299 You can have files larger than 2 gigabytes.
4302 *) case "$uselargefiles" in
4303 "$undef"|false|[nN]*) dflt='n' ;;
4308 Perl can be built to understand large files (files larger than 2 gigabytes)
4309 on some systems. To do so, Configure can be run with -Duselargefiles.
4311 If this doesn't make any sense to you, just accept the default '$dflt'.
4313 rp='Try to understand large files, if available?'
4316 y|Y) val="$define" ;;
4323 case "$uselargefiles" in
4325 : Look for a hint-file generated 'call-back-unit'. If the
4326 : user has specified that a large files perl is to be built,
4327 : we may need to set or change some other defaults.
4328 if $test -f uselargefiles.cbu; then
4329 echo "Your platform has some specific hints for large file builds, using them..."
4330 . ./uselargefiles.cbu
4332 echo "Rechecking to see how big your file offsets are..." >&4
4334 #include <sys/types.h>
4338 printf("%d\n", (int)sizeof($lseektype));
4343 if eval $compile_ok; then
4345 $echo "Your file offsets are now $lseeksize bytes long."
4349 echo "(I can't seem to compile the test program. Guessing...)"
4350 rp="What is the size of your file offsets (in bytes)?"
4355 *_t) zzz="$fpostype" ;;
4358 $echo $n "Rechecking the size of $zzz...$c" >&4
4360 #include <sys/types.h>
4363 printf("%d\n", (int)sizeof($fpostype));
4368 if eval $compile_ok; then
4373 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4376 echo " $fpossize bytes." >&4
4382 echo "(I can't compile the test program. Guessing...)" >&4
4383 rp="What is the size of your file positions (in bytes)?"
4393 case "$usemorebits" in
4394 "$define"|true|[yY]*)
4395 use64bitint="$define"
4396 uselongdouble="$define"
4397 usemorebits="$define"
4399 *) usemorebits="$undef"
4404 case "$uselonglong" in
4405 "$define"|true|[yY]*)
4408 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4410 use64bitint="$define"
4413 case "$use64bits" in
4414 "$define"|true|[yY]*)
4417 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4419 use64bitint="$define"
4422 case "$use64bitints" in
4423 "$define"|true|[yY]*)
4426 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4428 use64bitint="$define"
4431 case "$use64bitsint" in
4432 "$define"|true|[yY]*)
4435 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4437 use64bitint="$define"
4440 case "$uselonglongs" in
4441 "$define"|true|[yY]*)
4444 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4446 use64bitint="$define"
4449 case "$use64bitsall" in
4450 "$define"|true|[yY]*)
4453 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4455 use64bitall="$define"
4460 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4462 case "$use64bitall" in
4463 "$define"|true|[yY]*) use64bitint="$define" ;;
4469 You have natively 64-bit long integers.
4473 *) case "$use64bitint" in
4474 "$define"|true|[yY]*) dflt='y';;
4479 Perl can be built to take advantage of 64-bit integer types
4480 on some systems. To do so, Configure can be run with -Duse64bitint.
4481 Choosing this option will most probably introduce binary incompatibilities.
4483 If this doesn't make any sense to you, just accept the default '$dflt'.
4485 rp='Try to use 64-bit integers, if available?'
4488 [yY]*) val="$define" ;;
4496 case "$use64bitall" in
4497 "$define"|true|[yY]*) dflt='y' ;;
4498 *) case "$longsize" in
4506 You may also choose to try maximal 64-bitness. It means using as much
4507 64-bitness as possible on the platform. This in turn means even more
4508 binary incompatibilities. On the other hand, your platform may not
4509 have any more 64-bitness available than what you already have chosen.
4511 If this doesn't make any sense to you, just accept the default '$dflt'.
4513 rp='Try to use maximal 64-bit support, if available?'
4516 [yY]*) val="$define" ;;
4521 case "$use64bitall" in
4523 case "$use64bitint" in
4527 Since you have chosen a maximally 64-bit build, I'm also turning on
4528 the use of 64-bit integers.
4530 use64bitint="$define" ;;
4535 case "$use64bitint" in
4536 "$define"|true|[yY]*)
4537 : Look for a hint-file generated 'call-back-unit'. If the
4538 : user has specified that a 64-bit perl is to be built,
4539 : we may need to set or change some other defaults.
4540 if $test -f use64bitint.cbu; then
4541 echo "Your platform has some specific hints for 64-bit integers, using them..."
4545 4) case "$archname64" in
4546 '') archname64=64int ;;
4553 case "$use64bitall" in
4554 "$define"|true|[yY]*)
4555 : Look for a hint-file generated 'call-back-unit'. If the
4556 : user has specified that a maximally 64-bit perl is to be built,
4557 : we may need to set or change some other defaults.
4558 if $test -f use64bitall.cbu; then
4559 echo "Your platform has some specific hints for 64-bit builds, using them..."
4563 4) case "$archname64" in
4564 ''|64int) archname64=64all ;;
4572 echo "Checking for GNU C Library..." >&4
4573 cat >gnulibc.c <<EOM
4585 if eval $compile_ok && ./gnulibc; then
4587 echo "You are using the GNU C Library"
4590 echo "You are not using the GNU C Library"
4596 : see if nm is to be used to determine whether a symbol is defined or not
4600 case "$d_gnulibc" in
4603 echo "nm probably won't work on the GNU C Library." >&4
4609 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4611 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4612 echo "'nm' won't be sufficient on this sytem." >&4
4618 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4619 if $test $dflt -gt 20; then
4629 true|$define) dflt=y;;
4636 I can use $nm to extract the symbols from your C libraries. This
4637 is a time consuming task which may generate huge output on the disk (up
4638 to 3 megabytes) but that should make the symbols extraction faster. The
4639 alternative is to skip the 'nm' extraction part and to compile a small
4640 test program instead to determine whether each symbol is present. If
4641 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4642 this may be the best solution.
4644 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4647 rp="Shall I use $nm to extract C symbols from the libraries?"
4650 [Nn]*) usenm=false;;
4659 : nm options which may be necessary
4661 '') if $test -f /mach_boot; then
4663 elif $test -d /usr/ccs/lib; then
4664 nm_opt='-p' # Solaris (and SunOS?)
4665 elif $test -f /dgux; then
4667 elif $test -f /lib64/rld; then
4668 nm_opt='-p' # 64-bit Irix
4674 : nm options which may be necessary for shared libraries but illegal
4675 : for archive libraries. Thank you, Linux.
4676 case "$nm_so_opt" in
4677 '') case "$myuname" in
4679 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4680 nm_so_opt='--dynamic'
4689 : get list of predefined functions in a handy place
4694 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4701 *) for thislib in $libs; do
4704 : Handle C library specially below.
4707 thislib=`echo $thislib | $sed -e 's/^-l//'`
4708 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4710 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4712 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4714 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4716 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4718 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4720 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4725 libnames="$libnames $try"
4727 *) libnames="$libnames $thislib" ;;
4736 for xxx in $libpth; do
4737 $test -r $1 || set $xxx/libc.$so
4738 : The messy sed command sorts on library version numbers.
4740 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4741 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4743 s/[0-9][0-9]*/0000&/g
4744 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4747 $sort | $sed -e 's/^.* //'`
4750 $test -r $1 || set /usr/ccs/lib/libc.$so
4751 $test -r $1 || set /lib/libsys_s$_a
4757 if $test -r "$1"; then
4758 echo "Your (shared) C library seems to be in $1."
4760 elif $test -r /lib/libc && $test -r /lib/clib; then
4761 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4763 libc='/lib/clib /lib/libc'
4764 if $test -r /lib/syslib; then
4765 echo "(Your math library is in /lib/syslib.)"
4766 libc="$libc /lib/syslib"
4768 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4769 echo "Your C library seems to be in $libc, as you said before."
4770 elif $test -r $incpath/usr/lib/libc$_a; then
4771 libc=$incpath/usr/lib/libc$_a;
4772 echo "Your C library seems to be in $libc. That's fine."
4773 elif $test -r /lib/libc$_a; then
4775 echo "Your C library seems to be in $libc. You're normal."
4777 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4779 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4780 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4781 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4783 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4785 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4788 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4790 if $test -r "$tans"; then
4791 echo "Your C library seems to be in $tans, of all places."
4797 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4801 If the guess above is wrong (which it might be if you're using a strange
4802 compiler, or your machine supports multiple models), you can override it here.
4807 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4809 I can't seem to find your C library. I've looked in the following places:
4812 $sed 's/^/ /' libpath
4815 None of these seems to contain your C library. I need to get its name...
4820 rp='Where is your C library?'
4825 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4826 set X `cat libnames`
4829 case $# in 1) xxx=file; esac
4830 echo "Extracting names from the following $xxx for later perusal:" >&4
4832 $sed 's/^/ /' libnames >&4
4834 $echo $n "This may take a while...$c" >&4
4838 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4839 *) $nm $nm_opt $file 2>/dev/null;;
4844 $grep fprintf libc.tmp > libc.ptf
4845 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4846 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4848 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4850 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4852 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4854 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4856 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4858 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4860 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4862 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4864 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4866 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4868 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4870 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4872 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4873 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4875 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4877 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4879 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4881 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4883 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4885 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4887 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4889 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4891 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4893 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4895 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4897 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4899 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4901 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4903 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4906 $nm -p $* 2>/dev/null >libc.tmp
4907 $grep fprintf libc.tmp > libc.ptf
4908 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4909 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4915 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4917 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4918 for thisname in $libnames $libc; do
4919 $ar t $thisname >>libc.tmp
4921 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4923 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4924 # Repeat libc to extract forwarders to DLL entries too
4925 for thisname in $libnames $libc; do
4926 $ar tv $thisname >>libc.tmp
4927 # Revision 50 of EMX has bug in $ar.
4928 # it will not extract forwarders to DLL entries
4929 # Use emximp which will extract exactly them.
4930 emximp -o tmp.imp $thisname \
4932 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4933 < tmp.imp >>libc.tmp
4936 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4939 echo "$ar didn't seem to work right." >&4
4940 echo "Maybe this is a Cray...trying bld instead..." >&4
4941 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4943 for thisname in $libnames; do
4945 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4946 $ar t $thisname >>libc.tmp
4950 echo "That didn't work either. Giving up." >&4
4957 if $test -f /lib/syscalls.exp; then
4959 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4960 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4964 $rm -f libnames libpath
4966 : is a C symbol defined?
4969 -v) tf=libc.tmp; tc=""; tdc="";;
4970 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4971 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4974 case "$reuseval-$4" in
4976 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4982 if $contains $tlook $tf >/dev/null 2>&1;
4987 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4988 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
4996 $define) tval=true;;
5002 : define an is-in-libc? function
5003 inlibc='echo " "; td=$define; tu=$undef;
5004 sym=$1; var=$2; eval "was=\$$2";
5006 case "$reuseval$was" in
5016 echo "$sym() found." >&4;
5017 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5019 echo "$sym() NOT found." >&4;
5020 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5024 $define) echo "$sym() found." >&4;;
5025 *) echo "$sym() NOT found." >&4;;
5029 : see if sqrtl exists
5034 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5037 case "$uselongdouble" in
5038 $define|true|[yY]*) dflt='y';;
5043 Perl can be built to take advantage of long doubles which
5044 (if available) may give more accuracy and range for floating point numbers.
5046 If this doesn't make any sense to you, just accept the default '$dflt'.
5048 rp='Try to use long doubles if available?'
5051 y|Y) val="$define" ;;
5057 case "$uselongdouble" in
5058 true|[yY]*) uselongdouble="$define" ;;
5061 case "$uselongdouble" in
5063 : Look for a hint-file generated 'call-back-unit'. If the
5064 : user has specified that long doubles should be used,
5065 : we may need to set or change some other defaults.
5066 if $test -f uselongdouble.cbu; then
5067 echo "Your platform has some specific hints for long doubles, using them..."
5068 . ./uselongdouble.cbu
5071 (Your platform doesn't have any specific hints for long doubles.)
5077 case "$uselongdouble:$d_sqrtl" in
5081 *** You requested the use of long doubles but you do not seem to have
5082 *** the mathematic functions for long doubles. I'm disabling the use
5083 *** of long doubles.
5086 uselongdouble=$undef
5090 : check for length of double
5092 case "$doublesize" in
5094 echo "Checking to see how big your double precision numbers are..." >&4
5095 $cat >try.c <<'EOCP'
5099 printf("%d\n", (int)sizeof(double));
5104 if eval $compile_ok; then
5106 echo "Your double is $doublesize bytes long."
5109 echo "(I can't seem to compile the test program. Guessing...)"
5110 rp="What is the size of a double precision number (in bytes)?"
5118 : check for long doubles
5120 echo "Checking to see if you have long double..." >&4
5121 echo 'int main() { long double x = 7.0; }' > try.c
5123 if eval $compile; then
5125 echo "You have long double."
5128 echo "You do not have long double."
5134 : check for length of long double
5135 case "${d_longdbl}${longdblsize}" in
5138 echo "Checking to see how big your long doubles are..." >&4
5139 $cat >try.c <<'EOCP'
5143 printf("%d\n", sizeof(long double));
5148 if eval $compile; then
5149 longdblsize=`./try$exe_ext`
5150 echo "Your long doubles are $longdblsize bytes long."
5154 echo "(I can't seem to compile the test program. Guessing...)" >&4
5155 rp="What is the size of a long double (in bytes)?"
5159 if $test "X$doublesize" = "X$longdblsize"; then
5160 echo "(That isn't any different from an ordinary double.)"
5166 : determine the architecture name
5168 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5169 tarch=`arch`"-$osname"
5170 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5171 if uname -m > tmparch 2>&1 ; then
5172 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5173 -e 's/$/'"-$osname/" tmparch`
5181 case "$myarchname" in
5184 echo "(Your architecture name used to be $myarchname.)"
5191 *) dflt="$archname";;
5193 rp='What is your architecture name'
5196 case "$usethreads" in
5198 echo "Threads selected." >&4
5200 *-thread*) echo "...and architecture name already has -thread." >&4
5202 *) archname="$archname-thread"
5203 echo "...setting architecture name to $archname." >&4
5208 case "$usemultiplicity" in
5210 echo "Multiplicity selected." >&4
5212 *-multi*) echo "...and architecture name already has -multi." >&4
5214 *) archname="$archname-multi"
5215 echo "...setting architecture name to $archname." >&4
5220 case "$use64bitint$use64bitall" in
5222 case "$archname64" in
5224 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5227 case "$use64bitint" in
5228 "$define") echo "64 bit integers selected." >&4 ;;
5230 case "$use64bitall" in
5231 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5234 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5236 *) archname="$archname-$archname64"
5237 echo "...setting architecture name to $archname." >&4
5243 case "$uselongdouble" in
5245 echo "Long doubles selected." >&4
5246 case "$longdblsize" in
5248 "...but long doubles are equal to doubles, not changing architecture name." >&4
5252 *-ld*) echo "...and architecture name already has -ld." >&4
5254 *) archname="$archname-ld"
5255 echo "...setting architecture name to $archname." >&4
5263 : determine root of directory hierarchy where package will be installed.
5266 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5274 By default, $package will be installed in $dflt/bin, manual pages
5275 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5276 installation directories. Typically this is something like /usr/local.
5277 If you wish to have binaries under /usr/bin but other parts of the
5278 installation under /usr/local, that's ok: you will be prompted
5279 separately for each of the installation directories, the prefix being
5280 only used to set the defaults.
5284 rp='Installation prefix to use?'
5292 *) oldprefix="$prefix";;
5302 $define|true) afs=true ;;
5303 $undef|false) afs=false ;;
5304 *) if test -d /afs; then
5312 echo "AFS may be running... I'll be extra cautious then..." >&4
5314 echo "AFS does not seem to be running..." >&4
5317 : determine installation prefix for where package is to be installed.
5321 Since you are running AFS, I need to distinguish the directory in which
5322 files will reside from the directory in which they are installed (and from
5323 which they are presumably copied to the former directory by occult means).
5326 case "$installprefix" in
5327 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5328 *) dflt="$installprefix";;
5333 In some special cases, particularly when building $package for distribution,
5334 it is convenient to distinguish between the directory in which files should
5335 be installed from the directory ($prefix) in which they
5336 will eventually reside. For most users, these two directories are the same.
5339 case "$installprefix" in
5341 *) dflt=$installprefix;;
5345 rp='What installation prefix should I use for installing files?'
5347 installprefix="$ans"
5348 installprefixexp="$ansexp"
5350 : set the prefixit variable, to compute a suitable default value
5351 prefixit='case "$3" in
5353 case "$oldprefix" in
5354 "") eval "$1=\"\$$2\"";;
5361 ""|" ") eval "$1=\"\$$2\"";;
5367 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5369 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5370 /*-$oldprefix/*|\~*-$oldprefix/*)
5371 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5372 *) eval "$1=\"\$$2\"";;
5377 : get the patchlevel
5379 echo "Getting the current patchlevel..." >&4
5380 if $test -r $rsrc/patchlevel.h;then
5381 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5382 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5383 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5384 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5385 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5386 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5395 $echo "(You have $package version $patchlevel subversion $subversion.)"
5398 : XXX Should be a Configure test for double-dots in filenames.
5399 version=`echo $revision $patchlevel $subversion | \
5400 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5401 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5402 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5405 version=`echo $revision $patchlevel $subversion | \
5406 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5407 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5408 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5411 : Special case the 5.005_xx maintenance series, which used 5.005
5412 : without any subversion label as a subdirectory in $sitelib
5413 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5414 api_versionstring='5.005'
5417 : determine installation style
5418 : For now, try to deduce it from prefix unless it is already set.
5419 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5420 case "$installstyle" in
5421 '') case "$prefix" in
5422 *perl*) dflt='lib';;
5423 *) dflt='lib/perl5' ;;
5426 *) dflt="$installstyle" ;;
5428 : Probably not worth prompting for this since we prompt for all
5429 : the directories individually, and the prompt would be too long and
5433 : determine where private library files go
5434 : Usual default is /usr/local/lib/perl5/$version.
5435 : Also allow things like /opt/perl/lib/$version, since
5436 : /opt/perl/lib/perl5... would be redundant.
5437 : The default "style" setting is made in installstyle.U
5438 case "$installstyle" in
5439 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5440 *) set dflt privlib lib/$version ;;
5445 There are some auxiliary files for $package that need to be put into a
5446 private library directory that is accessible by everyone.
5450 rp='Pathname where the private library files will reside?'
5453 privlibexp="$ansexp"
5454 : Change installation prefix, if necessary.
5455 if $test X"$prefix" != X"$installprefix"; then
5456 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5458 installprivlib="$privlibexp"
5461 : set the prefixup variable, to restore leading tilda escape
5462 prefixup='case "$prefixexp" in
5464 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5467 : determine where public architecture dependent libraries go
5470 : privlib default is /usr/local/lib/$package/$version
5471 : archlib default is /usr/local/lib/$package/$version/$archname
5472 : privlib may have an optional trailing /share.
5473 tdflt=`echo $privlib | $sed 's,/share$,,'`
5474 tdflt=$tdflt/$archname
5483 $spackage contains architecture-dependent library files. If you are
5484 sharing libraries in a heterogeneous environment, you might store
5485 these files in a separate location. Otherwise, you can just include
5486 them with the rest of the public library files.
5490 rp='Where do you want to put the public architecture-dependent libraries?'
5493 archlibexp="$ansexp"
5494 if $test X"$archlib" = X"$privlib"; then
5499 : Change installation prefix, if necessary.
5500 if $test X"$prefix" != X"$installprefix"; then
5501 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5503 installarchlib="$archlibexp"
5507 : Binary compatibility with 5.005 is not possible for builds
5508 : with advanced features
5509 case "$usethreads$usemultiplicity" in
5511 bincompat5005="$undef"
5512 d_bincompat5005="$undef"
5516 This version of Perl can be compiled for binary compatibility with 5.005.
5517 If you decide to do so, you will be able to continue using most of the
5518 extensions that were compiled for Perl 5.005.
5521 case "$bincompat5005$d_bincompat5005" in
5522 *"$undef"*) dflt=n ;;
5525 rp='Binary compatibility with Perl 5.005?'
5528 y*) val="$define" ;;
5533 case "$d_bincompat5005" in
5535 bincompat5005="$define"
5537 *) bincompat5005="$undef"
5538 d_bincompat5005="$undef"
5545 : see if setuid scripts can be secure
5548 Some kernels have a bug that prevents setuid #! scripts from being
5549 secure. Some sites have disabled setuid #! scripts because of this.
5551 First let's decide if your kernel supports secure setuid #! scripts.
5552 (If setuid #! scripts would be secure but have been disabled anyway,
5553 don't say that they are secure if asked.)
5558 if $test -d /dev/fd; then
5559 echo "#!$ls" >reflect
5560 chmod +x,u+s reflect
5561 ./reflect >flect 2>&1
5562 if $contains "/dev/fd" flect >/dev/null; then
5563 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5567 If you are not sure if they are secure, I can check but I'll need a
5568 username and password different from the one you are using right now.
5569 If you don't have such a username or don't want me to test, simply
5573 rp='Other username to test security of setuid scripts with?'
5578 case "$d_suidsafe" in
5579 '') echo "I'll assume setuid scripts are *not* secure." >&4
5582 echo "Well, the $hint value is *not* secure." >&4
5584 *) echo "Well, the $hint value *is* secure." >&4
5589 $rm -f reflect flect
5590 echo "#!$ls" >reflect
5591 chmod +x,u+s reflect
5594 echo '"su" will (probably) prompt you for '"$ans's password."
5595 su $ans -c './reflect >flect'
5596 if $contains "/dev/fd" flect >/dev/null; then
5597 echo "Okay, it looks like setuid scripts are secure." >&4
5600 echo "I don't think setuid scripts are secure." >&4
5605 rp='Does your kernel have *secure* setuid scripts?'
5608 [yY]*) val="$define";;
5613 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5614 echo "(That's for file descriptors, not floppy disks.)"
5620 $rm -f reflect flect
5622 : now see if they want to do setuid emulation
5625 case "$d_suidsafe" in
5628 echo "No need to emulate SUID scripts since they are secure here." >& 4
5632 Some systems have disabled setuid scripts, especially systems where
5633 setuid scripts cannot be secure. On systems where setuid scripts have
5634 been disabled, the setuid/setgid bits on scripts are currently
5635 useless. It is possible for $package to detect those bits and emulate
5636 setuid/setgid in a secure fashion. This emulation will only work if
5637 setuid scripts have been disabled in your kernel.
5641 "$define") dflt=y ;;
5644 rp="Do you want to do setuid/setgid emulation?"
5647 [yY]*) val="$define";;
5655 : determine filename position in cpp output
5657 echo "Computing filename position in cpp output for #include directives..." >&4
5658 echo '#include <stdio.h>' > foo.c
5661 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5662 $grep '^[ ]*#.*stdio\.h' | \
5663 while read cline; do
5666 while $test \$# -gt 0; do
5667 if $test -r \`echo \$1 | $tr -d '"'\`; then
5672 pos=\`expr \$pos + 1\`
5684 *) pos="${fieldn}th";;
5686 echo "Your cpp writes the filename in the $pos field of the line."
5688 : locate header file
5693 for usrincdir in $usrinc
5695 if test -f \$usrincdir/\$wanted; then
5696 echo "\$usrincdir/\$wanted"
5700 awkprg='{ print \$$fieldn }'
5701 echo "#include <\$wanted>" > foo\$\$.c
5702 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5703 $grep "^[ ]*#.*\$wanted" | \
5704 while read cline; do
5705 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5707 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5708 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5713 # status = 0: grep returned 0 lines, case statement not executed
5714 # status = 1: headerfile found
5715 # status = 2: while loop executed, no headerfile found
5719 if test \$status -eq 1; then
5726 : define an alternate in-header-list? function
5727 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5728 cont=true; xxf="echo \"<\$1> found.\" >&4";
5729 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5730 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5732 case $# in 4) instead=instead;; *) instead="at last";; esac;
5733 while $test "$cont"; do
5735 var=$2; eval "was=\$$2";
5736 if $test "$xxx" && $test -r "$xxx";
5738 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5741 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5742 set $yyy; shift; shift; yyy=$@;
5743 case $# in 0) cont="";;
5744 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5745 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5746 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5747 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5751 do set $yyy; var=$2; eval "was=\$$2";
5752 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5753 set $yyy; shift; shift; yyy=$@;
5756 : see if this is a malloc.h system
5757 set malloc.h i_malloc
5760 : see if stdlib is available
5761 set stdlib.h i_stdlib
5764 : determine which malloc to compile in
5766 case "$usemymalloc" in
5767 ''|[yY]*|true|$define) dflt='y' ;;
5770 rp="Do you wish to attempt to use the malloc that comes with $package?"
5776 mallocsrc='malloc.c'
5777 mallocobj="malloc$_o"
5778 d_mymalloc="$define"
5781 : Remove malloc from list of libraries to use
5782 echo "Removing unneeded -lmalloc from library list" >&4
5783 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5786 echo "libs = $libs" >&4
5798 : compute the return types of malloc and free
5800 $cat >malloc.c <<END
5804 #include <sys/types.h>
5818 case "$malloctype" in
5820 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5827 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5831 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5838 echo "Your system uses $freetype free(), it would seem." >&4
5842 After $package is installed, you may wish to install various
5843 add-on modules and utilities. Typically, these add-ons will
5844 be installed under $prefix with the rest
5845 of this package. However, you may wish to install such add-ons
5846 elsewhere under a different prefix.
5848 If you do not wish to put everything under a single prefix, that's
5849 ok. You will be prompted for the individual locations; this siteprefix
5850 is only used to suggest the defaults.
5852 The default should be fine for most people.
5856 rp='Installation prefix to use for add-on modules and utilities?'
5857 : XXX Here might be another good place for an installstyle setting.
5858 case "$siteprefix" in
5860 *) dflt=$siteprefix ;;
5863 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5865 case "$siteprefix" in
5869 *) oldsiteprefix="$prefix";;
5874 siteprefixexp="$ansexp"
5876 : determine where site specific libraries go.
5877 : Usual default is /usr/local/lib/perl5/site_perl/$version
5878 : The default "style" setting is made in installstyle.U
5879 : XXX No longer works with Prefixit stuff.
5880 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5882 '') case "$installstyle" in
5883 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5884 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5892 The installation process will create a directory for
5893 site-specific extensions and modules. Most users find it convenient
5894 to place all site-specific files in this directory rather than in the
5895 main distribution directory.
5899 rp='Pathname for the site-specific library files?'
5902 sitelibexp="$ansexp"
5903 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5904 : Change installation prefix, if necessary.
5905 if $test X"$prefix" != X"$installprefix"; then
5906 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5908 installsitelib="$sitelibexp"
5911 : determine where site specific architecture-dependent libraries go.
5912 : sitelib default is /usr/local/lib/perl5/site_perl/$version
5913 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5914 : sitelib may have an optional trailing /share.
5916 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
5917 dflt="$dflt/$archname"
5922 set sitearch sitearch none
5926 The installation process will also create a directory for
5927 architecture-dependent site-specific extensions and modules.
5931 rp='Pathname for the site-specific architecture-dependent library files?'
5934 sitearchexp="$ansexp"
5935 : Change installation prefix, if necessary.
5936 if $test X"$prefix" != X"$installprefix"; then
5937 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5939 installsitearch="$sitearchexp"
5944 The installation process will also create a directory for
5945 vendor-supplied add-ons. Vendors who supply perl with their system
5946 may find it convenient to place all vendor-supplied files in this
5947 directory rather than in the main distribution directory. This will
5948 ease upgrades between binary-compatible maintenance versions of perl.
5950 Of course you may also use these directories in whatever way you see
5951 fit. For example, you might use them to access modules shared over a
5952 company-wide network.
5954 The default answer should be fine for most people.
5955 This causes further questions about vendor add-ons to be skipped
5956 and no vendor-specific directories will be configured for perl.
5959 rp='Do you want to configure vendor-specific add-on directories?'
5960 case "$usevendorprefix" in
5961 define|true|[yY]*) dflt=y ;;
5962 *) : User may have set vendorprefix directly on Configure command line.
5963 case "$vendorprefix" in
5972 rp='Installation prefix to use for vendor-supplied add-ons?'
5973 case "$vendorprefix" in
5975 *) dflt=$vendorprefix ;;
5978 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5980 case "$vendorprefix" in
5984 *) oldvendorprefix="$prefix";;
5988 usevendorprefix="$define"
5990 vendorprefixexp="$ansexp"
5992 *) usevendorprefix="$undef"
5998 case "$vendorprefix" in
5999 '') d_vendorlib="$undef"
6003 *) d_vendorlib="$define"
6004 : determine where vendor-supplied modules go.
6005 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6006 case "$vendorlib" in
6008 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6009 case "$installstyle" in
6010 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6011 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6014 *) dflt="$vendorlib"
6018 rp='Pathname for the vendor-supplied library files?'
6021 vendorlibexp="$ansexp"
6024 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6025 : Change installation prefix, if necessary.
6026 if $test X"$prefix" != X"$installprefix"; then
6027 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6029 installvendorlib="$vendorlibexp"
6032 case "$vendorprefix" in
6033 '') d_vendorarch="$undef"
6037 *) d_vendorarch="$define"
6038 : determine where vendor-supplied architecture-dependent libraries go.
6039 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6040 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6041 : vendorlib may have an optional trailing /share.
6042 case "$vendorarch" in
6043 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6044 dflt="$dflt/$archname"
6046 *) dflt="$vendorarch" ;;
6049 rp='Pathname for vendor-supplied architecture-dependent files?'
6052 vendorarchexp="$ansexp"
6055 : Change installation prefix, if necessary.
6056 if $test X"$prefix" != X"$installprefix"; then
6057 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6059 installvendorarch="$vendorarchexp"
6062 : Final catch-all directories to search
6065 Lastly, you can have perl look in other directories for extensions and
6066 modules in addition to those already specified.
6067 These directories will be searched after
6071 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6072 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6074 case "$otherlibdirs" in
6075 ''|' ') dflt='none' ;;
6076 *) dflt="$otherlibdirs" ;;
6079 Enter a colon-separated set of extra paths to include in perl's @INC
6080 search path, or enter 'none' for no extra paths.
6084 rp='Colon-separated list of additional directories for perl to search?'
6087 ' '|''|none) otherlibdirs=' ' ;;
6088 *) otherlibdirs="$ans" ;;
6090 case "$otherlibdirs" in
6094 set d_perl_otherlibdirs
6097 : Cruising for prototypes
6099 echo "Checking out function prototypes..." >&4
6100 $cat >prototype.c <<'EOCP'
6101 int main(int argc, char *argv[]) {
6104 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6105 echo "Your C compiler appears to support function prototypes."
6108 echo "Your C compiler doesn't seem to understand function prototypes."
6115 case "$prototype" in
6117 *) ansi2knr='ansi2knr'
6122 This version of $package can only be compiled by a compiler that
6123 understands function prototypes. Unfortunately, your C compiler
6125 doesn't seem to understand them. Sorry about that.
6127 If GNU cc is available for your system, perhaps you could try that instead.
6129 Eventually, we hope to support building Perl with pre-ANSI compilers.
6130 If you would like to help in that effort, please contact <perlbug@perl.org>.
6132 Aborting Configure now.
6138 : determine where public executables go
6143 rp='Pathname where the public executables will reside?'
6145 if $test "X$ansexp" != "X$binexp"; then
6150 : Change installation prefix, if necessary.
6151 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6152 if $test X"$prefix" != X"$installprefix"; then
6153 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6155 installbin="$binexp"
6158 : Find perl5.005 or later.
6159 echo "Looking for a previously installed perl5.005 or later... "
6161 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6162 : Check if this perl is recent and can load a simple module
6163 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6166 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6176 '') echo "None found. That's ok.";;
6177 *) echo "Using $perl5." ;;
6180 : Determine list of previous versions to include in @INC
6181 $cat > getverlist <<EOPL
6184 \$api_versionstring = "$api_versionstring";
6185 \$version = "$version";
6186 \$stem = "$sitelib_stem";
6187 \$archname = "$archname";
6189 $cat >> getverlist <<'EOPL'
6190 # Can't have leading @ because metaconfig interprets it as a command!
6191 ;@inc_version_list=();
6192 # XXX Redo to do opendir/readdir?
6195 ;@candidates = glob("5.*");
6201 # XXX ToDo: These comparisons must be reworked when two-digit
6202 # subversions come along, so that 5.7.10 compares as greater than
6203 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6204 # widespread that we can use the built-in version vectors rather
6205 # than reinventing them here. For 5.6.0, however, we must
6206 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6207 foreach $d (@candidates) {
6208 if ($d lt $version) {
6209 if ($d ge $api_versionstring) {
6210 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6212 elsif ($d ge "5.005") {
6213 unshift(@inc_version_list, grep { -d } $d);
6217 # Skip newer version. I.e. don't look in
6218 # 5.7.0 if we're installing 5.6.1.
6222 if (@inc_version_list) {
6223 print join(' ', @inc_version_list);
6226 # Blank space to preserve value for next Configure run.
6231 case "$inc_version_list" in
6232 '') if test -x "$perl5"; then
6233 dflt=`$perl5 getverlist`
6238 $undef) dflt='none' ;;
6239 *) dflt="$inc_version_list" ;;
6242 ''|' ') dflt=none ;;
6245 5.005) case "$bincompat5005" in
6246 $define|true|[yY]*) ;;
6253 In order to ease the process of upgrading, this version of perl
6254 can be configured to use modules built and installed with earlier
6255 versions of perl that were installed under $prefix. Specify here
6256 the list of earlier versions that this version of perl should check.
6257 If Configure detected no earlier versions of perl installed under
6258 $prefix, then the list will be empty. Answer 'none' to tell perl
6259 to not search earlier versions.
6261 The default should almost always be sensible, so if you're not sure,
6262 just accept the default.
6265 rp='List of earlier versions to include in @INC?'
6268 [Nn]one|''|' ') inc_version_list=' ' ;;
6269 *) inc_version_list="$ans" ;;
6271 case "$inc_version_list" in
6273 inc_version_list_init='0';;
6274 *) inc_version_list_init=`echo $inc_version_list |
6275 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6280 : determine whether to install perl also as /usr/bin/perl
6283 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6285 Many scripts expect perl to be installed as /usr/bin/perl.
6286 I can install the perl you are about to compile also as /usr/bin/perl
6287 (in addition to $installbin/perl).
6289 case "$installusrbinperl" in
6290 "$undef"|[nN]*) dflt='n';;
6293 rp="Do you want to install perl as /usr/bin/perl?"
6296 [yY]*) val="$define";;
6302 set installusrbinperl
6305 : see if dld is available
6309 : see if dlopen exists
6316 : determine which dynamic loading, if any, to compile in
6318 dldir="ext/DynaLoader"
6331 $define) dflt='y' ;;
6334 $define) dflt='y' ;;
6336 : Does a dl_xxx.xs file exist for this operating system
6337 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6340 rp="Do you wish to use dynamic loading?"
6347 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6348 dflt="$dldir/dl_${osname}.xs"
6349 elif $test "$d_dlopen" = "$define" ; then
6350 dflt="$dldir/dl_dlopen.xs"
6351 elif $test "$i_dld" = "$define" ; then
6352 dflt="$dldir/dl_dld.xs"
6357 *) dflt="$dldir/$dlsrc"
6360 echo "The following dynamic loading files are available:"
6361 : Can not go over to $dldir because getfile has path hard-coded in.
6362 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6363 rp="Source file to use for dynamic loading"
6369 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6373 Some systems may require passing special flags to $cc -c to
6374 compile modules that will be used to create a shared library.
6375 To use no flags, say "none".
6378 case "$cccdlflags" in
6379 '') case "$gccversion" in
6380 '') case "$osname" in
6382 next) dflt='none' ;;
6383 irix*) dflt='-KPIC' ;;
6384 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6385 sunos) dflt='-pic' ;;
6389 *) case "$osname" in
6390 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6395 *) dflt="$cccdlflags" ;;
6397 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6400 none) cccdlflags=' ' ;;
6401 *) cccdlflags="$ans" ;;
6406 Some systems use ld to create libraries that can be dynamically loaded,
6407 while other systems (such as those using ELF) use $cc.
6411 '') $cat >try.c <<'EOM'
6412 /* Test for whether ELF binaries are produced */
6417 int i = open("a.out",O_RDONLY);
6420 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6421 exit(0); /* succeed (yes, it's ELF) */
6426 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6428 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6432 echo "I'll use ld to build dynamic libraries."
6441 rp="What command should be used to create dynamic libraries?"
6447 Some systems may require passing special flags to $ld to create a
6448 library that can be dynamically loaded. If your ld flags include
6449 -L/other/path options to locate libraries outside your loader's normal
6450 search path, you may need to specify those -L options here as well. To
6451 use no flags, say "none".
6454 case "$lddlflags" in
6455 '') case "$osname" in
6456 beos) dflt='-nostart' ;;
6458 case "$gccversion" in
6459 '') dflt="$dflt +vnocompatwarnings" ;;
6462 linux|irix*) dflt='-shared' ;;
6463 next) dflt='none' ;;
6464 solaris) dflt='-G' ;;
6465 sunos) dflt='-assert nodefinitions' ;;
6466 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6470 *) dflt="$lddlflags" ;;
6473 : Try to guess additional flags to pick up local libraries.
6474 : Be careful not to append to a plain 'none'
6478 for thisflag in $ldflags; do
6483 *) dflt="$dflt $thisflag" ;;
6490 ''|' ') dflt='none' ;;
6493 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6496 none) lddlflags=' ' ;;
6497 *) lddlflags="$ans" ;;
6502 Some systems may require passing special flags to $cc to indicate that
6503 the resulting executable will use dynamic linking. To use no flags,
6507 case "$ccdlflags" in
6508 '') case "$osname" in
6509 hpux) dflt='-Wl,-E' ;;
6510 linux) dflt='-rdynamic' ;;
6511 next) dflt='none' ;;
6512 sunos) dflt='none' ;;
6516 *) dflt="$ccdlflags" ;;
6518 rp="Any special flags to pass to $cc to use dynamic linking?"
6521 none) ccdlflags=' ' ;;
6522 *) ccdlflags="$ans" ;;
6536 # No dynamic loading being used, so don't bother even to prompt.
6539 *) case "$useshrplib" in
6540 '') case "$osname" in
6541 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6543 also='Building a shared libperl is required for dynamic loading to work on your system.'
6548 also='Building a shared libperl is needed for MAB support.'
6566 The perl executable is normally obtained by linking perlmain.c with
6567 libperl${_a}, any static extensions (usually just DynaLoader), and
6568 any other libraries needed on this system (such as -lm, etc.). Since
6569 your system supports dynamic loading, it is probably possible to build
6570 a shared libperl.$so. If you will have more than one executable linked
6571 to libperl.$so, this will significantly reduce the size of each
6572 executable, but it may have a noticeable affect on performance. The
6573 default is probably sensible for your system.
6577 rp="Build a shared libperl.$so (y/n)"
6581 useshrplib='true' ;;
6582 *) useshrplib='false' ;;
6587 case "$useshrplib" in
6591 # Figure out a good name for libperl.so. Since it gets stored in
6592 # a version-specific architecture-dependent library, the version
6593 # number isn't really that important, except for making cc/ld happy.
6595 # A name such as libperl.so.3.1
6596 majmin="libperl.$so.$patchlevel.$subversion"
6597 # A name such as libperl.so.301
6598 majonly=`echo $patchlevel $subversion |
6599 $awk '{printf "%d%02d", $1, $2}'`
6600 majonly=libperl.$so.$majonly
6601 # I'd prefer to keep the os-specific stuff here to a minimum, and
6602 # rely on figuring it out from the naming of libc.
6603 case "${osname}${osvers}" in
6606 # XXX How handle the --version stuff for MAB?
6608 linux*) # ld won't link with a bare -lperl otherwise.
6611 cygwin*) # include version
6612 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6614 *) # Try to guess based on whether libc has major.minor.
6616 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6617 *libc.$so.[0-9]*) dflt=$majonly ;;
6618 *) dflt=libperl.$so ;;
6628 I need to select a good name for the shared libperl. If your system uses
6629 library names with major and minor numbers, then you might want something
6630 like $majmin. Alternatively, if your system uses a single version
6631 number for shared libraries, then you might want to use $majonly.
6632 Or, your system might be quite happy with a simple libperl.$so.
6634 Since the shared libperl will get installed into a version-specific
6635 architecture-dependent directory, the version number of the shared perl
6636 library probably isn't important, so the default should be o.k.
6639 rp='What name do you want to give to the shared libperl?'
6642 echo "Ok, I'll use $libperl"
6645 libperl="libperl${_a}"
6649 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6653 WARNING: Use of the shrpdir variable for the installation location of
6654 the shared $libperl is not supported. It was never documented and
6655 will not work in this version. Let me (perlbug@perl.org)
6656 know of any problems this may cause.
6662 But your current setting of $shrpdir is
6663 the default anyway, so it's harmless.
6668 Further, your current attempted setting of $shrpdir
6669 conflicts with the value of $archlibexp/CORE
6670 that installperl will use.
6677 # How will the perl executable find the installed shared $libperl?
6678 # Add $xxx to ccdlflags.
6679 # If we can't figure out a command-line option, use $shrpenv to
6680 # set env LD_RUN_PATH. The main perl makefile uses this.
6681 shrpdir=$archlibexp/CORE
6684 if "$useshrplib"; then
6687 # We'll set it in Makefile.SH...
6693 xxx="-Wl,-R$shrpdir"
6695 linux|irix*|dec_osf)
6696 xxx="-Wl,-rpath,$shrpdir"
6699 # next doesn't like the default...
6702 # beos doesn't like the default, either.
6705 # hpux doesn't like the default, either.
6706 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6709 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6715 # Only add $xxx if it isn't already in ccdlflags.
6716 case " $ccdlflags " in
6718 *) ccdlflags="$ccdlflags $xxx"
6721 Adding $xxx to the flags
6722 passed to $ld so that the perl executable will find the
6723 installed shared $libperl.
6731 # Fix ccdlflags in AIX for building external extensions.
6732 # (For building Perl itself bare -bE:perl.exp is needed,
6733 # Makefile.SH takes care of this.)
6735 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6737 # Respect a hint or command-line value.
6739 '') shrpenv="$tmp_shrpenv" ;;
6741 case "$ldlibpthname" in
6742 '') ldlibpthname=LD_LIBRARY_PATH ;;
6743 none) ldlibpthname='' ;;
6746 : determine where manual pages are on this system
6750 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6751 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6752 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6753 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6754 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6755 sysman=`./loc . /usr/man/man1 $syspath`
6758 if $test -d "$sysman"; then
6759 echo "System manual is in $sysman." >&4
6761 echo "Could not find manual pages in source form." >&4
6764 : determine where manual pages go
6765 set man1dir man1dir none
6769 $spackage has manual pages available in source form.
6773 echo "However, you don't have nroff, so they're probably useless to you."
6775 '') man1dir="none";;
6778 echo "If you don't want the manual sources installed, answer 'none'."
6783 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6784 lookpath="$lookpath $prefixexp/man/p_man/man1"
6785 lookpath="$lookpath $prefixexp/man/u_man/man1"
6786 lookpath="$lookpath $prefixexp/man/man.1"
6788 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6789 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6799 rp="Where do the main $spackage manual pages (source) go?"
6801 if $test "X$man1direxp" != "X$ansexp"; then
6805 man1direxp="$ansexp"
6811 : Change installation prefix, if necessary.
6812 if $test X"$prefix" != X"$installprefix"; then
6813 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6815 installman1dir="$man1direxp"
6818 : What suffix to use on installed man pages
6825 rp="What suffix should be used for the main $spackage man pages?"
6827 '') case "$man1dir" in
6841 *) dflt="$man1ext";;
6848 : see if we can have long filenames
6850 first=123456789abcdef
6852 if (echo hi >$first) 2>/dev/null; then
6853 if $test -f 123456789abcde; then
6854 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6857 echo 'You can have filenames longer than 14 characters.'>&4
6862 You can't have filenames longer than 14 chars.
6863 You can't even think about them!
6869 $rm -rf 123456789abcde*
6871 : determine where library module manual pages go
6872 set man3dir man3dir none
6876 $spackage has manual pages for many of the library modules.
6882 However, you don't have nroff, so they're probably useless to you.
6885 '') man3dir="none";;
6889 case "$d_flexfnam" in
6892 However, your system can't handle the long file names like File::Basename.3.
6895 '') man3dir="none";;
6899 echo "If you don't want the manual sources installed, answer 'none'."
6900 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6902 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6903 if $test -d "$privlib/man/man3"; then
6906 WARNING: Previous versions of perl installed man3 pages into
6907 $privlib/man/man3. This version will suggest a
6908 new default of $dflt.
6912 rp='Do you wish to preserve the old behavior?(y/n)'
6915 y*) dflt="$privlib/man/man3" ;;
6920 *) dflt="$man3dir" ;;
6927 rp="Where do the $package library man pages (source) go?"
6930 man3direxp="$ansexp"
6936 : Change installation prefix, if necessary.
6937 if $test X"$prefix" != X"$installprefix"; then
6938 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6940 installman3dir="$man3direxp"
6943 : What suffix to use on installed man pages
6949 rp="What suffix should be used for the $package library man pages?"
6951 '') case "$man3dir" in
6965 *) dflt="$man3ext";;
6972 : see if we have to deal with yellow pages, now NIS.
6973 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6974 if $test -f /usr/etc/nibindd; then
6976 echo "I'm fairly confident you're on a NeXT."
6978 rp='Do you get the hosts file via NetInfo?'
6987 y*) hostcat='nidump hosts .';;
6988 *) case "$hostcat" in
6989 nidump*) hostcat='';;
6999 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7007 rp='Are you getting the hosts file via yellow pages?'
7010 y*) hostcat='ypcat hosts';;
7011 *) hostcat='cat /etc/hosts';;
7017 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7020 '') test -f /etc/group && groupcat='cat /etc/group';;
7023 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7026 : now get the host name
7028 echo "Figuring out host name..." >&4
7029 case "$myhostname" in
7031 echo 'Maybe "hostname" will work...'
7032 if tans=`sh -c hostname 2>&1` ; then
7040 if $test "$cont"; then
7042 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7043 if tans=`cat /etc/systemid 2>&1` ; then
7045 phostname='cat /etc/systemid'
7046 echo "Whadyaknow. Xenix always was a bit strange..."
7049 elif $test -r /etc/systemid; then
7050 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7053 if $test "$cont"; then
7054 echo 'No, maybe "uuname -l" will work...'
7055 if tans=`sh -c 'uuname -l' 2>&1` ; then
7057 phostname='uuname -l'
7059 echo 'Strange. Maybe "uname -n" will work...'
7060 if tans=`sh -c 'uname -n' 2>&1` ; then
7062 phostname='uname -n'
7064 echo 'Oh well, maybe I can mine it out of whoami.h...'
7065 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7066 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7067 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7069 case "$myhostname" in
7070 '') echo "Does this machine have an identity crisis or something?"
7073 echo "Well, you said $myhostname before..."
7074 phostname='echo $myhostname';;
7080 : you do not want to know about this
7085 if $test "$myhostname" ; then
7087 rp='Your host name appears to be "'$myhostname'".'" Right?"
7095 : bad guess or no guess
7096 while $test "X$myhostname" = X ; do
7098 rp="Please type the (one word) name of your host:"
7103 : translate upper to lower if necessary
7104 case "$myhostname" in
7106 echo "(Normalizing case in your host name)"
7107 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7111 case "$myhostname" in
7113 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7114 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7115 echo "(Trimming domain name from host name--host name is now $myhostname)"
7117 *) case "$mydomain" in
7120 test "X$hostcat" = "Xypcat hosts" &&
7121 ypmatch "$myhostname" hosts 2>/dev/null |\
7122 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7125 test "X$hostcat" != "X" &&
7126 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7127 /[ ]$myhostname[ . ]/p" > hosts
7130 if $test -f hosts; then
7131 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7132 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7133 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7134 hosts | $sort | $uniq | \
7135 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7136 case `$echo X$dflt` in
7137 X*\ *) echo "(Several hosts in the database matched hostname)"
7140 X.) echo "(You do not have fully-qualified names in the hosts database)"
7144 echo "(I cannot locate a hosts database anywhere)"
7149 tans=`./loc resolv.conf X /etc /usr/etc`
7150 if $test -f "$tans"; then
7151 echo "(Attempting domain name extraction from $tans)"
7152 dflt=.`$sed -n -e 's/ / /g' \
7153 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7154 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7156 .) dflt=.`$sed -n -e 's/ / /g' \
7157 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7158 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7165 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7166 dflt=.`sh -c domainname 2>/dev/null`
7169 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7174 .) echo "(Lost all hope -- silly guess then)"
7180 *) dflt="$mydomain";;
7184 rp="What is your domain name?"
7194 : translate upper to lower if necessary
7197 echo "(Normalizing case in your domain name)"
7198 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7202 : a little sanity check here
7203 case "$phostname" in
7206 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7207 $myhostname$mydomain|$myhostname) ;;
7209 case "$phostname" in
7211 echo "(That doesn't agree with your whoami.h file, by the way.)"
7214 echo "(That doesn't agree with your $phostname command, by the way.)"
7224 I need to get your e-mail address in Internet format if possible, i.e.
7225 something like user@host.domain. Please answer accurately since I have
7226 no easy means to double check it. The default value provided below
7227 is most probably close to reality but may not be valid from outside
7228 your organization...
7232 while test "$cont"; do
7234 '') dflt="$cf_by@$myhostname$mydomain";;
7235 *) dflt="$cf_email";;
7237 rp='What is your e-mail address?'
7243 rp='Address does not look like an Internet one. Use it anyway?'
7259 If you or somebody else will be maintaining perl at your site, please
7260 fill in the correct e-mail address here so that they may be contacted
7261 if necessary. Currently, the "perlbug" program included with perl
7262 will send mail to this address in addition to perlbug@perl.org. You may
7263 enter "none" for no administrator.
7266 case "$perladmin" in
7267 '') dflt="$cf_email";;
7268 *) dflt="$perladmin";;
7270 rp='Perl administrator e-mail address'
7274 : determine whether to only install version-specific parts.
7277 Do you want to install only the version-specific parts of the perl
7278 distribution? Usually you do *not* want to do this.
7280 case "$versiononly" in
7281 "$define"|[Yy]*|true) dflt='y' ;;
7284 rp="Do you want to install only the version-specific parts of perl?"
7287 [yY]*) val="$define";;
7293 : figure out how to guarantee perl startup
7294 case "$startperl" in
7296 case "$sharpbang" in
7300 I can use the #! construct to start perl on your system. This will
7301 make startup of perl scripts faster, but may cause problems if you
7302 want to share those scripts and perl is not in a standard place
7303 ($binexp/perl) on all your platforms. The alternative is to force
7304 a shell by starting the script with a single ':' character.
7307 case "$versiononly" in
7308 "$define") dflt="$binexp/perl$version";;
7309 *) dflt="$binexp/perl";;
7311 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7314 none) startperl=": # use perl";;
7315 *) startperl="#!$ans"
7316 if $test 30 -lt `echo "$ans" | wc -c`; then
7319 WARNING: Some systems limit the #! command to 32 characters.
7320 If you experience difficulty running Perl scripts with #!, try
7321 installing Perl in a directory with a shorter pathname.
7327 *) startperl=": # use perl"
7332 echo "I'll use $startperl to start perl scripts."
7334 : figure best path for perl in scripts
7337 perlpath="$binexp/perl"
7338 case "$startperl" in
7343 I will use the "eval 'exec'" idiom to start Perl on your system.
7344 I can use the full path of your Perl binary for this purpose, but
7345 doing so may cause problems if you want to share those scripts and
7346 Perl is not always in a standard place ($binexp/perl).
7350 rp="What path shall I use in \"eval 'exec'\"?"
7357 case "$startperl" in
7359 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7362 : determine where public executable scripts go
7363 set scriptdir scriptdir
7365 case "$scriptdir" in
7368 : guess some guesses
7369 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7370 $test -d /usr/share/bin && dflt=/usr/share/bin
7371 $test -d /usr/local/script && dflt=/usr/local/script
7372 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7373 $test -d $prefixexp/script && dflt=$prefixexp/script
7377 *) dflt="$scriptdir"
7382 Some installations have a separate directory just for executable scripts so
7383 that they can mount it across multiple architectures but keep the scripts in
7384 one spot. You might, for example, have a subdirectory of /usr/share for this.
7385 Or you might just lump your scripts in with all your other executables.
7389 rp='Where do you keep publicly executable scripts?'
7391 if $test "X$ansexp" != "X$scriptdirexp"; then
7395 scriptdirexp="$ansexp"
7396 : Change installation prefix, if necessary.
7397 if $test X"$prefix" != X"$installprefix"; then
7398 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7400 installscript="$scriptdirexp"
7403 : determine where add-on public executables go
7405 '') dflt=$siteprefix/bin ;;
7409 rp='Pathname where the add-on public executables should be installed?'
7412 sitebinexp="$ansexp"
7413 : Change installation prefix, if necessary.
7414 if $test X"$prefix" != X"$installprefix"; then
7415 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7417 installsitebin="$sitebinexp"
7420 case "$useperlio" in
7421 $define|true|[yY]*) dflt='y';;
7426 Previous version of $package used the standard IO mechanisms as defined
7427 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7428 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7429 the default. This abstraction layer can use AT&T's sfio (if you already
7430 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7431 problems with some extension modules. Using PerlIO with stdio is safe,
7432 but it is slower than plain stdio and therefore is not the default.
7434 If this doesn't make any sense to you, just accept the default '$dflt'.
7436 rp='Use the experimental PerlIO abstraction layer?'
7443 echo "Ok, doing things the stdio way"
7450 case "$vendorprefix" in
7451 '') d_vendorbin="$undef"
7455 *) d_vendorbin="$define"
7456 : determine where vendor-supplied executables go.
7457 case "$vendorbin" in
7458 '') dflt=$vendorprefix/bin ;;
7459 *) dflt="$vendorbin" ;;
7462 rp='Pathname for the vendor-supplied executables directory?'
7465 vendorbinexp="$ansexp"
7468 : Change installation prefix, if necessary.
7469 if $test X"$prefix" != X"$installprefix"; then
7470 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7472 installvendorbin="$vendorbinexp"
7475 : see if qgcvt exists
7481 if $test X"$d_longdbl" = X"$define"; then
7483 echo "Checking how to print long doubles..." >&4
7485 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7486 $cat >try.c <<'EOCP'
7487 #include <sys/types.h>
7491 printf("%.3f\n", d);
7495 if eval $compile; then
7499 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7500 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7501 echo "We will use %f."
7507 if $test X"$sPRIfldbl" = X; then
7508 $cat >try.c <<'EOCP'
7509 #include <sys/types.h>
7512 long double d = 123.456;
7513 printf("%.3llf\n", d);
7517 if eval $compile; then
7521 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7522 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7523 echo "We will use %llf."
7529 if $test X"$sPRIfldbl" = X; then
7530 $cat >try.c <<'EOCP'
7531 #include <sys/types.h>
7534 long double d = 123.456;
7535 printf("%.3Lf\n", d);
7539 if eval $compile; then
7543 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7544 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7545 echo "We will use %Lf."
7551 if $test X"$sPRIfldbl" = X; then
7552 $cat >try.c <<'EOCP'
7553 #include <sys/types.h>
7556 long double d = 123.456;
7557 printf("%.3lf\n", d);
7561 if eval $compile; then
7565 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7566 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7567 echo "We will use %lf."
7573 if $test X"$sPRIfldbl" = X; then
7574 echo "Cannot figure out how to print long doubles." >&4
7576 sSCNfldbl=$sPRIfldbl # expect consistency
7583 case "$sPRIfldbl" in
7584 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7585 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7586 d_SCNfldbl="$undef";
7588 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7589 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7590 d_SCNfldbl="$define";
7594 : Check how to convert floats to strings.
7596 echo "Checking for an efficient way to convert floats to strings."
7598 case "$uselongdouble" in
7599 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7601 case "$d_longdbl" in
7602 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7604 case "$d_PRIgldbl" in
7605 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7609 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7610 char *myname = "gconvert";
7613 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7614 char *myname = "gcvt";
7617 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7618 char *myname = "qgcvt";
7619 #define DOUBLETYPE long double
7622 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7623 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7625 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7627 char *myname = "sprintf";
7631 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7632 #define DOUBLETYPE long double
7634 #define DOUBLETYPE double
7640 #define I_STDLIB $i_stdlib
7646 checkit(expect, got)
7650 if (strcmp(expect, got)) {
7651 printf("%s oddity: Expected %s, got %s\n",
7652 myname, expect, got);
7662 /* This must be 1st test on (which?) platform */
7663 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7664 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7665 checkit("0.1", buf);
7667 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7670 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7671 checkit("1.1", buf);
7673 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7674 checkit("1.01", buf);
7676 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7677 checkit("1.001", buf);
7679 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7680 checkit("1.0001", buf);
7682 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7683 checkit("1.00001", buf);
7685 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7686 checkit("1.000001", buf);
7688 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7691 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7694 /* Some Linux gcvt's give 1.e+5 here. */
7695 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7696 checkit("100000", buf);
7698 /* Some Linux gcvt's give -1.e+5 here. */
7699 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7700 checkit("-100000", buf);
7702 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7703 checkit("123.456", buf);
7708 case "$d_Gconvert" in
7709 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7710 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7711 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7712 *) xxx_list='gconvert gcvt sprintf' ;;
7715 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7716 "$define$define$define")
7717 # for long doubles prefer first qgcvt, then sprintf
7718 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7719 xxx_list="sprintf $xxx_list"
7721 "$define") xxx_list="qgcvt $xxx_list" ;;
7726 for xxx_convert in $xxx_list; do
7727 echo "Trying $xxx_convert..."
7729 set try -DTRY_$xxx_convert
7730 if eval $compile; then
7731 echo "$xxx_convert() found." >&4
7733 echo "I'll use $xxx_convert to convert floats into a string." >&4
7736 echo "...But $xxx_convert didn't work as I expected."
7739 echo "$xxx_convert NOT found." >&4
7743 case "$xxx_convert" in
7744 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7745 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7746 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7747 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7748 "$define$define$define")
7749 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7750 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7755 : Initialize h_fcntl
7758 : Initialize h_sysfile
7761 : access call always available on UNIX
7765 : locate the flags for 'access()'
7769 $cat >access.c <<'EOCP'
7770 #include <sys/types.h>
7775 #include <sys/file.h>
7784 : check sys/file.h first, no particular reason here
7785 if $test `./findhdr sys/file.h` && \
7786 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7788 echo "<sys/file.h> defines the *_OK access constants." >&4
7789 elif $test `./findhdr fcntl.h` && \
7790 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7792 echo "<fcntl.h> defines the *_OK access constants." >&4
7793 elif $test `./findhdr unistd.h` && \
7794 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7795 echo "<unistd.h> defines the *_OK access constants." >&4
7797 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7803 : see if accessx exists
7804 set accessx d_accessx
7807 : see if alarm exists
7811 : see if atolf exists
7815 : see if atoll exists
7819 : Look for GNU-cc style attribute checking
7821 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7822 $cat >attrib.c <<'EOCP'
7824 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7826 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7827 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7828 echo "Your C compiler doesn't fully support __attribute__."
7831 echo "Your C compiler supports __attribute__."
7835 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7842 : see if bcmp exists
7846 : see if bcopy exists
7850 : see if this is a unistd.h system
7851 set unistd.h i_unistd
7854 : see if getpgrp exists
7855 set getpgrp d_getpgrp
7858 case "$d_getpgrp" in
7861 echo "Checking to see which flavor of getpgrp is in use..."
7864 #include <sys/types.h>
7866 # include <unistd.h>
7870 if (getuid() == 0) {
7871 printf("(I see you are running Configure as super-user...)\n");
7875 if (getpgrp(1) == 0)
7884 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7885 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7887 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7888 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7891 echo "I can't seem to compile and run the test program."
7893 xxx="a USG one, i.e. you use getpgrp()."
7895 # SVR4 systems can appear rather BSD-ish.
7898 xxx="a BSD one, i.e. you use getpgrp(pid)."
7902 xxx="probably a USG one, i.e. you use getpgrp()."
7907 echo "Assuming your getpgrp is $xxx" >&4
7916 : see if setpgrp exists
7917 set setpgrp d_setpgrp
7920 case "$d_setpgrp" in
7923 echo "Checking to see which flavor of setpgrp is in use..."
7926 #include <sys/types.h>
7928 # include <unistd.h>
7932 if (getuid() == 0) {
7933 printf("(I see you are running Configure as super-user...)\n");
7937 if (-1 == setpgrp(1, 1))
7940 if (setpgrp() != -1)
7946 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7947 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7949 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7950 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7953 echo "(I can't seem to compile and run the test program.)"
7955 xxx="a USG one, i.e. you use setpgrp()."
7957 # SVR4 systems can appear rather BSD-ish.
7960 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7964 xxx="probably a USG one, i.e. you use setpgrp()."
7969 echo "Assuming your setpgrp is $xxx" >&4
7977 : see if bzero exists
7981 : see if signal is declared as pointer to function returning int or void
7983 xxx=`./findhdr signal.h`
7984 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7985 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7986 echo "You have int (*signal())() instead of void." >&4
7988 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7989 echo "You have void (*signal())()." >&4
7991 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7992 echo "You have int (*signal())() instead of void." >&4
7994 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7995 echo "You have void (*signal())()." >&4
7998 case "$d_voidsig" in
8000 echo "I can't determine whether signal handler returns void or int..." >&4
8002 rp="What type does your signal handler return?"
8009 echo "As you already told me, signal handler returns void." >&4
8012 *) echo "As you already told me, signal handler returns int." >&4
8019 case "$d_voidsig" in
8020 "$define") signal_t="void";;
8025 : check for ability to cast large floats to 32-bit ints.
8027 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8028 if $test "$intsize" -ge 4; then
8035 #include <sys/types.h>
8037 $signal_t blech(s) int s; { exit(3); }
8044 signal(SIGFPE, blech);
8046 /* Don't let compiler optimize the test away. Store the number
8047 in a writable string for gcc to pass to sscanf under HP/UX.
8049 sprintf(str, "2147483647");
8050 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8054 /* x86 processors will probably give 0x8000 0000, which is a
8055 sign change. We don't want that. We want to mimic SPARC
8056 behavior here, which is to preserve the sign and give
8059 if (i32 != ($xxx) f)
8065 if eval $compile_ok; then
8069 echo "(I can't seem to compile the test program--assuming it can't)"
8077 echo "Nope, it can't."
8084 : check for ability to cast negative floats to unsigned
8086 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8089 #include <sys/types.h>
8091 $signal_t blech(s) int s; { exit(7); }
8092 $signal_t blech_in_list(s) int s; { exit(4); }
8093 unsigned long dummy_long(p) unsigned long p; { return p; }
8094 unsigned int dummy_int(p) unsigned int p; { return p; }
8095 unsigned short dummy_short(p) unsigned short p; { return p; }
8099 unsigned long along;
8101 unsigned short ashort;
8105 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8106 a direct f = -123. assignment. gcc-2.8.0 reportedly
8107 optimized the whole file away
8109 /* Store the number in a writable string for gcc to pass to
8112 sprintf(str, "-123");
8113 sscanf(str, "%lf", &f); /* f = -123.; */
8115 signal(SIGFPE, blech);
8116 along = (unsigned long)f;
8117 aint = (unsigned int)f;
8118 ashort = (unsigned short)f;
8119 if (along != (unsigned long)-123)
8121 if (aint != (unsigned int)-123)
8123 if (ashort != (unsigned short)-123)
8125 sprintf(str, "1073741824.");
8126 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8129 along = (unsigned long)f;
8130 if (along != 0x80000000)
8134 along = (unsigned long)f;
8135 if (along != 0x7fffffff)
8139 along = (unsigned long)f;
8140 if (along != 0x80000001)
8144 signal(SIGFPE, blech_in_list);
8145 sprintf(str, "123.");
8146 sscanf(str, "%lf", &f); /* f = 123.; */
8147 along = dummy_long((unsigned long)f);
8148 aint = dummy_int((unsigned int)f);
8149 ashort = dummy_short((unsigned short)f);
8150 if (along != (unsigned long)123)
8152 if (aint != (unsigned int)123)
8154 if (ashort != (unsigned short)123)
8161 if eval $compile_ok; then
8165 echo "(I can't seem to compile the test program--assuming it can't)"
8168 case "$castflags" in
8173 echo "Nope, it can't."
8180 : see if vprintf exists
8182 if set vprintf val -f d_vprintf; eval $csym; $val; then
8183 echo 'vprintf() found.' >&4
8185 $cat >vprintf.c <<'EOF'
8186 #include <varargs.h>
8188 int main() { xxx("foo"); }
8197 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8201 if eval $compile && ./vprintf; then
8202 echo "Your vsprintf() returns (int)." >&4
8205 echo "Your vsprintf() returns (char*)." >&4
8209 echo 'vprintf() NOT found.' >&4
8219 : see if chown exists
8223 : see if chroot exists
8227 : see if chsize exists
8231 : check for const keyword
8233 echo 'Checking to see if your C compiler knows about "const"...' >&4
8234 $cat >const.c <<'EOCP'
8235 typedef struct spug { int drokk; } spug;
8242 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8244 echo "Yup, it does."
8247 echo "Nope, it doesn't."
8252 : see if crypt exists
8254 if set crypt val -f d_crypt; eval $csym; $val; then
8255 echo 'crypt() found.' >&4
8259 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8260 if $test -z "$cryptlib"; then
8261 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8265 if $test -z "$cryptlib"; then
8266 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8270 if $test -z "$cryptlib"; then
8271 cryptlib=`./loc libcrypt$_a "" $libpth`
8275 if $test -z "$cryptlib"; then
8276 echo 'crypt() NOT found.' >&4
8285 : get csh whereabouts
8287 'csh') val="$undef" ;;
8292 : Respect a hint or command line value for full_csh.
8294 '') full_csh=$csh ;;
8297 : see if cuserid exists
8298 set cuserid d_cuserid
8301 : see if this is a limits.h system
8302 set limits.h i_limits
8305 : see if this is a float.h system
8309 : See if number of significant digits in a double precision number is known
8311 $cat >dbl_dig.c <<EOM
8321 printf("Contains DBL_DIG");
8324 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8325 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8326 echo "DBL_DIG found." >&4
8329 echo "DBL_DIG NOT found." >&4
8336 : see if difftime exists
8337 set difftime d_difftime
8340 : see if this is a dirent system
8342 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8344 echo "<dirent.h> found." >&4
8347 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8348 echo "<sys/dir.h> found." >&4
8351 xinc=`./findhdr sys/ndir.h`
8353 echo "<dirent.h> NOT found." >&4
8358 : Look for type of directory structure.
8360 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8362 case "$direntrytype" in
8365 $define) guess1='struct dirent' ;;
8366 *) guess1='struct direct' ;;
8369 *) guess1="$direntrytype"
8374 'struct dirent') guess2='struct direct' ;;
8375 *) guess2='struct dirent' ;;
8378 if $contains "$guess1" try.c >/dev/null 2>&1; then
8379 direntrytype="$guess1"
8380 echo "Your directory entries are $direntrytype." >&4
8381 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8382 direntrytype="$guess2"
8383 echo "Your directory entries seem to be $direntrytype." >&4
8385 echo "I don't recognize your system's directory entries." >&4
8386 rp="What type is used for directory entries on this system?"
8394 : see if the directory entry stores field length
8396 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8397 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8398 echo "Good, your directory entry keeps length information in d_namlen." >&4
8401 echo "Your directory entry does not know about the d_namlen field." >&4
8408 : see if dlerror exists
8411 set dlerror d_dlerror
8415 : see if dlfcn is available
8423 On a few systems, the dynamically loaded modules that perl generates and uses
8424 will need a different extension than shared libs. The default will probably
8432 rp='What is the extension of dynamically loaded modules'
8441 : Check if dlsym need a leading underscore
8447 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8448 $cat >dyna.c <<'EOM'
8457 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8459 #include <sys/types.h>
8473 int mode = RTLD_LAZY ;
8475 handle = dlopen("./dyna.$dlext", mode) ;
8476 if (handle == NULL) {
8481 symbol = dlsym(handle, "fred") ;
8482 if (symbol == NULL) {
8483 /* try putting a leading underscore */
8484 symbol = dlsym(handle, "_fred") ;
8485 if (symbol == NULL) {
8498 : Call the object file tmp-dyna.o in case dlext=o.
8499 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8500 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8501 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
8502 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8505 1) echo "Test program failed using dlopen." >&4
8506 echo "Perhaps you should not use dynamic loading." >&4;;
8507 2) echo "Test program failed using dlsym." >&4
8508 echo "Perhaps you should not use dynamic loading." >&4;;
8509 3) echo "dlsym needs a leading underscore" >&4
8511 4) echo "dlsym doesn't need a leading underscore." >&4;;
8514 echo "I can't compile and run the test program." >&4
8515 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8520 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8525 hasproto='varname=$1; func=$2; shift; shift;
8526 while $test $# -ge 2; do
8528 $define) echo "#include <$2>";;
8532 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8533 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8534 echo "$func() prototype found.";
8537 echo "$func() prototype NOT found.";
8542 $rm -f try.c tryout.c'
8544 : see if prototype for drand48 is available
8546 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8549 : see if dup2 exists
8553 : see if eaccess exists
8554 set eaccess d_eaccess
8557 : see if endgrent exists
8558 set endgrent d_endgrent
8561 : see if endhostent exists
8562 set endhostent d_endhent
8565 : see if endnetent exists
8566 set endnetent d_endnent
8569 : see if endprotoent exists
8570 set endprotoent d_endpent
8573 : see if endpwent exists
8574 set endpwent d_endpwent
8577 : see if endservent exists
8578 set endservent d_endsent
8581 : Locate the flags for 'open()'
8583 $cat >open3.c <<'EOCP'
8584 #include <sys/types.h>
8589 #include <sys/file.h>
8600 : check sys/file.h first to get FREAD on Sun
8601 if $test `./findhdr sys/file.h` && \
8602 set open3 -DI_SYS_FILE && eval $compile; then
8604 echo "<sys/file.h> defines the O_* constants..." >&4
8606 echo "and you have the 3 argument form of open()." >&4
8609 echo "but not the 3 argument form of open(). Oh, well." >&4
8612 elif $test `./findhdr fcntl.h` && \
8613 set open3 -DI_FCNTL && eval $compile; then
8615 echo "<fcntl.h> defines the O_* constants..." >&4
8617 echo "and you have the 3 argument form of open()." >&4
8620 echo "but not the 3 argument form of open(). Oh, well." >&4
8625 echo "I can't find the O_* constant definitions! You got problems." >&4
8631 : see which of string.h or strings.h is needed
8633 strings=`./findhdr string.h`
8634 if $test "$strings" && $test -r "$strings"; then
8635 echo "Using <string.h> instead of <strings.h>." >&4
8639 strings=`./findhdr strings.h`
8640 if $test "$strings" && $test -r "$strings"; then
8641 echo "Using <strings.h> instead of <string.h>." >&4
8643 echo "No string header found -- You'll surely have problems." >&4
8649 "$undef") strings=`./findhdr strings.h`;;
8650 *) strings=`./findhdr string.h`;;
8653 : check for non-blocking I/O stuff
8654 case "$h_sysfile" in
8655 true) echo "#include <sys/file.h>" > head.c;;
8658 true) echo "#include <fcntl.h>" > head.c;;
8659 *) echo "#include <sys/fcntl.h>" > head.c;;
8664 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8665 case "$o_nonblock" in
8668 $cat >>try.c <<'EOCP'
8672 printf("O_NONBLOCK\n");
8676 printf("O_NDELAY\n");
8680 printf("FNDELAY\n");
8687 if eval $compile_ok; then
8689 case "$o_nonblock" in
8690 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8691 *) echo "Seems like we can use $o_nonblock.";;
8694 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8697 *) echo "Using $hint value $o_nonblock.";;
8699 $rm -f try try.* .out core
8702 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8708 #include <sys/types.h>
8711 #define MY_O_NONBLOCK $o_nonblock
8712 #ifndef errno /* XXX need better Configure test */
8723 #include <strings.h>
8725 $signal_t blech(x) int x; { exit(3); }
8727 $cat >> try.c <<'EOCP'
8735 pipe(pd); /* Down: child -> parent */
8736 pipe(pu); /* Up: parent -> child */
8739 close(pd[1]); /* Parent reads from pd[0] */
8740 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8741 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8743 signal(SIGALRM, blech);
8745 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8747 sprintf(string, "%d\n", ret);
8748 write(2, string, strlen(string));
8751 if (errno == EAGAIN) {
8757 if (errno == EWOULDBLOCK)
8758 printf("EWOULDBLOCK\n");
8761 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8762 sleep(2); /* Give it time to close our pipe */
8764 ret = read(pd[0], buf, 1); /* Should read EOF */
8766 sprintf(string, "%d\n", ret);
8767 write(3, string, strlen(string));
8771 close(pd[0]); /* We write to pd[1] */
8772 close(pu[1]); /* We read from pu[0] */
8773 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8774 close(pd[1]); /* Pipe pd is now fully closed! */
8775 exit(0); /* Bye bye, thank you for playing! */
8779 if eval $compile_ok; then
8780 echo "$startsh" >mtry
8781 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8783 ./mtry >/dev/null 2>&1
8785 0) eagain=`$cat try.out`;;
8786 1) echo "Could not perform non-blocking setting!";;
8787 2) echo "I did a successful read() for something that was not there!";;
8788 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8789 *) echo "Something terribly wrong happened during testing.";;
8791 rd_nodata=`$cat try.ret`
8792 echo "A read() system call with no data present returns $rd_nodata."
8793 case "$rd_nodata" in
8796 echo "(That's peculiar, fixing that to be -1.)"
8802 echo "Forcing errno EAGAIN on read() with no data available."
8806 echo "Your read() sets errno to $eagain when no data is available."
8809 status=`$cat try.err`
8811 0) echo "And it correctly returns 0 to signal EOF.";;
8812 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8813 *) echo "However, your read() returns '$status' on EOF??";;
8816 if test "$status" = "$rd_nodata"; then
8817 echo "WARNING: you can't distinguish between EOF and no data!"
8821 echo "I can't compile the test program--assuming errno EAGAIN will do."
8828 echo "Using $hint value $eagain."
8829 echo "Your read() returns $rd_nodata when no data is present."
8830 case "$d_eofnblk" in
8831 "$define") echo "And you can see EOF because read() returns 0.";;
8832 "$undef") echo "But you can't see EOF status from read() returned value.";;
8834 echo "(Assuming you can't see EOF status from read anyway.)"
8840 $rm -f try try.* .out core head.c mtry
8842 : see if fchmod exists
8846 : see if fchown exists
8850 : see if this is an fcntl system
8855 : See if fcntl-based locking works.
8856 $cat >try.c <<'EOCP'
8861 #if defined(F_SETLK) && defined(F_SETLKW)
8864 fd = open("try.c", O_RDONLY);
8865 flock.l_type = F_RDLCK;
8866 flock.l_whence = SEEK_SET;
8867 flock.l_start = flock.l_len = 0;
8868 retval = fcntl(fd, F_SETLK, &flock);
8870 (retval < 0 ? exit(2) : exit(0));
8876 echo "Checking if fcntl-based file locking works... "
8880 if eval $compile_ok; then
8882 echo "Yes, it seems to work."
8885 echo "Nope, it didn't work."
8889 echo "I'm unable to compile the test program, so I'll assume not."
8894 echo "Nope, since you don't even have fcntl()."
8897 set d_fcntl_can_lock
8902 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8903 while $test $# -ge 2; do
8905 $define) echo "#include <$2>";;
8909 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8911 if eval $compile; then
8922 : see whether socket exists
8924 $echo $n "Hmm... $c" >&4
8925 if set socket val -f d_socket; eval $csym; $val; then
8926 echo "Looks like you have Berkeley networking support." >&4
8928 if set setsockopt val -f; eval $csym; $val; then
8931 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8935 if $contains socklib libc.list >/dev/null 2>&1; then
8936 echo "Looks like you have Berkeley networking support." >&4
8938 : we will have to assume that it supports the 4.2 BSD interface
8941 echo "You don't have Berkeley networking in libc$_a..." >&4
8942 if test "X$d_socket" = "X$define"; then
8943 echo "...but you seem to believe that you have sockets." >&4
8945 for net in net socket
8947 if test -f /usr/lib/lib$net$_a; then
8948 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8949 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8950 if $contains socket libc.list >/dev/null 2>&1; then
8955 echo "...but the Wollongong group seems to have hacked it in." >&4
8956 sockethdr="-I/usr/netinclude"
8959 echo "Found Berkeley sockets interface in lib$net." >& 4
8960 if $contains setsockopt libc.list >/dev/null 2>&1; then
8963 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8970 if test "X$d_socket" != "X$define"; then
8971 echo "or anywhere else I see." >&4
8979 : see if socketpair exists
8980 set socketpair d_sockpair
8985 echo "Checking the availability of certain socket constants..." >& 4
8986 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8987 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8989 #include <sys/types.h>
8990 #include <sys/socket.h>
8996 set try; if eval $compile; then
8999 set d_${enum}; eval $setvar
9003 : see if sys/select.h has to be included
9004 set sys/select.h i_sysselct
9007 : see if we should include time.h, sys/time.h, or both
9009 if test "X$timeincl" = X; then
9010 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9011 $echo $n "I'm now running the test program...$c"
9012 $cat >try.c <<'EOCP'
9013 #include <sys/types.h>
9018 #ifdef SYSTIMEKERNEL
9021 #include <sys/time.h>
9024 #include <sys/select.h>
9033 struct timezone tzp;
9035 if (foo.tm_sec == foo.tm_sec)
9038 if (bar.tv_sec == bar.tv_sec)
9045 for s_timezone in '-DS_TIMEZONE' ''; do
9047 for s_timeval in '-DS_TIMEVAL' ''; do
9048 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9049 for i_time in '' '-DI_TIME'; do
9050 for i_systime in '-DI_SYSTIME' ''; do
9053 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9054 if eval $compile; then
9055 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9059 $echo $n "Succeeded with $flags$c"
9071 *SYSTIMEKERNEL*) i_systimek="$define"
9072 timeincl=`./findhdr sys/time.h`
9073 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9074 *) i_systimek="$undef";;
9077 *I_TIME*) i_time="$define"
9078 timeincl=`./findhdr time.h`" $timeincl"
9079 echo "We'll include <time.h>." >&4;;
9080 *) i_time="$undef";;
9083 *I_SYSTIME*) i_systime="$define"
9084 timeincl=`./findhdr sys/time.h`" $timeincl"
9085 echo "We'll include <sys/time.h>." >&4;;
9086 *) i_systime="$undef";;
9091 : check for fd_set items
9094 Checking to see how well your C compiler handles fd_set and friends ...
9096 $cat >fd_set.c <<EOCP
9097 #$i_systime I_SYS_TIME
9098 #$i_sysselct I_SYS_SELECT
9099 #$d_socket HAS_SOCKET
9100 #include <sys/types.h>
9102 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9105 #include <sys/time.h>
9108 #include <sys/select.h>
9117 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9124 set fd_set -DTRYBITS
9125 if eval $compile; then
9126 d_fds_bits="$define"
9128 echo "Well, your system knows about the normal fd_set typedef..." >&4
9130 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9131 d_fd_macros="$define"
9134 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9136 d_fd_macros="$undef"
9140 Hmm, your compiler has some difficulty with fd_set. Checking further...
9143 if eval $compile; then
9146 echo "Well, your system has some sort of fd_set available..." >&4
9148 echo "and you have the normal fd_set macros." >&4
9149 d_fd_macros="$define"
9152 but not the normal fd_set macros! Gross! More work for me...
9154 d_fd_macros="$undef"
9157 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9160 d_fd_macros="$undef"
9165 : see if fgetpos exists
9166 set fgetpos d_fgetpos
9169 : see if flock exists
9173 : see if fork exists
9177 : see if pathconf exists
9178 set pathconf d_pathconf
9181 : see if fpathconf exists
9182 set fpathconf d_fpathconf
9186 : check for fpos64_t
9188 echo "Checking to see if you have fpos64_t..." >&4
9191 int main() { fpos64_t x = 7; }
9194 if eval $compile; then
9196 echo "You have fpos64_t."
9199 echo "You do not have fpos64_t."
9201 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9208 : see if frexpl exists
9212 hasstruct='varname=$1; struct=$2; shift; shift;
9213 while $test $# -ge 2; do
9215 $define) echo "#include <$2>";;
9219 echo "int main () { struct $struct foo; }" >> try.c;
9221 if eval $compile; then
9230 : see if this is a sys/param system
9231 set sys/param.h i_sysparam
9234 : see if this is a sys/mount.h system
9235 set sys/mount.h i_sysmount
9238 : see if sys/types.h has to be included
9239 set sys/types.h i_systypes
9244 echo "Checking to see if your system supports struct fs_data..." >&4
9245 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9247 case "$d_fs_data_s" in
9248 "$define") echo "Yes, it does." ;;
9249 *) echo "No, it doesn't." ;;
9252 : see if fseeko exists
9256 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9259 : see if fsetpos exists
9260 set fsetpos d_fsetpos
9264 : see if fstatfs exists
9265 set fstatfs d_fstatfs
9269 : see if statvfs exists
9270 set statvfs d_statvfs
9273 : see if fstatvfs exists
9274 set fstatvfs d_fstatvfs
9278 : see if ftello exists
9282 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9285 : see if getcwd exists
9289 : see if getespwnam exists
9290 set getespwnam d_getespwnam
9294 : see if getfsstat exists
9295 set getfsstat d_getfsstat
9298 : see if getgrent exists
9299 set getgrent d_getgrent
9302 : see if gethostbyaddr exists
9303 set gethostbyaddr d_gethbyaddr
9306 : see if gethostbyname exists
9307 set gethostbyname d_gethbyname
9310 : see if gethostent exists
9311 set gethostent d_gethent
9314 : see how we will look up host name
9317 if set gethostname val -f d_gethname; eval $csym; $val; then
9318 echo 'gethostname() found.' >&4
9319 d_gethname="$define"
9322 if set uname val -f d_uname; eval $csym; $val; then
9325 uname() was found, but you're running xenix, and older versions of xenix
9326 have a broken uname(). If you don't really know whether your xenix is old
9327 enough to have a broken system call, use the default answer.
9334 rp='Is your uname() broken?'
9337 n*) d_uname="$define"; call=uname;;
9340 echo 'uname() found.' >&4
9347 case "$d_gethname" in
9348 '') d_gethname="$undef";;
9351 '') d_uname="$undef";;
9353 case "$d_uname$d_gethname" in
9358 Every now and then someone has a $call() that lies about the hostname
9359 but can't be fixed for political or economic reasons. If you wish, I can
9360 pretend $call() isn't there and maybe compute hostname at run-time
9361 thanks to the '$phostname' command.
9364 rp="Shall I ignore $call() from now on?"
9367 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9370 case "$phostname" in
9372 *) case "$aphostname" in
9378 file=`./loc $file $file $pth`
9379 aphostname=`echo $file $*`
9384 case "$d_uname$d_gethname" in
9387 case "$phostname" in
9389 echo "There will be no way for $package to get your hostname." >&4;;
9391 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9395 case "$d_phostname" in
9396 '') d_phostname="$undef";;
9399 : see if this is a netdb.h system
9403 : see if prototypes for various gethostxxx netdb.h functions are available
9405 set d_gethostprotos gethostent $i_netdb netdb.h
9408 : see if getlogin exists
9409 set getlogin d_getlogin
9412 : see if getmnt exists
9416 : see if getmntent exists
9417 set getmntent d_getmntent
9420 : see if getnetbyaddr exists
9421 set getnetbyaddr d_getnbyaddr
9424 : see if getnetbyname exists
9425 set getnetbyname d_getnbyname
9428 : see if getnetent exists
9429 set getnetent d_getnent
9432 : see if prototypes for various getnetxxx netdb.h functions are available
9434 set d_getnetprotos getnetent $i_netdb netdb.h
9438 : see if getprotobyname exists
9439 set getprotobyname d_getpbyname
9442 : see if getprotobynumber exists
9443 set getprotobynumber d_getpbynumber
9446 : see if getprotoent exists
9447 set getprotoent d_getpent
9450 : see if getpgid exists
9451 set getpgid d_getpgid
9454 : see if getpgrp2 exists
9455 set getpgrp2 d_getpgrp2
9458 : see if getppid exists
9459 set getppid d_getppid
9462 : see if getpriority exists
9463 set getpriority d_getprior
9466 : see if prototypes for various getprotoxxx netdb.h functions are available
9468 set d_getprotoprotos getprotoent $i_netdb netdb.h
9471 : see if getprpwnam exists
9472 set getprpwnam d_getprpwnam
9475 : see if getpwent exists
9476 set getpwent d_getpwent
9480 : see if getservbyname exists
9481 set getservbyname d_getsbyname
9484 : see if getservbyport exists
9485 set getservbyport d_getsbyport
9488 : see if getservent exists
9489 set getservent d_getsent
9492 : see if prototypes for various getservxxx netdb.h functions are available
9494 set d_getservprotos getservent $i_netdb netdb.h
9497 : see if getspnam exists
9498 set getspnam d_getspnam
9501 : see if gettimeofday or ftime exists
9502 set gettimeofday d_gettimeod
9504 case "$d_gettimeod" in
9510 val="$undef"; set d_ftime; eval $setvar
9513 case "$d_gettimeod$d_ftime" in
9516 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9520 : see if this is an grp system
9526 xxx=`./findhdr grp.h`
9527 $cppstdin $cppflags $cppminus < $xxx >$$.h
9529 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9541 set d_grpasswd; eval $setvar
9545 : see if hasmntopt exists
9546 set hasmntopt d_hasmntopt
9549 : see if this is a netinet/in.h or sys/in.h system
9550 set netinet/in.h i_niin sys/in.h i_sysin
9553 : see if arpa/inet.h has to be included
9554 set arpa/inet.h i_arpainet
9557 : see if htonl --and friends-- exists
9562 : Maybe they are macros.
9567 #include <sys/types.h>
9568 #$i_niin I_NETINET_IN
9570 #$i_arpainet I_ARPA_INET
9572 #include <netinet/in.h>
9578 #include <arpa/inet.h>
9581 printf("Defined as a macro.");
9584 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9585 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9587 echo "But it seems to be defined as a macro." >&4
9595 : see if iconv exists
9601 if set index val -f; eval $csym; $val; then
9602 if set strchr val -f d_strchr; eval $csym; $val; then
9603 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9606 echo "strchr() found." >&4
9610 echo "index() found." >&4
9615 echo "index() found." >&4
9618 if set strchr val -f d_strchr; eval $csym; $val; then
9621 echo "strchr() found." >&4
9623 echo "No index() or strchr() found!" >&4
9628 set d_strchr; eval $setvar
9630 set d_index; eval $setvar
9632 : check whether inet_aton exists
9633 set inet_aton d_inetaton
9636 : see if inttypes.h is available
9637 : we want a real compile instead of Inhdr because some systems
9638 : have an inttypes.h which includes non-existent headers
9641 #include <inttypes.h>
9643 static int32_t foo32 = 0x12345678;
9647 if eval $compile; then
9648 echo "<inttypes.h> found." >&4
9651 echo "<inttypes.h> NOT found." >&4
9660 echo "Checking to see if you have int64_t..." >&4
9662 #include <sys/types.h>
9663 #$i_inttypes I_INTTYPES
9665 #include <inttypes.h>
9667 int main() { int64_t x = 7; }
9670 if eval $compile; then
9672 echo "You have int64_t."
9675 echo "You do not have int64_t."
9683 $cat >isascii.c <<'EOCP'
9695 if eval $compile; then
9696 echo "isascii() found." >&4
9699 echo "isascii() NOT found." >&4
9706 : see if isnan exists
9710 : see if isnanl exists
9714 : see if killpg exists
9718 : see if lchown exists
9720 $cat > try.c <<'EOCP'
9721 /* System header to define __stub macros and hopefully few prototypes,
9722 which can conflict with char lchown(); below. */
9724 /* Override any gcc2 internal prototype to avoid an error. */
9725 /* We use char because int might match the return type of a gcc2
9726 builtin and then its argument prototype would still apply. */
9729 /* The GNU C library defines this for functions which it implements
9730 to always fail with ENOSYS. Some functions are actually named
9731 something starting with __ and the normal name is an alias. */
9732 #if defined (__stub_lchown) || defined (__stub___lchown)
9740 if eval $compile; then
9741 $echo "lchown() found." >&4
9744 $echo "lchown() NOT found." >&4
9750 : See if number of significant digits in a double precision number is known
9752 $cat >ldbl_dig.c <<EOM
9762 printf("Contains LDBL_DIG");
9765 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9766 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9767 echo "LDBL_DIG found." >&4
9770 echo "LDBL_DIG NOT found." >&4
9777 : see if link exists
9781 : see if localeconv exists
9782 set localeconv d_locconv
9785 : see if lockf exists
9789 : check for long long
9791 echo "Checking to see if you have long long..." >&4
9792 echo 'int main() { long long x = 7; return 0; }' > try.c
9794 if eval $compile; then
9796 echo "You have long long."
9799 echo "You do not have long long."
9805 : check for length of long long
9806 case "${d_longlong}${longlongsize}" in
9809 echo "Checking to see how big your long longs are..." >&4
9810 $cat >try.c <<'EOCP'
9814 printf("%d\n", (int)sizeof(long long));
9819 if eval $compile_ok; then
9820 longlongsize=`./try$exe_ext`
9821 echo "Your long longs are $longlongsize bytes long."
9825 echo "(I can't seem to compile the test program. Guessing...)"
9826 rp="What is the size of a long long (in bytes)?"
9830 if $test "X$longsize" = "X$longlongsize"; then
9831 echo "(That isn't any different from an ordinary long.)"
9837 : see if prototype for lseek is available
9839 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9842 : see if lstat exists
9846 : see if madvise exists
9847 set madvise d_madvise
9850 : see if mblen exists
9854 : see if mbstowcs exists
9855 set mbstowcs d_mbstowcs
9858 : see if mbtowc exists
9862 : see if memchr exists
9866 : see if memcmp exists
9870 : see if memcpy exists
9874 : see if memmove exists
9875 set memmove d_memmove
9878 : see if memset exists
9882 : see if mkdir exists
9886 : see if mkdtemp exists
9887 set mkdtemp d_mkdtemp
9890 : see if mkfifo exists
9894 : see if mkstemp exists
9895 set mkstemp d_mkstemp
9898 : see if mkstemps exists
9899 set mkstemps d_mkstemps
9902 : see if mktime exists
9906 : see if this is a sys/mman.h system
9907 set sys/mman.h i_sysmman
9910 : see if mmap exists
9913 : see what shmat returns
9914 : default to something harmless
9916 case "$i_sysmman$d_mmap" in
9918 $cat >mmap.c <<'END'
9919 #include <sys/mman.h>
9922 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9927 echo "and it returns ($mmaptype)." >&4
9933 : see if modfl exists
9937 : see if mprotect exists
9938 set mprotect d_mprotect
9941 : see if msgctl exists
9945 : see if msgget exists
9949 : see if msgsnd exists
9953 : see if msgrcv exists
9957 : see how much of the 'msg*(2)' library is present.
9960 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9961 *"$undef"*) h_msg=false;;
9965 case "`ipcs 2>&1`" in
9966 "SVID messages"*"not configured"*)
9967 echo "Your $osname does not have the msg*(2) configured." >&4
9982 : we could also check for sys/ipc.h ...
9983 if $h_msg && $test `./findhdr sys/msg.h`; then
9984 echo "You have the full msg*(2) library." >&4
9987 echo "You don't have the full msg*(2) library." >&4
9993 : see if msync exists
9997 : see if munmap exists
10001 : see if nice exists
10007 echo "Checking which 64-bit integer type we could use..." >&4
10013 val='"unsigned int"'
10018 *) case "$longsize" in
10022 val='"unsigned long"'
10027 *) case "$d_longlong:$longlongsize" in
10032 val='"unsigned long long"'
10037 *) case "$d_int64_t" in
10055 case "$quadtype" in
10056 '') echo "Alas, no 64-bit integer types in sight." >&4
10059 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10064 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10069 : check for length of character
10071 case "$charsize" in
10073 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10074 $cat >try.c <<'EOCP'
10078 printf("%d\n", (int)sizeof(char));
10083 if eval $compile_ok; then
10087 echo "(I can't seem to compile the test program. Guessing...)"
10094 rp="What is the size of a character (in bytes)?"
10101 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10103 case "$use64bitint:$d_quad:$quadtype" in
10106 uvtype="$uquadtype"
10111 uvtype="unsigned long"
10117 case "$uselongdouble:$d_longdbl" in
10119 nvtype="long double"
10120 nvsize=$longdblsize
10127 $echo "(IV will be "$ivtype", $ivsize bytes)"
10128 $echo "(UV will be "$uvtype", $uvsize bytes)"
10129 $echo "(NV will be "$nvtype", $nvsize bytes)"
10132 #$i_inttypes I_INTTYPES
10134 #include <inttypes.h>
10139 int8_t i = INT8_MAX;
10140 uint8_t u = UINT8_MAX;
10141 printf("int8_t\n");
10144 int16_t i = INT16_MAX;
10145 uint16_t i = UINT16_MAX;
10146 printf("int16_t\n");
10149 int32_t i = INT32_MAX;
10150 uint32_t u = UINT32_MAX;
10151 printf("int32_t\n");
10157 '') case "$charsize" in
10159 u8type="unsigned char"
10168 if eval $compile; then
10169 case "`./try$exe_ext`" in
10170 int8_t) i8type=int8_t
10180 '') if $test $charsize -ge 1; then
10182 u8type="unsigned char"
10190 '') case "$shortsize" in
10192 u16type="unsigned short"
10200 '') set try -DINT16
10201 if eval $compile; then
10202 case "`./try$exe_ext`" in
10214 '') if $test $shortsize -ge 2; then
10216 u16type="unsigned short"
10224 '') case "$longsize" in
10226 u32type="unsigned long"
10230 *) case "$intsize" in
10232 u32type="unsigned int"
10242 '') set try -DINT32
10243 if eval $compile; then
10244 case "`./try$exe_ext`" in
10256 '') if $test $intsize -ge 4; then
10258 u32type="unsigned int"
10266 '') case "$d_quad:$quadtype" in
10268 i64type="$quadtype"
10269 u64type="$uquadtype"
10277 $echo "Checking whether your NVs can preserve your UVs..." >&4
10281 $uvtype k = ($uvtype)~0, l;
10287 printf("preserve\n");
10292 if eval $compile; then
10293 case "`./try$exe_ext`" in
10294 preserve) d_nv_preserves_uv="$define" ;;
10297 case "$d_nv_preserves_uv" in
10298 $define) $echo "Yes, they can." 2>&1 ;;
10299 *) $echo "No, they can't." 2>&1
10300 d_nv_preserves_uv="$undef"
10306 case "$d_nv_preserves_uv" in
10307 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10308 *) $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10313 int n = 8 * $uvsize;
10315 for (i = 0; i < n; i++) {
10316 u = u << 1 | ($uvtype)1;
10317 if (($uvtype)($nvtype)u != u)
10325 if eval $compile; then
10326 d_nv_preserves_uv_bits="`./try$exe_ext`"
10328 case "$d_nv_preserves_uv_bits" in
10329 [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs." 2>&1 ;;
10330 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10331 d_nv_preserves_uv_bits="$undef"
10339 : check for off64_t
10341 echo "Checking to see if you have off64_t..." >&4
10343 #include <sys/types.h>
10344 #include <unistd.h>
10345 int main() { off64_t x = 7; }
10348 if eval $compile; then
10350 echo "You have off64_t."
10353 echo "You do not have off64_t."
10354 case "$lseeksize" in
10355 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10362 : see if POSIX threads are available
10363 set pthread.h i_pthread
10369 : how to create joinable pthreads
10370 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10372 echo "Checking what constant to use for creating joinable pthreads..." >&4
10373 $cat >try.c <<'EOCP'
10374 #include <pthread.h>
10376 int detachstate = JOINABLE;
10379 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10380 if eval $compile; then
10381 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10382 val="$undef" # Yes, undef.
10383 set d_old_pthread_create_joinable
10386 set old_pthread_create_joinable
10389 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10390 if eval $compile; then
10391 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10393 set d_old_pthread_create_joinable
10395 val=PTHREAD_CREATE_UNDETACHED
10396 set old_pthread_create_joinable
10399 set try -DJOINABLE=__UNDETACHED
10400 if eval $compile; then
10401 echo "You seem to use __UNDETACHED." >&4
10403 set d_old_pthread_create_joinable
10406 set old_pthread_create_joinable
10409 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10411 set d_old_pthread_create_joinable
10414 set old_pthread_create_joinable
10421 d_old_pthread_create_joinable="$undef"
10422 old_pthread_create_joinable=""
10425 : see if pause exists
10429 : see if pipe exists
10433 : see if poll exists
10438 : see whether the various POSIXish _yields exist
10440 #include <pthread.h>
10446 #ifdef PTHREAD_YIELD
10449 #ifdef PTHREAD_YIELD_NULL
10450 pthread_yield(NULL);
10456 : see if sched_yield exists
10457 set try -DSCHED_YIELD
10458 if eval $compile; then
10460 sched_yield='sched_yield()'
10464 case "$usethreads" in
10467 $define) echo 'sched_yield() found.' >&4 ;;
10468 *) echo 'sched_yield() NOT found.' >&4 ;;
10474 : see if pthread_yield exists
10475 set try -DPTHREAD_YIELD
10476 if eval $compile; then
10478 case "$sched_yield" in
10479 '') sched_yield='pthread_yield()' ;;
10482 set try -DPTHREAD_YIELD_NULL
10483 if eval $compile; then
10485 case "$sched_yield" in
10486 '') sched_yield='pthread_yield(NULL)' ;;
10492 case "$usethreads" in
10495 $define) echo 'pthread_yield() found.' >&4 ;;
10496 *) echo 'pthread_yield() NOT found.' >&4 ;;
10500 set d_pthread_yield
10503 case "$sched_yield" in
10504 '') sched_yield=undef ;;
10509 : see if this is a pwd.h system
10515 xxx=`./findhdr pwd.h`
10516 $cppstdin $cppflags $cppminus < $xxx >$$.h
10518 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10526 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10534 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10542 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10550 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10558 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10566 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10574 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10586 set d_pwquota; eval $setvar
10587 set d_pwage; eval $setvar
10588 set d_pwchange; eval $setvar
10589 set d_pwclass; eval $setvar
10590 set d_pwexpire; eval $setvar
10591 set d_pwcomment; eval $setvar
10592 set d_pwgecos; eval $setvar
10593 set d_pwpasswd; eval $setvar
10597 : see if readdir and friends exist
10598 set readdir d_readdir
10600 set seekdir d_seekdir
10602 set telldir d_telldir
10604 set rewinddir d_rewinddir
10607 : see if readlink exists
10608 set readlink d_readlink
10611 : see if rename exists
10612 set rename d_rename
10615 : see if rmdir exists
10619 : see if memory.h is available.
10624 : See if it conflicts with string.h
10630 $cppstdin $cppflags $cppminus < $strings > mem.h
10631 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10633 echo "We won't be including <memory.h>."
10643 : can bcopy handle overlapping blocks?
10648 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10650 #$i_memory I_MEMORY
10651 #$i_stdlib I_STDLIB
10652 #$i_string I_STRING
10653 #$i_unistd I_UNISTD
10655 $cat >>try.c <<'EOCP'
10658 # include <memory.h>
10661 # include <stdlib.h>
10664 # include <string.h>
10666 # include <strings.h>
10669 # include <unistd.h> /* Needed for NetBSD */
10673 char buf[128], abc[128];
10679 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10681 for (align = 7; align >= 0; align--) {
10682 for (len = 36; len; len--) {
10684 bcopy(abc, b, len);
10685 for (off = 1; off <= len; off++) {
10686 bcopy(b, b+off, len);
10687 bcopy(b+off, b, len);
10688 if (bcmp(b, abc, len))
10697 if eval $compile_ok; then
10698 if ./try 2>/dev/null; then
10699 echo "Yes, it can."
10702 echo "It can't, sorry."
10703 case "$d_memmove" in
10704 "$define") echo "But that's Ok since you have memmove()." ;;
10708 echo "(I can't compile the test program, so we'll assume not...)"
10709 case "$d_memmove" in
10710 "$define") echo "But that's Ok since you have memmove()." ;;
10715 $rm -f try.* try core
10719 : can memcpy handle overlapping blocks?
10721 case "$d_memcpy" in
10724 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10726 #$i_memory I_MEMORY
10727 #$i_stdlib I_STDLIB
10728 #$i_string I_STRING
10729 #$i_unistd I_UNISTD
10731 $cat >>try.c <<'EOCP'
10734 # include <memory.h>
10737 # include <stdlib.h>
10740 # include <string.h>
10742 # include <strings.h>
10745 # include <unistd.h> /* Needed for NetBSD */
10749 char buf[128], abc[128];
10755 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10756 try to store the string in read-only memory. */
10757 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10759 for (align = 7; align >= 0; align--) {
10760 for (len = 36; len; len--) {
10762 memcpy(b, abc, len);
10763 for (off = 1; off <= len; off++) {
10764 memcpy(b+off, b, len);
10765 memcpy(b, b+off, len);
10766 if (memcmp(b, abc, len))
10775 if eval $compile_ok; then
10776 if ./try 2>/dev/null; then
10777 echo "Yes, it can."
10780 echo "It can't, sorry."
10781 case "$d_memmove" in
10782 "$define") echo "But that's Ok since you have memmove()." ;;
10786 echo "(I can't compile the test program, so we'll assume not...)"
10787 case "$d_memmove" in
10788 "$define") echo "But that's Ok since you have memmove()." ;;
10793 $rm -f try.* try core
10797 : can memcmp be trusted to compare relative magnitude?
10799 case "$d_memcmp" in
10802 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10804 #$i_memory I_MEMORY
10805 #$i_stdlib I_STDLIB
10806 #$i_string I_STRING
10807 #$i_unistd I_UNISTD
10809 $cat >>try.c <<'EOCP'
10812 # include <memory.h>
10815 # include <stdlib.h>
10818 # include <string.h>
10820 # include <strings.h>
10823 # include <unistd.h> /* Needed for NetBSD */
10829 if ((a < b) && memcmp(&a, &b, 1) < 0)
10835 if eval $compile_ok; then
10836 if ./try 2>/dev/null; then
10837 echo "Yes, it can."
10840 echo "No, it can't (it uses signed chars)."
10843 echo "(I can't compile the test program, so we'll assume not...)"
10847 $rm -f try.* try core
10851 : see if select exists
10852 set select d_select
10855 : see if semctl exists
10856 set semctl d_semctl
10859 : see if semget exists
10860 set semget d_semget
10863 : see if semop exists
10867 : see how much of the 'sem*(2)' library is present.
10870 case "$d_semctl$d_semget$d_semop" in
10871 *"$undef"*) h_sem=false;;
10875 case "`ipcs 2>&1`" in
10876 "SVID messages"*"not configured"*)
10877 echo "Your $osname does not have the sem*(2) configured." >&4
10880 set semctl d_semctl
10882 set semget d_semget
10890 : we could also check for sys/ipc.h ...
10891 if $h_sem && $test `./findhdr sys/sem.h`; then
10892 echo "You have the full sem*(2) library." >&4
10895 echo "You don't have the full sem*(2) library." >&4
10901 : see whether sys/sem.h defines union semun
10903 $cat > try.c <<'END'
10904 #include <sys/types.h>
10905 #include <sys/ipc.h>
10906 #include <sys/sem.h>
10907 int main () { union semun semun; semun.buf = 0; }
10910 if eval $compile; then
10911 echo "You have union semun in <sys/sem.h>." >&4
10914 echo "You do not have union semun in <sys/sem.h>." >&4
10917 $rm -f try try.c try.h
10921 : see how to do semctl IPC_STAT
10924 : see whether semctl IPC_STAT can use union semun
10929 # define S_IRUSR S_IREAD
10930 # define S_IWUSR S_IWRITE
10931 # define S_IXUSR S_IEXEC
10933 # define S_IRUSR 0400
10934 # define S_IWUSR 0200
10935 # define S_IXUSR 0100
10937 # define S_IRGRP (S_IRUSR>>3)
10938 # define S_IWGRP (S_IWUSR>>3)
10939 # define S_IXGRP (S_IXUSR>>3)
10940 # define S_IROTH (S_IRUSR>>6)
10941 # define S_IWOTH (S_IWUSR>>6)
10942 # define S_IXOTH (S_IXUSR>>6)
10945 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10946 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10947 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10952 #include <sys/types.h>
10953 #include <sys/ipc.h>
10954 #include <sys/sem.h>
10955 #include <sys/stat.h>
10962 #$d_union_semun HAS_UNION_SEMUN
10965 #ifndef HAS_UNION_SEMUN
10968 struct semid_ds *buf;
10969 unsigned short *array;
10975 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10976 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10978 struct semid_ds argbuf;
10981 st = semctl(sem, 0, IPC_STAT, arg);
10985 # endif /* IPC_STAT */
10986 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10988 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10989 # endif /* IPC_RMID */
10990 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10992 #endif /* IPC_PRIVATE && ... */
10993 printf("semget failed: errno = %d\n", errno);
10999 if eval $compile; then
11002 semun) val="$define" ;;
11008 case "$d_semctl_semun" in
11010 echo "You can use union semun for semctl IPC_STAT." >&4
11013 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11018 : see whether semctl IPC_STAT can use struct semid_ds pointer
11019 $cat > try.c <<'END'
11020 #include <sys/types.h>
11021 #include <sys/ipc.h>
11022 #include <sys/sem.h>
11023 #include <sys/stat.h>
11031 struct semid_ds arg;
11034 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11035 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11038 st = semctl(sem, 0, IPC_STAT, &arg);
11040 printf("semid_ds\n");
11042 # endif /* IPC_STAT */
11043 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11045 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11046 # endif /* IPC_RMID */
11047 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11049 #endif /* IPC_PRIVATE && ... */
11050 printf("semget failed: errno = %d\n", errno);
11057 if eval $compile; then
11060 semid_ds) val="$define" ;;
11064 set d_semctl_semid_ds
11066 case "$d_semctl_semid_ds" in
11068 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11070 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11077 # We do not have the full sem*(2) library, so assume we can not
11083 set d_semctl_semid_ds
11088 : see if setegid exists
11089 set setegid d_setegid
11092 : see if seteuid exists
11093 set seteuid d_seteuid
11096 : see if setgrent exists
11097 set setgrent d_setgrent
11100 : see if sethostent exists
11101 set sethostent d_sethent
11104 : see if setlinebuf exists
11105 set setlinebuf d_setlinebuf
11108 : see if setlocale exists
11109 set setlocale d_setlocale
11112 : see if setnetent exists
11113 set setnetent d_setnent
11116 : see if setprotoent exists
11117 set setprotoent d_setpent
11120 : see if setpgid exists
11121 set setpgid d_setpgid
11124 : see if setpgrp2 exists
11125 set setpgrp2 d_setpgrp2
11128 : see if setpriority exists
11129 set setpriority d_setprior
11132 : see if setproctitle exists
11133 set setproctitle d_setproctitle
11136 : see if setpwent exists
11137 set setpwent d_setpwent
11140 : see if setregid exists
11141 set setregid d_setregid
11143 set setresgid d_setresgid
11146 : see if setreuid exists
11147 set setreuid d_setreuid
11149 set setresuid d_setresuid
11152 : see if setrgid exists
11153 set setrgid d_setrgid
11156 : see if setruid exists
11157 set setruid d_setruid
11160 : see if setservent exists
11161 set setservent d_setsent
11164 : see if setsid exists
11165 set setsid d_setsid
11168 : see if setvbuf exists
11169 set setvbuf d_setvbuf
11172 : see if sfio.h is available
11177 : see if sfio library is available
11188 : Ok, but do we want to use it.
11192 true|$define|[yY]*) dflt='y';;
11195 echo "$package can use the sfio library, but it is experimental."
11196 case "$useperlio" in
11198 echo "For sfio also the PerlIO abstraction layer is needed."
11199 echo "Earlier you said you wouldn't want that."
11202 rp="You seem to have sfio available, do you want to try using it?"
11205 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11206 useperlio="$define"
11209 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11211 : Remove sfio from list of libraries to use
11212 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11215 echo "libs = $libs" >&4
11219 *) case "$usesfio" in
11220 true|$define|[yY]*)
11221 echo "Sorry, cannot find sfio on this machine." >&4
11222 echo "Ignoring your setting of usesfio=$usesfio." >&4
11231 $define) usesfio='true';;
11232 *) usesfio='false';;
11235 : see if shmctl exists
11236 set shmctl d_shmctl
11239 : see if shmget exists
11240 set shmget d_shmget
11243 : see if shmat exists
11246 : see what shmat returns
11249 $cat >shmat.c <<'END'
11250 #include <sys/shm.h>
11253 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11258 echo "and it returns ($shmattype)." >&4
11259 : see if a prototype for shmat is available
11260 xxx=`./findhdr sys/shm.h`
11261 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11262 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11273 set d_shmatprototype
11276 : see if shmdt exists
11280 : see how much of the 'shm*(2)' library is present.
11283 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11284 *"$undef"*) h_shm=false;;
11288 case "`ipcs 2>&1`" in
11289 "SVID shared memory"*"not configured"*)
11290 echo "Your $osname does not have the shm*(2) configured." >&4
11293 set shmctl d_shmctl
11295 set shmget d_shmget
11305 : we could also check for sys/ipc.h ...
11306 if $h_shm && $test `./findhdr sys/shm.h`; then
11307 echo "You have the full shm*(2) library." >&4
11310 echo "You don't have the full shm*(2) library." >&4
11317 : see if we have sigaction
11318 if set sigaction val -f d_sigaction; eval $csym; $val; then
11319 echo 'sigaction() found.' >&4
11320 $cat > try.c <<'EOP'
11322 #include <sys/types.h>
11323 #include <signal.h>
11326 struct sigaction act, oact;
11328 oact.sa_handler = 0;
11329 /* so that act and oact are used */
11330 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11334 if eval $compile_ok; then
11337 echo "But you don't seem to have a useable struct sigaction." >&4
11341 echo 'sigaction NOT found.' >&4
11344 set d_sigaction; eval $setvar
11345 $rm -f try try$_o try.c
11347 : see if sigsetjmp exists
11349 case "$d_sigsetjmp" in
11351 $cat >try.c <<'EOP'
11352 #include <setjmp.h>
11357 if (sigsetjmp(env,1))
11360 siglongjmp(env, 1);
11365 if eval $compile; then
11366 if ./try >/dev/null 2>&1; then
11367 echo "POSIX sigsetjmp found." >&4
11371 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11377 echo "sigsetjmp not found." >&4
11381 *) val="$d_sigsetjmp"
11382 case "$d_sigsetjmp" in
11383 $define) echo "POSIX sigsetjmp found." >&4;;
11384 $undef) echo "sigsetjmp not found." >&4;;
11392 : see if socks5_init exists
11393 set socks5_init d_socks5_init
11396 : see if sys/stat.h is available
11397 set sys/stat.h i_sysstat
11401 : see if stat knows about block sizes
11403 echo "Checking to see if your struct stat has st_blocks field..." >&4
11404 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11408 : see if this is a sys/vfs.h system
11409 set sys/vfs.h i_sysvfs
11413 : see if this is a sys/statfs.h system
11414 set sys/statfs.h i_sysstatfs
11419 echo "Checking to see if your system supports struct statfs..." >&4
11420 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
11422 case "$d_statfs_s" in
11423 "$define") echo "Yes, it does." ;;
11424 *) echo "No, it doesn't." ;;
11429 : see if struct statfs knows about f_flags
11430 case "$d_statfs_s" in
11433 echo "Checking to see if your struct statfs has f_flags field..." >&4
11434 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
11438 set d_statfs_f_flags
11442 case "$d_statfs_f_flags" in
11443 "$define") echo "Yes, it does." ;;
11444 *) echo "No, it doesn't." ;;
11447 : see if _ptr and _cnt from stdio act std
11449 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11450 echo "(Looks like you have stdio.h from Linux.)"
11451 case "$stdio_ptr" in
11452 '') stdio_ptr='((fp)->_IO_read_ptr)'
11455 *) ptr_lval=$d_stdio_ptr_lval;;
11457 case "$stdio_cnt" in
11458 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11461 *) cnt_lval=$d_stdio_cnt_lval;;
11463 case "$stdio_base" in
11464 '') stdio_base='((fp)->_IO_read_base)';;
11466 case "$stdio_bufsiz" in
11467 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11470 case "$stdio_ptr" in
11471 '') stdio_ptr='((fp)->_ptr)'
11474 *) ptr_lval=$d_stdio_ptr_lval;;
11476 case "$stdio_cnt" in
11477 '') stdio_cnt='((fp)->_cnt)'
11480 *) cnt_lval=$d_stdio_cnt_lval;;
11482 case "$stdio_base" in
11483 '') stdio_base='((fp)->_base)';;
11485 case "$stdio_bufsiz" in
11486 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11489 : test whether _ptr and _cnt really work
11490 echo "Checking how std your stdio is..." >&4
11493 #define FILE_ptr(fp) $stdio_ptr
11494 #define FILE_cnt(fp) $stdio_cnt
11496 FILE *fp = fopen("try.c", "r");
11499 18 <= FILE_cnt(fp) &&
11500 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11508 if eval $compile; then
11510 echo "Your stdio acts pretty std."
11513 echo "Your stdio isn't very std."
11516 echo "Your stdio doesn't appear very std."
11522 : Can _ptr be used as an lvalue?
11523 case "$d_stdstdio$ptr_lval" in
11524 $define$define) val=$define ;;
11527 set d_stdio_ptr_lval
11530 : Can _cnt be used as an lvalue?
11531 case "$d_stdstdio$cnt_lval" in
11532 $define$define) val=$define ;;
11535 set d_stdio_cnt_lval
11539 : test whether setting _ptr sets _cnt as a side effect
11540 d_stdio_ptr_lval_sets_cnt="$undef"
11541 d_stdio_ptr_lval_nochange_cnt="$undef"
11542 case "$d_stdio_ptr_lval$d_stdstdio" in
11544 echo "Checking to see what happens if we set the stdio ptr..." >&4
11547 /* Can we scream? */
11548 /* Eat dust sed :-) */
11549 #define FILE_ptr(fp) $stdio_ptr
11550 #define FILE_cnt(fp) $stdio_cnt
11552 FILE *fp = fopen("try.c", "r");
11557 18 <= FILE_cnt(fp) &&
11558 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11560 puts("Fail even to read");
11563 ptr = FILE_ptr(fp);
11564 cnt = FILE_cnt(fp);
11568 if (FILE_ptr(fp) != (ptr + 42)) {
11569 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11572 if (FILE_cnt(fp) <= 20) {
11573 printf ("Fail (<20 chars to test)");
11576 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11577 puts("Fail compare");
11580 if (cnt == FILE_cnt(fp)) {
11581 puts("Pass_unchanged");
11584 if (FILE_cnt(fp) == (cnt - 42)) {
11585 puts("Pass_changed");
11588 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11594 if eval $compile; then
11595 case `./try$exe_ext` in
11597 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11598 d_stdio_ptr_lval_sets_cnt="$define" ;;
11600 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11601 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11603 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11605 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11608 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11614 : see if _base is also standard
11616 case "$d_stdstdio" in
11620 #define FILE_base(fp) $stdio_base
11621 #define FILE_bufsiz(fp) $stdio_bufsiz
11623 FILE *fp = fopen("try.c", "r");
11626 19 <= FILE_bufsiz(fp) &&
11627 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11634 if eval $compile; then
11636 echo "And its _base field acts std."
11639 echo "But its _base field isn't std."
11642 echo "However, it seems to be lacking the _base field."
11651 Checking how to access stdio streams by file descriptor number...
11653 case "$stdio_stream_array" in
11654 '') $cat >try.c <<EOCP
11657 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11661 for s in _iob __iob __sF
11663 set try -DSTDIO_STREAM_ARRAY=$s
11664 if eval $compile; then
11665 case "`./try$exe_ext`" in
11666 yes) stdio_stream_array=$s; break ;;
11670 $rm -f try.* try$exe_ext
11672 case "$stdio_stream_array" in
11674 I can't figure out how to access stdio streams by file descriptor number.
11676 d_stdio_stream_array="$undef"
11679 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11681 d_stdio_stream_array="$define"
11685 : see if strcoll exists
11686 set strcoll d_strcoll
11689 : check for structure copying
11691 echo "Checking to see if your C compiler can copy structs..." >&4
11692 $cat >try.c <<'EOCP'
11702 if $cc -c try.c >/dev/null 2>&1 ; then
11704 echo "Yup, it can."
11707 echo "Nope, it can't."
11713 : see if strerror and/or sys_errlist[] exist
11715 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11716 if set strerror val -f d_strerror; eval $csym; $val; then
11717 echo 'strerror() found.' >&4
11718 d_strerror="$define"
11719 d_strerrm='strerror(e)'
11720 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11721 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11722 d_syserrlst="$define"
11724 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11725 d_syserrlst="$undef"
11727 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11728 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11729 echo 'strerror() found in string header.' >&4
11730 d_strerror="$define"
11731 d_strerrm='strerror(e)'
11732 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11733 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11734 d_syserrlst="$define"
11736 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11737 d_syserrlst="$undef"
11739 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11740 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11741 d_strerror="$undef"
11742 d_syserrlst="$define"
11743 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11745 echo 'strerror() and sys_errlist[] NOT found.' >&4
11746 d_strerror="$undef"
11747 d_syserrlst="$undef"
11748 d_strerrm='"unknown"'
11752 : see if strtod exists
11753 set strtod d_strtod
11756 : see if strtol exists
11757 set strtol d_strtol
11760 : see if strtold exists
11761 set strtold d_strtold
11764 : see if strtoll exists
11765 set strtoll d_strtoll
11768 case "$d_longlong-$d_strtoll" in
11771 Checking whether your strtoll() works okay...
11773 $cat >try.c <<'EOCP'
11776 #define strtoll __strtoll
11779 #define strtoll _strtoll
11782 extern long long int strtoll(char *s, char **, int);
11783 static int bad = 0;
11784 int check(char *s, long long ell, int een) {
11787 gll = strtoll(s, 0, 10);
11788 if (!((gll == ell) && (errno == een)))
11792 check(" 1", 1LL, 0);
11793 check(" 0", 0LL, 0);
11794 check("-1", -1LL, 0);
11795 check("-9223372036854775808", -9223372036854775808LL, 0);
11796 check("-9223372036854775808", -9223372036854775808LL, 0);
11797 check(" 9223372036854775807", 9223372036854775807LL, 0);
11798 check("-9223372036854775808", -9223372036854775808LL, 0);
11799 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11800 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11806 if eval $compile; then
11809 ok) echo "Your strtoll() seems to be working okay." ;;
11811 Your strtoll() doesn't seem to be working okay.
11817 echo "(I can't seem to compile the test program--assuming it doesn't)"
11823 : see if strtoul exists
11824 set strtoul d_strtoul
11827 : see if strtoull exists
11828 set strtoull d_strtoull
11831 case "$d_longlong-$d_strtoull" in
11834 Checking whether your strtoull() works okay...
11836 $cat >try.c <<'EOCP'
11839 #define strtoull __strtoull
11842 extern unsigned long long int strtoull(char *s, char **, int);
11843 static int bad = 0;
11844 int check(char *s, long long eull, int een) {
11847 gull = strtoull(s, 0, 10);
11848 if (!((gull == eull) && (errno == een)))
11852 check(" 1", 1LL, 0);
11853 check(" 0", 0LL, 0);
11854 check("18446744073709551615", 18446744073709551615ULL, 0);
11855 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11861 if eval $compile; then
11863 ok) echo "Your strtoull() seems to be working okay." ;;
11865 Your strtoull() doesn't seem to be working okay.
11867 d_strtoull="$undef"
11874 : see if strtouq exists
11875 set strtouq d_strtouq
11878 : see if strxfrm exists
11879 set strxfrm d_strxfrm
11882 : see if symlink exists
11883 set symlink d_symlink
11886 : see if syscall exists
11887 set syscall d_syscall
11890 : see if sysconf exists
11891 set sysconf d_sysconf
11894 : see if system exists
11895 set system d_system
11898 : see if tcgetpgrp exists
11899 set tcgetpgrp d_tcgetpgrp
11902 : see if tcsetpgrp exists
11903 set tcsetpgrp d_tcsetpgrp
11906 : see if prototype for telldir is available
11908 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11911 : see if this is a sys/times.h system
11912 set sys/times.h i_systimes
11915 : see if times exists
11917 if set times val -f d_times; eval $csym; $val; then
11918 echo 'times() found.' >&4
11921 case "$i_systimes" in
11922 "$define") inc='sys/times.h';;
11924 rp="What is the type returned by times() on this system?"
11925 set clock_t clocktype long stdio.h sys/types.h $inc
11928 echo 'times() NOT found, hope that will do.' >&4
11933 : see if truncate exists
11934 set truncate d_truncate
11937 : see if tzname[] exists
11939 if set tzname val -a d_tzname; eval $csym; $val; then
11941 echo 'tzname[] found.' >&4
11944 echo 'tzname[] NOT found.' >&4
11949 : see if umask exists
11953 : see if ustat exists
11957 : backward compatibility for d_hvfork
11958 if test X$d_hvfork != X; then
11959 d_vfork="$d_hvfork"
11962 : see if there is a vfork
11967 : Ok, but do we want to use it. vfork is reportedly unreliable in
11968 : perl on Solaris 2.x, and probably elsewhere.
11972 case "$usevfork" in
11978 Perl can only use a vfork() that doesn't suffer from strict
11979 restrictions on calling functions or modifying global data in
11980 the child. For example, glibc-2.1 contains such a vfork()
11981 that is unsuitable. If your system provides a proper fork()
11982 call, chances are that you do NOT want perl to use vfork().
11985 rp="Do you still want to use vfork()?"
11990 echo "Ok, we won't use vfork()."
11999 $define) usevfork='true';;
12000 *) usevfork='false';;
12003 : see if this is an sysdir system
12004 set sys/dir.h i_sysdir
12007 : see if this is an sysndir system
12008 set sys/ndir.h i_sysndir
12011 : see if closedir exists
12012 set closedir d_closedir
12015 case "$d_closedir" in
12018 echo "Checking whether closedir() returns a status..." >&4
12019 cat > closedir.c <<EOM
12020 #$i_dirent I_DIRENT /**/
12021 #$i_sysdir I_SYS_DIR /**/
12022 #$i_sysndir I_SYS_NDIR /**/
12023 #$i_systypes I_SYS_TYPES /**/
12025 #if defined(I_SYS_TYPES)
12026 #include <sys/types.h>
12028 #if defined(I_DIRENT)
12029 #include <dirent.h>
12030 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12031 #include <sys/dir.h>
12035 #include <sys/ndir.h>
12039 #include <ndir.h> /* may be wrong in the future */
12041 #include <sys/dir.h>
12046 int main() { return closedir(opendir(".")); }
12049 if eval $compile_ok; then
12050 if ./closedir > /dev/null 2>&1 ; then
12051 echo "Yes, it does."
12054 echo "No, it doesn't."
12058 echo "(I can't seem to compile the test program--assuming it doesn't)"
12066 set d_void_closedir
12069 : check for volatile keyword
12071 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12072 $cat >try.c <<'EOCP'
12075 typedef struct _goo_struct goo_struct;
12076 goo_struct * volatile goo = ((goo_struct *)0);
12077 struct _goo_struct {
12082 typedef unsigned short foo_t;
12083 char *volatile foo;
12085 volatile foo_t blech;
12089 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12091 echo "Yup, it does."
12094 echo "Nope, it doesn't."
12100 : see if there is a wait4
12104 : see if waitpid exists
12105 set waitpid d_waitpid
12108 : see if wcstombs exists
12109 set wcstombs d_wcstombs
12112 : see if wctomb exists
12113 set wctomb d_wctomb
12116 : preserve RCS keywords in files with variable substitution, grrr
12121 Revision='$Revision'
12123 case "$crosscompile" in
12124 ''|[nN]*) crosscompile="$undef" ;;
12128 next|rhapsody|darwin) multiarch="$define" ;;
12130 case "$multiarch" in
12131 ''|[nN]*) multiarch="$undef" ;;
12134 : check for alignment requirements
12136 case "$crosscompile$multiarch" in
12139 You seem to be either cross-compiling or doing a multiarchitecture build,
12140 skipping the memory alignment check.
12143 case "$alignbytes" in
12144 '') alignbytes=8 ;;
12148 case "$alignbytes" in
12149 '') echo "Checking alignment constraints..." >&4
12150 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12151 $cat >try.c <<'EOCP'
12152 typedef long double NV;
12155 $cat >try.c <<'EOCP'
12159 $cat >>try.c <<'EOCP'
12167 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12172 if eval $compile_ok; then
12176 echo "(I can't seem to compile the test program...)"
12179 *) dflt="$alignbytes"
12182 rp="Doubles must be aligned on a how-many-byte boundary?"
12190 : set the base revision
12193 : check for ordering of bytes in a long
12195 case "$crosscompile$multiarch" in
12198 You seem to be either cross-compiling or doing a multiarchitecture build,
12199 skipping the byteorder check.
12205 case "$byteorder" in
12208 In the following, larger digits indicate more significance. A big-endian
12209 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12210 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12211 machines may have weird orders like 3412. A Cray will report 87654321,
12212 an Alpha will report 12345678. If the test program works the default is
12214 I'm now running the test program...
12216 $cat >try.c <<'EOCP'
12223 char c[sizeof(long)];
12226 if (sizeof(long) > 4)
12227 u.l = (0x08070605L << 32) | 0x04030201L;
12230 for (i = 0; i < sizeof(long); i++)
12231 printf("%c", u.c[i]+'0');
12238 if eval $compile && ./try > /dev/null; then
12241 [1-4][1-4][1-4][1-4]|12345678|87654321)
12242 echo "(The test program ran ok.)"
12243 echo "byteorder=$dflt"
12246 ????|????????) echo "(The test program ran ok.)" ;;
12247 *) echo "(The test program didn't run right for some reason.)" ;;
12252 (I can't seem to compile the test program. Guessing big-endian...)
12255 case "$xxx_prompt" in
12257 rp="What is the order of bytes in a long?"
12271 : how do we catenate cpp tokens here?
12273 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12274 $cat >cpp_stuff.c <<'EOCP'
12275 #define RCAT(a,b)a/**/b
12276 #define ACAT(a,b)a ## b
12280 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12281 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12282 echo "Oh! Smells like ANSI's been here." >&4
12283 echo "We can catify or stringify, separately or together!"
12285 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12286 echo "Ah, yes! The good old days!" >&4
12287 echo "However, in the good old days we don't know how to stringify and"
12288 echo "catify at the same time."
12292 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12293 to have to edit the values of CAT[2-5] in config.h...
12295 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12299 : see if this is a db.h system
12305 : Check db version.
12307 echo "Checking Berkeley DB version ..." >&4
12313 #include <sys/types.h>
12318 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12319 int Major, Minor, Patch ;
12320 unsigned long Version ;
12321 (void)db_version(&Major, &Minor, &Patch) ;
12322 printf("You have Berkeley DB Version 2 or greater\n");
12324 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12325 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12326 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12327 Major, Minor, Patch) ;
12329 /* check that db.h & libdb are compatible */
12330 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12331 printf("db.h and libdb are incompatible\n") ;
12335 printf("db.h and libdb are compatible\n") ;
12337 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12338 + DB_VERSION_PATCH ;
12340 /* needs to be >= 2.3.4 */
12341 if (Version < 2003004) {
12342 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12343 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12349 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12350 printf("You have Berkeley DB Version 1\n");
12351 exit(0); /* DB version < 2: the coast is clear. */
12353 exit(1); /* <db.h> not Berkeley DB? */
12359 if eval $compile_ok && ./try; then
12360 echo 'Looks OK.' >&4
12362 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12366 : Remove db from list of libraries to use
12367 echo "Removing unusable -ldb from library list" >&4
12368 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12371 echo "libs = $libs" >&4
12381 : Check the return type needed for hash
12383 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12389 #include <sys/types.h>
12392 #ifndef DB_VERSION_MAJOR
12393 u_int32_t hash_cb (ptr, size)
12401 info.hash = hash_cb;
12405 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12406 if $contains warning try.out >>/dev/null 2>&1 ; then
12409 db_hashtype='u_int32_t'
12412 : XXX Maybe we should just give up here.
12413 db_hashtype=u_int32_t
12415 echo "Help: I can't seem to compile the db test program." >&4
12416 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12419 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12421 *) db_hashtype=u_int32_t
12426 : Check the return type needed for prefix
12428 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12434 #include <sys/types.h>
12437 #ifndef DB_VERSION_MAJOR
12438 size_t prefix_cb (key1, key2)
12446 info.prefix = prefix_cb;
12450 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12451 if $contains warning try.out >>/dev/null 2>&1 ; then
12452 db_prefixtype='int'
12454 db_prefixtype='size_t'
12457 db_prefixtype='size_t'
12458 : XXX Maybe we should just give up here.
12460 echo "Help: I can't seem to compile the db test program." >&4
12461 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12464 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12466 *) db_prefixtype='size_t'
12470 : check for void type
12472 echo "Checking to see how well your C compiler groks the void type..." >&4
12473 case "$voidflags" in
12475 $cat >try.c <<'EOCP'
12481 extern void moo(); /* function returning void */
12482 void (*goo)(); /* ptr to func returning void */
12484 void *hue; /* generic ptr */
12497 int main() { sub(); }
12499 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12500 voidflags=$defvoidused
12501 echo "Good. It appears to support void to the level $package wants.">&4
12502 if $contains warning .out >/dev/null 2>&1; then
12503 echo "However, you might get some warnings that look like this:"
12507 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12508 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12509 echo "It supports 1..."
12510 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12511 echo "It also supports 2..."
12512 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12514 echo "And it supports 4 but not 8 definitely."
12516 echo "It doesn't support 4..."
12517 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12519 echo "But it supports 8."
12522 echo "Neither does it support 8."
12526 echo "It does not support 2..."
12527 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12529 echo "But it supports 4 and 8."
12531 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12533 echo "And it supports 4 but has not heard about 8."
12535 echo "However it supports 8 but not 4."
12540 echo "There is no support at all for void."
12545 case "$voidflags" in
12547 *) $cat >&4 <<'EOM'
12548 Support flag bits are:
12549 1: basic void declarations.
12550 2: arrays of pointers to functions returning void.
12551 4: operations between pointers to and addresses of void functions.
12552 8: generic void pointers.
12555 rp="Your void support flags add up to what?"
12563 : How can we generate normalized random numbers ?
12565 echo "Looking for a random number function..." >&4
12566 case "$randfunc" in
12568 if set drand48 val -f; eval $csym; $val; then
12570 echo "Good, found drand48()." >&4
12571 elif set random val -f; eval $csym; $val; then
12573 echo "OK, found random()." >&4
12576 echo "Yick, looks like I have to use rand()." >&4
12587 *-Dmy_rand=*|*-Dmy_srand=*)
12588 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12589 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12590 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12591 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12595 while $test "$cont"; do
12596 rp="Use which function to generate random numbers?"
12598 if $test "$ans" = "$dflt"; then
12604 if set $ans val -f; eval $csym; $val; then
12608 rp="I cannot find function $ans. Use that name anyway?"
12617 case "$randfunc" in
12619 drand01="drand48()"
12625 case "$randbits" in
12627 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12629 #$i_unistd I_UNISTD
12630 #$i_stdlib I_STDLIB
12633 # include <unistd.h>
12636 # include <stdlib.h>
12641 register unsigned long tmp;
12642 register unsigned long max = 0L;
12644 for (i = 1000; i; i--) {
12645 tmp = (unsigned long) $randfunc();
12646 if (tmp > max) max = tmp;
12648 for (i = 0; max; i++)
12654 if eval $compile_ok; then
12658 echo "(I can't seem to compile the test program...)"
12665 rp="How many bits does your $randfunc() function produce?"
12669 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12670 seedfunc="s$randfunc"
12671 randseedtype=unsigned
12675 rp="How many bits does your $randfunc() function produce?"
12678 seedfunc="s$randfunc"
12679 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12680 if set $seedfunc val -f; eval $csym; $val; then
12681 echo "(Using $seedfunc() to seed random generator)"
12683 echo "(Warning: no $seedfunc() to seed random generator)"
12686 randseedtype=unsigned
12694 echo "Determining whether or not we are on an EBCDIC system..." >&4
12695 $cat >tebcdic.c <<'EOM'
12698 if ('M'==0xd4) return 0;
12705 if eval $compile_ok; then
12707 echo "You seem to speak EBCDIC." >&4
12710 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12713 echo "I'm unable to compile the test program." >&4
12714 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12716 $rm -f tebcdic.c tebcdic
12722 Checking how to flush all pending stdio output...
12724 # I only know how to find the first 32 possibly open files on SunOS.
12725 # See also hints/sunos_4_1.sh and util.c --AD
12727 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12729 $cat >>try.c <<EOCP
12731 #$i_unistd I_UNISTD
12733 # include <unistd.h>
12735 #$d_sysconf HAS_SYSCONF
12736 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12737 #ifdef HAS_STDIO_STREAM_ARRAY
12738 # define STDIO_STREAM_ARRAY $stdio_stream_array
12741 FILE* p = fopen("try.out", "w");
12745 # ifdef TRY_FPRINTF
12749 #ifdef TRY_FFLUSH_NULL
12752 #ifdef TRY_FFLUSH_ALL
12754 long open_max = -1;
12755 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12756 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12758 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12759 open_max = sysconf(_SC_OPEN_MAX);
12762 open_max = FOPEN_MAX;
12765 open_max = OPEN_MAX;
12774 # ifdef HAS_STDIO_STREAM_ARRAY
12775 if (open_max > 0) {
12777 for (i = 0; i < open_max; i++)
12778 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12779 STDIO_STREAM_ARRAY[i]._file < open_max &&
12780 STDIO_STREAM_ARRAY[i]._flag)
12781 fflush(&STDIO_STREAM_ARRAY[i]);
12789 : first we have to find out how _not_ to flush
12790 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12792 set try -DTRY_FPUTC
12793 if eval $compile; then
12795 ./try$exe_ext 2>/dev/null
12796 if $test ! -s try.out -a "X$?" = X42; then
12802 set try -DTRY_FPRINTF
12804 if eval $compile; then
12806 ./try$exe_ext 2>/dev/null
12807 if $test ! -s try.out -a "X$?" = X42; then
12808 output=-DTRY_FPRINTF
12814 : check for fflush NULL behaviour
12815 case "$fflushNULL" in
12816 '') set try -DTRY_FFLUSH_NULL $output
12817 if eval $compile; then
12819 ./try$exe_ext 2>/dev/null
12821 if $test -s try.out -a "X$code" = X42; then
12822 fflushNULL="`$cat try.out`"
12824 if $test "X$code" != X42; then
12826 (If this test failed, don't worry, we'll try another method shortly.)
12831 $rm -f core try.core core.try.*
12832 case "$fflushNULL" in
12834 Your fflush(NULL) works okay for output streams.
12835 Let's see if it clobbers input pipes...
12837 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12838 # bug that improperly flushes the input end of pipes. So we avoid the
12839 # autoflush on fork/system/exec support for now. :-(
12840 $cat >tryp.c <<EOCP
12843 main(int argc, char **argv)
12849 while ((i = getc(stdin)) != -1
12850 && (*bp++ = i) != '\n'
12851 && bp < &buf[1024])
12854 fprintf(stdout, "%s", buf);
12862 fflushNULL="$define"
12864 if eval $compile; then
12866 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12867 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12869 fflush(NULL) seems to behave okay with input streams.
12871 fflushNULL="$define"
12874 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12876 fflushNULL="$undef"
12879 $rm -f core tryp.c tryp.core core.tryp.*
12882 Your fflush(NULL) isn't working (contrary to ANSI C).
12884 fflushNULL="$undef"
12887 Cannot figure out whether your fflush(NULL) works or not.
12888 I'm assuming it doesn't (contrary to ANSI C).
12890 fflushNULL="$undef"
12894 $define|true|[yY]*)
12895 fflushNULL="$define"
12898 fflushNULL="$undef"
12901 : check explicit looping only if NULL did not work, and if the pipe
12902 : bug does not show up on an explicit flush too
12903 case "$fflushNULL" in
12905 $cat >tryp.c <<EOCP
12908 main(int argc, char **argv)
12914 while ((i = getc(stdin)) != -1
12915 && (*bp++ = i) != '\n'
12916 && bp < &buf[1024])
12919 fprintf(stdout, "%s", buf);
12928 if eval $compile; then
12930 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12931 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12933 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12935 : now check for fflushall behaviour
12936 case "$fflushall" in
12937 '') set try -DTRY_FFLUSH_ALL $output
12938 if eval $compile; then
12940 (Now testing the other method--but note that this also may fail.)
12943 ./try$exe_ext 2>/dev/null
12944 if $test -s try.out -a "X$?" = X42; then
12945 fflushall="`$cat try.out`"
12948 $rm -f core try.core core.try.*
12949 case "$fflushall" in
12951 Whew. Flushing explicitly all the stdio streams works.
12953 fflushall="$define"
12956 Sigh. Flushing explicitly all the stdio streams doesn't work.
12961 Cannot figure out whether flushing stdio streams explicitly works or not.
12962 I'm assuming it doesn't.
12968 "$define"|true|[yY]*)
12969 fflushall="$define"
12977 All is futile. Even fflush(stdin) clobbers input pipes!
12984 $rm -f core tryp.c tryp.core core.tryp.*
12986 *) fflushall="$undef"
12990 case "$fflushNULL$fflushall" in
12993 OK, I give up. I cannot figure out how to flush pending stdio output.
12994 We won't be flushing handles at all before fork/exec/popen.
12998 $rm -f try.* try$exe_ext
13000 : Store the full pathname to the ar program for use in the C program
13001 : Respect a hint or command line value for full_ar.
13006 : Store the full pathname to the sed program for use in the C program
13009 : see what type gids are declared as in the kernel
13011 echo "Looking for the type for group ids returned by getgid()."
13012 set gid_t gidtype xxx stdio.h sys/types.h
13016 xxx=`./findhdr sys/user.h`
13017 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13019 unsigned) dflt="$1 $2" ;;
13023 *) dflt="$gidtype";;
13026 gid_t) echo "gid_t found." ;;
13027 *) rp="What is the type for group ids returned by getgid()?"
13035 *_t) zzz="$gidtype" ;;
13038 echo "Checking the size of $zzz..." >&4
13040 #include <sys/types.h>
13043 printf("%d\n", (int)sizeof($gidtype));
13048 if eval $compile_ok; then
13052 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13055 echo "Your $zzz is $gidsize bytes long."
13060 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13066 *_t) zzz="$gidtype" ;;
13069 echo "Checking the sign of $zzz..." >&4
13071 #include <sys/types.h>
13082 if eval $compile; then
13086 echo "(I can't execute the test program--guessing unsigned.)" >&4
13090 1) echo "Your $zzz is unsigned." ;;
13091 -1) echo "Your $zzz is signed." ;;
13097 echo "(I can't compile the test program--guessing unsigned.)" >&4
13103 if $test X"$quadtype" != X; then
13105 echo "Checking how to print 64-bit integers..." >&4
13107 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13108 $cat >try.c <<'EOCP'
13109 #include <sys/types.h>
13112 int q = 12345678901;
13113 printf("%ld\n", q);
13117 if eval $compile; then
13118 yyy=`./try$exe_ext`
13121 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13122 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13123 echo "We will use %d."
13129 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13130 $cat >try.c <<'EOCP'
13131 #include <sys/types.h>
13134 long q = 12345678901;
13135 printf("%ld\n", q);
13139 if eval $compile; then
13140 yyy=`./try$exe_ext`
13143 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13144 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13145 echo "We will use %ld."
13151 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13152 $cat >try.c <<'EOCP'
13153 #include <sys/types.h>
13154 #include <inttypes.h>
13157 int64_t q = 12345678901;
13158 printf("%" PRId64 "\n", q);
13162 if eval $compile; then
13163 yyy=`./try$exe_ext`
13166 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13167 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13168 echo "We will use the C9X style."
13174 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13175 $cat >try.c <<'EOCP'
13176 #include <sys/types.h>
13179 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13180 printf("%lld\n", q);
13184 if eval $compile; then
13185 yyy=`./try$exe_ext`
13188 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13189 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13190 echo "We will use the %lld style."
13196 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13198 #include <sys/types.h>
13201 $quadtype q = 12345678901;
13202 printf("%Ld\n", q);
13206 if eval $compile; then
13207 yyy=`./try$exe_ext`
13210 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13211 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13212 echo "We will use %Ld."
13218 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13220 #include <sys/types.h>
13223 $quadtype q = 12345678901;
13224 printf("%qd\n", q);
13228 if eval $compile; then
13229 yyy=`./try$exe_ext`
13232 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13233 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13234 echo "We will use %qd."
13240 if $test X"$sPRId64" = X; then
13241 echo "Cannot figure out how to print 64-bit integers." >&4
13249 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13250 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13252 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13253 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13259 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13261 if $test X"$ivsize" = X8; then
13262 ivdformat="$sPRId64"
13263 uvuformat="$sPRIu64"
13264 uvoformat="$sPRIo64"
13265 uvxformat="$sPRIx64"
13266 uvXUformat="$sPRIXU64"
13268 if $test X"$ivsize" = X"$longsize"; then
13275 if $test X"$ivsize" = X"$intsize"; then
13283 if $test X"$ivsize" = X"$shortsize"; then
13294 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13295 nveformat="$sPRIeldbl"
13296 nvfformat="$sPRIfldbl"
13297 nvgformat="$sPRIgldbl"
13298 nvEUformat="$sPRIEUldbl"
13299 nvFUformat="$sPRIFUldbl"
13300 nvGUformat="$sPRIGUldbl"
13310 case "$ivdformat" in
13311 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13318 $echo "Checking the format string to be used for gids..." >&4
13321 -1) if $test X"$gidsize" = X"$ivsize"; then
13322 gidformat="$ivdformat"
13324 if $test X"$gidsize" = X"$longsize"; then
13327 if $test X"$gidsize" = X"$intsize"; then
13330 if $test X"$gidsize" = X"$shortsize"; then
13337 *) if $test X"$gidsize" = X"$uvsize"; then
13338 gidformat="$uvuformat"
13340 if $test X"$gidsize" = X"$longsize"; then
13343 if $test X"$gidsize" = X"$intsize"; then
13346 if $test X"$gidsize" = X"$shortsize"; then
13355 : see if getgroups exists
13356 set getgroups d_getgrps
13359 : see if setgroups exists
13360 set setgroups d_setgrps
13364 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13366 case "$d_getgrps$d_setgrps" in
13368 case "$groupstype" in
13369 '') dflt="$gidtype" ;;
13370 *) dflt="$groupstype" ;;
13373 What type of pointer is the second argument to getgroups() and setgroups()?
13374 Usually this is the same as group ids, $gidtype, but not always.
13377 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13381 *) groupstype="$gidtype";;
13385 echo "Checking if your $make program sets \$(MAKE)..." >&4
13386 case "$make_set_make" in
13388 $sed 's/^X //' > testmake.mak << 'EOF'
13390 X @echo 'maketemp="$(MAKE)"'
13392 case "`$make -f testmake.mak 2>/dev/null`" in
13393 *maketemp=*) make_set_make='#' ;;
13394 *) make_set_make="MAKE=$make" ;;
13396 $rm -f testmake.mak
13399 case "$make_set_make" in
13400 '#') echo "Yup, it does.";;
13401 *) echo "Nope, it doesn't.";;
13404 : see what type is used for mode_t
13405 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13406 set mode_t modetype int stdio.h sys/types.h
13409 : define a fucntion to check prototypes
13410 $cat > protochk <<EOSH
13413 optimize="$optimize"
13415 prototype="$prototype"
13420 $cat >> protochk <<'EOSH'
13425 while test $# -ge 2; do
13427 $define) echo "#include <$2>" >> try.c ;;
13428 literal) echo "$2" >> try.c ;;
13432 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13433 cat >> try.c <<'EOCP'
13434 #ifdef CAN_PROTOTYPE
13435 #define _(args) args
13440 echo "$foo" >> try.c
13441 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13442 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13448 $eunicefix protochk
13450 : see what type is used for size_t
13451 rp="What is the type used for the length parameter for string functions?"
13452 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13455 : check for type of arguments to gethostbyaddr.
13456 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13457 case "$d_gethbyaddr" in
13461 Checking to see what type of arguments are accepted by gethostbyaddr().
13463 hdrs="$define sys/types.h
13464 $d_socket sys/socket.h
13465 $i_niin netinet/in.h
13467 $i_unistd unistd.h"
13468 : The first arg can 'char *' or 'void *'
13469 : The second arg is some of integral type
13470 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13471 for yyy in size_t long int; do
13472 case "$netdb_host_type" in
13473 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13474 if ./protochk "$try" $hdrs; then
13475 echo "Your system accepts $xxx for the first arg."
13476 echo "...and $yyy for the second arg."
13477 netdb_host_type="$xxx"
13478 netdb_hlen_type="$yyy"
13484 : In case none of those worked, prompt the user.
13485 case "$netdb_host_type" in
13486 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13489 netdb_host_type=$ans
13490 rp='What is the type for the 2nd argument to gethostbyaddr?'
13493 netdb_hlen_type=$ans
13497 *) : no gethostbyaddr, so pick harmless defaults
13498 netdb_host_type='char *'
13499 netdb_hlen_type="$sizetype"
13502 # Remove the "const" if needed. -- but then we'll have a
13504 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13507 : check for type of argument to gethostbyname.
13508 if test "X$netdb_name_type" = X ; then
13509 case "$d_gethbyname" in
13513 Checking to see what type of argument is accepted by gethostbyname().
13515 hdrs="$define sys/types.h
13516 $d_socket sys/socket.h
13517 $i_niin netinet/in.h
13519 $i_unistd unistd.h"
13520 for xxx in "const char *" "char *"; do
13521 case "$netdb_name_type" in
13522 '') try="extern struct hostent *gethostbyname($xxx);"
13523 if ./protochk "$try" $hdrs; then
13524 echo "Your system accepts $xxx."
13525 netdb_name_type="$xxx"
13530 : In case none of those worked, prompt the user.
13531 case "$netdb_name_type" in
13532 '') rp='What is the type for the 1st argument to gethostbyname?'
13535 netdb_name_type=$ans
13539 *) : no gethostbyname, so pick harmless default
13540 netdb_name_type='char *'
13545 : check for type of 1st argument to getnetbyaddr.
13546 if test "X$netdb_net_type" = X ; then
13547 case "$d_getnbyaddr" in
13551 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13553 hdrs="$define sys/types.h
13554 $d_socket sys/socket.h
13555 $i_niin netinet/in.h
13557 $i_unistd unistd.h"
13558 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13559 case "$netdb_net_type" in
13560 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13561 if ./protochk "$try" $hdrs; then
13562 echo "Your system accepts $xxx."
13563 netdb_net_type="$xxx"
13568 : In case none of those worked, prompt the user.
13569 case "$netdb_net_type" in
13570 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13573 netdb_net_type=$ans
13577 *) : no getnetbyaddr, so pick harmless default
13578 netdb_net_type='long'
13582 : locate the preferred pager for this system
13588 [a-zA-Z]:/*) dflt=$pg;;
13592 [a-zA-Z]:/*) dflt=$more;;
13596 [a-zA-Z]:/*) dflt=$less;;
13599 '') dflt=/usr/ucb/more;;
13606 rp='What pager is used on your system?'
13610 : see what type pids are declared as in the kernel
13611 rp="What is the type of process ids on this system?"
13612 set pid_t pidtype int stdio.h sys/types.h
13615 : Find earliest binary compatible site_perl subdirectory perl can use.
13616 case "$bincompat5005" in
13617 "$define") xs_apiversion='5.005' ;;
13618 *) xs_apiversion=$version ;; # The current site_perl version.
13620 : Find earliest pure perl site_perl subdirectory perl can use.
13621 : The versioned directories started at 5.005.
13622 pm_apiversion='5.005'
13624 : check for length of pointer
13628 echo "Checking to see how big your pointers are..." >&4
13629 if test "$voidflags" -gt 7; then
13630 echo '#define VOID_PTR char *' > try.c
13632 echo '#define VOID_PTR void *' > try.c
13634 $cat >>try.c <<'EOCP'
13638 printf("%d\n", (int)sizeof(VOID_PTR));
13643 if eval $compile_ok; then
13645 echo "Your pointers are $ptrsize bytes long."
13648 echo "(I can't seem to compile the test program. Guessing...)" >&4
13649 rp="What is the size of a pointer (in bytes)?"
13657 : see if ar generates random libraries by itself
13659 echo "Checking how to generate random libraries on your machine..." >&4
13660 echo 'int bar1() { return bar2(); }' > bar1.c
13661 echo 'int bar2() { return 2; }' > bar2.c
13662 $cat > foo.c <<'EOP'
13663 int main() { printf("%d\n", bar1()); exit(0); }
13665 $cc $ccflags -c bar1.c >/dev/null 2>&1
13666 $cc $ccflags -c bar2.c >/dev/null 2>&1
13667 $cc $ccflags -c foo.c >/dev/null 2>&1
13668 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13669 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13670 ./foobar >/dev/null 2>&1; then
13671 echo "$ar appears to generate random libraries itself."
13674 elif $ar ts bar$_a >/dev/null 2>&1 &&
13675 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13676 ./foobar >/dev/null 2>&1; then
13677 echo "a table of contents needs to be added with '$ar ts'."
13684 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13685 $test -f $ranlib || ranlib=''
13688 if $test -n "$ranlib"; then
13689 echo "your system has '$ranlib'; we'll use that."
13692 echo "your system doesn't seem to support random libraries"
13693 echo "so we'll use lorder and tsort to order the libraries."
13700 : check for type of arguments to select.
13701 case "$selecttype" in
13702 '') case "$d_select" in
13706 Checking to see what type of arguments are accepted by select().
13708 hdrs="$define sys/types.h
13709 $i_systime sys/time.h
13710 $i_sysselct sys/select.h
13711 $d_socket sys/socket.h"
13712 : The first arg can be int, unsigned, or size_t
13713 : The last arg may or may not be 'const'
13715 : void pointer has been seen but using that
13716 : breaks the selectminbits test
13717 for xxx in 'fd_set *' 'int *'; do
13718 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13719 for tmo in 'struct timeval *' 'const struct timeval *'; do
13721 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13722 if ./protochk "$try" $hdrs; then
13723 echo "Your system accepts $xxx."
13732 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13733 case "$d_fd_set" in
13734 $define) dflt="fd_set *" ;;
13743 *) : no select, so pick a harmless default
13750 : check for the select 'width'
13751 case "$selectminbits" in
13752 '') case "$d_select" in
13756 Checking to see on how many bits at a time your select() operates...
13759 #include <sys/types.h>
13761 #$i_systime I_SYS_TIME
13762 #$i_systimek I_SYS_TIME_KERNEL
13767 # ifdef I_SYS_TIME_KERNEL
13770 # include <sys/time.h>
13771 # ifdef I_SYS_TIME_KERNEL
13775 #$i_sysselct I_SYS_SELECT
13776 #ifdef I_SYS_SELECT
13777 #include <sys/select.h>
13779 #$d_socket HAS_SOCKET
13781 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13785 #define S sizeof(*(b))
13787 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13788 #define NBITS (NBYTES * 8)
13797 fp = fopen("try.c", "r");
13803 b = ($selecttype)s;
13804 for (i = 0; i < NBITS; i++)
13808 select(fd + 1, b, 0, 0, &t);
13809 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13810 printf("%d\n", i + 1);
13815 if eval $compile_ok; then
13816 selectminbits=`./try`
13817 case "$selectminbits" in
13819 Cannot figure out on how many bits at a time your select() operates.
13820 I'll play safe and guess it is 32 bits.
13826 *) bits="$selectminbits bits" ;;
13828 echo "Your select() operates on $bits at a time." >&4
13830 rp='What is the minimum number of bits your select() operates on?'
13831 case "$byteorder" in
13832 1234|12345678) dflt=32 ;;
13837 selectminbits="$val"
13841 *) : no select, so pick a harmless default
13848 : Trace out the files included by signal.h, then look for SIGxxx names.
13849 : Remove SIGARRAYSIZE used by HPUX.
13850 : Remove SIGSTKSIZE used by Linux.
13851 : Remove SIGSTKSZ used by Posix.
13852 : Remove SIGTYP void lines used by OS2.
13853 : Some cpps, like os390, dont give the file name anywhere
13854 if [ "X$fieldn" = X ]; then
13855 : Just make some guesses. We check them later.
13856 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13858 xxx=`echo '#include <signal.h>' |
13859 $cppstdin $cppminus $cppflags 2>/dev/null |
13860 $grep '^[ ]*#.*include' |
13861 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13863 : Check this list of files to be sure we have parsed the cpp output ok.
13864 : This will also avoid potentially non-existent files, such
13867 for xx in $xxx /dev/null ; do
13868 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13870 : If we have found no files, at least try signal.h
13871 case "$xxxfiles" in
13872 '') xxxfiles=`./findhdr signal.h` ;;
13875 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13876 print substr($2, 4, 20)
13878 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13879 print substr($3, 4, 20)
13881 : Append some common names just in case the awk scan failed.
13882 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13883 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13884 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13885 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13886 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13888 : generate a few handy files for later
13889 $cat > signal.c <<'EOCP'
13890 #include <sys/types.h>
13891 #include <signal.h>
13895 /* Strange style to avoid deeply-nested #if/#else/#endif */
13898 # define NSIG (_NSIG)
13904 # define NSIG (SIGMAX+1)
13910 # define NSIG (SIG_MAX+1)
13916 # define NSIG (MAXSIG+1)
13922 # define NSIG (MAX_SIG+1)
13927 # ifdef SIGARRAYSIZE
13928 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13934 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13938 /* Default to some arbitrary number that's big enough to get most
13939 of the common signals.
13945 printf("NSIG %d\n", NSIG);
13951 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13953 printf "#ifdef SIG"; printf $1; printf "\n"
13954 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13955 printf $1; printf ");\n"
13959 printf "#endif /* JUST_NSIG */\n";
13960 printf "exit(0);\n}\n";
13963 $cat >signal.awk <<'EOP'
13964 BEGIN { ndups = 0 }
13965 $1 ~ /^NSIG$/ { nsig = $2 }
13966 ($1 !~ /^NSIG$/) && (NF == 2) {
13967 if ($2 > maxsig) { maxsig = $2 }
13968 if (sig_name[$2]) {
13969 dup_name[ndups] = $1
13970 dup_num[ndups] = $2
13982 printf("NSIG %d\n", nsig);
13983 for (n = 1; n < nsig; n++) {
13985 printf("%s %d\n", sig_name[n], sig_num[n])
13988 printf("NUM%d %d\n", n, n)
13991 for (n = 0; n < ndups; n++) {
13992 printf("%s %d\n", dup_name[n], dup_num[n])
13996 $cat >signal_cmd <<EOS
13998 if $test -s signal.lst; then
13999 echo "Using your existing signal.lst file"
14004 $cat >>signal_cmd <<'EOS'
14007 if eval $compile_ok; then
14008 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14010 echo "(I can't seem be able to compile the whole test program)" >&4
14011 echo "(I'll try it in little pieces.)" >&4
14012 set signal -DJUST_NSIG
14013 if eval $compile_ok; then
14014 ./signal$_exe > signal.nsg
14017 echo "I can't seem to figure out how many signals you have." >&4
14018 echo "Guessing 50." >&4
14019 echo 'NSIG 50' > signal.nsg
14021 : Now look at all the signal names, one at a time.
14022 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14023 $cat > signal.c <<EOCP
14024 #include <sys/types.h>
14025 #include <signal.h>
14028 printf("$xx %d\n", SIG${xx});
14033 if eval $compile; then
14034 echo "SIG${xx} found."
14035 ./signal$_exe >> signal.ls1
14037 echo "SIG${xx} NOT found."
14040 if $test -s signal.ls1; then
14041 $cat signal.nsg signal.ls1 |
14042 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14046 if $test -s signal.lst; then
14049 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14050 echo 'kill -l' >signal
14051 set X `csh -f <signal`
14055 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14057 echo $@ | $tr ' ' $trnl | \
14058 $awk '{ printf "%s %d\n", $1, ++s; }
14059 END { printf "NSIG %d\n", ++s }' >signal.lst
14061 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14063 chmod a+x signal_cmd
14064 $eunicefix signal_cmd
14066 : generate list of signal names
14068 case "$sig_name_init" in
14070 *) case "$sig_num_init" in
14071 ''|*,*) doinit=yes ;;
14076 echo "Generating a list of signal names and numbers..." >&4
14078 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14079 sig_name=`$awk 'BEGIN { printf "ZERO " }
14080 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14081 sig_num=`$awk 'BEGIN { printf "0 " }
14082 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14083 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14084 !/^NSIG/ { printf "\"%s\", ", $1 }
14085 END { printf "0\n" }' signal.lst`
14086 sig_num_init=`$awk 'BEGIN { printf "0, " }
14087 !/^NSIG/ { printf "%d, ", $2}
14088 END { printf "0\n"}' signal.lst`
14091 echo "The following $sig_count signals are available:"
14093 echo $sig_name | $awk \
14094 'BEGIN { linelen = 0 }
14096 for (i = 1; i <= NF; i++) {
14097 name = "SIG" $i " "
14098 linelen = linelen + length(name)
14099 if (linelen > 70) {
14101 linelen = length(name)
14107 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14110 case "$sizetype" in
14111 *_t) zzz="$sizetype" ;;
14112 *) zzz="filesize" ;;
14114 echo "Checking the size of $zzz..." >&4
14116 #include <sys/types.h>
14119 printf("%d\n", (int)sizeof($sizetype));
14124 if eval $compile_ok; then
14128 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14131 echo "Your $zzz size is $sizesize bytes."
14136 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14140 : check for socklen_t
14142 echo "Checking to see if you have socklen_t..." >&4
14144 #include <sys/types.h>
14145 #$d_socket HAS_SOCKET
14147 #include <sys/socket.h>
14149 int main() { socklen_t x = 16; }
14152 if eval $compile; then
14154 echo "You have socklen_t."
14157 echo "You do not have socklen_t."
14158 case "$sizetype" in
14159 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14166 : check for type of the size argument to socket calls
14167 case "$d_socket" in
14171 Checking to see what type is the last argument of accept().
14173 hdrs="$define sys/types.h $d_socket sys/socket.h"
14175 case "$d_socklen_t" in
14176 "$define") yyy="$yyy socklen_t"
14178 yyy="$yyy $sizetype int long unsigned"
14179 for xxx in $yyy; do
14180 case "$socksizetype" in
14181 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14182 if ./protochk "$try" $hdrs; then
14183 echo "Your system accepts '$xxx *' for the last argument of accept()."
14184 socksizetype="$xxx"
14189 : In case none of those worked, prompt the user.
14190 case "$socksizetype" in
14191 '') rp='What is the type for socket address structure sizes?'
14198 *) : no sockets, so pick relatively harmless default
14203 : see what type is used for signed size_t
14204 set ssize_t ssizetype int stdio.h sys/types.h
14207 $cat > ssize.c <<EOM
14209 #include <sys/types.h>
14210 #define Size_t $sizetype
14211 #define SSize_t $dflt
14214 if (sizeof(Size_t) == sizeof(SSize_t))
14216 else if (sizeof(Size_t) == sizeof(int))
14225 if eval $compile_ok && ./ssize > /dev/null; then
14226 ssizetype=`./ssize`
14227 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14230 Help! I can't compile and run the ssize_t test program: please enlighten me!
14231 (This is probably a misconfiguration in your system or libraries, and
14232 you really ought to fix it. Still, I'll try anyway.)
14234 I need a type that is the same size as $sizetype, but is guaranteed to
14235 be signed. Common values are ssize_t, int and long.
14238 rp="What signed type is the same size as $sizetype?"
14242 $rm -f ssize ssize.*
14244 : see what type of char stdio uses.
14246 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14247 echo "Your stdio uses unsigned chars." >&4
14248 stdchar="unsigned char"
14250 echo "Your stdio uses signed chars." >&4
14254 : see if time exists
14256 if test "X$d_time" = X -o X"$timetype" = X; then
14257 if set time val -f d_time; eval $csym; $val; then
14258 echo 'time() found.' >&4
14260 rp="What is the type returned by time() on this system?"
14261 set time_t timetype long stdio.h sys/types.h
14264 echo 'time() not found, hope that will do.' >&4
14272 : see what type uids are declared as in the kernel
14274 echo "Looking for the type for user ids returned by getuid()."
14275 set uid_t uidtype xxx stdio.h sys/types.h
14279 xxx=`./findhdr sys/user.h`
14280 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14282 unsigned) dflt="$1 $2" ;;
14286 *) dflt="$uidtype";;
14289 uid_t) echo "uid_t found." ;;
14290 *) rp="What is the type for user ids returned by getuid()?"
14298 *_t) zzz="$uidtype" ;;
14301 echo "Checking the size of $zzz..." >&4
14303 #include <sys/types.h>
14306 printf("%d\n", (int)sizeof($uidtype));
14311 if eval $compile_ok; then
14315 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14318 echo "Your $zzz is $uidsize bytes long."
14323 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14328 *_t) zzz="$uidtype" ;;
14331 echo "Checking the sign of $zzz..." >&4
14333 #include <sys/types.h>
14344 if eval $compile; then
14348 echo "(I can't execute the test program--guessing unsigned.)" >&4
14352 1) echo "Your $zzz is unsigned." ;;
14353 -1) echo "Your $zzz is signed." ;;
14359 echo "(I can't compile the test program--guessing unsigned.)" >&4
14365 $echo "Checking the format string to be used for uids..." >&4
14368 -1) if $test X"$uidsize" = X"$ivsize"; then
14369 uidformat="$ivdformat"
14371 if $test X"$uidsize" = X"$longsize"; then
14374 if $test X"$uidsize" = X"$intsize"; then
14377 if $test X"$uidsize" = X"$shortsize"; then
14384 *) if $test X"$uidsize" = X"$uvsize"; then
14385 uidformat="$uvuformat"
14387 if $test X"$uidsize" = X"$longsize"; then
14390 if $test X"$uidsize" = X"$intsize"; then
14393 if $test X"$uidsize" = X"$shortsize"; then
14402 : see if dbm.h is available
14403 : see if dbmclose exists
14404 set dbmclose d_dbmclose
14407 case "$d_dbmclose" in
14417 *) set rpcsvc/dbm.h i_rpcsvcdbm
14422 *) echo "We won't be including <dbm.h>"
14432 : see if this is a sys/file.h system
14437 : do we need to include sys/file.h ?
14441 if $h_sysfile; then
14443 echo "We'll be including <sys/file.h>." >&4
14446 echo "We won't be including <sys/file.h>." >&4
14456 : see if fcntl.h is there
14461 : see if we can include fcntl.h
14467 echo "We'll be including <fcntl.h>." >&4
14470 if $h_sysfile; then
14471 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14473 echo "We won't be including <fcntl.h>." >&4
14485 : see if this is a iconv.h system
14486 set iconv.h i_iconv
14489 : see if this is a ieeefp.h system
14490 set ieeefp.h i_ieeefp
14493 : see if this is a libutil.h system
14494 set libutil.h i_libutil
14497 : see if locale.h is available
14498 set locale.h i_locale
14501 : see if mach cthreads are available
14502 if test "X$usethreads" = "X$define"; then
14503 set mach/cthreads.h i_machcthr
14506 i_machcthr="$undef"
14511 : see if this is a math.h system
14515 : see if this is a mntent.h system
14516 set mntent.h i_mntent
14519 : see if ndbm.h is available
14524 : see if dbm_open exists
14525 set dbm_open d_dbm_open
14527 case "$d_dbm_open" in
14530 echo "We won't be including <ndbm.h>"
14539 : see if net/errno.h is available
14541 set net/errno.h val
14544 : Unfortunately, it causes problems on some systems. Arrgh.
14547 cat > try.c <<'EOM'
14550 #include <net/errno.h>
14556 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14557 echo "We'll be including <net/errno.h>." >&4
14559 echo "We won't be including <net/errno.h>." >&4
14568 : see if netinet/tcp.h is available
14569 set netinet/tcp.h i_netinettcp
14572 : see if this is a poll.h system
14576 : see if this is a prot.h system
14581 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14582 $cat <<'EOSH' > Cppsym.know
14583 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14584 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14585 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14586 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14587 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14588 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14589 bull c cadmus clipper CMU COFF COMPILER_VERSION
14590 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14591 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14592 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14593 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14594 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14595 H3050R H3050RX hbullx20 hcx host_mips
14596 hp200 hp300 hp700 HP700 hp800 hp9000
14597 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14598 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14599 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14600 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14601 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14602 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14603 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14604 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14605 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14606 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14607 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14608 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14609 MATH_HAS_NO_SIDE_EFFECTS
14610 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14611 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14612 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14613 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14614 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14615 NetBSD news1500 news1700 news1800 news1900 news3700
14616 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
14617 ns32016 ns32332 ns32k nsc32000
14618 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14619 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14620 pc532 pdp11 PGC PIC plexus PORTAR posix
14621 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14622 POSIX_C_SOURCE POSIX_SOURCE POWER
14623 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14624 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14625 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14626 sony sony_news sonyrisc sparc sparclite spectrum
14627 stardent stdc STDC_EXT stratos sun sun3 sun386
14628 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14629 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14630 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14631 sysV68 sysV88 Tek4132 Tek4300 titan
14632 tower tower32 tower32_200 tower32_600 tower32_700
14633 tower32_800 tower32_850 tss
14634 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14635 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14636 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14637 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14638 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14639 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14642 # Maybe put other stuff here too.
14643 cat <<EOSH >>Cppsym.know
14646 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14647 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14648 $cat Cppsym.know > Cppsym.c
14649 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
14650 $rm -f Cppsym.a Cppsym.b Cppsym.c
14651 cat <<EOSH > Cppsym
14653 if $test \$# -gt 0; then
14654 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14655 if $test -s Cppsym.got; then
14662 $tr " " "$trnl" | ./Cppsym.try
14668 cat <<EOSH > Cppsym.try
14670 cat <<'EOCP' > try.c
14676 cat <<'EOSH' >> Cppsym.try
14678 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14679 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14680 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14681 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14685 cat <<EOSH >> Cppsym.try
14687 case "$osname-$gccversion" in
14688 irix-) ccflags="\$ccflags -woff 1178" ;;
14689 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14691 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
14693 chmod +x Cppsym.try
14694 $eunicefix Cppsym.try
14695 ./Cppsym < Cppsym.know > Cppsym.true
14696 : now check the C compiler for additional symbols
14697 postprocess_cc_v=''
14699 aix) postprocess_cc_v="|$tr , ' '" ;;
14706 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14709 -D*) echo "\$i" | $sed 's/^-D//';;
14710 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14715 postprocess_cc_v=''
14718 ./ccsym > ccsym1.raw
14719 if $test -s ccsym1.raw; then
14720 $sort ccsym1.raw | $uniq >ccsym.raw
14722 mv ccsym1.raw ccsym.raw
14725 $awk '/\=/ { print $0; next }
14726 { print $0"=1" }' ccsym.raw >ccsym.list
14727 $awk '/\=/ { print $0; next }
14728 { print $0"=1" }' Cppsym.true >ccsym.true
14729 $comm -13 ccsym.true ccsym.list >ccsym.own
14730 $comm -12 ccsym.true ccsym.list >ccsym.com
14731 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14733 if $test -z ccsym.raw; then
14734 echo "Your C compiler doesn't seem to define any symbols!" >&4
14736 echo "However, your C preprocessor defines the following symbols:"
14739 cppsymbols=`$cat Cppsym.true`
14740 cppsymbols=`echo $cppsymbols`
14741 cppccsymbols="$cppsymbols"
14743 if $test -s ccsym.com; then
14744 echo "Your C compiler and pre-processor define these symbols:"
14745 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14748 cppccsymbols=`$cat ccsym.com`
14749 cppccsymbols=`echo $cppccsymbols`
14750 $test "$silent" || sleep 1
14752 if $test -s ccsym.cpp; then
14753 $test "$also" && echo " "
14754 echo "Your C pre-processor ${also}defines the following symbols:"
14755 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14757 cppsymbols=`$cat ccsym.cpp`
14758 cppsymbols=`echo $cppsymbols`
14759 $test "$silent" || sleep 1
14761 if $test -s ccsym.own; then
14762 $test "$also" && echo " "
14763 echo "Your C compiler ${also}defines the following cpp symbols:"
14764 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14765 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14766 ccsymbols=`$cat ccsym.own`
14767 ccsymbols=`echo $ccsymbols`
14768 $test "$silent" || sleep 1
14771 $rm -f ccsym* Cppsym.*
14773 : see if this is a termio system
14777 if $test `./findhdr termios.h`; then
14778 set tcsetattr i_termios
14784 "$define") echo "You have POSIX termios.h... good!" >&4;;
14785 *) if ./Cppsym pyr; then
14786 case "`/bin/universe`" in
14787 ucb) if $test `./findhdr sgtty.h`; then
14789 echo "<sgtty.h> found." >&4
14791 echo "System is pyramid with BSD universe."
14792 echo "<sgtty.h> not found--you could have problems." >&4
14794 *) if $test `./findhdr termio.h`; then
14796 echo "<termio.h> found." >&4
14798 echo "System is pyramid with USG universe."
14799 echo "<termio.h> not found--you could have problems." >&4
14803 if $test `./findhdr termio.h`; then
14804 echo "<termio.h> found." >&4
14806 elif $test `./findhdr sgtty.h`; then
14807 echo "<sgtty.h> found." >&4
14810 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14813 if $test `./findhdr sgtty.h`; then
14814 echo "<sgtty.h> found." >&4
14816 elif $test `./findhdr termio.h`; then
14817 echo "<termio.h> found." >&4
14820 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14824 set i_termio; eval $setvar
14825 val=$val2; set i_sgtty; eval $setvar
14826 val=$val3; set i_termios; eval $setvar
14828 : see if this is a shadow.h system
14829 set shadow.h i_shadow
14832 : see if this is a socks.h system
14833 set socks.h i_socks
14836 : see if stdarg is available
14838 if $test `./findhdr stdarg.h`; then
14839 echo "<stdarg.h> found." >&4
14842 echo "<stdarg.h> NOT found." >&4
14846 : see if varags is available
14848 if $test `./findhdr varargs.h`; then
14849 echo "<varargs.h> found." >&4
14851 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14854 : set up the varargs testing programs
14855 $cat > varargs.c <<EOP
14857 #include <stdarg.h>
14860 #include <varargs.h>
14864 int f(char *p, ...)
14878 p = va_arg(ap, char *);
14883 $cat > varargs <<EOP
14885 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14894 : now check which varargs header should be included
14899 if `./varargs I_STDARG`; then
14901 elif `./varargs I_VARARGS`; then
14906 if `./varargs I_VARARGS`; then
14913 echo "I could not find the definition for va_dcl... You have problems..." >&4
14914 val="$undef"; set i_stdarg; eval $setvar
14915 val="$undef"; set i_varargs; eval $setvar
14920 case "$i_varhdr" in
14922 val="$define"; set i_stdarg; eval $setvar
14923 val="$undef"; set i_varargs; eval $setvar
14926 val="$undef"; set i_stdarg; eval $setvar
14927 val="$define"; set i_varargs; eval $setvar
14930 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14934 : see if stddef is available
14935 set stddef.h i_stddef
14938 : see if this is a sunmath.h system
14939 set sunmath.h i_sunmath
14942 : see if sys/access.h is available
14943 set sys/access.h i_sysaccess
14946 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14947 set sys/filio.h i_sysfilio
14950 if $test `./findhdr sys/ioctl.h`; then
14952 echo '<sys/ioctl.h> found.' >&4
14955 if $test $i_sysfilio = "$define"; then
14956 echo '<sys/ioctl.h> NOT found.' >&4
14958 $test $i_sgtty = "$define" && xxx="sgtty.h"
14959 $test $i_termio = "$define" && xxx="termio.h"
14960 $test $i_termios = "$define" && xxx="termios.h"
14961 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14968 : see if this is a syslog.h system
14969 set syslog.h i_syslog
14973 : see if this is a sys/mode.h system
14974 set sys/mode.h i_sysmode
14977 : see if sys/resource.h has to be included
14978 set sys/resource.h i_sysresrc
14981 : see if sys/security.h is available
14982 set sys/security.h i_syssecrt
14985 : see if this is a sys/statvfs.h system
14986 set sys/statvfs.h i_sysstatvfs
14989 : see if this is a sys/uio.h system
14990 set sys/uio.h i_sysuio
14993 : see if this is a sys/un.h system
14994 set sys/un.h i_sysun
14998 : see if this is a sys/utsname.h system
14999 set sys/utsname.h i_sysutsname
15002 : see if this is a syswait system
15003 set sys/wait.h i_syswait
15006 : see if this is a ustat.h system
15007 set ustat.h i_ustat
15010 : see if this is an utime system
15011 set utime.h i_utime
15014 : see if this is a values.h system
15015 set values.h i_values
15018 : see if this is a vfork system
15021 set vfork.h i_vfork
15029 : see if gdbm.h is available
15034 : see if gdbm_open exists
15035 set gdbm_open d_gdbm_open
15037 case "$d_gdbm_open" in
15040 echo "We won't be including <gdbm.h>"
15050 echo "Looking for extensions..." >&4
15051 : If we are using the old config.sh, known_extensions may contain
15052 : old or inaccurate or duplicate values.
15053 known_extensions=''
15054 nonxs_extensions=''
15055 : We do not use find because it might not be available.
15056 : We do not just use MANIFEST because the user may have dropped
15057 : some additional extensions into the source tree and expect them
15060 : Function to recursively find available extensions, ignoring DynaLoader
15061 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15065 DynaLoader|dynaload) ;;
15067 if $test -f $xxx/$xxx.xs; then
15068 known_extensions="$known_extensions $1$xxx";
15069 elif $test -f $xxx/Makefile.PL; then
15070 nonxs_extensions="$nonxs_extensions $1$xxx";
15072 if $test -d $xxx -a $# -lt 10; then
15075 eval $find_extensions;
15087 eval $find_extensions
15088 set X $nonxs_extensions
15090 nonxs_extensions="$*"
15091 set X $known_extensions
15093 known_extensions="$*"
15096 : Now see which are supported on this system.
15098 for xxx in $known_extensions ; do
15102 $define) avail_ext="$avail_ext $xxx" ;;
15105 GDBM_File|gdbm_fil)
15107 $define) avail_ext="$avail_ext $xxx" ;;
15110 NDBM_File|ndbm_fil)
15113 case "$osname-$use64bitint" in
15116 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15119 *) avail_ext="$avail_ext $xxx" ;;
15124 ODBM_File|odbm_fil)
15125 case "${i_dbm}${i_rpcsvcdbm}" in
15127 case "$osname-$use64bitint" in
15130 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15133 *) avail_ext="$avail_ext $xxx" ;;
15139 case "$useposix" in
15140 true|define|y) avail_ext="$avail_ext $xxx" ;;
15144 case "$useopcode" in
15145 true|define|y) avail_ext="$avail_ext $xxx" ;;
15149 case "$d_socket" in
15150 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15153 Sys/Syslog|sys/syslog)
15154 : XXX syslog requires socket
15155 case "$d_socket" in
15156 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15160 case "$usethreads" in
15161 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15165 : XXX Do we need a useipcsysv variable here
15166 case "${d_msg}${d_sem}${d_shm}" in
15167 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15170 *) avail_ext="$avail_ext $xxx"
15179 : Now see which nonxs extensions are supported on this system.
15180 : For now assume all are.
15182 for xxx in $nonxs_extensions ; do
15184 *) nonxs_ext="$nonxs_ext $xxx"
15196 A number of extensions are supplied with $package. You may choose to
15197 compile these extensions for dynamic loading (the default), compile
15198 them into the $package executable (static loading), or not include
15199 them at all. Answer "none" to include no extensions.
15200 Note that DynaLoader is always built and need not be mentioned here.
15203 case "$dynamic_ext" in
15204 '') dflt="$avail_ext" ;;
15205 *) dflt="$dynamic_ext"
15206 # Perhaps we are reusing an old out-of-date config.sh.
15209 if test X"$dynamic_ext" != X"$avail_ext"; then
15211 NOTICE: Your previous config.sh list may be incorrect.
15212 The extensions now available to you are
15214 but the default list from your previous config.sh is
15226 rp="What extensions do you wish to load dynamically?"
15229 none) dynamic_ext=' ' ;;
15230 *) dynamic_ext="$ans" ;;
15233 case "$static_ext" in
15235 : Exclude those already listed in dynamic linking
15237 for xxx in $avail_ext; do
15238 case " $dynamic_ext " in
15240 *) dflt="$dflt $xxx" ;;
15247 *) dflt="$static_ext"
15254 rp="What extensions do you wish to load statically?"
15257 none) static_ext=' ' ;;
15258 *) static_ext="$ans" ;;
15263 A number of extensions are supplied with $package. Answer "none"
15264 to include no extensions.
15265 Note that DynaLoader is always built and need not be mentioned here.
15268 case "$static_ext" in
15269 '') dflt="$avail_ext" ;;
15270 *) dflt="$static_ext"
15271 # Perhaps we are reusing an old out-of-date config.sh.
15274 if test X"$static_ext" != X"$avail_ext"; then
15276 NOTICE: Your previous config.sh list may be incorrect.
15277 The extensions now available to you are
15279 but the default list from your previous config.sh is
15288 : Exclude those that are not xs extensions
15292 rp="What extensions do you wish to include?"
15295 none) static_ext=' ' ;;
15296 *) static_ext="$ans" ;;
15301 set X $dynamic_ext $static_ext $nonxs_ext
15305 : Remove libraries needed only for extensions
15306 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15307 : The exception is SunOS 4.x, which needs them.
15308 case "${osname}X${osvers}" in
15312 *) case "$usedl" in
15313 $define|true|[yY]*)
15314 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15318 *) perllibs="$libs"
15324 : Remove build directory name from cppstdin so it can be used from
15325 : either the present location or the final installed location.
15327 : Get out of the UU directory to get correct path name.
15329 case "$cppstdin" in
15331 echo "Stripping down cppstdin path name"
15337 : end of configuration questions
15339 echo "End of configuration questions."
15342 : back to where it started
15343 if test -d ../UU; then
15347 : configuration may be patched via a 'config.over' file
15348 if $test -f config.over; then
15351 rp='I see a config.over file. Do you wish to load it?'
15354 n*) echo "OK, I'll ignore it.";;
15356 echo "Configuration override changes have been loaded."
15361 : in case they want portability, strip down executable paths
15362 case "$d_portable" in
15365 echo "Stripping down executable paths..." >&4
15366 for file in $loclist $trylist; do
15368 eval $file=`basename $temp`
15373 : create config.sh file
15375 echo "Creating config.sh..." >&4
15376 $spitshell <<EOT >config.sh
15379 # This file was produced by running the Configure script. It holds all the
15380 # definitions figured out by Configure. Should you modify one of these values,
15381 # do not forget to propagate your changes by running "Configure -der". You may
15382 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15385 # Package name : $package
15386 # Source directory : $src
15387 # Configuration time: $cf_time
15388 # Configured by : $cf_by
15389 # Target system : $myuname
15399 Revision='$Revision'
15406 alignbytes='$alignbytes'
15407 ansi2knr='$ansi2knr'
15408 aphostname='$aphostname'
15409 api_revision='$api_revision'
15410 api_subversion='$api_subversion'
15411 api_version='$api_version'
15412 api_versionstring='$api_versionstring'
15415 archlibexp='$archlibexp'
15416 archname64='$archname64'
15417 archname='$archname'
15418 archobjs='$archobjs'
15423 bincompat5005='$bincompat5005'
15427 byteorder='$byteorder'
15429 castflags='$castflags'
15432 cccdlflags='$cccdlflags'
15433 ccdlflags='$ccdlflags'
15435 ccflags_uselargefiles='$ccflags_uselargefiles'
15437 ccsymbols='$ccsymbols'
15438 ccversion='$ccversion'
15440 cf_email='$cf_email'
15442 charsize='$charsize'
15446 clocktype='$clocktype'
15448 compress='$compress'
15449 contains='$contains'
15453 cpp_stuff='$cpp_stuff'
15454 cppccsymbols='$cppccsymbols'
15455 cppflags='$cppflags'
15457 cppminus='$cppminus'
15459 cppstdin='$cppstdin'
15460 cppsymbols='$cppsymbols'
15461 crosscompile='$crosscompile'
15462 cryptlib='$cryptlib'
15464 d_Gconvert='$d_Gconvert'
15465 d_PRIEUldbl='$d_PRIEUldbl'
15466 d_PRIFUldbl='$d_PRIFUldbl'
15467 d_PRIGUldbl='$d_PRIGUldbl'
15468 d_PRIXU64='$d_PRIXU64'
15469 d_PRId64='$d_PRId64'
15470 d_PRIeldbl='$d_PRIeldbl'
15471 d_PRIfldbl='$d_PRIfldbl'
15472 d_PRIgldbl='$d_PRIgldbl'
15473 d_PRIi64='$d_PRIi64'
15474 d_PRIo64='$d_PRIo64'
15475 d_PRIu64='$d_PRIu64'
15476 d_PRIx64='$d_PRIx64'
15477 d_SCNfldbl='$d_SCNfldbl'
15478 d_access='$d_access'
15479 d_accessx='$d_accessx'
15481 d_archlib='$d_archlib'
15484 d_attribut='$d_attribut'
15487 d_bincompat5005='$d_bincompat5005'
15489 d_bsdgetpgrp='$d_bsdgetpgrp'
15490 d_bsdsetpgrp='$d_bsdsetpgrp'
15492 d_casti32='$d_casti32'
15493 d_castneg='$d_castneg'
15494 d_charvspr='$d_charvspr'
15496 d_chroot='$d_chroot'
15497 d_chsize='$d_chsize'
15498 d_closedir='$d_closedir'
15502 d_cuserid='$d_cuserid'
15503 d_dbl_dig='$d_dbl_dig'
15504 d_difftime='$d_difftime'
15505 d_dirnamlen='$d_dirnamlen'
15506 d_dlerror='$d_dlerror'
15507 d_dlopen='$d_dlopen'
15508 d_dlsymun='$d_dlsymun'
15509 d_dosuid='$d_dosuid'
15510 d_drand48proto='$d_drand48proto'
15512 d_eaccess='$d_eaccess'
15513 d_endgrent='$d_endgrent'
15514 d_endhent='$d_endhent'
15515 d_endnent='$d_endnent'
15516 d_endpent='$d_endpent'
15517 d_endpwent='$d_endpwent'
15518 d_endsent='$d_endsent'
15519 d_eofnblk='$d_eofnblk'
15520 d_eunice='$d_eunice'
15521 d_fchmod='$d_fchmod'
15522 d_fchown='$d_fchown'
15524 d_fcntl_can_lock='$d_fcntl_can_lock'
15525 d_fd_macros='$d_fd_macros'
15526 d_fd_set='$d_fd_set'
15527 d_fds_bits='$d_fds_bits'
15528 d_fgetpos='$d_fgetpos'
15529 d_flexfnam='$d_flexfnam'
15532 d_fpathconf='$d_fpathconf'
15533 d_fpos64_t='$d_fpos64_t'
15534 d_frexpl='$d_frexpl'
15535 d_fs_data_s='$d_fs_data_s'
15536 d_fseeko='$d_fseeko'
15537 d_fsetpos='$d_fsetpos'
15538 d_fstatfs='$d_fstatfs'
15539 d_fstatvfs='$d_fstatvfs'
15540 d_ftello='$d_ftello'
15542 d_getcwd='$d_getcwd'
15543 d_getespwnam='$d_getespwnam'
15544 d_getfsstat='$d_getfsstat'
15545 d_getgrent='$d_getgrent'
15546 d_getgrps='$d_getgrps'
15547 d_gethbyaddr='$d_gethbyaddr'
15548 d_gethbyname='$d_gethbyname'
15549 d_gethent='$d_gethent'
15550 d_gethname='$d_gethname'
15551 d_gethostprotos='$d_gethostprotos'
15552 d_getlogin='$d_getlogin'
15553 d_getmnt='$d_getmnt'
15554 d_getmntent='$d_getmntent'
15555 d_getnbyaddr='$d_getnbyaddr'
15556 d_getnbyname='$d_getnbyname'
15557 d_getnent='$d_getnent'
15558 d_getnetprotos='$d_getnetprotos'
15559 d_getpbyname='$d_getpbyname'
15560 d_getpbynumber='$d_getpbynumber'
15561 d_getpent='$d_getpent'
15562 d_getpgid='$d_getpgid'
15563 d_getpgrp2='$d_getpgrp2'
15564 d_getpgrp='$d_getpgrp'
15565 d_getppid='$d_getppid'
15566 d_getprior='$d_getprior'
15567 d_getprotoprotos='$d_getprotoprotos'
15568 d_getprpwnam='$d_getprpwnam'
15569 d_getpwent='$d_getpwent'
15570 d_getsbyname='$d_getsbyname'
15571 d_getsbyport='$d_getsbyport'
15572 d_getsent='$d_getsent'
15573 d_getservprotos='$d_getservprotos'
15574 d_getspnam='$d_getspnam'
15575 d_gettimeod='$d_gettimeod'
15576 d_gnulibc='$d_gnulibc'
15577 d_grpasswd='$d_grpasswd'
15578 d_hasmntopt='$d_hasmntopt'
15582 d_inetaton='$d_inetaton'
15583 d_int64_t='$d_int64_t'
15584 d_isascii='$d_isascii'
15586 d_isnanl='$d_isnanl'
15587 d_killpg='$d_killpg'
15588 d_lchown='$d_lchown'
15589 d_ldbl_dig='$d_ldbl_dig'
15591 d_locconv='$d_locconv'
15593 d_longdbl='$d_longdbl'
15594 d_longlong='$d_longlong'
15595 d_lseekproto='$d_lseekproto'
15597 d_madvise='$d_madvise'
15599 d_mbstowcs='$d_mbstowcs'
15600 d_mbtowc='$d_mbtowc'
15601 d_memchr='$d_memchr'
15602 d_memcmp='$d_memcmp'
15603 d_memcpy='$d_memcpy'
15604 d_memmove='$d_memmove'
15605 d_memset='$d_memset'
15607 d_mkdtemp='$d_mkdtemp'
15608 d_mkfifo='$d_mkfifo'
15609 d_mkstemp='$d_mkstemp'
15610 d_mkstemps='$d_mkstemps'
15611 d_mktime='$d_mktime'
15614 d_mprotect='$d_mprotect'
15616 d_msg_ctrunc='$d_msg_ctrunc'
15617 d_msg_dontroute='$d_msg_dontroute'
15618 d_msg_oob='$d_msg_oob'
15619 d_msg_peek='$d_msg_peek'
15620 d_msg_proxy='$d_msg_proxy'
15621 d_msgctl='$d_msgctl'
15622 d_msgget='$d_msgget'
15623 d_msgrcv='$d_msgrcv'
15624 d_msgsnd='$d_msgsnd'
15626 d_munmap='$d_munmap'
15627 d_mymalloc='$d_mymalloc'
15629 d_nv_preserves_uv='$d_nv_preserves_uv'
15630 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15631 d_off64_t='$d_off64_t'
15632 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15633 d_oldpthreads='$d_oldpthreads'
15634 d_oldsock='$d_oldsock'
15636 d_pathconf='$d_pathconf'
15638 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15639 d_phostname='$d_phostname'
15642 d_portable='$d_portable'
15643 d_pthread_yield='$d_pthread_yield'
15645 d_pwchange='$d_pwchange'
15646 d_pwclass='$d_pwclass'
15647 d_pwcomment='$d_pwcomment'
15648 d_pwexpire='$d_pwexpire'
15649 d_pwgecos='$d_pwgecos'
15650 d_pwpasswd='$d_pwpasswd'
15651 d_pwquota='$d_pwquota'
15654 d_readdir='$d_readdir'
15655 d_readlink='$d_readlink'
15656 d_rename='$d_rename'
15657 d_rewinddir='$d_rewinddir'
15659 d_safebcpy='$d_safebcpy'
15660 d_safemcpy='$d_safemcpy'
15661 d_sanemcmp='$d_sanemcmp'
15662 d_sched_yield='$d_sched_yield'
15663 d_scm_rights='$d_scm_rights'
15664 d_seekdir='$d_seekdir'
15665 d_select='$d_select'
15667 d_semctl='$d_semctl'
15668 d_semctl_semid_ds='$d_semctl_semid_ds'
15669 d_semctl_semun='$d_semctl_semun'
15670 d_semget='$d_semget'
15672 d_setegid='$d_setegid'
15673 d_seteuid='$d_seteuid'
15674 d_setgrent='$d_setgrent'
15675 d_setgrps='$d_setgrps'
15676 d_sethent='$d_sethent'
15677 d_setlinebuf='$d_setlinebuf'
15678 d_setlocale='$d_setlocale'
15679 d_setnent='$d_setnent'
15680 d_setpent='$d_setpent'
15681 d_setpgid='$d_setpgid'
15682 d_setpgrp2='$d_setpgrp2'
15683 d_setpgrp='$d_setpgrp'
15684 d_setprior='$d_setprior'
15685 d_setproctitle='$d_setproctitle'
15686 d_setpwent='$d_setpwent'
15687 d_setregid='$d_setregid'
15688 d_setresgid='$d_setresgid'
15689 d_setresuid='$d_setresuid'
15690 d_setreuid='$d_setreuid'
15691 d_setrgid='$d_setrgid'
15692 d_setruid='$d_setruid'
15693 d_setsent='$d_setsent'
15694 d_setsid='$d_setsid'
15695 d_setvbuf='$d_setvbuf'
15699 d_shmatprototype='$d_shmatprototype'
15700 d_shmctl='$d_shmctl'
15702 d_shmget='$d_shmget'
15703 d_sigaction='$d_sigaction'
15704 d_sigsetjmp='$d_sigsetjmp'
15705 d_socket='$d_socket'
15706 d_socklen_t='$d_socklen_t'
15707 d_sockpair='$d_sockpair'
15708 d_socks5_init='$d_socks5_init'
15710 d_statblks='$d_statblks'
15711 d_statfs_f_flags='$d_statfs_f_flags'
15712 d_statfs_s='$d_statfs_s'
15713 d_statvfs='$d_statvfs'
15714 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15715 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15716 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
15717 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
15718 d_stdio_stream_array='$d_stdio_stream_array'
15719 d_stdiobase='$d_stdiobase'
15720 d_stdstdio='$d_stdstdio'
15721 d_strchr='$d_strchr'
15722 d_strcoll='$d_strcoll'
15723 d_strctcpy='$d_strctcpy'
15724 d_strerrm='$d_strerrm'
15725 d_strerror='$d_strerror'
15726 d_strtod='$d_strtod'
15727 d_strtol='$d_strtol'
15728 d_strtold='$d_strtold'
15729 d_strtoll='$d_strtoll'
15730 d_strtoul='$d_strtoul'
15731 d_strtoull='$d_strtoull'
15732 d_strtouq='$d_strtouq'
15733 d_strxfrm='$d_strxfrm'
15734 d_suidsafe='$d_suidsafe'
15735 d_symlink='$d_symlink'
15736 d_syscall='$d_syscall'
15737 d_sysconf='$d_sysconf'
15738 d_sysernlst='$d_sysernlst'
15739 d_syserrlst='$d_syserrlst'
15740 d_system='$d_system'
15741 d_tcgetpgrp='$d_tcgetpgrp'
15742 d_tcsetpgrp='$d_tcsetpgrp'
15743 d_telldir='$d_telldir'
15744 d_telldirproto='$d_telldirproto'
15747 d_truncate='$d_truncate'
15748 d_tzname='$d_tzname'
15751 d_union_semun='$d_union_semun'
15753 d_vendorarch='$d_vendorarch'
15754 d_vendorbin='$d_vendorbin'
15755 d_vendorlib='$d_vendorlib'
15757 d_void_closedir='$d_void_closedir'
15758 d_voidsig='$d_voidsig'
15759 d_voidtty='$d_voidtty'
15760 d_volatile='$d_volatile'
15761 d_vprintf='$d_vprintf'
15763 d_waitpid='$d_waitpid'
15764 d_wcstombs='$d_wcstombs'
15765 d_wctomb='$d_wctomb'
15768 db_hashtype='$db_hashtype'
15769 db_prefixtype='$db_prefixtype'
15770 defvoidused='$defvoidused'
15771 direntrytype='$direntrytype'
15774 doublesize='$doublesize'
15776 dynamic_ext='$dynamic_ext'
15782 eunicefix='$eunicefix'
15785 extensions='$extensions'
15786 fflushNULL='$fflushNULL'
15787 fflushall='$fflushall'
15789 firstmakefile='$firstmakefile'
15791 fpossize='$fpossize'
15792 fpostype='$fpostype'
15793 freetype='$freetype'
15795 full_csh='$full_csh'
15796 full_sed='$full_sed'
15797 gccosandvers='$gccosandvers'
15798 gccversion='$gccversion'
15799 gidformat='$gidformat'
15805 groupcat='$groupcat'
15806 groupstype='$groupstype'
15809 h_sysfile='$h_sysfile'
15820 i_arpainet='$i_arpainet'
15821 i_bsdioctl='$i_bsdioctl'
15824 i_dirent='$i_dirent'
15832 i_ieeefp='$i_ieeefp'
15833 i_inttypes='$i_inttypes'
15834 i_libutil='$i_libutil'
15835 i_limits='$i_limits'
15836 i_locale='$i_locale'
15837 i_machcthr='$i_machcthr'
15838 i_malloc='$i_malloc'
15840 i_memory='$i_memory'
15841 i_mntent='$i_mntent'
15844 i_neterrno='$i_neterrno'
15845 i_netinettcp='$i_netinettcp'
15849 i_pthread='$i_pthread'
15851 i_rpcsvcdbm='$i_rpcsvcdbm'
15854 i_shadow='$i_shadow'
15856 i_stdarg='$i_stdarg'
15857 i_stddef='$i_stddef'
15858 i_stdlib='$i_stdlib'
15859 i_string='$i_string'
15860 i_sunmath='$i_sunmath'
15861 i_sysaccess='$i_sysaccess'
15862 i_sysdir='$i_sysdir'
15863 i_sysfile='$i_sysfile'
15864 i_sysfilio='$i_sysfilio'
15866 i_sysioctl='$i_sysioctl'
15867 i_syslog='$i_syslog'
15868 i_sysmman='$i_sysmman'
15869 i_sysmode='$i_sysmode'
15870 i_sysmount='$i_sysmount'
15871 i_sysndir='$i_sysndir'
15872 i_sysparam='$i_sysparam'
15873 i_sysresrc='$i_sysresrc'
15874 i_syssecrt='$i_syssecrt'
15875 i_sysselct='$i_sysselct'
15876 i_syssockio='$i_syssockio'
15877 i_sysstat='$i_sysstat'
15878 i_sysstatfs='$i_sysstatfs'
15879 i_sysstatvfs='$i_sysstatvfs'
15880 i_systime='$i_systime'
15881 i_systimek='$i_systimek'
15882 i_systimes='$i_systimes'
15883 i_systypes='$i_systypes'
15884 i_sysuio='$i_sysuio'
15886 i_sysutsname='$i_sysutsname'
15887 i_sysvfs='$i_sysvfs'
15888 i_syswait='$i_syswait'
15889 i_termio='$i_termio'
15890 i_termios='$i_termios'
15892 i_unistd='$i_unistd'
15895 i_values='$i_values'
15896 i_varargs='$i_varargs'
15897 i_varhdr='$i_varhdr'
15899 ignore_versioned_solibs='$ignore_versioned_solibs'
15900 inc_version_list='$inc_version_list'
15901 inc_version_list_init='$inc_version_list_init'
15904 installarchlib='$installarchlib'
15905 installbin='$installbin'
15906 installman1dir='$installman1dir'
15907 installman3dir='$installman3dir'
15908 installprefix='$installprefix'
15909 installprefixexp='$installprefixexp'
15910 installprivlib='$installprivlib'
15911 installscript='$installscript'
15912 installsitearch='$installsitearch'
15913 installsitebin='$installsitebin'
15914 installsitelib='$installsitelib'
15915 installstyle='$installstyle'
15916 installusrbinperl='$installusrbinperl'
15917 installvendorarch='$installvendorarch'
15918 installvendorbin='$installvendorbin'
15919 installvendorlib='$installvendorlib'
15921 ivdformat='$ivdformat'
15924 known_extensions='$known_extensions'
15927 lddlflags='$lddlflags'
15929 ldflags_uselargefiles='$ldflags_uselargefiles'
15930 ldlibpthname='$ldlibpthname'
15937 libsdirs='$libsdirs'
15938 libsfiles='$libsfiles'
15939 libsfound='$libsfound'
15940 libspath='$libspath'
15941 libswanted='$libswanted'
15942 libswanted_uselargefiles='$libswanted_uselargefiles'
15948 locincpth='$locincpth'
15949 loclibpth='$loclibpth'
15950 longdblsize='$longdblsize'
15951 longlongsize='$longlongsize'
15952 longsize='$longsize'
15956 lseeksize='$lseeksize'
15957 lseektype='$lseektype'
15961 make_set_make='$make_set_make'
15962 mallocobj='$mallocobj'
15963 mallocsrc='$mallocsrc'
15964 malloctype='$malloctype'
15966 man1direxp='$man1direxp'
15969 man3direxp='$man3direxp'
15971 mips_type='$mips_type'
15973 mmaptype='$mmaptype'
15974 modetype='$modetype'
15976 multiarch='$multiarch'
15978 myarchname='$myarchname'
15979 mydomain='$mydomain'
15980 myhostname='$myhostname'
15983 netdb_hlen_type='$netdb_hlen_type'
15984 netdb_host_type='$netdb_host_type'
15985 netdb_name_type='$netdb_name_type'
15986 netdb_net_type='$netdb_net_type'
15989 nm_so_opt='$nm_so_opt'
15990 nonxs_ext='$nonxs_ext'
15992 nvEUformat='$nvEUformat'
15993 nvFUformat='$nvFUformat'
15994 nvGUformat='$nvGUformat'
15995 nveformat='$nveformat'
15996 nvfformat='$nvfformat'
15997 nvgformat='$nvgformat'
16000 o_nonblock='$o_nonblock'
16002 old_pthread_create_joinable='$old_pthread_create_joinable'
16003 optimize='$optimize'
16004 orderlib='$orderlib'
16007 otherlibdirs='$otherlibdirs'
16011 patchlevel='$patchlevel'
16012 path_sep='$path_sep'
16015 perladmin='$perladmin'
16016 perllibs='$perllibs'
16017 perlpath='$perlpath'
16019 phostname='$phostname'
16022 pm_apiversion='$pm_apiversion'
16026 prefixexp='$prefixexp'
16028 privlibexp='$privlibexp'
16029 prototype='$prototype'
16031 quadkind='$quadkind'
16032 quadtype='$quadtype'
16033 randbits='$randbits'
16034 randfunc='$randfunc'
16035 randseedtype='$randseedtype'
16037 rd_nodata='$rd_nodata'
16038 revision='$revision'
16042 sPRIEUldbl='$sPRIEUldbl'
16043 sPRIFUldbl='$sPRIFUldbl'
16044 sPRIGUldbl='$sPRIGUldbl'
16045 sPRIXU64='$sPRIXU64'
16047 sPRIeldbl='$sPRIeldbl'
16048 sPRIfldbl='$sPRIfldbl'
16049 sPRIgldbl='$sPRIgldbl'
16054 sSCNfldbl='$sSCNfldbl'
16055 sched_yield='$sched_yield'
16056 scriptdir='$scriptdir'
16057 scriptdirexp='$scriptdirexp'
16059 seedfunc='$seedfunc'
16060 selectminbits='$selectminbits'
16061 selecttype='$selecttype'
16062 sendmail='$sendmail'
16065 sharpbang='$sharpbang'
16066 shmattype='$shmattype'
16067 shortsize='$shortsize'
16070 sig_count='$sig_count'
16071 sig_name='$sig_name'
16072 sig_name_init='$sig_name_init'
16074 sig_num_init='$sig_num_init'
16075 signal_t='$signal_t'
16076 sitearch='$sitearch'
16077 sitearchexp='$sitearchexp'
16079 sitebinexp='$sitebinexp'
16081 sitelib_stem='$sitelib_stem'
16082 sitelibexp='$sitelibexp'
16083 siteprefix='$siteprefix'
16084 siteprefixexp='$siteprefixexp'
16085 sizesize='$sizesize'
16086 sizetype='$sizetype'
16090 sockethdr='$sockethdr'
16091 socketlib='$socketlib'
16092 socksizetype='$socksizetype'
16094 spackage='$spackage'
16095 spitshell='$spitshell'
16097 ssizetype='$ssizetype'
16098 startperl='$startperl'
16100 static_ext='$static_ext'
16102 stdio_base='$stdio_base'
16103 stdio_bufsiz='$stdio_bufsiz'
16104 stdio_cnt='$stdio_cnt'
16105 stdio_filbuf='$stdio_filbuf'
16106 stdio_ptr='$stdio_ptr'
16107 stdio_stream_array='$stdio_stream_array'
16110 subversion='$subversion'
16117 timeincl='$timeincl'
16118 timetype='$timetype'
16131 uidformat='$uidformat'
16137 uquadtype='$uquadtype'
16138 use5005threads='$use5005threads'
16139 use64bitall='$use64bitall'
16140 use64bitint='$use64bitint'
16142 useithreads='$useithreads'
16143 uselargefiles='$uselargefiles'
16144 uselongdouble='$uselongdouble'
16145 usemorebits='$usemorebits'
16146 usemultiplicity='$usemultiplicity'
16147 usemymalloc='$usemymalloc'
16149 useopcode='$useopcode'
16150 useperlio='$useperlio'
16151 useposix='$useposix'
16153 useshrplib='$useshrplib'
16154 usesocks='$usesocks'
16155 usethreads='$usethreads'
16156 usevendorprefix='$usevendorprefix'
16157 usevfork='$usevfork'
16160 uvXUformat='$uvXUformat'
16161 uvoformat='$uvoformat'
16164 uvuformat='$uvuformat'
16165 uvxformat='$uvxformat'
16166 vendorarch='$vendorarch'
16167 vendorarchexp='$vendorarchexp'
16168 vendorbin='$vendorbin'
16169 vendorbinexp='$vendorbinexp'
16170 vendorlib='$vendorlib'
16171 vendorlib_stem='$vendorlib_stem'
16172 vendorlibexp='$vendorlibexp'
16173 vendorprefix='$vendorprefix'
16174 vendorprefixexp='$vendorprefixexp'
16176 versiononly='$versiononly'
16178 voidflags='$voidflags'
16180 xs_apiversion='$xs_apiversion'
16185 : Add in command line options if available
16186 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16188 : add special variables
16189 $test -f $src/patchlevel.h && \
16190 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16191 echo "CONFIGDOTSH=true" >>config.sh
16193 : propagate old symbols
16194 if $test -f UU/config.sh; then
16195 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16196 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16197 $sort | $uniq -u >UU/oldsyms
16198 set X `cat UU/oldsyms`
16204 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16206 echo "# Variables propagated from previous config.sh file." >>config.sh
16207 for sym in `cat UU/oldsyms`; do
16208 echo " Propagating $hint variable "'$'"$sym..."
16209 eval 'tmp="$'"${sym}"'"'
16211 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16217 : Finish up by extracting the .SH files
16231 If you'd like to make any changes to the config.sh file before I begin
16232 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16235 rp="Press return or use a shell escape to edit config.sh:"
16240 *) : in case they cannot read
16241 sh 1>&4 -c "$ans";;
16246 : if this fails, just run all the .SH files by hand
16253 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16260 Now you need to generate make dependencies by running "$make depend".
16261 You might prefer to run it in background: "$make depend > makedepend.out &"
16262 It can take a while, so you might not want to run it right now.
16267 rp="Run $make depend now?"
16271 $make depend && echo "Now you must run '$make'."
16274 echo "You must run '$make depend' then '$make'."
16277 elif test -f [Mm]akefile; then
16279 echo "Now you must run a $make."
16284 if $test -f Policy.sh; then
16287 If you compile $package on a different machine or from a different object
16288 directory, copy the Policy.sh file from this object directory to the
16289 new one before you run Configure -- this will help you with most of
16290 the policy defaults.
16294 if $test -f config.msg; then
16295 echo "Hmm. I also noted the following information while running:"
16297 $cat config.msg >&4
16300 $rm -f kit*isdone ark*isdone