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 Tue Nov 7 00:26:20 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 /* In the buffer space, no one can hear you scream. */
11550 #define FILE_ptr(fp) ((fp)->_ptr)
11551 #define FILE_cnt(fp) ((fp)->_cnt)
11552 #include <sys/types.h>
11554 FILE *fp = fopen("try.c", "r");
11559 puts("Fail even to read");
11562 c = getc(fp); /* Read away the first # */
11564 puts("Fail even to read");
11568 18 <= FILE_cnt(fp) &&
11569 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11571 puts("Fail even to read");
11574 ptr = (char*) FILE_ptr(fp);
11575 cnt = (size_t)FILE_cnt(fp);
11577 FILE_ptr(fp) += 42;
11579 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11580 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11583 if (FILE_cnt(fp) <= 20) {
11584 printf ("Fail (<20 chars to test)");
11587 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11588 puts("Fail compare");
11591 if (cnt == FILE_cnt(fp)) {
11592 puts("Pass_unchanged");
11595 if (FILE_cnt(fp) == (cnt - 42)) {
11596 puts("Pass_changed");
11599 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11605 if eval $compile; then
11606 case `./try$exe_ext` in
11608 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11609 d_stdio_ptr_lval_sets_cnt="$define" ;;
11611 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11612 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11614 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11616 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11619 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11625 : see if _base is also standard
11627 case "$d_stdstdio" in
11631 #define FILE_base(fp) $stdio_base
11632 #define FILE_bufsiz(fp) $stdio_bufsiz
11634 FILE *fp = fopen("try.c", "r");
11637 19 <= FILE_bufsiz(fp) &&
11638 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11645 if eval $compile; then
11647 echo "And its _base field acts std."
11650 echo "But its _base field isn't std."
11653 echo "However, it seems to be lacking the _base field."
11662 Checking how to access stdio streams by file descriptor number...
11664 case "$stdio_stream_array" in
11665 '') $cat >try.c <<EOCP
11668 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11672 for s in _iob __iob __sF
11674 set try -DSTDIO_STREAM_ARRAY=$s
11675 if eval $compile; then
11676 case "`./try$exe_ext`" in
11677 yes) stdio_stream_array=$s; break ;;
11681 $rm -f try.* try$exe_ext
11683 case "$stdio_stream_array" in
11685 I can't figure out how to access stdio streams by file descriptor number.
11687 d_stdio_stream_array="$undef"
11690 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11692 d_stdio_stream_array="$define"
11696 : see if strcoll exists
11697 set strcoll d_strcoll
11700 : check for structure copying
11702 echo "Checking to see if your C compiler can copy structs..." >&4
11703 $cat >try.c <<'EOCP'
11713 if $cc -c try.c >/dev/null 2>&1 ; then
11715 echo "Yup, it can."
11718 echo "Nope, it can't."
11724 : see if strerror and/or sys_errlist[] exist
11726 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11727 if set strerror val -f d_strerror; eval $csym; $val; then
11728 echo 'strerror() found.' >&4
11729 d_strerror="$define"
11730 d_strerrm='strerror(e)'
11731 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11732 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11733 d_syserrlst="$define"
11735 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11736 d_syserrlst="$undef"
11738 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11739 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11740 echo 'strerror() found in string header.' >&4
11741 d_strerror="$define"
11742 d_strerrm='strerror(e)'
11743 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11744 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11745 d_syserrlst="$define"
11747 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11748 d_syserrlst="$undef"
11750 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11751 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11752 d_strerror="$undef"
11753 d_syserrlst="$define"
11754 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11756 echo 'strerror() and sys_errlist[] NOT found.' >&4
11757 d_strerror="$undef"
11758 d_syserrlst="$undef"
11759 d_strerrm='"unknown"'
11763 : see if strtod exists
11764 set strtod d_strtod
11767 : see if strtol exists
11768 set strtol d_strtol
11771 : see if strtold exists
11772 set strtold d_strtold
11775 : see if strtoll exists
11776 set strtoll d_strtoll
11779 case "$d_longlong-$d_strtoll" in
11782 Checking whether your strtoll() works okay...
11784 $cat >try.c <<'EOCP'
11787 #define strtoll __strtoll
11790 #define strtoll _strtoll
11793 extern long long int strtoll(char *s, char **, int);
11794 static int bad = 0;
11795 int check(char *s, long long ell, int een) {
11798 gll = strtoll(s, 0, 10);
11799 if (!((gll == ell) && (errno == een)))
11803 check(" 1", 1LL, 0);
11804 check(" 0", 0LL, 0);
11805 check("-1", -1LL, 0);
11806 check("-9223372036854775808", -9223372036854775808LL, 0);
11807 check("-9223372036854775808", -9223372036854775808LL, 0);
11808 check(" 9223372036854775807", 9223372036854775807LL, 0);
11809 check("-9223372036854775808", -9223372036854775808LL, 0);
11810 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11811 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11817 if eval $compile; then
11820 ok) echo "Your strtoll() seems to be working okay." ;;
11822 Your strtoll() doesn't seem to be working okay.
11828 echo "(I can't seem to compile the test program--assuming it doesn't)"
11834 : see if strtoul exists
11835 set strtoul d_strtoul
11838 : see if strtoull exists
11839 set strtoull d_strtoull
11842 case "$d_longlong-$d_strtoull" in
11845 Checking whether your strtoull() works okay...
11847 $cat >try.c <<'EOCP'
11850 #define strtoull __strtoull
11853 extern unsigned long long int strtoull(char *s, char **, int);
11854 static int bad = 0;
11855 int check(char *s, long long eull, int een) {
11858 gull = strtoull(s, 0, 10);
11859 if (!((gull == eull) && (errno == een)))
11863 check(" 1", 1LL, 0);
11864 check(" 0", 0LL, 0);
11865 check("18446744073709551615", 18446744073709551615ULL, 0);
11866 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11872 if eval $compile; then
11874 ok) echo "Your strtoull() seems to be working okay." ;;
11876 Your strtoull() doesn't seem to be working okay.
11878 d_strtoull="$undef"
11885 : see if strtouq exists
11886 set strtouq d_strtouq
11889 : see if strxfrm exists
11890 set strxfrm d_strxfrm
11893 : see if symlink exists
11894 set symlink d_symlink
11897 : see if syscall exists
11898 set syscall d_syscall
11901 : see if sysconf exists
11902 set sysconf d_sysconf
11905 : see if system exists
11906 set system d_system
11909 : see if tcgetpgrp exists
11910 set tcgetpgrp d_tcgetpgrp
11913 : see if tcsetpgrp exists
11914 set tcsetpgrp d_tcsetpgrp
11917 : see if prototype for telldir is available
11919 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11922 : see if this is a sys/times.h system
11923 set sys/times.h i_systimes
11926 : see if times exists
11928 if set times val -f d_times; eval $csym; $val; then
11929 echo 'times() found.' >&4
11932 case "$i_systimes" in
11933 "$define") inc='sys/times.h';;
11935 rp="What is the type returned by times() on this system?"
11936 set clock_t clocktype long stdio.h sys/types.h $inc
11939 echo 'times() NOT found, hope that will do.' >&4
11944 : see if truncate exists
11945 set truncate d_truncate
11948 : see if tzname[] exists
11950 if set tzname val -a d_tzname; eval $csym; $val; then
11952 echo 'tzname[] found.' >&4
11955 echo 'tzname[] NOT found.' >&4
11960 : see if umask exists
11964 : see if ustat exists
11968 : backward compatibility for d_hvfork
11969 if test X$d_hvfork != X; then
11970 d_vfork="$d_hvfork"
11973 : see if there is a vfork
11978 : Ok, but do we want to use it. vfork is reportedly unreliable in
11979 : perl on Solaris 2.x, and probably elsewhere.
11983 case "$usevfork" in
11989 Perl can only use a vfork() that doesn't suffer from strict
11990 restrictions on calling functions or modifying global data in
11991 the child. For example, glibc-2.1 contains such a vfork()
11992 that is unsuitable. If your system provides a proper fork()
11993 call, chances are that you do NOT want perl to use vfork().
11996 rp="Do you still want to use vfork()?"
12001 echo "Ok, we won't use vfork()."
12010 $define) usevfork='true';;
12011 *) usevfork='false';;
12014 : see if this is an sysdir system
12015 set sys/dir.h i_sysdir
12018 : see if this is an sysndir system
12019 set sys/ndir.h i_sysndir
12022 : see if closedir exists
12023 set closedir d_closedir
12026 case "$d_closedir" in
12029 echo "Checking whether closedir() returns a status..." >&4
12030 cat > closedir.c <<EOM
12031 #$i_dirent I_DIRENT /**/
12032 #$i_sysdir I_SYS_DIR /**/
12033 #$i_sysndir I_SYS_NDIR /**/
12034 #$i_systypes I_SYS_TYPES /**/
12036 #if defined(I_SYS_TYPES)
12037 #include <sys/types.h>
12039 #if defined(I_DIRENT)
12040 #include <dirent.h>
12041 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12042 #include <sys/dir.h>
12046 #include <sys/ndir.h>
12050 #include <ndir.h> /* may be wrong in the future */
12052 #include <sys/dir.h>
12057 int main() { return closedir(opendir(".")); }
12060 if eval $compile_ok; then
12061 if ./closedir > /dev/null 2>&1 ; then
12062 echo "Yes, it does."
12065 echo "No, it doesn't."
12069 echo "(I can't seem to compile the test program--assuming it doesn't)"
12077 set d_void_closedir
12080 : check for volatile keyword
12082 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12083 $cat >try.c <<'EOCP'
12086 typedef struct _goo_struct goo_struct;
12087 goo_struct * volatile goo = ((goo_struct *)0);
12088 struct _goo_struct {
12093 typedef unsigned short foo_t;
12094 char *volatile foo;
12096 volatile foo_t blech;
12100 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12102 echo "Yup, it does."
12105 echo "Nope, it doesn't."
12111 : see if there is a wait4
12115 : see if waitpid exists
12116 set waitpid d_waitpid
12119 : see if wcstombs exists
12120 set wcstombs d_wcstombs
12123 : see if wctomb exists
12124 set wctomb d_wctomb
12127 : preserve RCS keywords in files with variable substitution, grrr
12132 Revision='$Revision'
12134 case "$crosscompile" in
12135 ''|[nN]*) crosscompile="$undef" ;;
12139 next|rhapsody|darwin) multiarch="$define" ;;
12141 case "$multiarch" in
12142 ''|[nN]*) multiarch="$undef" ;;
12145 : check for alignment requirements
12147 case "$crosscompile$multiarch" in
12150 You seem to be either cross-compiling or doing a multiarchitecture build,
12151 skipping the memory alignment check.
12154 case "$alignbytes" in
12155 '') alignbytes=8 ;;
12159 case "$alignbytes" in
12160 '') echo "Checking alignment constraints..." >&4
12161 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12162 $cat >try.c <<'EOCP'
12163 typedef long double NV;
12166 $cat >try.c <<'EOCP'
12170 $cat >>try.c <<'EOCP'
12178 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12183 if eval $compile_ok; then
12187 echo "(I can't seem to compile the test program...)"
12190 *) dflt="$alignbytes"
12193 rp="Doubles must be aligned on a how-many-byte boundary?"
12201 : set the base revision
12204 : check for ordering of bytes in a long
12206 case "$crosscompile$multiarch" in
12209 You seem to be either cross-compiling or doing a multiarchitecture build,
12210 skipping the byteorder check.
12216 case "$byteorder" in
12219 In the following, larger digits indicate more significance. A big-endian
12220 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12221 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12222 machines may have weird orders like 3412. A Cray will report 87654321,
12223 an Alpha will report 12345678. If the test program works the default is
12225 I'm now running the test program...
12227 $cat >try.c <<'EOCP'
12234 char c[sizeof(long)];
12237 if (sizeof(long) > 4)
12238 u.l = (0x08070605L << 32) | 0x04030201L;
12241 for (i = 0; i < sizeof(long); i++)
12242 printf("%c", u.c[i]+'0');
12249 if eval $compile && ./try > /dev/null; then
12252 [1-4][1-4][1-4][1-4]|12345678|87654321)
12253 echo "(The test program ran ok.)"
12254 echo "byteorder=$dflt"
12257 ????|????????) echo "(The test program ran ok.)" ;;
12258 *) echo "(The test program didn't run right for some reason.)" ;;
12263 (I can't seem to compile the test program. Guessing big-endian...)
12266 case "$xxx_prompt" in
12268 rp="What is the order of bytes in a long?"
12282 : how do we catenate cpp tokens here?
12284 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12285 $cat >cpp_stuff.c <<'EOCP'
12286 #define RCAT(a,b)a/**/b
12287 #define ACAT(a,b)a ## b
12291 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12292 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12293 echo "Oh! Smells like ANSI's been here." >&4
12294 echo "We can catify or stringify, separately or together!"
12296 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12297 echo "Ah, yes! The good old days!" >&4
12298 echo "However, in the good old days we don't know how to stringify and"
12299 echo "catify at the same time."
12303 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12304 to have to edit the values of CAT[2-5] in config.h...
12306 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12310 : see if this is a db.h system
12316 : Check db version.
12318 echo "Checking Berkeley DB version ..." >&4
12324 #include <sys/types.h>
12329 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12330 int Major, Minor, Patch ;
12331 unsigned long Version ;
12332 (void)db_version(&Major, &Minor, &Patch) ;
12333 printf("You have Berkeley DB Version 2 or greater\n");
12335 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12336 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12337 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12338 Major, Minor, Patch) ;
12340 /* check that db.h & libdb are compatible */
12341 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12342 printf("db.h and libdb are incompatible\n") ;
12346 printf("db.h and libdb are compatible\n") ;
12348 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12349 + DB_VERSION_PATCH ;
12351 /* needs to be >= 2.3.4 */
12352 if (Version < 2003004) {
12353 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12354 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12360 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12361 printf("You have Berkeley DB Version 1\n");
12362 exit(0); /* DB version < 2: the coast is clear. */
12364 exit(1); /* <db.h> not Berkeley DB? */
12370 if eval $compile_ok && ./try; then
12371 echo 'Looks OK.' >&4
12373 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12377 : Remove db from list of libraries to use
12378 echo "Removing unusable -ldb from library list" >&4
12379 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12382 echo "libs = $libs" >&4
12392 : Check the return type needed for hash
12394 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12400 #include <sys/types.h>
12403 #ifndef DB_VERSION_MAJOR
12404 u_int32_t hash_cb (ptr, size)
12412 info.hash = hash_cb;
12416 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12417 if $contains warning try.out >>/dev/null 2>&1 ; then
12420 db_hashtype='u_int32_t'
12423 : XXX Maybe we should just give up here.
12424 db_hashtype=u_int32_t
12426 echo "Help: I can't seem to compile the db test program." >&4
12427 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12430 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12432 *) db_hashtype=u_int32_t
12437 : Check the return type needed for prefix
12439 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12445 #include <sys/types.h>
12448 #ifndef DB_VERSION_MAJOR
12449 size_t prefix_cb (key1, key2)
12457 info.prefix = prefix_cb;
12461 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12462 if $contains warning try.out >>/dev/null 2>&1 ; then
12463 db_prefixtype='int'
12465 db_prefixtype='size_t'
12468 db_prefixtype='size_t'
12469 : XXX Maybe we should just give up here.
12471 echo "Help: I can't seem to compile the db test program." >&4
12472 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12475 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12477 *) db_prefixtype='size_t'
12481 : check for void type
12483 echo "Checking to see how well your C compiler groks the void type..." >&4
12484 case "$voidflags" in
12486 $cat >try.c <<'EOCP'
12492 extern void moo(); /* function returning void */
12493 void (*goo)(); /* ptr to func returning void */
12495 void *hue; /* generic ptr */
12508 int main() { sub(); }
12510 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12511 voidflags=$defvoidused
12512 echo "Good. It appears to support void to the level $package wants.">&4
12513 if $contains warning .out >/dev/null 2>&1; then
12514 echo "However, you might get some warnings that look like this:"
12518 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12519 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12520 echo "It supports 1..."
12521 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12522 echo "It also supports 2..."
12523 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12525 echo "And it supports 4 but not 8 definitely."
12527 echo "It doesn't support 4..."
12528 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12530 echo "But it supports 8."
12533 echo "Neither does it support 8."
12537 echo "It does not support 2..."
12538 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12540 echo "But it supports 4 and 8."
12542 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12544 echo "And it supports 4 but has not heard about 8."
12546 echo "However it supports 8 but not 4."
12551 echo "There is no support at all for void."
12556 case "$voidflags" in
12558 *) $cat >&4 <<'EOM'
12559 Support flag bits are:
12560 1: basic void declarations.
12561 2: arrays of pointers to functions returning void.
12562 4: operations between pointers to and addresses of void functions.
12563 8: generic void pointers.
12566 rp="Your void support flags add up to what?"
12574 : How can we generate normalized random numbers ?
12576 echo "Looking for a random number function..." >&4
12577 case "$randfunc" in
12579 if set drand48 val -f; eval $csym; $val; then
12581 echo "Good, found drand48()." >&4
12582 elif set random val -f; eval $csym; $val; then
12584 echo "OK, found random()." >&4
12587 echo "Yick, looks like I have to use rand()." >&4
12598 *-Dmy_rand=*|*-Dmy_srand=*)
12599 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12600 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12601 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12602 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12606 while $test "$cont"; do
12607 rp="Use which function to generate random numbers?"
12609 if $test "$ans" = "$dflt"; then
12615 if set $ans val -f; eval $csym; $val; then
12619 rp="I cannot find function $ans. Use that name anyway?"
12628 case "$randfunc" in
12630 drand01="drand48()"
12636 case "$randbits" in
12638 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12640 #$i_unistd I_UNISTD
12641 #$i_stdlib I_STDLIB
12644 # include <unistd.h>
12647 # include <stdlib.h>
12652 register unsigned long tmp;
12653 register unsigned long max = 0L;
12655 for (i = 1000; i; i--) {
12656 tmp = (unsigned long) $randfunc();
12657 if (tmp > max) max = tmp;
12659 for (i = 0; max; i++)
12665 if eval $compile_ok; then
12669 echo "(I can't seem to compile the test program...)"
12676 rp="How many bits does your $randfunc() function produce?"
12680 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12681 seedfunc="s$randfunc"
12682 randseedtype=unsigned
12686 rp="How many bits does your $randfunc() function produce?"
12689 seedfunc="s$randfunc"
12690 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12691 if set $seedfunc val -f; eval $csym; $val; then
12692 echo "(Using $seedfunc() to seed random generator)"
12694 echo "(Warning: no $seedfunc() to seed random generator)"
12697 randseedtype=unsigned
12705 echo "Determining whether or not we are on an EBCDIC system..." >&4
12706 $cat >tebcdic.c <<'EOM'
12709 if ('M'==0xd4) return 0;
12716 if eval $compile_ok; then
12718 echo "You seem to speak EBCDIC." >&4
12721 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12724 echo "I'm unable to compile the test program." >&4
12725 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12727 $rm -f tebcdic.c tebcdic
12733 Checking how to flush all pending stdio output...
12735 # I only know how to find the first 32 possibly open files on SunOS.
12736 # See also hints/sunos_4_1.sh and util.c --AD
12738 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12740 $cat >>try.c <<EOCP
12742 #$i_unistd I_UNISTD
12744 # include <unistd.h>
12746 #$d_sysconf HAS_SYSCONF
12747 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12748 #ifdef HAS_STDIO_STREAM_ARRAY
12749 # define STDIO_STREAM_ARRAY $stdio_stream_array
12752 FILE* p = fopen("try.out", "w");
12756 # ifdef TRY_FPRINTF
12760 #ifdef TRY_FFLUSH_NULL
12763 #ifdef TRY_FFLUSH_ALL
12765 long open_max = -1;
12766 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12767 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12769 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12770 open_max = sysconf(_SC_OPEN_MAX);
12773 open_max = FOPEN_MAX;
12776 open_max = OPEN_MAX;
12785 # ifdef HAS_STDIO_STREAM_ARRAY
12786 if (open_max > 0) {
12788 for (i = 0; i < open_max; i++)
12789 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12790 STDIO_STREAM_ARRAY[i]._file < open_max &&
12791 STDIO_STREAM_ARRAY[i]._flag)
12792 fflush(&STDIO_STREAM_ARRAY[i]);
12800 : first we have to find out how _not_ to flush
12801 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12803 set try -DTRY_FPUTC
12804 if eval $compile; then
12806 ./try$exe_ext 2>/dev/null
12807 if $test ! -s try.out -a "X$?" = X42; then
12813 set try -DTRY_FPRINTF
12815 if eval $compile; then
12817 ./try$exe_ext 2>/dev/null
12818 if $test ! -s try.out -a "X$?" = X42; then
12819 output=-DTRY_FPRINTF
12825 : check for fflush NULL behaviour
12826 case "$fflushNULL" in
12827 '') set try -DTRY_FFLUSH_NULL $output
12828 if eval $compile; then
12830 ./try$exe_ext 2>/dev/null
12832 if $test -s try.out -a "X$code" = X42; then
12833 fflushNULL="`$cat try.out`"
12835 if $test "X$code" != X42; then
12837 (If this test failed, don't worry, we'll try another method shortly.)
12842 $rm -f core try.core core.try.*
12843 case "$fflushNULL" in
12845 Your fflush(NULL) works okay for output streams.
12846 Let's see if it clobbers input pipes...
12848 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12849 # bug that improperly flushes the input end of pipes. So we avoid the
12850 # autoflush on fork/system/exec support for now. :-(
12851 $cat >tryp.c <<EOCP
12854 main(int argc, char **argv)
12860 while ((i = getc(stdin)) != -1
12861 && (*bp++ = i) != '\n'
12862 && bp < &buf[1024])
12865 fprintf(stdout, "%s", buf);
12873 fflushNULL="$define"
12875 if eval $compile; then
12877 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12878 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12880 fflush(NULL) seems to behave okay with input streams.
12882 fflushNULL="$define"
12885 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12887 fflushNULL="$undef"
12890 $rm -f core tryp.c tryp.core core.tryp.*
12893 Your fflush(NULL) isn't working (contrary to ANSI C).
12895 fflushNULL="$undef"
12898 Cannot figure out whether your fflush(NULL) works or not.
12899 I'm assuming it doesn't (contrary to ANSI C).
12901 fflushNULL="$undef"
12905 $define|true|[yY]*)
12906 fflushNULL="$define"
12909 fflushNULL="$undef"
12912 : check explicit looping only if NULL did not work, and if the pipe
12913 : bug does not show up on an explicit flush too
12914 case "$fflushNULL" in
12916 $cat >tryp.c <<EOCP
12919 main(int argc, char **argv)
12925 while ((i = getc(stdin)) != -1
12926 && (*bp++ = i) != '\n'
12927 && bp < &buf[1024])
12930 fprintf(stdout, "%s", buf);
12939 if eval $compile; then
12941 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12942 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12944 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12946 : now check for fflushall behaviour
12947 case "$fflushall" in
12948 '') set try -DTRY_FFLUSH_ALL $output
12949 if eval $compile; then
12951 (Now testing the other method--but note that this also may fail.)
12954 ./try$exe_ext 2>/dev/null
12955 if $test -s try.out -a "X$?" = X42; then
12956 fflushall="`$cat try.out`"
12959 $rm -f core try.core core.try.*
12960 case "$fflushall" in
12962 Whew. Flushing explicitly all the stdio streams works.
12964 fflushall="$define"
12967 Sigh. Flushing explicitly all the stdio streams doesn't work.
12972 Cannot figure out whether flushing stdio streams explicitly works or not.
12973 I'm assuming it doesn't.
12979 "$define"|true|[yY]*)
12980 fflushall="$define"
12988 All is futile. Even fflush(stdin) clobbers input pipes!
12995 $rm -f core tryp.c tryp.core core.tryp.*
12997 *) fflushall="$undef"
13001 case "$fflushNULL$fflushall" in
13004 OK, I give up. I cannot figure out how to flush pending stdio output.
13005 We won't be flushing handles at all before fork/exec/popen.
13009 $rm -f try.* try$exe_ext
13011 : Store the full pathname to the ar program for use in the C program
13012 : Respect a hint or command line value for full_ar.
13017 : Store the full pathname to the sed program for use in the C program
13020 : see what type gids are declared as in the kernel
13022 echo "Looking for the type for group ids returned by getgid()."
13023 set gid_t gidtype xxx stdio.h sys/types.h
13027 xxx=`./findhdr sys/user.h`
13028 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13030 unsigned) dflt="$1 $2" ;;
13034 *) dflt="$gidtype";;
13037 gid_t) echo "gid_t found." ;;
13038 *) rp="What is the type for group ids returned by getgid()?"
13046 *_t) zzz="$gidtype" ;;
13049 echo "Checking the size of $zzz..." >&4
13051 #include <sys/types.h>
13054 printf("%d\n", (int)sizeof($gidtype));
13059 if eval $compile_ok; then
13063 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13066 echo "Your $zzz is $gidsize bytes long."
13071 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13077 *_t) zzz="$gidtype" ;;
13080 echo "Checking the sign of $zzz..." >&4
13082 #include <sys/types.h>
13093 if eval $compile; then
13097 echo "(I can't execute the test program--guessing unsigned.)" >&4
13101 1) echo "Your $zzz is unsigned." ;;
13102 -1) echo "Your $zzz is signed." ;;
13108 echo "(I can't compile the test program--guessing unsigned.)" >&4
13114 if $test X"$quadtype" != X; then
13116 echo "Checking how to print 64-bit integers..." >&4
13118 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13119 $cat >try.c <<'EOCP'
13120 #include <sys/types.h>
13123 int q = 12345678901;
13124 printf("%ld\n", q);
13128 if eval $compile; then
13129 yyy=`./try$exe_ext`
13132 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13133 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13134 echo "We will use %d."
13140 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13141 $cat >try.c <<'EOCP'
13142 #include <sys/types.h>
13145 long q = 12345678901;
13146 printf("%ld\n", q);
13150 if eval $compile; then
13151 yyy=`./try$exe_ext`
13154 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13155 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13156 echo "We will use %ld."
13162 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13163 $cat >try.c <<'EOCP'
13164 #include <sys/types.h>
13165 #include <inttypes.h>
13168 int64_t q = 12345678901;
13169 printf("%" PRId64 "\n", q);
13173 if eval $compile; then
13174 yyy=`./try$exe_ext`
13177 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13178 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13179 echo "We will use the C9X style."
13185 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13186 $cat >try.c <<'EOCP'
13187 #include <sys/types.h>
13190 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13191 printf("%lld\n", q);
13195 if eval $compile; then
13196 yyy=`./try$exe_ext`
13199 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13200 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13201 echo "We will use the %lld style."
13207 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13209 #include <sys/types.h>
13212 $quadtype q = 12345678901;
13213 printf("%Ld\n", q);
13217 if eval $compile; then
13218 yyy=`./try$exe_ext`
13221 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13222 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13223 echo "We will use %Ld."
13229 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13231 #include <sys/types.h>
13234 $quadtype q = 12345678901;
13235 printf("%qd\n", q);
13239 if eval $compile; then
13240 yyy=`./try$exe_ext`
13243 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13244 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13245 echo "We will use %qd."
13251 if $test X"$sPRId64" = X; then
13252 echo "Cannot figure out how to print 64-bit integers." >&4
13260 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13261 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13263 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13264 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13270 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13272 if $test X"$ivsize" = X8; then
13273 ivdformat="$sPRId64"
13274 uvuformat="$sPRIu64"
13275 uvoformat="$sPRIo64"
13276 uvxformat="$sPRIx64"
13277 uvXUformat="$sPRIXU64"
13279 if $test X"$ivsize" = X"$longsize"; then
13286 if $test X"$ivsize" = X"$intsize"; then
13294 if $test X"$ivsize" = X"$shortsize"; then
13305 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13306 nveformat="$sPRIeldbl"
13307 nvfformat="$sPRIfldbl"
13308 nvgformat="$sPRIgldbl"
13309 nvEUformat="$sPRIEUldbl"
13310 nvFUformat="$sPRIFUldbl"
13311 nvGUformat="$sPRIGUldbl"
13321 case "$ivdformat" in
13322 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13329 $echo "Checking the format string to be used for gids..." >&4
13332 -1) if $test X"$gidsize" = X"$ivsize"; then
13333 gidformat="$ivdformat"
13335 if $test X"$gidsize" = X"$longsize"; then
13338 if $test X"$gidsize" = X"$intsize"; then
13341 if $test X"$gidsize" = X"$shortsize"; then
13348 *) if $test X"$gidsize" = X"$uvsize"; then
13349 gidformat="$uvuformat"
13351 if $test X"$gidsize" = X"$longsize"; then
13354 if $test X"$gidsize" = X"$intsize"; then
13357 if $test X"$gidsize" = X"$shortsize"; then
13366 : see if getgroups exists
13367 set getgroups d_getgrps
13370 : see if setgroups exists
13371 set setgroups d_setgrps
13375 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13377 case "$d_getgrps$d_setgrps" in
13379 case "$groupstype" in
13380 '') dflt="$gidtype" ;;
13381 *) dflt="$groupstype" ;;
13384 What type of pointer is the second argument to getgroups() and setgroups()?
13385 Usually this is the same as group ids, $gidtype, but not always.
13388 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13392 *) groupstype="$gidtype";;
13396 echo "Checking if your $make program sets \$(MAKE)..." >&4
13397 case "$make_set_make" in
13399 $sed 's/^X //' > testmake.mak << 'EOF'
13401 X @echo 'maketemp="$(MAKE)"'
13403 case "`$make -f testmake.mak 2>/dev/null`" in
13404 *maketemp=*) make_set_make='#' ;;
13405 *) make_set_make="MAKE=$make" ;;
13407 $rm -f testmake.mak
13410 case "$make_set_make" in
13411 '#') echo "Yup, it does.";;
13412 *) echo "Nope, it doesn't.";;
13415 : see what type is used for mode_t
13416 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13417 set mode_t modetype int stdio.h sys/types.h
13420 : define a fucntion to check prototypes
13421 $cat > protochk <<EOSH
13424 optimize="$optimize"
13426 prototype="$prototype"
13431 $cat >> protochk <<'EOSH'
13436 while test $# -ge 2; do
13438 $define) echo "#include <$2>" >> try.c ;;
13439 literal) echo "$2" >> try.c ;;
13443 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13444 cat >> try.c <<'EOCP'
13445 #ifdef CAN_PROTOTYPE
13446 #define _(args) args
13451 echo "$foo" >> try.c
13452 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13453 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13459 $eunicefix protochk
13461 : see what type is used for size_t
13462 rp="What is the type used for the length parameter for string functions?"
13463 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13466 : check for type of arguments to gethostbyaddr.
13467 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13468 case "$d_gethbyaddr" in
13472 Checking to see what type of arguments are accepted by gethostbyaddr().
13474 hdrs="$define sys/types.h
13475 $d_socket sys/socket.h
13476 $i_niin netinet/in.h
13478 $i_unistd unistd.h"
13479 : The first arg can 'char *' or 'void *'
13480 : The second arg is some of integral type
13481 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13482 for yyy in size_t long int; do
13483 case "$netdb_host_type" in
13484 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13485 if ./protochk "$try" $hdrs; then
13486 echo "Your system accepts $xxx for the first arg."
13487 echo "...and $yyy for the second arg."
13488 netdb_host_type="$xxx"
13489 netdb_hlen_type="$yyy"
13495 : In case none of those worked, prompt the user.
13496 case "$netdb_host_type" in
13497 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13500 netdb_host_type=$ans
13501 rp='What is the type for the 2nd argument to gethostbyaddr?'
13504 netdb_hlen_type=$ans
13508 *) : no gethostbyaddr, so pick harmless defaults
13509 netdb_host_type='char *'
13510 netdb_hlen_type="$sizetype"
13513 # Remove the "const" if needed. -- but then we'll have a
13515 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13518 : check for type of argument to gethostbyname.
13519 if test "X$netdb_name_type" = X ; then
13520 case "$d_gethbyname" in
13524 Checking to see what type of argument is accepted by gethostbyname().
13526 hdrs="$define sys/types.h
13527 $d_socket sys/socket.h
13528 $i_niin netinet/in.h
13530 $i_unistd unistd.h"
13531 for xxx in "const char *" "char *"; do
13532 case "$netdb_name_type" in
13533 '') try="extern struct hostent *gethostbyname($xxx);"
13534 if ./protochk "$try" $hdrs; then
13535 echo "Your system accepts $xxx."
13536 netdb_name_type="$xxx"
13541 : In case none of those worked, prompt the user.
13542 case "$netdb_name_type" in
13543 '') rp='What is the type for the 1st argument to gethostbyname?'
13546 netdb_name_type=$ans
13550 *) : no gethostbyname, so pick harmless default
13551 netdb_name_type='char *'
13556 : check for type of 1st argument to getnetbyaddr.
13557 if test "X$netdb_net_type" = X ; then
13558 case "$d_getnbyaddr" in
13562 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13564 hdrs="$define sys/types.h
13565 $d_socket sys/socket.h
13566 $i_niin netinet/in.h
13568 $i_unistd unistd.h"
13569 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13570 case "$netdb_net_type" in
13571 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13572 if ./protochk "$try" $hdrs; then
13573 echo "Your system accepts $xxx."
13574 netdb_net_type="$xxx"
13579 : In case none of those worked, prompt the user.
13580 case "$netdb_net_type" in
13581 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13584 netdb_net_type=$ans
13588 *) : no getnetbyaddr, so pick harmless default
13589 netdb_net_type='long'
13593 : locate the preferred pager for this system
13599 [a-zA-Z]:/*) dflt=$pg;;
13603 [a-zA-Z]:/*) dflt=$more;;
13607 [a-zA-Z]:/*) dflt=$less;;
13610 '') dflt=/usr/ucb/more;;
13617 rp='What pager is used on your system?'
13621 : see what type pids are declared as in the kernel
13622 rp="What is the type of process ids on this system?"
13623 set pid_t pidtype int stdio.h sys/types.h
13626 : Find earliest binary compatible site_perl subdirectory perl can use.
13627 case "$bincompat5005" in
13628 "$define") xs_apiversion='5.005' ;;
13629 *) xs_apiversion=$version ;; # The current site_perl version.
13631 : Find earliest pure perl site_perl subdirectory perl can use.
13632 : The versioned directories started at 5.005.
13633 pm_apiversion='5.005'
13635 : check for length of pointer
13639 echo "Checking to see how big your pointers are..." >&4
13640 if test "$voidflags" -gt 7; then
13641 echo '#define VOID_PTR char *' > try.c
13643 echo '#define VOID_PTR void *' > try.c
13645 $cat >>try.c <<'EOCP'
13649 printf("%d\n", (int)sizeof(VOID_PTR));
13654 if eval $compile_ok; then
13656 echo "Your pointers are $ptrsize bytes long."
13659 echo "(I can't seem to compile the test program. Guessing...)" >&4
13660 rp="What is the size of a pointer (in bytes)?"
13668 : see if ar generates random libraries by itself
13670 echo "Checking how to generate random libraries on your machine..." >&4
13671 echo 'int bar1() { return bar2(); }' > bar1.c
13672 echo 'int bar2() { return 2; }' > bar2.c
13673 $cat > foo.c <<'EOP'
13674 int main() { printf("%d\n", bar1()); exit(0); }
13676 $cc $ccflags -c bar1.c >/dev/null 2>&1
13677 $cc $ccflags -c bar2.c >/dev/null 2>&1
13678 $cc $ccflags -c foo.c >/dev/null 2>&1
13679 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13680 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13681 ./foobar >/dev/null 2>&1; then
13682 echo "$ar appears to generate random libraries itself."
13685 elif $ar ts bar$_a >/dev/null 2>&1 &&
13686 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13687 ./foobar >/dev/null 2>&1; then
13688 echo "a table of contents needs to be added with '$ar ts'."
13695 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13696 $test -f $ranlib || ranlib=''
13699 if $test -n "$ranlib"; then
13700 echo "your system has '$ranlib'; we'll use that."
13703 echo "your system doesn't seem to support random libraries"
13704 echo "so we'll use lorder and tsort to order the libraries."
13711 : check for type of arguments to select.
13712 case "$selecttype" in
13713 '') case "$d_select" in
13717 Checking to see what type of arguments are accepted by select().
13719 hdrs="$define sys/types.h
13720 $i_systime sys/time.h
13721 $i_sysselct sys/select.h
13722 $d_socket sys/socket.h"
13723 : The first arg can be int, unsigned, or size_t
13724 : The last arg may or may not be 'const'
13726 : void pointer has been seen but using that
13727 : breaks the selectminbits test
13728 for xxx in 'fd_set *' 'int *'; do
13729 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13730 for tmo in 'struct timeval *' 'const struct timeval *'; do
13732 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13733 if ./protochk "$try" $hdrs; then
13734 echo "Your system accepts $xxx."
13743 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13744 case "$d_fd_set" in
13745 $define) dflt="fd_set *" ;;
13754 *) : no select, so pick a harmless default
13761 : check for the select 'width'
13762 case "$selectminbits" in
13763 '') case "$d_select" in
13767 Checking to see on how many bits at a time your select() operates...
13770 #include <sys/types.h>
13772 #$i_systime I_SYS_TIME
13773 #$i_systimek I_SYS_TIME_KERNEL
13778 # ifdef I_SYS_TIME_KERNEL
13781 # include <sys/time.h>
13782 # ifdef I_SYS_TIME_KERNEL
13786 #$i_sysselct I_SYS_SELECT
13787 #ifdef I_SYS_SELECT
13788 #include <sys/select.h>
13790 #$d_socket HAS_SOCKET
13792 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13796 #define S sizeof(*(b))
13798 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13799 #define NBITS (NBYTES * 8)
13808 fp = fopen("try.c", "r");
13814 b = ($selecttype)s;
13815 for (i = 0; i < NBITS; i++)
13819 select(fd + 1, b, 0, 0, &t);
13820 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13821 printf("%d\n", i + 1);
13826 if eval $compile_ok; then
13827 selectminbits=`./try`
13828 case "$selectminbits" in
13830 Cannot figure out on how many bits at a time your select() operates.
13831 I'll play safe and guess it is 32 bits.
13837 *) bits="$selectminbits bits" ;;
13839 echo "Your select() operates on $bits at a time." >&4
13841 rp='What is the minimum number of bits your select() operates on?'
13842 case "$byteorder" in
13843 1234|12345678) dflt=32 ;;
13848 selectminbits="$val"
13852 *) : no select, so pick a harmless default
13859 : Trace out the files included by signal.h, then look for SIGxxx names.
13860 : Remove SIGARRAYSIZE used by HPUX.
13861 : Remove SIGSTKSIZE used by Linux.
13862 : Remove SIGSTKSZ used by Posix.
13863 : Remove SIGTYP void lines used by OS2.
13864 : Some cpps, like os390, dont give the file name anywhere
13865 if [ "X$fieldn" = X ]; then
13866 : Just make some guesses. We check them later.
13867 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13869 xxx=`echo '#include <signal.h>' |
13870 $cppstdin $cppminus $cppflags 2>/dev/null |
13871 $grep '^[ ]*#.*include' |
13872 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13874 : Check this list of files to be sure we have parsed the cpp output ok.
13875 : This will also avoid potentially non-existent files, such
13878 for xx in $xxx /dev/null ; do
13879 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13881 : If we have found no files, at least try signal.h
13882 case "$xxxfiles" in
13883 '') xxxfiles=`./findhdr signal.h` ;;
13886 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13887 print substr($2, 4, 20)
13889 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13890 print substr($3, 4, 20)
13892 : Append some common names just in case the awk scan failed.
13893 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13894 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13895 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13896 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13897 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13899 : generate a few handy files for later
13900 $cat > signal.c <<'EOCP'
13901 #include <sys/types.h>
13902 #include <signal.h>
13906 /* Strange style to avoid deeply-nested #if/#else/#endif */
13909 # define NSIG (_NSIG)
13915 # define NSIG (SIGMAX+1)
13921 # define NSIG (SIG_MAX+1)
13927 # define NSIG (MAXSIG+1)
13933 # define NSIG (MAX_SIG+1)
13938 # ifdef SIGARRAYSIZE
13939 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13945 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13949 /* Default to some arbitrary number that's big enough to get most
13950 of the common signals.
13956 printf("NSIG %d\n", NSIG);
13962 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13964 printf "#ifdef SIG"; printf $1; printf "\n"
13965 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13966 printf $1; printf ");\n"
13970 printf "#endif /* JUST_NSIG */\n";
13971 printf "exit(0);\n}\n";
13974 $cat >signal.awk <<'EOP'
13975 BEGIN { ndups = 0 }
13976 $1 ~ /^NSIG$/ { nsig = $2 }
13977 ($1 !~ /^NSIG$/) && (NF == 2) {
13978 if ($2 > maxsig) { maxsig = $2 }
13979 if (sig_name[$2]) {
13980 dup_name[ndups] = $1
13981 dup_num[ndups] = $2
13993 printf("NSIG %d\n", nsig);
13994 for (n = 1; n < nsig; n++) {
13996 printf("%s %d\n", sig_name[n], sig_num[n])
13999 printf("NUM%d %d\n", n, n)
14002 for (n = 0; n < ndups; n++) {
14003 printf("%s %d\n", dup_name[n], dup_num[n])
14007 $cat >signal_cmd <<EOS
14009 if $test -s signal.lst; then
14010 echo "Using your existing signal.lst file"
14015 $cat >>signal_cmd <<'EOS'
14018 if eval $compile_ok; then
14019 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14021 echo "(I can't seem be able to compile the whole test program)" >&4
14022 echo "(I'll try it in little pieces.)" >&4
14023 set signal -DJUST_NSIG
14024 if eval $compile_ok; then
14025 ./signal$_exe > signal.nsg
14028 echo "I can't seem to figure out how many signals you have." >&4
14029 echo "Guessing 50." >&4
14030 echo 'NSIG 50' > signal.nsg
14032 : Now look at all the signal names, one at a time.
14033 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14034 $cat > signal.c <<EOCP
14035 #include <sys/types.h>
14036 #include <signal.h>
14039 printf("$xx %d\n", SIG${xx});
14044 if eval $compile; then
14045 echo "SIG${xx} found."
14046 ./signal$_exe >> signal.ls1
14048 echo "SIG${xx} NOT found."
14051 if $test -s signal.ls1; then
14052 $cat signal.nsg signal.ls1 |
14053 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14057 if $test -s signal.lst; then
14060 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14061 echo 'kill -l' >signal
14062 set X `csh -f <signal`
14066 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14068 echo $@ | $tr ' ' $trnl | \
14069 $awk '{ printf "%s %d\n", $1, ++s; }
14070 END { printf "NSIG %d\n", ++s }' >signal.lst
14072 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14074 chmod a+x signal_cmd
14075 $eunicefix signal_cmd
14077 : generate list of signal names
14079 case "$sig_name_init" in
14081 *) case "$sig_num_init" in
14082 ''|*,*) doinit=yes ;;
14087 echo "Generating a list of signal names and numbers..." >&4
14089 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14090 sig_name=`$awk 'BEGIN { printf "ZERO " }
14091 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14092 sig_num=`$awk 'BEGIN { printf "0 " }
14093 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14094 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14095 !/^NSIG/ { printf "\"%s\", ", $1 }
14096 END { printf "0\n" }' signal.lst`
14097 sig_num_init=`$awk 'BEGIN { printf "0, " }
14098 !/^NSIG/ { printf "%d, ", $2}
14099 END { printf "0\n"}' signal.lst`
14102 echo "The following $sig_count signals are available:"
14104 echo $sig_name | $awk \
14105 'BEGIN { linelen = 0 }
14107 for (i = 1; i <= NF; i++) {
14108 name = "SIG" $i " "
14109 linelen = linelen + length(name)
14110 if (linelen > 70) {
14112 linelen = length(name)
14118 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14121 case "$sizetype" in
14122 *_t) zzz="$sizetype" ;;
14123 *) zzz="filesize" ;;
14125 echo "Checking the size of $zzz..." >&4
14127 #include <sys/types.h>
14130 printf("%d\n", (int)sizeof($sizetype));
14135 if eval $compile_ok; then
14139 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14142 echo "Your $zzz size is $sizesize bytes."
14147 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14151 : check for socklen_t
14153 echo "Checking to see if you have socklen_t..." >&4
14155 #include <sys/types.h>
14156 #$d_socket HAS_SOCKET
14158 #include <sys/socket.h>
14160 int main() { socklen_t x = 16; }
14163 if eval $compile; then
14165 echo "You have socklen_t."
14168 echo "You do not have socklen_t."
14169 case "$sizetype" in
14170 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14177 : check for type of the size argument to socket calls
14178 case "$d_socket" in
14182 Checking to see what type is the last argument of accept().
14184 hdrs="$define sys/types.h $d_socket sys/socket.h"
14186 case "$d_socklen_t" in
14187 "$define") yyy="$yyy socklen_t"
14189 yyy="$yyy $sizetype int long unsigned"
14190 for xxx in $yyy; do
14191 case "$socksizetype" in
14192 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14193 if ./protochk "$try" $hdrs; then
14194 echo "Your system accepts '$xxx *' for the last argument of accept()."
14195 socksizetype="$xxx"
14200 : In case none of those worked, prompt the user.
14201 case "$socksizetype" in
14202 '') rp='What is the type for socket address structure sizes?'
14209 *) : no sockets, so pick relatively harmless default
14214 : see what type is used for signed size_t
14215 set ssize_t ssizetype int stdio.h sys/types.h
14218 $cat > ssize.c <<EOM
14220 #include <sys/types.h>
14221 #define Size_t $sizetype
14222 #define SSize_t $dflt
14225 if (sizeof(Size_t) == sizeof(SSize_t))
14227 else if (sizeof(Size_t) == sizeof(int))
14236 if eval $compile_ok && ./ssize > /dev/null; then
14237 ssizetype=`./ssize`
14238 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14241 Help! I can't compile and run the ssize_t test program: please enlighten me!
14242 (This is probably a misconfiguration in your system or libraries, and
14243 you really ought to fix it. Still, I'll try anyway.)
14245 I need a type that is the same size as $sizetype, but is guaranteed to
14246 be signed. Common values are ssize_t, int and long.
14249 rp="What signed type is the same size as $sizetype?"
14253 $rm -f ssize ssize.*
14255 : see what type of char stdio uses.
14257 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14258 echo "Your stdio uses unsigned chars." >&4
14259 stdchar="unsigned char"
14261 echo "Your stdio uses signed chars." >&4
14265 : see if time exists
14267 if test "X$d_time" = X -o X"$timetype" = X; then
14268 if set time val -f d_time; eval $csym; $val; then
14269 echo 'time() found.' >&4
14271 rp="What is the type returned by time() on this system?"
14272 set time_t timetype long stdio.h sys/types.h
14275 echo 'time() not found, hope that will do.' >&4
14283 : see what type uids are declared as in the kernel
14285 echo "Looking for the type for user ids returned by getuid()."
14286 set uid_t uidtype xxx stdio.h sys/types.h
14290 xxx=`./findhdr sys/user.h`
14291 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14293 unsigned) dflt="$1 $2" ;;
14297 *) dflt="$uidtype";;
14300 uid_t) echo "uid_t found." ;;
14301 *) rp="What is the type for user ids returned by getuid()?"
14309 *_t) zzz="$uidtype" ;;
14312 echo "Checking the size of $zzz..." >&4
14314 #include <sys/types.h>
14317 printf("%d\n", (int)sizeof($uidtype));
14322 if eval $compile_ok; then
14326 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14329 echo "Your $zzz is $uidsize bytes long."
14334 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14339 *_t) zzz="$uidtype" ;;
14342 echo "Checking the sign of $zzz..." >&4
14344 #include <sys/types.h>
14355 if eval $compile; then
14359 echo "(I can't execute the test program--guessing unsigned.)" >&4
14363 1) echo "Your $zzz is unsigned." ;;
14364 -1) echo "Your $zzz is signed." ;;
14370 echo "(I can't compile the test program--guessing unsigned.)" >&4
14376 $echo "Checking the format string to be used for uids..." >&4
14379 -1) if $test X"$uidsize" = X"$ivsize"; then
14380 uidformat="$ivdformat"
14382 if $test X"$uidsize" = X"$longsize"; then
14385 if $test X"$uidsize" = X"$intsize"; then
14388 if $test X"$uidsize" = X"$shortsize"; then
14395 *) if $test X"$uidsize" = X"$uvsize"; then
14396 uidformat="$uvuformat"
14398 if $test X"$uidsize" = X"$longsize"; then
14401 if $test X"$uidsize" = X"$intsize"; then
14404 if $test X"$uidsize" = X"$shortsize"; then
14413 : see if dbm.h is available
14414 : see if dbmclose exists
14415 set dbmclose d_dbmclose
14418 case "$d_dbmclose" in
14428 *) set rpcsvc/dbm.h i_rpcsvcdbm
14433 *) echo "We won't be including <dbm.h>"
14443 : see if this is a sys/file.h system
14448 : do we need to include sys/file.h ?
14452 if $h_sysfile; then
14454 echo "We'll be including <sys/file.h>." >&4
14457 echo "We won't be including <sys/file.h>." >&4
14467 : see if fcntl.h is there
14472 : see if we can include fcntl.h
14478 echo "We'll be including <fcntl.h>." >&4
14481 if $h_sysfile; then
14482 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14484 echo "We won't be including <fcntl.h>." >&4
14496 : see if this is a iconv.h system
14497 set iconv.h i_iconv
14500 : see if this is a ieeefp.h system
14501 set ieeefp.h i_ieeefp
14504 : see if this is a libutil.h system
14505 set libutil.h i_libutil
14508 : see if locale.h is available
14509 set locale.h i_locale
14512 : see if mach cthreads are available
14513 if test "X$usethreads" = "X$define"; then
14514 set mach/cthreads.h i_machcthr
14517 i_machcthr="$undef"
14522 : see if this is a math.h system
14526 : see if this is a mntent.h system
14527 set mntent.h i_mntent
14530 : see if ndbm.h is available
14535 : see if dbm_open exists
14536 set dbm_open d_dbm_open
14538 case "$d_dbm_open" in
14541 echo "We won't be including <ndbm.h>"
14550 : see if net/errno.h is available
14552 set net/errno.h val
14555 : Unfortunately, it causes problems on some systems. Arrgh.
14558 cat > try.c <<'EOM'
14561 #include <net/errno.h>
14567 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14568 echo "We'll be including <net/errno.h>." >&4
14570 echo "We won't be including <net/errno.h>." >&4
14579 : see if netinet/tcp.h is available
14580 set netinet/tcp.h i_netinettcp
14583 : see if this is a poll.h system
14587 : see if this is a prot.h system
14592 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14593 $cat <<'EOSH' > Cppsym.know
14594 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14595 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14596 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14597 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14598 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14599 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14600 bull c cadmus clipper CMU COFF COMPILER_VERSION
14601 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14602 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14603 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14604 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14605 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14606 H3050R H3050RX hbullx20 hcx host_mips
14607 hp200 hp300 hp700 HP700 hp800 hp9000
14608 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14609 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14610 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14611 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14612 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14613 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14614 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14615 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14616 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14617 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14618 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14619 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14620 MATH_HAS_NO_SIDE_EFFECTS
14621 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14622 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14623 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14624 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14625 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14626 NetBSD news1500 news1700 news1800 news1900 news3700
14627 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
14628 ns32016 ns32332 ns32k nsc32000
14629 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14630 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14631 pc532 pdp11 PGC PIC plexus PORTAR posix
14632 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14633 POSIX_C_SOURCE POSIX_SOURCE POWER
14634 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14635 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14636 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14637 sony sony_news sonyrisc sparc sparclite spectrum
14638 stardent stdc STDC_EXT stratos sun sun3 sun386
14639 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14640 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14641 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14642 sysV68 sysV88 Tek4132 Tek4300 titan
14643 tower tower32 tower32_200 tower32_600 tower32_700
14644 tower32_800 tower32_850 tss
14645 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14646 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14647 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14648 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14649 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14650 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14653 # Maybe put other stuff here too.
14654 cat <<EOSH >>Cppsym.know
14657 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14658 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14659 $cat Cppsym.know > Cppsym.c
14660 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
14661 $rm -f Cppsym.a Cppsym.b Cppsym.c
14662 cat <<EOSH > Cppsym
14664 if $test \$# -gt 0; then
14665 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14666 if $test -s Cppsym.got; then
14673 $tr " " "$trnl" | ./Cppsym.try
14679 cat <<EOSH > Cppsym.try
14681 cat <<'EOCP' > try.c
14687 cat <<'EOSH' >> Cppsym.try
14689 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
14690 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
14691 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
14692 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
14696 cat <<EOSH >> Cppsym.try
14698 case "$osname-$gccversion" in
14699 irix-) ccflags="\$ccflags -woff 1178" ;;
14700 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14702 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
14704 chmod +x Cppsym.try
14705 $eunicefix Cppsym.try
14706 ./Cppsym < Cppsym.know > Cppsym.true
14707 : now check the C compiler for additional symbols
14708 postprocess_cc_v=''
14710 aix) postprocess_cc_v="|$tr , ' '" ;;
14717 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14720 -D*) echo "\$i" | $sed 's/^-D//';;
14721 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14726 postprocess_cc_v=''
14729 ./ccsym > ccsym1.raw
14730 if $test -s ccsym1.raw; then
14731 $sort ccsym1.raw | $uniq >ccsym.raw
14733 mv ccsym1.raw ccsym.raw
14736 $awk '/\=/ { print $0; next }
14737 { print $0"=1" }' ccsym.raw >ccsym.list
14738 $awk '/\=/ { print $0; next }
14739 { print $0"=1" }' Cppsym.true >ccsym.true
14740 $comm -13 ccsym.true ccsym.list >ccsym.own
14741 $comm -12 ccsym.true ccsym.list >ccsym.com
14742 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14744 if $test -z ccsym.raw; then
14745 echo "Your C compiler doesn't seem to define any symbols!" >&4
14747 echo "However, your C preprocessor defines the following symbols:"
14750 cppsymbols=`$cat Cppsym.true`
14751 cppsymbols=`echo $cppsymbols`
14752 cppccsymbols="$cppsymbols"
14754 if $test -s ccsym.com; then
14755 echo "Your C compiler and pre-processor define these symbols:"
14756 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14759 cppccsymbols=`$cat ccsym.com`
14760 cppccsymbols=`echo $cppccsymbols`
14761 $test "$silent" || sleep 1
14763 if $test -s ccsym.cpp; then
14764 $test "$also" && echo " "
14765 echo "Your C pre-processor ${also}defines the following symbols:"
14766 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14768 cppsymbols=`$cat ccsym.cpp`
14769 cppsymbols=`echo $cppsymbols`
14770 $test "$silent" || sleep 1
14772 if $test -s ccsym.own; then
14773 $test "$also" && echo " "
14774 echo "Your C compiler ${also}defines the following cpp symbols:"
14775 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14776 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14777 ccsymbols=`$cat ccsym.own`
14778 ccsymbols=`echo $ccsymbols`
14779 $test "$silent" || sleep 1
14782 $rm -f ccsym* Cppsym.*
14784 : see if this is a termio system
14788 if $test `./findhdr termios.h`; then
14789 set tcsetattr i_termios
14795 "$define") echo "You have POSIX termios.h... good!" >&4;;
14796 *) if ./Cppsym pyr; then
14797 case "`/bin/universe`" in
14798 ucb) if $test `./findhdr sgtty.h`; then
14800 echo "<sgtty.h> found." >&4
14802 echo "System is pyramid with BSD universe."
14803 echo "<sgtty.h> not found--you could have problems." >&4
14805 *) if $test `./findhdr termio.h`; then
14807 echo "<termio.h> found." >&4
14809 echo "System is pyramid with USG universe."
14810 echo "<termio.h> not found--you could have problems." >&4
14814 if $test `./findhdr termio.h`; then
14815 echo "<termio.h> found." >&4
14817 elif $test `./findhdr sgtty.h`; then
14818 echo "<sgtty.h> found." >&4
14821 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14824 if $test `./findhdr sgtty.h`; then
14825 echo "<sgtty.h> found." >&4
14827 elif $test `./findhdr termio.h`; then
14828 echo "<termio.h> found." >&4
14831 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14835 set i_termio; eval $setvar
14836 val=$val2; set i_sgtty; eval $setvar
14837 val=$val3; set i_termios; eval $setvar
14839 : see if this is a shadow.h system
14840 set shadow.h i_shadow
14843 : see if this is a socks.h system
14844 set socks.h i_socks
14847 : see if stdarg is available
14849 if $test `./findhdr stdarg.h`; then
14850 echo "<stdarg.h> found." >&4
14853 echo "<stdarg.h> NOT found." >&4
14857 : see if varags is available
14859 if $test `./findhdr varargs.h`; then
14860 echo "<varargs.h> found." >&4
14862 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14865 : set up the varargs testing programs
14866 $cat > varargs.c <<EOP
14868 #include <stdarg.h>
14871 #include <varargs.h>
14875 int f(char *p, ...)
14889 p = va_arg(ap, char *);
14894 $cat > varargs <<EOP
14896 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14905 : now check which varargs header should be included
14910 if `./varargs I_STDARG`; then
14912 elif `./varargs I_VARARGS`; then
14917 if `./varargs I_VARARGS`; then
14924 echo "I could not find the definition for va_dcl... You have problems..." >&4
14925 val="$undef"; set i_stdarg; eval $setvar
14926 val="$undef"; set i_varargs; eval $setvar
14931 case "$i_varhdr" in
14933 val="$define"; set i_stdarg; eval $setvar
14934 val="$undef"; set i_varargs; eval $setvar
14937 val="$undef"; set i_stdarg; eval $setvar
14938 val="$define"; set i_varargs; eval $setvar
14941 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14945 : see if stddef is available
14946 set stddef.h i_stddef
14949 : see if this is a sunmath.h system
14950 set sunmath.h i_sunmath
14953 : see if sys/access.h is available
14954 set sys/access.h i_sysaccess
14957 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14958 set sys/filio.h i_sysfilio
14961 if $test `./findhdr sys/ioctl.h`; then
14963 echo '<sys/ioctl.h> found.' >&4
14966 if $test $i_sysfilio = "$define"; then
14967 echo '<sys/ioctl.h> NOT found.' >&4
14969 $test $i_sgtty = "$define" && xxx="sgtty.h"
14970 $test $i_termio = "$define" && xxx="termio.h"
14971 $test $i_termios = "$define" && xxx="termios.h"
14972 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14979 : see if this is a syslog.h system
14980 set syslog.h i_syslog
14984 : see if this is a sys/mode.h system
14985 set sys/mode.h i_sysmode
14988 : see if sys/resource.h has to be included
14989 set sys/resource.h i_sysresrc
14992 : see if sys/security.h is available
14993 set sys/security.h i_syssecrt
14996 : see if this is a sys/statvfs.h system
14997 set sys/statvfs.h i_sysstatvfs
15000 : see if this is a sys/uio.h system
15001 set sys/uio.h i_sysuio
15004 : see if this is a sys/un.h system
15005 set sys/un.h i_sysun
15009 : see if this is a sys/utsname.h system
15010 set sys/utsname.h i_sysutsname
15013 : see if this is a syswait system
15014 set sys/wait.h i_syswait
15017 : see if this is a ustat.h system
15018 set ustat.h i_ustat
15021 : see if this is an utime system
15022 set utime.h i_utime
15025 : see if this is a values.h system
15026 set values.h i_values
15029 : see if this is a vfork system
15032 set vfork.h i_vfork
15040 : see if gdbm.h is available
15045 : see if gdbm_open exists
15046 set gdbm_open d_gdbm_open
15048 case "$d_gdbm_open" in
15051 echo "We won't be including <gdbm.h>"
15061 echo "Looking for extensions..." >&4
15062 : If we are using the old config.sh, known_extensions may contain
15063 : old or inaccurate or duplicate values.
15064 known_extensions=''
15065 nonxs_extensions=''
15066 : We do not use find because it might not be available.
15067 : We do not just use MANIFEST because the user may have dropped
15068 : some additional extensions into the source tree and expect them
15071 : Function to recursively find available extensions, ignoring DynaLoader
15072 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15076 DynaLoader|dynaload) ;;
15078 if $test -f $xxx/$xxx.xs; then
15079 known_extensions="$known_extensions $1$xxx";
15080 elif $test -f $xxx/Makefile.PL; then
15081 nonxs_extensions="$nonxs_extensions $1$xxx";
15083 if $test -d $xxx -a $# -lt 10; then
15086 eval $find_extensions;
15098 eval $find_extensions
15099 set X $nonxs_extensions
15101 nonxs_extensions="$*"
15102 set X $known_extensions
15104 known_extensions="$*"
15107 : Now see which are supported on this system.
15109 for xxx in $known_extensions ; do
15113 $define) avail_ext="$avail_ext $xxx" ;;
15116 GDBM_File|gdbm_fil)
15118 $define) avail_ext="$avail_ext $xxx" ;;
15121 NDBM_File|ndbm_fil)
15124 case "$osname-$use64bitint" in
15127 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15130 *) avail_ext="$avail_ext $xxx" ;;
15135 ODBM_File|odbm_fil)
15136 case "${i_dbm}${i_rpcsvcdbm}" in
15138 case "$osname-$use64bitint" in
15141 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15144 *) avail_ext="$avail_ext $xxx" ;;
15150 case "$useposix" in
15151 true|define|y) avail_ext="$avail_ext $xxx" ;;
15155 case "$useopcode" in
15156 true|define|y) avail_ext="$avail_ext $xxx" ;;
15160 case "$d_socket" in
15161 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15164 Sys/Syslog|sys/syslog)
15165 : XXX syslog requires socket
15166 case "$d_socket" in
15167 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15171 case "$usethreads" in
15172 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15176 : XXX Do we need a useipcsysv variable here
15177 case "${d_msg}${d_sem}${d_shm}" in
15178 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15181 *) avail_ext="$avail_ext $xxx"
15190 : Now see which nonxs extensions are supported on this system.
15191 : For now assume all are.
15193 for xxx in $nonxs_extensions ; do
15195 *) nonxs_ext="$nonxs_ext $xxx"
15207 A number of extensions are supplied with $package. You may choose to
15208 compile these extensions for dynamic loading (the default), compile
15209 them into the $package executable (static loading), or not include
15210 them at all. Answer "none" to include no extensions.
15211 Note that DynaLoader is always built and need not be mentioned here.
15214 case "$dynamic_ext" in
15215 '') dflt="$avail_ext" ;;
15216 *) dflt="$dynamic_ext"
15217 # Perhaps we are reusing an old out-of-date config.sh.
15220 if test X"$dynamic_ext" != X"$avail_ext"; then
15222 NOTICE: Your previous config.sh list may be incorrect.
15223 The extensions now available to you are
15225 but the default list from your previous config.sh is
15237 rp="What extensions do you wish to load dynamically?"
15240 none) dynamic_ext=' ' ;;
15241 *) dynamic_ext="$ans" ;;
15244 case "$static_ext" in
15246 : Exclude those already listed in dynamic linking
15248 for xxx in $avail_ext; do
15249 case " $dynamic_ext " in
15251 *) dflt="$dflt $xxx" ;;
15258 *) dflt="$static_ext"
15265 rp="What extensions do you wish to load statically?"
15268 none) static_ext=' ' ;;
15269 *) static_ext="$ans" ;;
15274 A number of extensions are supplied with $package. Answer "none"
15275 to include no extensions.
15276 Note that DynaLoader is always built and need not be mentioned here.
15279 case "$static_ext" in
15280 '') dflt="$avail_ext" ;;
15281 *) dflt="$static_ext"
15282 # Perhaps we are reusing an old out-of-date config.sh.
15285 if test X"$static_ext" != X"$avail_ext"; then
15287 NOTICE: Your previous config.sh list may be incorrect.
15288 The extensions now available to you are
15290 but the default list from your previous config.sh is
15299 : Exclude those that are not xs extensions
15303 rp="What extensions do you wish to include?"
15306 none) static_ext=' ' ;;
15307 *) static_ext="$ans" ;;
15312 set X $dynamic_ext $static_ext $nonxs_ext
15316 : Remove libraries needed only for extensions
15317 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15318 : The exception is SunOS 4.x, which needs them.
15319 case "${osname}X${osvers}" in
15323 *) case "$usedl" in
15324 $define|true|[yY]*)
15325 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15329 *) perllibs="$libs"
15335 : Remove build directory name from cppstdin so it can be used from
15336 : either the present location or the final installed location.
15338 : Get out of the UU directory to get correct path name.
15340 case "$cppstdin" in
15342 echo "Stripping down cppstdin path name"
15348 : end of configuration questions
15350 echo "End of configuration questions."
15353 : back to where it started
15354 if test -d ../UU; then
15358 : configuration may be patched via a 'config.over' file
15359 if $test -f config.over; then
15362 rp='I see a config.over file. Do you wish to load it?'
15365 n*) echo "OK, I'll ignore it.";;
15367 echo "Configuration override changes have been loaded."
15372 : in case they want portability, strip down executable paths
15373 case "$d_portable" in
15376 echo "Stripping down executable paths..." >&4
15377 for file in $loclist $trylist; do
15379 eval $file=`basename $temp`
15384 : create config.sh file
15386 echo "Creating config.sh..." >&4
15387 $spitshell <<EOT >config.sh
15390 # This file was produced by running the Configure script. It holds all the
15391 # definitions figured out by Configure. Should you modify one of these values,
15392 # do not forget to propagate your changes by running "Configure -der". You may
15393 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15396 # Package name : $package
15397 # Source directory : $src
15398 # Configuration time: $cf_time
15399 # Configured by : $cf_by
15400 # Target system : $myuname
15410 Revision='$Revision'
15417 alignbytes='$alignbytes'
15418 ansi2knr='$ansi2knr'
15419 aphostname='$aphostname'
15420 api_revision='$api_revision'
15421 api_subversion='$api_subversion'
15422 api_version='$api_version'
15423 api_versionstring='$api_versionstring'
15426 archlibexp='$archlibexp'
15427 archname64='$archname64'
15428 archname='$archname'
15429 archobjs='$archobjs'
15434 bincompat5005='$bincompat5005'
15438 byteorder='$byteorder'
15440 castflags='$castflags'
15443 cccdlflags='$cccdlflags'
15444 ccdlflags='$ccdlflags'
15446 ccflags_uselargefiles='$ccflags_uselargefiles'
15448 ccsymbols='$ccsymbols'
15449 ccversion='$ccversion'
15451 cf_email='$cf_email'
15453 charsize='$charsize'
15457 clocktype='$clocktype'
15459 compress='$compress'
15460 contains='$contains'
15464 cpp_stuff='$cpp_stuff'
15465 cppccsymbols='$cppccsymbols'
15466 cppflags='$cppflags'
15468 cppminus='$cppminus'
15470 cppstdin='$cppstdin'
15471 cppsymbols='$cppsymbols'
15472 crosscompile='$crosscompile'
15473 cryptlib='$cryptlib'
15475 d_Gconvert='$d_Gconvert'
15476 d_PRIEUldbl='$d_PRIEUldbl'
15477 d_PRIFUldbl='$d_PRIFUldbl'
15478 d_PRIGUldbl='$d_PRIGUldbl'
15479 d_PRIXU64='$d_PRIXU64'
15480 d_PRId64='$d_PRId64'
15481 d_PRIeldbl='$d_PRIeldbl'
15482 d_PRIfldbl='$d_PRIfldbl'
15483 d_PRIgldbl='$d_PRIgldbl'
15484 d_PRIi64='$d_PRIi64'
15485 d_PRIo64='$d_PRIo64'
15486 d_PRIu64='$d_PRIu64'
15487 d_PRIx64='$d_PRIx64'
15488 d_SCNfldbl='$d_SCNfldbl'
15489 d_access='$d_access'
15490 d_accessx='$d_accessx'
15492 d_archlib='$d_archlib'
15495 d_attribut='$d_attribut'
15498 d_bincompat5005='$d_bincompat5005'
15500 d_bsdgetpgrp='$d_bsdgetpgrp'
15501 d_bsdsetpgrp='$d_bsdsetpgrp'
15503 d_casti32='$d_casti32'
15504 d_castneg='$d_castneg'
15505 d_charvspr='$d_charvspr'
15507 d_chroot='$d_chroot'
15508 d_chsize='$d_chsize'
15509 d_closedir='$d_closedir'
15513 d_cuserid='$d_cuserid'
15514 d_dbl_dig='$d_dbl_dig'
15515 d_difftime='$d_difftime'
15516 d_dirnamlen='$d_dirnamlen'
15517 d_dlerror='$d_dlerror'
15518 d_dlopen='$d_dlopen'
15519 d_dlsymun='$d_dlsymun'
15520 d_dosuid='$d_dosuid'
15521 d_drand48proto='$d_drand48proto'
15523 d_eaccess='$d_eaccess'
15524 d_endgrent='$d_endgrent'
15525 d_endhent='$d_endhent'
15526 d_endnent='$d_endnent'
15527 d_endpent='$d_endpent'
15528 d_endpwent='$d_endpwent'
15529 d_endsent='$d_endsent'
15530 d_eofnblk='$d_eofnblk'
15531 d_eunice='$d_eunice'
15532 d_fchmod='$d_fchmod'
15533 d_fchown='$d_fchown'
15535 d_fcntl_can_lock='$d_fcntl_can_lock'
15536 d_fd_macros='$d_fd_macros'
15537 d_fd_set='$d_fd_set'
15538 d_fds_bits='$d_fds_bits'
15539 d_fgetpos='$d_fgetpos'
15540 d_flexfnam='$d_flexfnam'
15543 d_fpathconf='$d_fpathconf'
15544 d_fpos64_t='$d_fpos64_t'
15545 d_frexpl='$d_frexpl'
15546 d_fs_data_s='$d_fs_data_s'
15547 d_fseeko='$d_fseeko'
15548 d_fsetpos='$d_fsetpos'
15549 d_fstatfs='$d_fstatfs'
15550 d_fstatvfs='$d_fstatvfs'
15551 d_ftello='$d_ftello'
15553 d_getcwd='$d_getcwd'
15554 d_getespwnam='$d_getespwnam'
15555 d_getfsstat='$d_getfsstat'
15556 d_getgrent='$d_getgrent'
15557 d_getgrps='$d_getgrps'
15558 d_gethbyaddr='$d_gethbyaddr'
15559 d_gethbyname='$d_gethbyname'
15560 d_gethent='$d_gethent'
15561 d_gethname='$d_gethname'
15562 d_gethostprotos='$d_gethostprotos'
15563 d_getlogin='$d_getlogin'
15564 d_getmnt='$d_getmnt'
15565 d_getmntent='$d_getmntent'
15566 d_getnbyaddr='$d_getnbyaddr'
15567 d_getnbyname='$d_getnbyname'
15568 d_getnent='$d_getnent'
15569 d_getnetprotos='$d_getnetprotos'
15570 d_getpbyname='$d_getpbyname'
15571 d_getpbynumber='$d_getpbynumber'
15572 d_getpent='$d_getpent'
15573 d_getpgid='$d_getpgid'
15574 d_getpgrp2='$d_getpgrp2'
15575 d_getpgrp='$d_getpgrp'
15576 d_getppid='$d_getppid'
15577 d_getprior='$d_getprior'
15578 d_getprotoprotos='$d_getprotoprotos'
15579 d_getprpwnam='$d_getprpwnam'
15580 d_getpwent='$d_getpwent'
15581 d_getsbyname='$d_getsbyname'
15582 d_getsbyport='$d_getsbyport'
15583 d_getsent='$d_getsent'
15584 d_getservprotos='$d_getservprotos'
15585 d_getspnam='$d_getspnam'
15586 d_gettimeod='$d_gettimeod'
15587 d_gnulibc='$d_gnulibc'
15588 d_grpasswd='$d_grpasswd'
15589 d_hasmntopt='$d_hasmntopt'
15593 d_inetaton='$d_inetaton'
15594 d_int64_t='$d_int64_t'
15595 d_isascii='$d_isascii'
15597 d_isnanl='$d_isnanl'
15598 d_killpg='$d_killpg'
15599 d_lchown='$d_lchown'
15600 d_ldbl_dig='$d_ldbl_dig'
15602 d_locconv='$d_locconv'
15604 d_longdbl='$d_longdbl'
15605 d_longlong='$d_longlong'
15606 d_lseekproto='$d_lseekproto'
15608 d_madvise='$d_madvise'
15610 d_mbstowcs='$d_mbstowcs'
15611 d_mbtowc='$d_mbtowc'
15612 d_memchr='$d_memchr'
15613 d_memcmp='$d_memcmp'
15614 d_memcpy='$d_memcpy'
15615 d_memmove='$d_memmove'
15616 d_memset='$d_memset'
15618 d_mkdtemp='$d_mkdtemp'
15619 d_mkfifo='$d_mkfifo'
15620 d_mkstemp='$d_mkstemp'
15621 d_mkstemps='$d_mkstemps'
15622 d_mktime='$d_mktime'
15625 d_mprotect='$d_mprotect'
15627 d_msg_ctrunc='$d_msg_ctrunc'
15628 d_msg_dontroute='$d_msg_dontroute'
15629 d_msg_oob='$d_msg_oob'
15630 d_msg_peek='$d_msg_peek'
15631 d_msg_proxy='$d_msg_proxy'
15632 d_msgctl='$d_msgctl'
15633 d_msgget='$d_msgget'
15634 d_msgrcv='$d_msgrcv'
15635 d_msgsnd='$d_msgsnd'
15637 d_munmap='$d_munmap'
15638 d_mymalloc='$d_mymalloc'
15640 d_nv_preserves_uv='$d_nv_preserves_uv'
15641 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15642 d_off64_t='$d_off64_t'
15643 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15644 d_oldpthreads='$d_oldpthreads'
15645 d_oldsock='$d_oldsock'
15647 d_pathconf='$d_pathconf'
15649 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15650 d_phostname='$d_phostname'
15653 d_portable='$d_portable'
15654 d_pthread_yield='$d_pthread_yield'
15656 d_pwchange='$d_pwchange'
15657 d_pwclass='$d_pwclass'
15658 d_pwcomment='$d_pwcomment'
15659 d_pwexpire='$d_pwexpire'
15660 d_pwgecos='$d_pwgecos'
15661 d_pwpasswd='$d_pwpasswd'
15662 d_pwquota='$d_pwquota'
15665 d_readdir='$d_readdir'
15666 d_readlink='$d_readlink'
15667 d_rename='$d_rename'
15668 d_rewinddir='$d_rewinddir'
15670 d_safebcpy='$d_safebcpy'
15671 d_safemcpy='$d_safemcpy'
15672 d_sanemcmp='$d_sanemcmp'
15673 d_sched_yield='$d_sched_yield'
15674 d_scm_rights='$d_scm_rights'
15675 d_seekdir='$d_seekdir'
15676 d_select='$d_select'
15678 d_semctl='$d_semctl'
15679 d_semctl_semid_ds='$d_semctl_semid_ds'
15680 d_semctl_semun='$d_semctl_semun'
15681 d_semget='$d_semget'
15683 d_setegid='$d_setegid'
15684 d_seteuid='$d_seteuid'
15685 d_setgrent='$d_setgrent'
15686 d_setgrps='$d_setgrps'
15687 d_sethent='$d_sethent'
15688 d_setlinebuf='$d_setlinebuf'
15689 d_setlocale='$d_setlocale'
15690 d_setnent='$d_setnent'
15691 d_setpent='$d_setpent'
15692 d_setpgid='$d_setpgid'
15693 d_setpgrp2='$d_setpgrp2'
15694 d_setpgrp='$d_setpgrp'
15695 d_setprior='$d_setprior'
15696 d_setproctitle='$d_setproctitle'
15697 d_setpwent='$d_setpwent'
15698 d_setregid='$d_setregid'
15699 d_setresgid='$d_setresgid'
15700 d_setresuid='$d_setresuid'
15701 d_setreuid='$d_setreuid'
15702 d_setrgid='$d_setrgid'
15703 d_setruid='$d_setruid'
15704 d_setsent='$d_setsent'
15705 d_setsid='$d_setsid'
15706 d_setvbuf='$d_setvbuf'
15710 d_shmatprototype='$d_shmatprototype'
15711 d_shmctl='$d_shmctl'
15713 d_shmget='$d_shmget'
15714 d_sigaction='$d_sigaction'
15715 d_sigsetjmp='$d_sigsetjmp'
15716 d_socket='$d_socket'
15717 d_socklen_t='$d_socklen_t'
15718 d_sockpair='$d_sockpair'
15719 d_socks5_init='$d_socks5_init'
15721 d_statblks='$d_statblks'
15722 d_statfs_f_flags='$d_statfs_f_flags'
15723 d_statfs_s='$d_statfs_s'
15724 d_statvfs='$d_statvfs'
15725 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15726 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15727 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
15728 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
15729 d_stdio_stream_array='$d_stdio_stream_array'
15730 d_stdiobase='$d_stdiobase'
15731 d_stdstdio='$d_stdstdio'
15732 d_strchr='$d_strchr'
15733 d_strcoll='$d_strcoll'
15734 d_strctcpy='$d_strctcpy'
15735 d_strerrm='$d_strerrm'
15736 d_strerror='$d_strerror'
15737 d_strtod='$d_strtod'
15738 d_strtol='$d_strtol'
15739 d_strtold='$d_strtold'
15740 d_strtoll='$d_strtoll'
15741 d_strtoul='$d_strtoul'
15742 d_strtoull='$d_strtoull'
15743 d_strtouq='$d_strtouq'
15744 d_strxfrm='$d_strxfrm'
15745 d_suidsafe='$d_suidsafe'
15746 d_symlink='$d_symlink'
15747 d_syscall='$d_syscall'
15748 d_sysconf='$d_sysconf'
15749 d_sysernlst='$d_sysernlst'
15750 d_syserrlst='$d_syserrlst'
15751 d_system='$d_system'
15752 d_tcgetpgrp='$d_tcgetpgrp'
15753 d_tcsetpgrp='$d_tcsetpgrp'
15754 d_telldir='$d_telldir'
15755 d_telldirproto='$d_telldirproto'
15758 d_truncate='$d_truncate'
15759 d_tzname='$d_tzname'
15762 d_union_semun='$d_union_semun'
15764 d_vendorarch='$d_vendorarch'
15765 d_vendorbin='$d_vendorbin'
15766 d_vendorlib='$d_vendorlib'
15768 d_void_closedir='$d_void_closedir'
15769 d_voidsig='$d_voidsig'
15770 d_voidtty='$d_voidtty'
15771 d_volatile='$d_volatile'
15772 d_vprintf='$d_vprintf'
15774 d_waitpid='$d_waitpid'
15775 d_wcstombs='$d_wcstombs'
15776 d_wctomb='$d_wctomb'
15779 db_hashtype='$db_hashtype'
15780 db_prefixtype='$db_prefixtype'
15781 defvoidused='$defvoidused'
15782 direntrytype='$direntrytype'
15785 doublesize='$doublesize'
15787 dynamic_ext='$dynamic_ext'
15793 eunicefix='$eunicefix'
15796 extensions='$extensions'
15797 fflushNULL='$fflushNULL'
15798 fflushall='$fflushall'
15800 firstmakefile='$firstmakefile'
15802 fpossize='$fpossize'
15803 fpostype='$fpostype'
15804 freetype='$freetype'
15806 full_csh='$full_csh'
15807 full_sed='$full_sed'
15808 gccosandvers='$gccosandvers'
15809 gccversion='$gccversion'
15810 gidformat='$gidformat'
15816 groupcat='$groupcat'
15817 groupstype='$groupstype'
15820 h_sysfile='$h_sysfile'
15831 i_arpainet='$i_arpainet'
15832 i_bsdioctl='$i_bsdioctl'
15835 i_dirent='$i_dirent'
15843 i_ieeefp='$i_ieeefp'
15844 i_inttypes='$i_inttypes'
15845 i_libutil='$i_libutil'
15846 i_limits='$i_limits'
15847 i_locale='$i_locale'
15848 i_machcthr='$i_machcthr'
15849 i_malloc='$i_malloc'
15851 i_memory='$i_memory'
15852 i_mntent='$i_mntent'
15855 i_neterrno='$i_neterrno'
15856 i_netinettcp='$i_netinettcp'
15860 i_pthread='$i_pthread'
15862 i_rpcsvcdbm='$i_rpcsvcdbm'
15865 i_shadow='$i_shadow'
15867 i_stdarg='$i_stdarg'
15868 i_stddef='$i_stddef'
15869 i_stdlib='$i_stdlib'
15870 i_string='$i_string'
15871 i_sunmath='$i_sunmath'
15872 i_sysaccess='$i_sysaccess'
15873 i_sysdir='$i_sysdir'
15874 i_sysfile='$i_sysfile'
15875 i_sysfilio='$i_sysfilio'
15877 i_sysioctl='$i_sysioctl'
15878 i_syslog='$i_syslog'
15879 i_sysmman='$i_sysmman'
15880 i_sysmode='$i_sysmode'
15881 i_sysmount='$i_sysmount'
15882 i_sysndir='$i_sysndir'
15883 i_sysparam='$i_sysparam'
15884 i_sysresrc='$i_sysresrc'
15885 i_syssecrt='$i_syssecrt'
15886 i_sysselct='$i_sysselct'
15887 i_syssockio='$i_syssockio'
15888 i_sysstat='$i_sysstat'
15889 i_sysstatfs='$i_sysstatfs'
15890 i_sysstatvfs='$i_sysstatvfs'
15891 i_systime='$i_systime'
15892 i_systimek='$i_systimek'
15893 i_systimes='$i_systimes'
15894 i_systypes='$i_systypes'
15895 i_sysuio='$i_sysuio'
15897 i_sysutsname='$i_sysutsname'
15898 i_sysvfs='$i_sysvfs'
15899 i_syswait='$i_syswait'
15900 i_termio='$i_termio'
15901 i_termios='$i_termios'
15903 i_unistd='$i_unistd'
15906 i_values='$i_values'
15907 i_varargs='$i_varargs'
15908 i_varhdr='$i_varhdr'
15910 ignore_versioned_solibs='$ignore_versioned_solibs'
15911 inc_version_list='$inc_version_list'
15912 inc_version_list_init='$inc_version_list_init'
15915 installarchlib='$installarchlib'
15916 installbin='$installbin'
15917 installman1dir='$installman1dir'
15918 installman3dir='$installman3dir'
15919 installprefix='$installprefix'
15920 installprefixexp='$installprefixexp'
15921 installprivlib='$installprivlib'
15922 installscript='$installscript'
15923 installsitearch='$installsitearch'
15924 installsitebin='$installsitebin'
15925 installsitelib='$installsitelib'
15926 installstyle='$installstyle'
15927 installusrbinperl='$installusrbinperl'
15928 installvendorarch='$installvendorarch'
15929 installvendorbin='$installvendorbin'
15930 installvendorlib='$installvendorlib'
15932 ivdformat='$ivdformat'
15935 known_extensions='$known_extensions'
15938 lddlflags='$lddlflags'
15940 ldflags_uselargefiles='$ldflags_uselargefiles'
15941 ldlibpthname='$ldlibpthname'
15948 libsdirs='$libsdirs'
15949 libsfiles='$libsfiles'
15950 libsfound='$libsfound'
15951 libspath='$libspath'
15952 libswanted='$libswanted'
15953 libswanted_uselargefiles='$libswanted_uselargefiles'
15959 locincpth='$locincpth'
15960 loclibpth='$loclibpth'
15961 longdblsize='$longdblsize'
15962 longlongsize='$longlongsize'
15963 longsize='$longsize'
15967 lseeksize='$lseeksize'
15968 lseektype='$lseektype'
15972 make_set_make='$make_set_make'
15973 mallocobj='$mallocobj'
15974 mallocsrc='$mallocsrc'
15975 malloctype='$malloctype'
15977 man1direxp='$man1direxp'
15980 man3direxp='$man3direxp'
15982 mips_type='$mips_type'
15984 mmaptype='$mmaptype'
15985 modetype='$modetype'
15987 multiarch='$multiarch'
15989 myarchname='$myarchname'
15990 mydomain='$mydomain'
15991 myhostname='$myhostname'
15994 netdb_hlen_type='$netdb_hlen_type'
15995 netdb_host_type='$netdb_host_type'
15996 netdb_name_type='$netdb_name_type'
15997 netdb_net_type='$netdb_net_type'
16000 nm_so_opt='$nm_so_opt'
16001 nonxs_ext='$nonxs_ext'
16003 nvEUformat='$nvEUformat'
16004 nvFUformat='$nvFUformat'
16005 nvGUformat='$nvGUformat'
16006 nveformat='$nveformat'
16007 nvfformat='$nvfformat'
16008 nvgformat='$nvgformat'
16011 o_nonblock='$o_nonblock'
16013 old_pthread_create_joinable='$old_pthread_create_joinable'
16014 optimize='$optimize'
16015 orderlib='$orderlib'
16018 otherlibdirs='$otherlibdirs'
16022 patchlevel='$patchlevel'
16023 path_sep='$path_sep'
16026 perladmin='$perladmin'
16027 perllibs='$perllibs'
16028 perlpath='$perlpath'
16030 phostname='$phostname'
16033 pm_apiversion='$pm_apiversion'
16037 prefixexp='$prefixexp'
16039 privlibexp='$privlibexp'
16040 prototype='$prototype'
16042 quadkind='$quadkind'
16043 quadtype='$quadtype'
16044 randbits='$randbits'
16045 randfunc='$randfunc'
16046 randseedtype='$randseedtype'
16048 rd_nodata='$rd_nodata'
16049 revision='$revision'
16053 sPRIEUldbl='$sPRIEUldbl'
16054 sPRIFUldbl='$sPRIFUldbl'
16055 sPRIGUldbl='$sPRIGUldbl'
16056 sPRIXU64='$sPRIXU64'
16058 sPRIeldbl='$sPRIeldbl'
16059 sPRIfldbl='$sPRIfldbl'
16060 sPRIgldbl='$sPRIgldbl'
16065 sSCNfldbl='$sSCNfldbl'
16066 sched_yield='$sched_yield'
16067 scriptdir='$scriptdir'
16068 scriptdirexp='$scriptdirexp'
16070 seedfunc='$seedfunc'
16071 selectminbits='$selectminbits'
16072 selecttype='$selecttype'
16073 sendmail='$sendmail'
16076 sharpbang='$sharpbang'
16077 shmattype='$shmattype'
16078 shortsize='$shortsize'
16081 sig_count='$sig_count'
16082 sig_name='$sig_name'
16083 sig_name_init='$sig_name_init'
16085 sig_num_init='$sig_num_init'
16086 signal_t='$signal_t'
16087 sitearch='$sitearch'
16088 sitearchexp='$sitearchexp'
16090 sitebinexp='$sitebinexp'
16092 sitelib_stem='$sitelib_stem'
16093 sitelibexp='$sitelibexp'
16094 siteprefix='$siteprefix'
16095 siteprefixexp='$siteprefixexp'
16096 sizesize='$sizesize'
16097 sizetype='$sizetype'
16101 sockethdr='$sockethdr'
16102 socketlib='$socketlib'
16103 socksizetype='$socksizetype'
16105 spackage='$spackage'
16106 spitshell='$spitshell'
16108 ssizetype='$ssizetype'
16109 startperl='$startperl'
16111 static_ext='$static_ext'
16113 stdio_base='$stdio_base'
16114 stdio_bufsiz='$stdio_bufsiz'
16115 stdio_cnt='$stdio_cnt'
16116 stdio_filbuf='$stdio_filbuf'
16117 stdio_ptr='$stdio_ptr'
16118 stdio_stream_array='$stdio_stream_array'
16121 subversion='$subversion'
16128 timeincl='$timeincl'
16129 timetype='$timetype'
16142 uidformat='$uidformat'
16148 uquadtype='$uquadtype'
16149 use5005threads='$use5005threads'
16150 use64bitall='$use64bitall'
16151 use64bitint='$use64bitint'
16153 useithreads='$useithreads'
16154 uselargefiles='$uselargefiles'
16155 uselongdouble='$uselongdouble'
16156 usemorebits='$usemorebits'
16157 usemultiplicity='$usemultiplicity'
16158 usemymalloc='$usemymalloc'
16160 useopcode='$useopcode'
16161 useperlio='$useperlio'
16162 useposix='$useposix'
16164 useshrplib='$useshrplib'
16165 usesocks='$usesocks'
16166 usethreads='$usethreads'
16167 usevendorprefix='$usevendorprefix'
16168 usevfork='$usevfork'
16171 uvXUformat='$uvXUformat'
16172 uvoformat='$uvoformat'
16175 uvuformat='$uvuformat'
16176 uvxformat='$uvxformat'
16177 vendorarch='$vendorarch'
16178 vendorarchexp='$vendorarchexp'
16179 vendorbin='$vendorbin'
16180 vendorbinexp='$vendorbinexp'
16181 vendorlib='$vendorlib'
16182 vendorlib_stem='$vendorlib_stem'
16183 vendorlibexp='$vendorlibexp'
16184 vendorprefix='$vendorprefix'
16185 vendorprefixexp='$vendorprefixexp'
16187 versiononly='$versiononly'
16189 voidflags='$voidflags'
16191 xs_apiversion='$xs_apiversion'
16196 : Add in command line options if available
16197 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16199 : add special variables
16200 $test -f $src/patchlevel.h && \
16201 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16202 echo "CONFIGDOTSH=true" >>config.sh
16204 : propagate old symbols
16205 if $test -f UU/config.sh; then
16206 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16207 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16208 $sort | $uniq -u >UU/oldsyms
16209 set X `cat UU/oldsyms`
16215 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16217 echo "# Variables propagated from previous config.sh file." >>config.sh
16218 for sym in `cat UU/oldsyms`; do
16219 echo " Propagating $hint variable "'$'"$sym..."
16220 eval 'tmp="$'"${sym}"'"'
16222 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16228 : Finish up by extracting the .SH files
16242 If you'd like to make any changes to the config.sh file before I begin
16243 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16246 rp="Press return or use a shell escape to edit config.sh:"
16251 *) : in case they cannot read
16252 sh 1>&4 -c "$ans";;
16257 : if this fails, just run all the .SH files by hand
16264 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16271 Now you need to generate make dependencies by running "$make depend".
16272 You might prefer to run it in background: "$make depend > makedepend.out &"
16273 It can take a while, so you might not want to run it right now.
16278 rp="Run $make depend now?"
16282 $make depend && echo "Now you must run '$make'."
16285 echo "You must run '$make depend' then '$make'."
16288 elif test -f [Mm]akefile; then
16290 echo "Now you must run a $make."
16295 if $test -f Policy.sh; then
16298 If you compile $package on a different machine or from a different object
16299 directory, copy the Policy.sh file from this object directory to the
16300 new one before you run Configure -- this will help you with most of
16301 the policy defaults.
16305 if $test -f config.msg; then
16306 echo "Hmm. I also noted the following information while running:"
16308 $cat config.msg >&4
16311 $rm -f kit*isdone ark*isdone