3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Wed Nov 8 18:52:10 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)?"
10099 : check for volatile keyword
10101 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10102 $cat >try.c <<'EOCP'
10105 typedef struct _goo_struct goo_struct;
10106 goo_struct * volatile goo = ((goo_struct *)0);
10107 struct _goo_struct {
10112 typedef unsigned short foo_t;
10113 char *volatile foo;
10115 volatile foo_t blech;
10119 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10121 echo "Yup, it does."
10124 echo "Nope, it doesn't."
10132 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10134 case "$use64bitint:$d_quad:$quadtype" in
10137 uvtype="$uquadtype"
10142 uvtype="unsigned long"
10148 case "$uselongdouble:$d_longdbl" in
10150 nvtype="long double"
10151 nvsize=$longdblsize
10158 $echo "(IV will be "$ivtype", $ivsize bytes)"
10159 $echo "(UV will be "$uvtype", $uvsize bytes)"
10160 $echo "(NV will be "$nvtype", $nvsize bytes)"
10163 #$i_inttypes I_INTTYPES
10165 #include <inttypes.h>
10170 int8_t i = INT8_MAX;
10171 uint8_t u = UINT8_MAX;
10172 printf("int8_t\n");
10175 int16_t i = INT16_MAX;
10176 uint16_t i = UINT16_MAX;
10177 printf("int16_t\n");
10180 int32_t i = INT32_MAX;
10181 uint32_t u = UINT32_MAX;
10182 printf("int32_t\n");
10188 '') case "$charsize" in
10190 u8type="unsigned char"
10199 if eval $compile; then
10200 case "`./try$exe_ext`" in
10201 int8_t) i8type=int8_t
10211 '') if $test $charsize -ge 1; then
10213 u8type="unsigned char"
10221 '') case "$shortsize" in
10223 u16type="unsigned short"
10231 '') set try -DINT16
10232 if eval $compile; then
10233 case "`./try$exe_ext`" in
10245 '') if $test $shortsize -ge 2; then
10247 u16type="unsigned short"
10255 '') case "$longsize" in
10257 u32type="unsigned long"
10261 *) case "$intsize" in
10263 u32type="unsigned int"
10273 '') set try -DINT32
10274 if eval $compile; then
10275 case "`./try$exe_ext`" in
10287 '') if $test $intsize -ge 4; then
10289 u32type="unsigned int"
10297 '') case "$d_quad:$quadtype" in
10299 i64type="$quadtype"
10300 u64type="$uquadtype"
10308 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10309 : volatile so that the compiler has to store it out to memory.
10310 if test X"$d_volatile" = X"$define"; then
10315 #include <sys/types.h>
10316 #include <signal.h>
10318 $volatile int bletched = 0;
10319 $signal_t blech(s) int s; { bletched = 1; }
10324 int n = 8 * $uvsize;
10327 signal(SIGFPE, blech);
10330 for (i = 0; i < n; i++) {
10331 u = u << 1 | ($uvtype)1;
10333 if (($uvtype)d != u)
10337 d = ($nvtype)(u - 1);
10338 if (($uvtype)d != (u - 1))
10346 printf("%d\n", ((i == n) ? -n : i), u);
10352 d_nv_preserves_uv="$undef"
10353 if eval $compile; then
10354 d_nv_preserves_uv_bits="`./try$exe_ext`"
10356 case "$d_nv_preserves_uv_bits" in
10358 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10359 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10360 d_nv_preserves_uv="$define"
10362 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10363 d_nv_preserves_uv="$undef" ;;
10364 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10365 d_nv_preserves_uv_bits="$undef" ;;
10371 : check for off64_t
10373 echo "Checking to see if you have off64_t..." >&4
10375 #include <sys/types.h>
10376 #include <unistd.h>
10377 int main() { off64_t x = 7; }
10380 if eval $compile; then
10382 echo "You have off64_t."
10385 echo "You do not have off64_t."
10386 case "$lseeksize" in
10387 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10394 : see if POSIX threads are available
10395 set pthread.h i_pthread
10401 : how to create joinable pthreads
10402 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10404 echo "Checking what constant to use for creating joinable pthreads..." >&4
10405 $cat >try.c <<'EOCP'
10406 #include <pthread.h>
10408 int detachstate = JOINABLE;
10411 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10412 if eval $compile; then
10413 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10414 val="$undef" # Yes, undef.
10415 set d_old_pthread_create_joinable
10418 set old_pthread_create_joinable
10421 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10422 if eval $compile; then
10423 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10425 set d_old_pthread_create_joinable
10427 val=PTHREAD_CREATE_UNDETACHED
10428 set old_pthread_create_joinable
10431 set try -DJOINABLE=__UNDETACHED
10432 if eval $compile; then
10433 echo "You seem to use __UNDETACHED." >&4
10435 set d_old_pthread_create_joinable
10438 set old_pthread_create_joinable
10441 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10443 set d_old_pthread_create_joinable
10446 set old_pthread_create_joinable
10453 d_old_pthread_create_joinable="$undef"
10454 old_pthread_create_joinable=""
10457 : see if pause exists
10461 : see if pipe exists
10465 : see if poll exists
10470 : see whether the various POSIXish _yields exist
10472 #include <pthread.h>
10478 #ifdef PTHREAD_YIELD
10481 #ifdef PTHREAD_YIELD_NULL
10482 pthread_yield(NULL);
10488 : see if sched_yield exists
10489 set try -DSCHED_YIELD
10490 if eval $compile; then
10492 sched_yield='sched_yield()'
10496 case "$usethreads" in
10499 $define) echo 'sched_yield() found.' >&4 ;;
10500 *) echo 'sched_yield() NOT found.' >&4 ;;
10506 : see if pthread_yield exists
10507 set try -DPTHREAD_YIELD
10508 if eval $compile; then
10510 case "$sched_yield" in
10511 '') sched_yield='pthread_yield()' ;;
10514 set try -DPTHREAD_YIELD_NULL
10515 if eval $compile; then
10517 case "$sched_yield" in
10518 '') sched_yield='pthread_yield(NULL)' ;;
10524 case "$usethreads" in
10527 $define) echo 'pthread_yield() found.' >&4 ;;
10528 *) echo 'pthread_yield() NOT found.' >&4 ;;
10532 set d_pthread_yield
10535 case "$sched_yield" in
10536 '') sched_yield=undef ;;
10541 : see if this is a pwd.h system
10547 xxx=`./findhdr pwd.h`
10548 $cppstdin $cppflags $cppminus < $xxx >$$.h
10550 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10558 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10566 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10574 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10582 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10590 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10598 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10606 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10618 set d_pwquota; eval $setvar
10619 set d_pwage; eval $setvar
10620 set d_pwchange; eval $setvar
10621 set d_pwclass; eval $setvar
10622 set d_pwexpire; eval $setvar
10623 set d_pwcomment; eval $setvar
10624 set d_pwgecos; eval $setvar
10625 set d_pwpasswd; eval $setvar
10629 : see if readdir and friends exist
10630 set readdir d_readdir
10632 set seekdir d_seekdir
10634 set telldir d_telldir
10636 set rewinddir d_rewinddir
10639 : see if readlink exists
10640 set readlink d_readlink
10643 : see if rename exists
10644 set rename d_rename
10647 : see if rmdir exists
10651 : see if memory.h is available.
10656 : See if it conflicts with string.h
10662 $cppstdin $cppflags $cppminus < $strings > mem.h
10663 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10665 echo "We won't be including <memory.h>."
10675 : can bcopy handle overlapping blocks?
10680 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10682 #$i_memory I_MEMORY
10683 #$i_stdlib I_STDLIB
10684 #$i_string I_STRING
10685 #$i_unistd I_UNISTD
10687 $cat >>try.c <<'EOCP'
10690 # include <memory.h>
10693 # include <stdlib.h>
10696 # include <string.h>
10698 # include <strings.h>
10701 # include <unistd.h> /* Needed for NetBSD */
10705 char buf[128], abc[128];
10711 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10713 for (align = 7; align >= 0; align--) {
10714 for (len = 36; len; len--) {
10716 bcopy(abc, b, len);
10717 for (off = 1; off <= len; off++) {
10718 bcopy(b, b+off, len);
10719 bcopy(b+off, b, len);
10720 if (bcmp(b, abc, len))
10729 if eval $compile_ok; then
10730 if ./try 2>/dev/null; then
10731 echo "Yes, it can."
10734 echo "It can't, sorry."
10735 case "$d_memmove" in
10736 "$define") echo "But that's Ok since you have memmove()." ;;
10740 echo "(I can't compile the test program, so we'll assume not...)"
10741 case "$d_memmove" in
10742 "$define") echo "But that's Ok since you have memmove()." ;;
10747 $rm -f try.* try core
10751 : can memcpy handle overlapping blocks?
10753 case "$d_memcpy" in
10756 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10758 #$i_memory I_MEMORY
10759 #$i_stdlib I_STDLIB
10760 #$i_string I_STRING
10761 #$i_unistd I_UNISTD
10763 $cat >>try.c <<'EOCP'
10766 # include <memory.h>
10769 # include <stdlib.h>
10772 # include <string.h>
10774 # include <strings.h>
10777 # include <unistd.h> /* Needed for NetBSD */
10781 char buf[128], abc[128];
10787 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10788 try to store the string in read-only memory. */
10789 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10791 for (align = 7; align >= 0; align--) {
10792 for (len = 36; len; len--) {
10794 memcpy(b, abc, len);
10795 for (off = 1; off <= len; off++) {
10796 memcpy(b+off, b, len);
10797 memcpy(b, b+off, len);
10798 if (memcmp(b, abc, len))
10807 if eval $compile_ok; then
10808 if ./try 2>/dev/null; then
10809 echo "Yes, it can."
10812 echo "It can't, sorry."
10813 case "$d_memmove" in
10814 "$define") echo "But that's Ok since you have memmove()." ;;
10818 echo "(I can't compile the test program, so we'll assume not...)"
10819 case "$d_memmove" in
10820 "$define") echo "But that's Ok since you have memmove()." ;;
10825 $rm -f try.* try core
10829 : can memcmp be trusted to compare relative magnitude?
10831 case "$d_memcmp" in
10834 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10836 #$i_memory I_MEMORY
10837 #$i_stdlib I_STDLIB
10838 #$i_string I_STRING
10839 #$i_unistd I_UNISTD
10841 $cat >>try.c <<'EOCP'
10844 # include <memory.h>
10847 # include <stdlib.h>
10850 # include <string.h>
10852 # include <strings.h>
10855 # include <unistd.h> /* Needed for NetBSD */
10861 if ((a < b) && memcmp(&a, &b, 1) < 0)
10867 if eval $compile_ok; then
10868 if ./try 2>/dev/null; then
10869 echo "Yes, it can."
10872 echo "No, it can't (it uses signed chars)."
10875 echo "(I can't compile the test program, so we'll assume not...)"
10879 $rm -f try.* try core
10883 : see if select exists
10884 set select d_select
10887 : see if semctl exists
10888 set semctl d_semctl
10891 : see if semget exists
10892 set semget d_semget
10895 : see if semop exists
10899 : see how much of the 'sem*(2)' library is present.
10902 case "$d_semctl$d_semget$d_semop" in
10903 *"$undef"*) h_sem=false;;
10907 case "`ipcs 2>&1`" in
10908 "SVID messages"*"not configured"*)
10909 echo "Your $osname does not have the sem*(2) configured." >&4
10912 set semctl d_semctl
10914 set semget d_semget
10922 : we could also check for sys/ipc.h ...
10923 if $h_sem && $test `./findhdr sys/sem.h`; then
10924 echo "You have the full sem*(2) library." >&4
10927 echo "You don't have the full sem*(2) library." >&4
10933 : see whether sys/sem.h defines union semun
10935 $cat > try.c <<'END'
10936 #include <sys/types.h>
10937 #include <sys/ipc.h>
10938 #include <sys/sem.h>
10939 int main () { union semun semun; semun.buf = 0; }
10942 if eval $compile; then
10943 echo "You have union semun in <sys/sem.h>." >&4
10946 echo "You do not have union semun in <sys/sem.h>." >&4
10949 $rm -f try try.c try.h
10953 : see how to do semctl IPC_STAT
10956 : see whether semctl IPC_STAT can use union semun
10961 # define S_IRUSR S_IREAD
10962 # define S_IWUSR S_IWRITE
10963 # define S_IXUSR S_IEXEC
10965 # define S_IRUSR 0400
10966 # define S_IWUSR 0200
10967 # define S_IXUSR 0100
10969 # define S_IRGRP (S_IRUSR>>3)
10970 # define S_IWGRP (S_IWUSR>>3)
10971 # define S_IXGRP (S_IXUSR>>3)
10972 # define S_IROTH (S_IRUSR>>6)
10973 # define S_IWOTH (S_IWUSR>>6)
10974 # define S_IXOTH (S_IXUSR>>6)
10977 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10978 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10979 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10984 #include <sys/types.h>
10985 #include <sys/ipc.h>
10986 #include <sys/sem.h>
10987 #include <sys/stat.h>
10994 #$d_union_semun HAS_UNION_SEMUN
10997 #ifndef HAS_UNION_SEMUN
11000 struct semid_ds *buf;
11001 unsigned short *array;
11007 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11008 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11010 struct semid_ds argbuf;
11013 st = semctl(sem, 0, IPC_STAT, arg);
11017 # endif /* IPC_STAT */
11018 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11020 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11021 # endif /* IPC_RMID */
11022 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11024 #endif /* IPC_PRIVATE && ... */
11025 printf("semget failed: errno = %d\n", errno);
11031 if eval $compile; then
11034 semun) val="$define" ;;
11040 case "$d_semctl_semun" in
11042 echo "You can use union semun for semctl IPC_STAT." >&4
11045 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11050 : see whether semctl IPC_STAT can use struct semid_ds pointer
11051 $cat > try.c <<'END'
11052 #include <sys/types.h>
11053 #include <sys/ipc.h>
11054 #include <sys/sem.h>
11055 #include <sys/stat.h>
11063 struct semid_ds arg;
11066 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11067 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11070 st = semctl(sem, 0, IPC_STAT, &arg);
11072 printf("semid_ds\n");
11074 # endif /* IPC_STAT */
11075 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11077 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11078 # endif /* IPC_RMID */
11079 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11081 #endif /* IPC_PRIVATE && ... */
11082 printf("semget failed: errno = %d\n", errno);
11089 if eval $compile; then
11092 semid_ds) val="$define" ;;
11096 set d_semctl_semid_ds
11098 case "$d_semctl_semid_ds" in
11100 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11102 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11109 # We do not have the full sem*(2) library, so assume we can not
11115 set d_semctl_semid_ds
11120 : see if setegid exists
11121 set setegid d_setegid
11124 : see if seteuid exists
11125 set seteuid d_seteuid
11128 : see if setgrent exists
11129 set setgrent d_setgrent
11132 : see if sethostent exists
11133 set sethostent d_sethent
11136 : see if setlinebuf exists
11137 set setlinebuf d_setlinebuf
11140 : see if setlocale exists
11141 set setlocale d_setlocale
11144 : see if setnetent exists
11145 set setnetent d_setnent
11148 : see if setprotoent exists
11149 set setprotoent d_setpent
11152 : see if setpgid exists
11153 set setpgid d_setpgid
11156 : see if setpgrp2 exists
11157 set setpgrp2 d_setpgrp2
11160 : see if setpriority exists
11161 set setpriority d_setprior
11164 : see if setproctitle exists
11165 set setproctitle d_setproctitle
11168 : see if setpwent exists
11169 set setpwent d_setpwent
11172 : see if setregid exists
11173 set setregid d_setregid
11175 set setresgid d_setresgid
11178 : see if setreuid exists
11179 set setreuid d_setreuid
11181 set setresuid d_setresuid
11184 : see if setrgid exists
11185 set setrgid d_setrgid
11188 : see if setruid exists
11189 set setruid d_setruid
11192 : see if setservent exists
11193 set setservent d_setsent
11196 : see if setsid exists
11197 set setsid d_setsid
11200 : see if setvbuf exists
11201 set setvbuf d_setvbuf
11204 : see if sfio.h is available
11209 : see if sfio library is available
11220 : Ok, but do we want to use it.
11224 true|$define|[yY]*) dflt='y';;
11227 echo "$package can use the sfio library, but it is experimental."
11228 case "$useperlio" in
11230 echo "For sfio also the PerlIO abstraction layer is needed."
11231 echo "Earlier you said you wouldn't want that."
11234 rp="You seem to have sfio available, do you want to try using it?"
11237 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11238 useperlio="$define"
11241 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11243 : Remove sfio from list of libraries to use
11244 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11247 echo "libs = $libs" >&4
11251 *) case "$usesfio" in
11252 true|$define|[yY]*)
11253 echo "Sorry, cannot find sfio on this machine." >&4
11254 echo "Ignoring your setting of usesfio=$usesfio." >&4
11263 $define) usesfio='true';;
11264 *) usesfio='false';;
11267 : see if shmctl exists
11268 set shmctl d_shmctl
11271 : see if shmget exists
11272 set shmget d_shmget
11275 : see if shmat exists
11278 : see what shmat returns
11281 $cat >shmat.c <<'END'
11282 #include <sys/shm.h>
11285 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11290 echo "and it returns ($shmattype)." >&4
11291 : see if a prototype for shmat is available
11292 xxx=`./findhdr sys/shm.h`
11293 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11294 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11305 set d_shmatprototype
11308 : see if shmdt exists
11312 : see how much of the 'shm*(2)' library is present.
11315 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11316 *"$undef"*) h_shm=false;;
11320 case "`ipcs 2>&1`" in
11321 "SVID shared memory"*"not configured"*)
11322 echo "Your $osname does not have the shm*(2) configured." >&4
11325 set shmctl d_shmctl
11327 set shmget d_shmget
11337 : we could also check for sys/ipc.h ...
11338 if $h_shm && $test `./findhdr sys/shm.h`; then
11339 echo "You have the full shm*(2) library." >&4
11342 echo "You don't have the full shm*(2) library." >&4
11349 : see if we have sigaction
11350 if set sigaction val -f d_sigaction; eval $csym; $val; then
11351 echo 'sigaction() found.' >&4
11352 $cat > try.c <<'EOP'
11354 #include <sys/types.h>
11355 #include <signal.h>
11358 struct sigaction act, oact;
11360 oact.sa_handler = 0;
11361 /* so that act and oact are used */
11362 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11366 if eval $compile_ok; then
11369 echo "But you don't seem to have a useable struct sigaction." >&4
11373 echo 'sigaction NOT found.' >&4
11376 set d_sigaction; eval $setvar
11377 $rm -f try try$_o try.c
11379 : see if sigsetjmp exists
11381 case "$d_sigsetjmp" in
11383 $cat >try.c <<'EOP'
11384 #include <setjmp.h>
11389 if (sigsetjmp(env,1))
11392 siglongjmp(env, 1);
11397 if eval $compile; then
11398 if ./try >/dev/null 2>&1; then
11399 echo "POSIX sigsetjmp found." >&4
11403 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11409 echo "sigsetjmp not found." >&4
11413 *) val="$d_sigsetjmp"
11414 case "$d_sigsetjmp" in
11415 $define) echo "POSIX sigsetjmp found." >&4;;
11416 $undef) echo "sigsetjmp not found." >&4;;
11424 : see if socks5_init exists
11425 set socks5_init d_socks5_init
11428 : see if sys/stat.h is available
11429 set sys/stat.h i_sysstat
11433 : see if stat knows about block sizes
11435 echo "Checking to see if your struct stat has st_blocks field..." >&4
11436 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11440 : see if this is a sys/vfs.h system
11441 set sys/vfs.h i_sysvfs
11445 : see if this is a sys/statfs.h system
11446 set sys/statfs.h i_sysstatfs
11451 echo "Checking to see if your system supports struct statfs..." >&4
11452 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
11454 case "$d_statfs_s" in
11455 "$define") echo "Yes, it does." ;;
11456 *) echo "No, it doesn't." ;;
11461 : see if struct statfs knows about f_flags
11462 case "$d_statfs_s" in
11465 echo "Checking to see if your struct statfs has f_flags field..." >&4
11466 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
11470 set d_statfs_f_flags
11474 case "$d_statfs_f_flags" in
11475 "$define") echo "Yes, it does." ;;
11476 *) echo "No, it doesn't." ;;
11479 : see if _ptr and _cnt from stdio act std
11482 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11483 echo "(Looks like you have stdio.h from BSD.)"
11484 case "$stdio_ptr" in
11485 '') stdio_ptr='((fp)->_p)'
11488 *) ptr_lval=$d_stdio_ptr_lval;;
11490 case "$stdio_cnt" in
11491 '') stdio_cnt='((fp)->_r)'
11494 *) cnt_lval=$d_stdio_cnt_lval;;
11496 case "$stdio_base" in
11497 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11499 case "$stdio_bufsiz" in
11500 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11502 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11503 echo "(Looks like you have stdio.h from Linux.)"
11504 case "$stdio_ptr" in
11505 '') stdio_ptr='((fp)->_IO_read_ptr)'
11508 *) ptr_lval=$d_stdio_ptr_lval;;
11510 case "$stdio_cnt" in
11511 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11514 *) cnt_lval=$d_stdio_cnt_lval;;
11516 case "$stdio_base" in
11517 '') stdio_base='((fp)->_IO_read_base)';;
11519 case "$stdio_bufsiz" in
11520 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11523 case "$stdio_ptr" in
11524 '') stdio_ptr='((fp)->_ptr)'
11527 *) ptr_lval=$d_stdio_ptr_lval;;
11529 case "$stdio_cnt" in
11530 '') stdio_cnt='((fp)->_cnt)'
11533 *) cnt_lval=$d_stdio_cnt_lval;;
11535 case "$stdio_base" in
11536 '') stdio_base='((fp)->_base)';;
11538 case "$stdio_bufsiz" in
11539 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11543 : test whether _ptr and _cnt really work
11544 echo "Checking how std your stdio is..." >&4
11547 #define FILE_ptr(fp) $stdio_ptr
11548 #define FILE_cnt(fp) $stdio_cnt
11550 FILE *fp = fopen("try.c", "r");
11553 18 <= FILE_cnt(fp) &&
11554 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11562 if eval $compile; then
11564 echo "Your stdio acts pretty std."
11567 echo "Your stdio isn't very std."
11570 echo "Your stdio doesn't appear very std."
11576 : Can _ptr be used as an lvalue?
11577 case "$d_stdstdio$ptr_lval" in
11578 $define$define) val=$define ;;
11581 set d_stdio_ptr_lval
11584 : Can _cnt be used as an lvalue?
11585 case "$d_stdstdio$cnt_lval" in
11586 $define$define) val=$define ;;
11589 set d_stdio_cnt_lval
11593 : test whether setting _ptr sets _cnt as a side effect
11594 d_stdio_ptr_lval_sets_cnt="$undef"
11595 d_stdio_ptr_lval_nochange_cnt="$undef"
11596 case "$d_stdio_ptr_lval$d_stdstdio" in
11598 echo "Checking to see what happens if we set the stdio ptr..." >&4
11601 /* Can we scream? */
11602 /* Eat dust sed :-) */
11603 /* In the buffer space, no one can hear you scream. */
11604 #define FILE_ptr(fp) $stdio_ptr
11605 #define FILE_cnt(fp) $stdio_cnt
11606 #include <sys/types.h>
11608 FILE *fp = fopen("try.c", "r");
11613 puts("Fail even to read");
11616 c = getc(fp); /* Read away the first # */
11618 puts("Fail even to read");
11622 18 <= FILE_cnt(fp) &&
11623 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11625 puts("Fail even to read");
11628 ptr = (char*) FILE_ptr(fp);
11629 cnt = (size_t)FILE_cnt(fp);
11631 FILE_ptr(fp) += 42;
11633 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11634 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11637 if (FILE_cnt(fp) <= 20) {
11638 printf ("Fail (<20 chars to test)");
11641 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11642 puts("Fail compare");
11645 if (cnt == FILE_cnt(fp)) {
11646 puts("Pass_unchanged");
11649 if (FILE_cnt(fp) == (cnt - 42)) {
11650 puts("Pass_changed");
11653 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11659 if eval $compile; then
11660 case `./try$exe_ext` in
11662 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11663 d_stdio_ptr_lval_sets_cnt="$define" ;;
11665 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11666 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11668 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11670 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11673 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11679 : see if _base is also standard
11681 case "$d_stdstdio" in
11685 #define FILE_base(fp) $stdio_base
11686 #define FILE_bufsiz(fp) $stdio_bufsiz
11688 FILE *fp = fopen("try.c", "r");
11691 19 <= FILE_bufsiz(fp) &&
11692 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11699 if eval $compile; then
11701 echo "And its _base field acts std."
11704 echo "But its _base field isn't std."
11707 echo "However, it seems to be lacking the _base field."
11716 Checking how to access stdio streams by file descriptor number...
11718 case "$stdio_stream_array" in
11719 '') $cat >try.c <<EOCP
11722 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11726 for s in _iob __iob __sF
11728 set try -DSTDIO_STREAM_ARRAY=$s
11729 if eval $compile; then
11730 case "`./try$exe_ext`" in
11731 yes) stdio_stream_array=$s; break ;;
11735 $rm -f try.* try$exe_ext
11737 case "$stdio_stream_array" in
11739 I can't figure out how to access stdio streams by file descriptor number.
11741 d_stdio_stream_array="$undef"
11744 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11746 d_stdio_stream_array="$define"
11750 : see if strcoll exists
11751 set strcoll d_strcoll
11754 : check for structure copying
11756 echo "Checking to see if your C compiler can copy structs..." >&4
11757 $cat >try.c <<'EOCP'
11767 if $cc -c try.c >/dev/null 2>&1 ; then
11769 echo "Yup, it can."
11772 echo "Nope, it can't."
11778 : see if strerror and/or sys_errlist[] exist
11780 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11781 if set strerror val -f d_strerror; eval $csym; $val; then
11782 echo 'strerror() found.' >&4
11783 d_strerror="$define"
11784 d_strerrm='strerror(e)'
11785 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11786 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11787 d_syserrlst="$define"
11789 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11790 d_syserrlst="$undef"
11792 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11793 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11794 echo 'strerror() found in string header.' >&4
11795 d_strerror="$define"
11796 d_strerrm='strerror(e)'
11797 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11798 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11799 d_syserrlst="$define"
11801 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11802 d_syserrlst="$undef"
11804 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11805 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11806 d_strerror="$undef"
11807 d_syserrlst="$define"
11808 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11810 echo 'strerror() and sys_errlist[] NOT found.' >&4
11811 d_strerror="$undef"
11812 d_syserrlst="$undef"
11813 d_strerrm='"unknown"'
11817 : see if strtod exists
11818 set strtod d_strtod
11821 : see if strtol exists
11822 set strtol d_strtol
11825 : see if strtold exists
11826 set strtold d_strtold
11829 : see if strtoll exists
11830 set strtoll d_strtoll
11833 case "$d_longlong-$d_strtoll" in
11836 Checking whether your strtoll() works okay...
11838 $cat >try.c <<'EOCP'
11841 #define strtoll __strtoll
11844 #define strtoll _strtoll
11847 extern long long int strtoll(char *s, char **, int);
11848 static int bad = 0;
11849 int check(char *s, long long ell, int een) {
11852 gll = strtoll(s, 0, 10);
11853 if (!((gll == ell) && (errno == een)))
11857 check(" 1", 1LL, 0);
11858 check(" 0", 0LL, 0);
11859 check("-1", -1LL, 0);
11860 check("-9223372036854775808", -9223372036854775808LL, 0);
11861 check("-9223372036854775808", -9223372036854775808LL, 0);
11862 check(" 9223372036854775807", 9223372036854775807LL, 0);
11863 check("-9223372036854775808", -9223372036854775808LL, 0);
11864 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11865 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11871 if eval $compile; then
11874 ok) echo "Your strtoll() seems to be working okay." ;;
11876 Your strtoll() doesn't seem to be working okay.
11882 echo "(I can't seem to compile the test program--assuming it doesn't)"
11888 : see if strtoul exists
11889 set strtoul d_strtoul
11892 : see if strtoull exists
11893 set strtoull d_strtoull
11896 case "$d_longlong-$d_strtoull" in
11899 Checking whether your strtoull() works okay...
11901 $cat >try.c <<'EOCP'
11904 #define strtoull __strtoull
11907 extern unsigned long long int strtoull(char *s, char **, int);
11908 static int bad = 0;
11909 int check(char *s, long long eull, int een) {
11912 gull = strtoull(s, 0, 10);
11913 if (!((gull == eull) && (errno == een)))
11917 check(" 1", 1LL, 0);
11918 check(" 0", 0LL, 0);
11919 check("18446744073709551615", 18446744073709551615ULL, 0);
11920 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11926 if eval $compile; then
11928 ok) echo "Your strtoull() seems to be working okay." ;;
11930 Your strtoull() doesn't seem to be working okay.
11932 d_strtoull="$undef"
11939 : see if strtouq exists
11940 set strtouq d_strtouq
11943 : see if strxfrm exists
11944 set strxfrm d_strxfrm
11947 : see if symlink exists
11948 set symlink d_symlink
11951 : see if syscall exists
11952 set syscall d_syscall
11955 : see if sysconf exists
11956 set sysconf d_sysconf
11959 : see if system exists
11960 set system d_system
11963 : see if tcgetpgrp exists
11964 set tcgetpgrp d_tcgetpgrp
11967 : see if tcsetpgrp exists
11968 set tcsetpgrp d_tcsetpgrp
11971 : see if prototype for telldir is available
11973 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11976 : see if this is a sys/times.h system
11977 set sys/times.h i_systimes
11980 : see if times exists
11982 if set times val -f d_times; eval $csym; $val; then
11983 echo 'times() found.' >&4
11986 case "$i_systimes" in
11987 "$define") inc='sys/times.h';;
11989 rp="What is the type returned by times() on this system?"
11990 set clock_t clocktype long stdio.h sys/types.h $inc
11993 echo 'times() NOT found, hope that will do.' >&4
11998 : see if truncate exists
11999 set truncate d_truncate
12002 : see if tzname[] exists
12004 if set tzname val -a d_tzname; eval $csym; $val; then
12006 echo 'tzname[] found.' >&4
12009 echo 'tzname[] NOT found.' >&4
12014 : see if umask exists
12018 : see if ustat exists
12022 : backward compatibility for d_hvfork
12023 if test X$d_hvfork != X; then
12024 d_vfork="$d_hvfork"
12027 : see if there is a vfork
12032 : Ok, but do we want to use it. vfork is reportedly unreliable in
12033 : perl on Solaris 2.x, and probably elsewhere.
12037 case "$usevfork" in
12043 Perl can only use a vfork() that doesn't suffer from strict
12044 restrictions on calling functions or modifying global data in
12045 the child. For example, glibc-2.1 contains such a vfork()
12046 that is unsuitable. If your system provides a proper fork()
12047 call, chances are that you do NOT want perl to use vfork().
12050 rp="Do you still want to use vfork()?"
12055 echo "Ok, we won't use vfork()."
12064 $define) usevfork='true';;
12065 *) usevfork='false';;
12068 : see if this is an sysdir system
12069 set sys/dir.h i_sysdir
12072 : see if this is an sysndir system
12073 set sys/ndir.h i_sysndir
12076 : see if closedir exists
12077 set closedir d_closedir
12080 case "$d_closedir" in
12083 echo "Checking whether closedir() returns a status..." >&4
12084 cat > closedir.c <<EOM
12085 #$i_dirent I_DIRENT /**/
12086 #$i_sysdir I_SYS_DIR /**/
12087 #$i_sysndir I_SYS_NDIR /**/
12088 #$i_systypes I_SYS_TYPES /**/
12090 #if defined(I_SYS_TYPES)
12091 #include <sys/types.h>
12093 #if defined(I_DIRENT)
12094 #include <dirent.h>
12095 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12096 #include <sys/dir.h>
12100 #include <sys/ndir.h>
12104 #include <ndir.h> /* may be wrong in the future */
12106 #include <sys/dir.h>
12111 int main() { return closedir(opendir(".")); }
12114 if eval $compile_ok; then
12115 if ./closedir > /dev/null 2>&1 ; then
12116 echo "Yes, it does."
12119 echo "No, it doesn't."
12123 echo "(I can't seem to compile the test program--assuming it doesn't)"
12131 set d_void_closedir
12134 : see if there is a wait4
12138 : see if waitpid exists
12139 set waitpid d_waitpid
12142 : see if wcstombs exists
12143 set wcstombs d_wcstombs
12146 : see if wctomb exists
12147 set wctomb d_wctomb
12150 : preserve RCS keywords in files with variable substitution, grrr
12155 Revision='$Revision'
12157 case "$crosscompile" in
12158 ''|[nN]*) crosscompile="$undef" ;;
12162 next|rhapsody|darwin) multiarch="$define" ;;
12164 case "$multiarch" in
12165 ''|[nN]*) multiarch="$undef" ;;
12168 : check for alignment requirements
12170 case "$crosscompile$multiarch" in
12173 You seem to be either cross-compiling or doing a multiarchitecture build,
12174 skipping the memory alignment check.
12177 case "$alignbytes" in
12178 '') alignbytes=8 ;;
12182 case "$alignbytes" in
12183 '') echo "Checking alignment constraints..." >&4
12184 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12185 $cat >try.c <<'EOCP'
12186 typedef long double NV;
12189 $cat >try.c <<'EOCP'
12193 $cat >>try.c <<'EOCP'
12201 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12206 if eval $compile_ok; then
12210 echo "(I can't seem to compile the test program...)"
12213 *) dflt="$alignbytes"
12216 rp="Doubles must be aligned on a how-many-byte boundary?"
12224 : set the base revision
12227 : check for ordering of bytes in a long
12229 case "$crosscompile$multiarch" in
12232 You seem to be either cross-compiling or doing a multiarchitecture build,
12233 skipping the byteorder check.
12239 case "$byteorder" in
12242 In the following, larger digits indicate more significance. A big-endian
12243 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12244 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12245 machines may have weird orders like 3412. A Cray will report 87654321,
12246 an Alpha will report 12345678. If the test program works the default is
12248 I'm now running the test program...
12250 $cat >try.c <<'EOCP'
12257 char c[sizeof(long)];
12260 if (sizeof(long) > 4)
12261 u.l = (0x08070605L << 32) | 0x04030201L;
12264 for (i = 0; i < sizeof(long); i++)
12265 printf("%c", u.c[i]+'0');
12272 if eval $compile && ./try > /dev/null; then
12275 [1-4][1-4][1-4][1-4]|12345678|87654321)
12276 echo "(The test program ran ok.)"
12277 echo "byteorder=$dflt"
12280 ????|????????) echo "(The test program ran ok.)" ;;
12281 *) echo "(The test program didn't run right for some reason.)" ;;
12286 (I can't seem to compile the test program. Guessing big-endian...)
12289 case "$xxx_prompt" in
12291 rp="What is the order of bytes in a long?"
12305 : how do we catenate cpp tokens here?
12307 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12308 $cat >cpp_stuff.c <<'EOCP'
12309 #define RCAT(a,b)a/**/b
12310 #define ACAT(a,b)a ## b
12314 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12315 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12316 echo "Oh! Smells like ANSI's been here." >&4
12317 echo "We can catify or stringify, separately or together!"
12319 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12320 echo "Ah, yes! The good old days!" >&4
12321 echo "However, in the good old days we don't know how to stringify and"
12322 echo "catify at the same time."
12326 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12327 to have to edit the values of CAT[2-5] in config.h...
12329 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12333 : see if this is a db.h system
12339 : Check db version.
12341 echo "Checking Berkeley DB version ..." >&4
12347 #include <sys/types.h>
12352 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12353 int Major, Minor, Patch ;
12354 unsigned long Version ;
12355 (void)db_version(&Major, &Minor, &Patch) ;
12356 printf("You have Berkeley DB Version 2 or greater\n");
12358 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12359 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12360 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12361 Major, Minor, Patch) ;
12363 /* check that db.h & libdb are compatible */
12364 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12365 printf("db.h and libdb are incompatible\n") ;
12369 printf("db.h and libdb are compatible\n") ;
12371 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12372 + DB_VERSION_PATCH ;
12374 /* needs to be >= 2.3.4 */
12375 if (Version < 2003004) {
12376 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12377 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12383 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12384 printf("You have Berkeley DB Version 1\n");
12385 exit(0); /* DB version < 2: the coast is clear. */
12387 exit(1); /* <db.h> not Berkeley DB? */
12393 if eval $compile_ok && ./try; then
12394 echo 'Looks OK.' >&4
12396 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12400 : Remove db from list of libraries to use
12401 echo "Removing unusable -ldb from library list" >&4
12402 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12405 echo "libs = $libs" >&4
12415 : Check the return type needed for hash
12417 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12423 #include <sys/types.h>
12426 #ifndef DB_VERSION_MAJOR
12427 u_int32_t hash_cb (ptr, size)
12435 info.hash = hash_cb;
12439 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12440 if $contains warning try.out >>/dev/null 2>&1 ; then
12443 db_hashtype='u_int32_t'
12446 : XXX Maybe we should just give up here.
12447 db_hashtype=u_int32_t
12449 echo "Help: I can't seem to compile the db test program." >&4
12450 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12453 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12455 *) db_hashtype=u_int32_t
12460 : Check the return type needed for prefix
12462 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12468 #include <sys/types.h>
12471 #ifndef DB_VERSION_MAJOR
12472 size_t prefix_cb (key1, key2)
12480 info.prefix = prefix_cb;
12484 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12485 if $contains warning try.out >>/dev/null 2>&1 ; then
12486 db_prefixtype='int'
12488 db_prefixtype='size_t'
12491 db_prefixtype='size_t'
12492 : XXX Maybe we should just give up here.
12494 echo "Help: I can't seem to compile the db test program." >&4
12495 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12498 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12500 *) db_prefixtype='size_t'
12504 : check for void type
12506 echo "Checking to see how well your C compiler groks the void type..." >&4
12507 case "$voidflags" in
12509 $cat >try.c <<'EOCP'
12515 extern void moo(); /* function returning void */
12516 void (*goo)(); /* ptr to func returning void */
12518 void *hue; /* generic ptr */
12531 int main() { sub(); }
12533 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12534 voidflags=$defvoidused
12535 echo "Good. It appears to support void to the level $package wants.">&4
12536 if $contains warning .out >/dev/null 2>&1; then
12537 echo "However, you might get some warnings that look like this:"
12541 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12542 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12543 echo "It supports 1..."
12544 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12545 echo "It also supports 2..."
12546 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12548 echo "And it supports 4 but not 8 definitely."
12550 echo "It doesn't support 4..."
12551 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12553 echo "But it supports 8."
12556 echo "Neither does it support 8."
12560 echo "It does not support 2..."
12561 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12563 echo "But it supports 4 and 8."
12565 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12567 echo "And it supports 4 but has not heard about 8."
12569 echo "However it supports 8 but not 4."
12574 echo "There is no support at all for void."
12579 case "$voidflags" in
12581 *) $cat >&4 <<'EOM'
12582 Support flag bits are:
12583 1: basic void declarations.
12584 2: arrays of pointers to functions returning void.
12585 4: operations between pointers to and addresses of void functions.
12586 8: generic void pointers.
12589 rp="Your void support flags add up to what?"
12597 : How can we generate normalized random numbers ?
12599 echo "Looking for a random number function..." >&4
12600 case "$randfunc" in
12602 if set drand48 val -f; eval $csym; $val; then
12604 echo "Good, found drand48()." >&4
12605 elif set random val -f; eval $csym; $val; then
12607 echo "OK, found random()." >&4
12610 echo "Yick, looks like I have to use rand()." >&4
12621 *-Dmy_rand=*|*-Dmy_srand=*)
12622 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12623 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12624 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12625 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12629 while $test "$cont"; do
12630 rp="Use which function to generate random numbers?"
12632 if $test "$ans" = "$dflt"; then
12638 if set $ans val -f; eval $csym; $val; then
12642 rp="I cannot find function $ans. Use that name anyway?"
12651 case "$randfunc" in
12653 drand01="drand48()"
12659 case "$randbits" in
12661 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12663 #$i_unistd I_UNISTD
12664 #$i_stdlib I_STDLIB
12667 # include <unistd.h>
12670 # include <stdlib.h>
12675 register unsigned long tmp;
12676 register unsigned long max = 0L;
12678 for (i = 1000; i; i--) {
12679 tmp = (unsigned long) $randfunc();
12680 if (tmp > max) max = tmp;
12682 for (i = 0; max; i++)
12688 if eval $compile_ok; then
12692 echo "(I can't seem to compile the test program...)"
12699 rp="How many bits does your $randfunc() function produce?"
12703 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12704 seedfunc="s$randfunc"
12705 randseedtype=unsigned
12709 rp="How many bits does your $randfunc() function produce?"
12712 seedfunc="s$randfunc"
12713 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12714 if set $seedfunc val -f; eval $csym; $val; then
12715 echo "(Using $seedfunc() to seed random generator)"
12717 echo "(Warning: no $seedfunc() to seed random generator)"
12720 randseedtype=unsigned
12728 echo "Determining whether or not we are on an EBCDIC system..." >&4
12729 $cat >tebcdic.c <<'EOM'
12732 if ('M'==0xd4) return 0;
12739 if eval $compile_ok; then
12741 echo "You seem to speak EBCDIC." >&4
12744 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12747 echo "I'm unable to compile the test program." >&4
12748 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12750 $rm -f tebcdic.c tebcdic
12756 Checking how to flush all pending stdio output...
12758 # I only know how to find the first 32 possibly open files on SunOS.
12759 # See also hints/sunos_4_1.sh and util.c --AD
12761 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12763 $cat >>try.c <<EOCP
12765 #$i_unistd I_UNISTD
12767 # include <unistd.h>
12769 #$d_sysconf HAS_SYSCONF
12770 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12771 #ifdef HAS_STDIO_STREAM_ARRAY
12772 # define STDIO_STREAM_ARRAY $stdio_stream_array
12775 FILE* p = fopen("try.out", "w");
12779 # ifdef TRY_FPRINTF
12783 #ifdef TRY_FFLUSH_NULL
12786 #ifdef TRY_FFLUSH_ALL
12788 long open_max = -1;
12789 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12790 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12792 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12793 open_max = sysconf(_SC_OPEN_MAX);
12796 open_max = FOPEN_MAX;
12799 open_max = OPEN_MAX;
12808 # ifdef HAS_STDIO_STREAM_ARRAY
12809 if (open_max > 0) {
12811 for (i = 0; i < open_max; i++)
12812 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12813 STDIO_STREAM_ARRAY[i]._file < open_max &&
12814 STDIO_STREAM_ARRAY[i]._flag)
12815 fflush(&STDIO_STREAM_ARRAY[i]);
12823 : first we have to find out how _not_ to flush
12824 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12826 set try -DTRY_FPUTC
12827 if eval $compile; then
12829 ./try$exe_ext 2>/dev/null
12830 if $test ! -s try.out -a "X$?" = X42; then
12836 set try -DTRY_FPRINTF
12838 if eval $compile; then
12840 ./try$exe_ext 2>/dev/null
12841 if $test ! -s try.out -a "X$?" = X42; then
12842 output=-DTRY_FPRINTF
12848 : check for fflush NULL behaviour
12849 case "$fflushNULL" in
12850 '') set try -DTRY_FFLUSH_NULL $output
12851 if eval $compile; then
12853 ./try$exe_ext 2>/dev/null
12855 if $test -s try.out -a "X$code" = X42; then
12856 fflushNULL="`$cat try.out`"
12858 if $test "X$code" != X42; then
12860 (If this test failed, don't worry, we'll try another method shortly.)
12865 $rm -f core try.core core.try.*
12866 case "$fflushNULL" in
12868 Your fflush(NULL) works okay for output streams.
12869 Let's see if it clobbers input pipes...
12871 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12872 # bug that improperly flushes the input end of pipes. So we avoid the
12873 # autoflush on fork/system/exec support for now. :-(
12874 $cat >tryp.c <<EOCP
12877 main(int argc, char **argv)
12883 while ((i = getc(stdin)) != -1
12884 && (*bp++ = i) != '\n'
12885 && bp < &buf[1024])
12888 fprintf(stdout, "%s", buf);
12896 fflushNULL="$define"
12898 if eval $compile; then
12900 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12901 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12903 fflush(NULL) seems to behave okay with input streams.
12905 fflushNULL="$define"
12908 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12910 fflushNULL="$undef"
12913 $rm -f core tryp.c tryp.core core.tryp.*
12916 Your fflush(NULL) isn't working (contrary to ANSI C).
12918 fflushNULL="$undef"
12921 Cannot figure out whether your fflush(NULL) works or not.
12922 I'm assuming it doesn't (contrary to ANSI C).
12924 fflushNULL="$undef"
12928 $define|true|[yY]*)
12929 fflushNULL="$define"
12932 fflushNULL="$undef"
12935 : check explicit looping only if NULL did not work, and if the pipe
12936 : bug does not show up on an explicit flush too
12937 case "$fflushNULL" in
12939 $cat >tryp.c <<EOCP
12942 main(int argc, char **argv)
12948 while ((i = getc(stdin)) != -1
12949 && (*bp++ = i) != '\n'
12950 && bp < &buf[1024])
12953 fprintf(stdout, "%s", buf);
12962 if eval $compile; then
12964 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12965 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12967 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12969 : now check for fflushall behaviour
12970 case "$fflushall" in
12971 '') set try -DTRY_FFLUSH_ALL $output
12972 if eval $compile; then
12974 (Now testing the other method--but note that this also may fail.)
12977 ./try$exe_ext 2>/dev/null
12978 if $test -s try.out -a "X$?" = X42; then
12979 fflushall="`$cat try.out`"
12982 $rm -f core try.core core.try.*
12983 case "$fflushall" in
12985 Whew. Flushing explicitly all the stdio streams works.
12987 fflushall="$define"
12990 Sigh. Flushing explicitly all the stdio streams doesn't work.
12995 Cannot figure out whether flushing stdio streams explicitly works or not.
12996 I'm assuming it doesn't.
13002 "$define"|true|[yY]*)
13003 fflushall="$define"
13011 All is futile. Even fflush(stdin) clobbers input pipes!
13018 $rm -f core tryp.c tryp.core core.tryp.*
13020 *) fflushall="$undef"
13024 case "$fflushNULL$fflushall" in
13027 OK, I give up. I cannot figure out how to flush pending stdio output.
13028 We won't be flushing handles at all before fork/exec/popen.
13032 $rm -f try.* try$exe_ext
13034 : Store the full pathname to the ar program for use in the C program
13035 : Respect a hint or command line value for full_ar.
13040 : Store the full pathname to the sed program for use in the C program
13043 : see what type gids are declared as in the kernel
13045 echo "Looking for the type for group ids returned by getgid()."
13046 set gid_t gidtype xxx stdio.h sys/types.h
13050 xxx=`./findhdr sys/user.h`
13051 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13053 unsigned) dflt="$1 $2" ;;
13057 *) dflt="$gidtype";;
13060 gid_t) echo "gid_t found." ;;
13061 *) rp="What is the type for group ids returned by getgid()?"
13069 *_t) zzz="$gidtype" ;;
13072 echo "Checking the size of $zzz..." >&4
13074 #include <sys/types.h>
13077 printf("%d\n", (int)sizeof($gidtype));
13082 if eval $compile_ok; then
13086 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13089 echo "Your $zzz is $gidsize bytes long."
13094 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13100 *_t) zzz="$gidtype" ;;
13103 echo "Checking the sign of $zzz..." >&4
13105 #include <sys/types.h>
13116 if eval $compile; then
13120 echo "(I can't execute the test program--guessing unsigned.)" >&4
13124 1) echo "Your $zzz is unsigned." ;;
13125 -1) echo "Your $zzz is signed." ;;
13131 echo "(I can't compile the test program--guessing unsigned.)" >&4
13137 if $test X"$quadtype" != X; then
13139 echo "Checking how to print 64-bit integers..." >&4
13141 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13142 $cat >try.c <<'EOCP'
13143 #include <sys/types.h>
13146 int q = 12345678901;
13147 printf("%ld\n", q);
13151 if eval $compile; then
13152 yyy=`./try$exe_ext`
13155 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13156 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13157 echo "We will use %d."
13163 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13164 $cat >try.c <<'EOCP'
13165 #include <sys/types.h>
13168 long q = 12345678901;
13169 printf("%ld\n", q);
13173 if eval $compile; then
13174 yyy=`./try$exe_ext`
13177 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13178 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13179 echo "We will use %ld."
13185 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13186 $cat >try.c <<'EOCP'
13187 #include <sys/types.h>
13188 #include <inttypes.h>
13191 int64_t q = 12345678901;
13192 printf("%" PRId64 "\n", q);
13196 if eval $compile; then
13197 yyy=`./try$exe_ext`
13200 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13201 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13202 echo "We will use the C9X style."
13208 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13209 $cat >try.c <<'EOCP'
13210 #include <sys/types.h>
13213 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13214 printf("%lld\n", q);
13218 if eval $compile; then
13219 yyy=`./try$exe_ext`
13222 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13223 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13224 echo "We will use the %lld style."
13230 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13232 #include <sys/types.h>
13235 $quadtype q = 12345678901;
13236 printf("%Ld\n", q);
13240 if eval $compile; then
13241 yyy=`./try$exe_ext`
13244 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13245 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13246 echo "We will use %Ld."
13252 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13254 #include <sys/types.h>
13257 $quadtype q = 12345678901;
13258 printf("%qd\n", q);
13262 if eval $compile; then
13263 yyy=`./try$exe_ext`
13266 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13267 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13268 echo "We will use %qd."
13274 if $test X"$sPRId64" = X; then
13275 echo "Cannot figure out how to print 64-bit integers." >&4
13283 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13284 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13286 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13287 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13293 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13295 if $test X"$ivsize" = X8; then
13296 ivdformat="$sPRId64"
13297 uvuformat="$sPRIu64"
13298 uvoformat="$sPRIo64"
13299 uvxformat="$sPRIx64"
13300 uvXUformat="$sPRIXU64"
13302 if $test X"$ivsize" = X"$longsize"; then
13309 if $test X"$ivsize" = X"$intsize"; then
13317 if $test X"$ivsize" = X"$shortsize"; then
13328 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13329 nveformat="$sPRIeldbl"
13330 nvfformat="$sPRIfldbl"
13331 nvgformat="$sPRIgldbl"
13332 nvEUformat="$sPRIEUldbl"
13333 nvFUformat="$sPRIFUldbl"
13334 nvGUformat="$sPRIGUldbl"
13344 case "$ivdformat" in
13345 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13352 $echo "Checking the format string to be used for gids..." >&4
13355 -1) if $test X"$gidsize" = X"$ivsize"; then
13356 gidformat="$ivdformat"
13358 if $test X"$gidsize" = X"$longsize"; then
13361 if $test X"$gidsize" = X"$intsize"; then
13364 if $test X"$gidsize" = X"$shortsize"; then
13371 *) if $test X"$gidsize" = X"$uvsize"; then
13372 gidformat="$uvuformat"
13374 if $test X"$gidsize" = X"$longsize"; then
13377 if $test X"$gidsize" = X"$intsize"; then
13380 if $test X"$gidsize" = X"$shortsize"; then
13389 : see if getgroups exists
13390 set getgroups d_getgrps
13393 : see if setgroups exists
13394 set setgroups d_setgrps
13398 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13400 case "$d_getgrps$d_setgrps" in
13402 case "$groupstype" in
13403 '') dflt="$gidtype" ;;
13404 *) dflt="$groupstype" ;;
13407 What type of pointer is the second argument to getgroups() and setgroups()?
13408 Usually this is the same as group ids, $gidtype, but not always.
13411 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13415 *) groupstype="$gidtype";;
13419 echo "Checking if your $make program sets \$(MAKE)..." >&4
13420 case "$make_set_make" in
13422 $sed 's/^X //' > testmake.mak << 'EOF'
13424 X @echo 'maketemp="$(MAKE)"'
13426 case "`$make -f testmake.mak 2>/dev/null`" in
13427 *maketemp=*) make_set_make='#' ;;
13428 *) make_set_make="MAKE=$make" ;;
13430 $rm -f testmake.mak
13433 case "$make_set_make" in
13434 '#') echo "Yup, it does.";;
13435 *) echo "Nope, it doesn't.";;
13438 : see what type is used for mode_t
13439 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13440 set mode_t modetype int stdio.h sys/types.h
13443 : define a fucntion to check prototypes
13444 $cat > protochk <<EOSH
13447 optimize="$optimize"
13449 prototype="$prototype"
13454 $cat >> protochk <<'EOSH'
13459 while test $# -ge 2; do
13461 $define) echo "#include <$2>" >> try.c ;;
13462 literal) echo "$2" >> try.c ;;
13466 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13467 cat >> try.c <<'EOCP'
13468 #ifdef CAN_PROTOTYPE
13469 #define _(args) args
13474 echo "$foo" >> try.c
13475 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13476 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13482 $eunicefix protochk
13484 : see what type is used for size_t
13485 rp="What is the type used for the length parameter for string functions?"
13486 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13489 : check for type of arguments to gethostbyaddr.
13490 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13491 case "$d_gethbyaddr" in
13495 Checking to see what type of arguments are accepted by gethostbyaddr().
13497 hdrs="$define sys/types.h
13498 $d_socket sys/socket.h
13499 $i_niin netinet/in.h
13501 $i_unistd unistd.h"
13502 : The first arg can 'char *' or 'void *'
13503 : The second arg is some of integral type
13504 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13505 for yyy in size_t long int; do
13506 case "$netdb_host_type" in
13507 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13508 if ./protochk "$try" $hdrs; then
13509 echo "Your system accepts $xxx for the first arg."
13510 echo "...and $yyy for the second arg."
13511 netdb_host_type="$xxx"
13512 netdb_hlen_type="$yyy"
13518 : In case none of those worked, prompt the user.
13519 case "$netdb_host_type" in
13520 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13523 netdb_host_type=$ans
13524 rp='What is the type for the 2nd argument to gethostbyaddr?'
13527 netdb_hlen_type=$ans
13531 *) : no gethostbyaddr, so pick harmless defaults
13532 netdb_host_type='char *'
13533 netdb_hlen_type="$sizetype"
13536 # Remove the "const" if needed. -- but then we'll have a
13538 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13541 : check for type of argument to gethostbyname.
13542 if test "X$netdb_name_type" = X ; then
13543 case "$d_gethbyname" in
13547 Checking to see what type of argument is accepted by gethostbyname().
13549 hdrs="$define sys/types.h
13550 $d_socket sys/socket.h
13551 $i_niin netinet/in.h
13553 $i_unistd unistd.h"
13554 for xxx in "const char *" "char *"; do
13555 case "$netdb_name_type" in
13556 '') try="extern struct hostent *gethostbyname($xxx);"
13557 if ./protochk "$try" $hdrs; then
13558 echo "Your system accepts $xxx."
13559 netdb_name_type="$xxx"
13564 : In case none of those worked, prompt the user.
13565 case "$netdb_name_type" in
13566 '') rp='What is the type for the 1st argument to gethostbyname?'
13569 netdb_name_type=$ans
13573 *) : no gethostbyname, so pick harmless default
13574 netdb_name_type='char *'
13579 : check for type of 1st argument to getnetbyaddr.
13580 if test "X$netdb_net_type" = X ; then
13581 case "$d_getnbyaddr" in
13585 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13587 hdrs="$define sys/types.h
13588 $d_socket sys/socket.h
13589 $i_niin netinet/in.h
13591 $i_unistd unistd.h"
13592 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13593 case "$netdb_net_type" in
13594 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13595 if ./protochk "$try" $hdrs; then
13596 echo "Your system accepts $xxx."
13597 netdb_net_type="$xxx"
13602 : In case none of those worked, prompt the user.
13603 case "$netdb_net_type" in
13604 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13607 netdb_net_type=$ans
13611 *) : no getnetbyaddr, so pick harmless default
13612 netdb_net_type='long'
13616 : locate the preferred pager for this system
13622 [a-zA-Z]:/*) dflt=$pg;;
13626 [a-zA-Z]:/*) dflt=$more;;
13630 [a-zA-Z]:/*) dflt=$less;;
13633 '') dflt=/usr/ucb/more;;
13640 rp='What pager is used on your system?'
13644 : see what type pids are declared as in the kernel
13645 rp="What is the type of process ids on this system?"
13646 set pid_t pidtype int stdio.h sys/types.h
13649 : Find earliest binary compatible site_perl subdirectory perl can use.
13650 case "$bincompat5005" in
13651 "$define") xs_apiversion='5.005' ;;
13652 *) xs_apiversion=$version ;; # The current site_perl version.
13654 : Find earliest pure perl site_perl subdirectory perl can use.
13655 : The versioned directories started at 5.005.
13656 pm_apiversion='5.005'
13658 : check for length of pointer
13662 echo "Checking to see how big your pointers are..." >&4
13663 if test "$voidflags" -gt 7; then
13664 echo '#define VOID_PTR char *' > try.c
13666 echo '#define VOID_PTR void *' > try.c
13668 $cat >>try.c <<'EOCP'
13672 printf("%d\n", (int)sizeof(VOID_PTR));
13677 if eval $compile_ok; then
13679 echo "Your pointers are $ptrsize bytes long."
13682 echo "(I can't seem to compile the test program. Guessing...)" >&4
13683 rp="What is the size of a pointer (in bytes)?"
13691 : see if ar generates random libraries by itself
13693 echo "Checking how to generate random libraries on your machine..." >&4
13694 echo 'int bar1() { return bar2(); }' > bar1.c
13695 echo 'int bar2() { return 2; }' > bar2.c
13696 $cat > foo.c <<'EOP'
13697 int main() { printf("%d\n", bar1()); exit(0); }
13699 $cc $ccflags -c bar1.c >/dev/null 2>&1
13700 $cc $ccflags -c bar2.c >/dev/null 2>&1
13701 $cc $ccflags -c foo.c >/dev/null 2>&1
13702 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13703 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13704 ./foobar >/dev/null 2>&1; then
13705 echo "$ar appears to generate random libraries itself."
13708 elif $ar ts bar$_a >/dev/null 2>&1 &&
13709 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13710 ./foobar >/dev/null 2>&1; then
13711 echo "a table of contents needs to be added with '$ar ts'."
13718 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13719 $test -f $ranlib || ranlib=''
13722 if $test -n "$ranlib"; then
13723 echo "your system has '$ranlib'; we'll use that."
13726 echo "your system doesn't seem to support random libraries"
13727 echo "so we'll use lorder and tsort to order the libraries."
13734 : check for type of arguments to select.
13735 case "$selecttype" in
13736 '') case "$d_select" in
13740 Checking to see what type of arguments are accepted by select().
13742 hdrs="$define sys/types.h
13743 $i_systime sys/time.h
13744 $i_sysselct sys/select.h
13745 $d_socket sys/socket.h"
13746 : The first arg can be int, unsigned, or size_t
13747 : The last arg may or may not be 'const'
13749 : void pointer has been seen but using that
13750 : breaks the selectminbits test
13751 for xxx in 'fd_set *' 'int *'; do
13752 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13753 for tmo in 'struct timeval *' 'const struct timeval *'; do
13755 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13756 if ./protochk "$try" $hdrs; then
13757 echo "Your system accepts $xxx."
13766 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13767 case "$d_fd_set" in
13768 $define) dflt="fd_set *" ;;
13777 *) : no select, so pick a harmless default
13784 : check for the select 'width'
13785 case "$selectminbits" in
13786 '') case "$d_select" in
13790 Checking to see on how many bits at a time your select() operates...
13793 #include <sys/types.h>
13795 #$i_systime I_SYS_TIME
13796 #$i_systimek I_SYS_TIME_KERNEL
13801 # ifdef I_SYS_TIME_KERNEL
13804 # include <sys/time.h>
13805 # ifdef I_SYS_TIME_KERNEL
13809 #$i_sysselct I_SYS_SELECT
13810 #ifdef I_SYS_SELECT
13811 #include <sys/select.h>
13813 #$d_socket HAS_SOCKET
13815 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13819 #define S sizeof(*(b))
13821 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13822 #define NBITS (NBYTES * 8)
13831 fp = fopen("try.c", "r");
13837 b = ($selecttype)s;
13838 for (i = 0; i < NBITS; i++)
13842 select(fd + 1, b, 0, 0, &t);
13843 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13844 printf("%d\n", i + 1);
13849 if eval $compile_ok; then
13850 selectminbits=`./try`
13851 case "$selectminbits" in
13853 Cannot figure out on how many bits at a time your select() operates.
13854 I'll play safe and guess it is 32 bits.
13860 *) bits="$selectminbits bits" ;;
13862 echo "Your select() operates on $bits at a time." >&4
13864 rp='What is the minimum number of bits your select() operates on?'
13865 case "$byteorder" in
13866 1234|12345678) dflt=32 ;;
13871 selectminbits="$val"
13875 *) : no select, so pick a harmless default
13882 : Trace out the files included by signal.h, then look for SIGxxx names.
13883 : Remove SIGARRAYSIZE used by HPUX.
13884 : Remove SIGSTKSIZE used by Linux.
13885 : Remove SIGSTKSZ used by Posix.
13886 : Remove SIGTYP void lines used by OS2.
13887 : Some cpps, like os390, dont give the file name anywhere
13888 if [ "X$fieldn" = X ]; then
13889 : Just make some guesses. We check them later.
13890 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13892 xxx=`echo '#include <signal.h>' |
13893 $cppstdin $cppminus $cppflags 2>/dev/null |
13894 $grep '^[ ]*#.*include' |
13895 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13897 : Check this list of files to be sure we have parsed the cpp output ok.
13898 : This will also avoid potentially non-existent files, such
13901 for xx in $xxx /dev/null ; do
13902 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13904 : If we have found no files, at least try signal.h
13905 case "$xxxfiles" in
13906 '') xxxfiles=`./findhdr signal.h` ;;
13909 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13910 print substr($2, 4, 20)
13912 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13913 print substr($3, 4, 20)
13915 : Append some common names just in case the awk scan failed.
13916 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13917 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13918 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13919 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13920 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13922 : generate a few handy files for later
13923 $cat > signal.c <<'EOCP'
13924 #include <sys/types.h>
13925 #include <signal.h>
13929 /* Strange style to avoid deeply-nested #if/#else/#endif */
13932 # define NSIG (_NSIG)
13938 # define NSIG (SIGMAX+1)
13944 # define NSIG (SIG_MAX+1)
13950 # define NSIG (MAXSIG+1)
13956 # define NSIG (MAX_SIG+1)
13961 # ifdef SIGARRAYSIZE
13962 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13968 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13972 /* Default to some arbitrary number that's big enough to get most
13973 of the common signals.
13979 printf("NSIG %d\n", NSIG);
13985 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13987 printf "#ifdef SIG"; printf $1; printf "\n"
13988 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13989 printf $1; printf ");\n"
13993 printf "#endif /* JUST_NSIG */\n";
13994 printf "exit(0);\n}\n";
13997 $cat >signal.awk <<'EOP'
13998 BEGIN { ndups = 0 }
13999 $1 ~ /^NSIG$/ { nsig = $2 }
14000 ($1 !~ /^NSIG$/) && (NF == 2) {
14001 if ($2 > maxsig) { maxsig = $2 }
14002 if (sig_name[$2]) {
14003 dup_name[ndups] = $1
14004 dup_num[ndups] = $2
14016 printf("NSIG %d\n", nsig);
14017 for (n = 1; n < nsig; n++) {
14019 printf("%s %d\n", sig_name[n], sig_num[n])
14022 printf("NUM%d %d\n", n, n)
14025 for (n = 0; n < ndups; n++) {
14026 printf("%s %d\n", dup_name[n], dup_num[n])
14030 $cat >signal_cmd <<EOS
14032 if $test -s signal.lst; then
14033 echo "Using your existing signal.lst file"
14038 $cat >>signal_cmd <<'EOS'
14041 if eval $compile_ok; then
14042 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14044 echo "(I can't seem be able to compile the whole test program)" >&4
14045 echo "(I'll try it in little pieces.)" >&4
14046 set signal -DJUST_NSIG
14047 if eval $compile_ok; then
14048 ./signal$_exe > signal.nsg
14051 echo "I can't seem to figure out how many signals you have." >&4
14052 echo "Guessing 50." >&4
14053 echo 'NSIG 50' > signal.nsg
14055 : Now look at all the signal names, one at a time.
14056 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14057 $cat > signal.c <<EOCP
14058 #include <sys/types.h>
14059 #include <signal.h>
14062 printf("$xx %d\n", SIG${xx});
14067 if eval $compile; then
14068 echo "SIG${xx} found."
14069 ./signal$_exe >> signal.ls1
14071 echo "SIG${xx} NOT found."
14074 if $test -s signal.ls1; then
14075 $cat signal.nsg signal.ls1 |
14076 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14080 if $test -s signal.lst; then
14083 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14084 echo 'kill -l' >signal
14085 set X `csh -f <signal`
14089 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14091 echo $@ | $tr ' ' $trnl | \
14092 $awk '{ printf "%s %d\n", $1, ++s; }
14093 END { printf "NSIG %d\n", ++s }' >signal.lst
14095 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14097 chmod a+x signal_cmd
14098 $eunicefix signal_cmd
14100 : generate list of signal names
14102 case "$sig_name_init" in
14104 *) case "$sig_num_init" in
14105 ''|*,*) doinit=yes ;;
14110 echo "Generating a list of signal names and numbers..." >&4
14112 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14113 sig_name=`$awk 'BEGIN { printf "ZERO " }
14114 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14115 sig_num=`$awk 'BEGIN { printf "0 " }
14116 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14117 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14118 !/^NSIG/ { printf "\"%s\", ", $1 }
14119 END { printf "0\n" }' signal.lst`
14120 sig_num_init=`$awk 'BEGIN { printf "0, " }
14121 !/^NSIG/ { printf "%d, ", $2}
14122 END { printf "0\n"}' signal.lst`
14125 echo "The following $sig_count signals are available:"
14127 echo $sig_name | $awk \
14128 'BEGIN { linelen = 0 }
14130 for (i = 1; i <= NF; i++) {
14131 name = "SIG" $i " "
14132 linelen = linelen + length(name)
14133 if (linelen > 70) {
14135 linelen = length(name)
14141 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14144 case "$sizetype" in
14145 *_t) zzz="$sizetype" ;;
14146 *) zzz="filesize" ;;
14148 echo "Checking the size of $zzz..." >&4
14150 #include <sys/types.h>
14153 printf("%d\n", (int)sizeof($sizetype));
14158 if eval $compile_ok; then
14162 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14165 echo "Your $zzz size is $sizesize bytes."
14170 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14174 : check for socklen_t
14176 echo "Checking to see if you have socklen_t..." >&4
14178 #include <sys/types.h>
14179 #$d_socket HAS_SOCKET
14181 #include <sys/socket.h>
14183 int main() { socklen_t x = 16; }
14186 if eval $compile; then
14188 echo "You have socklen_t."
14191 echo "You do not have socklen_t."
14192 case "$sizetype" in
14193 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14200 : check for type of the size argument to socket calls
14201 case "$d_socket" in
14205 Checking to see what type is the last argument of accept().
14207 hdrs="$define sys/types.h $d_socket sys/socket.h"
14209 case "$d_socklen_t" in
14210 "$define") yyy="$yyy socklen_t"
14212 yyy="$yyy $sizetype int long unsigned"
14213 for xxx in $yyy; do
14214 case "$socksizetype" in
14215 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14216 if ./protochk "$try" $hdrs; then
14217 echo "Your system accepts '$xxx *' for the last argument of accept()."
14218 socksizetype="$xxx"
14223 : In case none of those worked, prompt the user.
14224 case "$socksizetype" in
14225 '') rp='What is the type for socket address structure sizes?'
14232 *) : no sockets, so pick relatively harmless default
14237 : see what type is used for signed size_t
14238 set ssize_t ssizetype int stdio.h sys/types.h
14241 $cat > ssize.c <<EOM
14243 #include <sys/types.h>
14244 #define Size_t $sizetype
14245 #define SSize_t $dflt
14248 if (sizeof(Size_t) == sizeof(SSize_t))
14250 else if (sizeof(Size_t) == sizeof(int))
14259 if eval $compile_ok && ./ssize > /dev/null; then
14260 ssizetype=`./ssize`
14261 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14264 Help! I can't compile and run the ssize_t test program: please enlighten me!
14265 (This is probably a misconfiguration in your system or libraries, and
14266 you really ought to fix it. Still, I'll try anyway.)
14268 I need a type that is the same size as $sizetype, but is guaranteed to
14269 be signed. Common values are ssize_t, int and long.
14272 rp="What signed type is the same size as $sizetype?"
14276 $rm -f ssize ssize.*
14278 : see what type of char stdio uses.
14280 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14281 echo "Your stdio uses unsigned chars." >&4
14282 stdchar="unsigned char"
14284 echo "Your stdio uses signed chars." >&4
14288 : see if time exists
14290 if test "X$d_time" = X -o X"$timetype" = X; then
14291 if set time val -f d_time; eval $csym; $val; then
14292 echo 'time() found.' >&4
14294 rp="What is the type returned by time() on this system?"
14295 set time_t timetype long stdio.h sys/types.h
14298 echo 'time() not found, hope that will do.' >&4
14306 : see what type uids are declared as in the kernel
14308 echo "Looking for the type for user ids returned by getuid()."
14309 set uid_t uidtype xxx stdio.h sys/types.h
14313 xxx=`./findhdr sys/user.h`
14314 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14316 unsigned) dflt="$1 $2" ;;
14320 *) dflt="$uidtype";;
14323 uid_t) echo "uid_t found." ;;
14324 *) rp="What is the type for user ids returned by getuid()?"
14332 *_t) zzz="$uidtype" ;;
14335 echo "Checking the size of $zzz..." >&4
14337 #include <sys/types.h>
14340 printf("%d\n", (int)sizeof($uidtype));
14345 if eval $compile_ok; then
14349 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14352 echo "Your $zzz is $uidsize bytes long."
14357 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14362 *_t) zzz="$uidtype" ;;
14365 echo "Checking the sign of $zzz..." >&4
14367 #include <sys/types.h>
14378 if eval $compile; then
14382 echo "(I can't execute the test program--guessing unsigned.)" >&4
14386 1) echo "Your $zzz is unsigned." ;;
14387 -1) echo "Your $zzz is signed." ;;
14393 echo "(I can't compile the test program--guessing unsigned.)" >&4
14399 $echo "Checking the format string to be used for uids..." >&4
14402 -1) if $test X"$uidsize" = X"$ivsize"; then
14403 uidformat="$ivdformat"
14405 if $test X"$uidsize" = X"$longsize"; then
14408 if $test X"$uidsize" = X"$intsize"; then
14411 if $test X"$uidsize" = X"$shortsize"; then
14418 *) if $test X"$uidsize" = X"$uvsize"; then
14419 uidformat="$uvuformat"
14421 if $test X"$uidsize" = X"$longsize"; then
14424 if $test X"$uidsize" = X"$intsize"; then
14427 if $test X"$uidsize" = X"$shortsize"; then
14436 : see if dbm.h is available
14437 : see if dbmclose exists
14438 set dbmclose d_dbmclose
14441 case "$d_dbmclose" in
14451 *) set rpcsvc/dbm.h i_rpcsvcdbm
14456 *) echo "We won't be including <dbm.h>"
14466 : see if this is a sys/file.h system
14471 : do we need to include sys/file.h ?
14475 if $h_sysfile; then
14477 echo "We'll be including <sys/file.h>." >&4
14480 echo "We won't be including <sys/file.h>." >&4
14490 : see if fcntl.h is there
14495 : see if we can include fcntl.h
14501 echo "We'll be including <fcntl.h>." >&4
14504 if $h_sysfile; then
14505 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14507 echo "We won't be including <fcntl.h>." >&4
14519 : see if this is a iconv.h system
14520 set iconv.h i_iconv
14523 : see if this is a ieeefp.h system
14524 set ieeefp.h i_ieeefp
14527 : see if this is a libutil.h system
14528 set libutil.h i_libutil
14531 : see if locale.h is available
14532 set locale.h i_locale
14535 : see if mach cthreads are available
14536 if test "X$usethreads" = "X$define"; then
14537 set mach/cthreads.h i_machcthr
14540 i_machcthr="$undef"
14545 : see if this is a math.h system
14549 : see if this is a mntent.h system
14550 set mntent.h i_mntent
14553 : see if ndbm.h is available
14558 : see if dbm_open exists
14559 set dbm_open d_dbm_open
14561 case "$d_dbm_open" in
14564 echo "We won't be including <ndbm.h>"
14573 : see if net/errno.h is available
14575 set net/errno.h val
14578 : Unfortunately, it causes problems on some systems. Arrgh.
14581 cat > try.c <<'EOM'
14584 #include <net/errno.h>
14590 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14591 echo "We'll be including <net/errno.h>." >&4
14593 echo "We won't be including <net/errno.h>." >&4
14602 : see if netinet/tcp.h is available
14603 set netinet/tcp.h i_netinettcp
14606 : see if this is a poll.h system
14610 : see if this is a prot.h system
14615 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14616 $cat <<'EOSH' > Cppsym.know
14617 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14618 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14619 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14620 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14621 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14622 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14623 bull c cadmus clipper CMU COFF COMPILER_VERSION
14624 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14625 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14626 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14627 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14628 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14629 H3050R H3050RX hbullx20 hcx host_mips
14630 hp200 hp300 hp700 HP700 hp800 hp9000
14631 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14632 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14633 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14634 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14635 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14636 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14637 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14638 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14639 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14640 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14641 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14642 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14643 MATH_HAS_NO_SIDE_EFFECTS
14644 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14645 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14646 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14647 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14648 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14649 NetBSD news1500 news1700 news1800 news1900 news3700
14650 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
14651 ns32016 ns32332 ns32k nsc32000
14652 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14653 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14654 pc532 pdp11 PGC PIC plexus PORTAR posix
14655 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14656 POSIX_C_SOURCE POSIX_SOURCE POWER
14657 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14658 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14659 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14660 sony sony_news sonyrisc sparc sparclite spectrum
14661 stardent stdc STDC_EXT stratos sun sun3 sun386
14662 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14663 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14664 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14665 sysV68 sysV88 Tek4132 Tek4300 titan
14666 tower tower32 tower32_200 tower32_600 tower32_700
14667 tower32_800 tower32_850 tss
14668 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14669 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14670 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14671 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14672 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14673 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14676 # Maybe put other stuff here too.
14677 cat <<EOSH >>Cppsym.know
14680 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14681 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14682 $cat Cppsym.know > Cppsym.c
14683 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
14684 $rm -f Cppsym.a Cppsym.b Cppsym.c
14685 cat <<EOSH > Cppsym
14687 if $test \$# -gt 0; then
14688 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14689 if $test -s Cppsym.got; then
14696 $tr " " "$trnl" | ./Cppsym.try
14702 cat <<EOSH > Cppsym.try
14704 cat <<'EOCP' > try.c
14710 cat <<'EOSH' >> Cppsym.try
14712 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
14713 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
14714 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
14715 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
14719 cat <<EOSH >> Cppsym.try
14721 case "$osname-$gccversion" in
14722 irix-) ccflags="\$ccflags -woff 1178" ;;
14723 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14725 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
14727 chmod +x Cppsym.try
14728 $eunicefix Cppsym.try
14729 ./Cppsym < Cppsym.know > Cppsym.true
14730 : now check the C compiler for additional symbols
14731 postprocess_cc_v=''
14733 aix) postprocess_cc_v="|$tr , ' '" ;;
14740 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14743 -D*) echo "\$i" | $sed 's/^-D//';;
14744 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14749 postprocess_cc_v=''
14752 ./ccsym > ccsym1.raw
14753 if $test -s ccsym1.raw; then
14754 $sort ccsym1.raw | $uniq >ccsym.raw
14756 mv ccsym1.raw ccsym.raw
14759 $awk '/\=/ { print $0; next }
14760 { print $0"=1" }' ccsym.raw >ccsym.list
14761 $awk '/\=/ { print $0; next }
14762 { print $0"=1" }' Cppsym.true >ccsym.true
14763 $comm -13 ccsym.true ccsym.list >ccsym.own
14764 $comm -12 ccsym.true ccsym.list >ccsym.com
14765 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14767 if $test -z ccsym.raw; then
14768 echo "Your C compiler doesn't seem to define any symbols!" >&4
14770 echo "However, your C preprocessor defines the following symbols:"
14773 cppsymbols=`$cat Cppsym.true`
14774 cppsymbols=`echo $cppsymbols`
14775 cppccsymbols="$cppsymbols"
14777 if $test -s ccsym.com; then
14778 echo "Your C compiler and pre-processor define these symbols:"
14779 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14782 cppccsymbols=`$cat ccsym.com`
14783 cppccsymbols=`echo $cppccsymbols`
14784 $test "$silent" || sleep 1
14786 if $test -s ccsym.cpp; then
14787 $test "$also" && echo " "
14788 echo "Your C pre-processor ${also}defines the following symbols:"
14789 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14791 cppsymbols=`$cat ccsym.cpp`
14792 cppsymbols=`echo $cppsymbols`
14793 $test "$silent" || sleep 1
14795 if $test -s ccsym.own; then
14796 $test "$also" && echo " "
14797 echo "Your C compiler ${also}defines the following cpp symbols:"
14798 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14799 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14800 ccsymbols=`$cat ccsym.own`
14801 ccsymbols=`echo $ccsymbols`
14802 $test "$silent" || sleep 1
14805 $rm -f ccsym* Cppsym.*
14807 : see if this is a termio system
14811 if $test `./findhdr termios.h`; then
14812 set tcsetattr i_termios
14818 "$define") echo "You have POSIX termios.h... good!" >&4;;
14819 *) if ./Cppsym pyr; then
14820 case "`/bin/universe`" in
14821 ucb) if $test `./findhdr sgtty.h`; then
14823 echo "<sgtty.h> found." >&4
14825 echo "System is pyramid with BSD universe."
14826 echo "<sgtty.h> not found--you could have problems." >&4
14828 *) if $test `./findhdr termio.h`; then
14830 echo "<termio.h> found." >&4
14832 echo "System is pyramid with USG universe."
14833 echo "<termio.h> not found--you could have problems." >&4
14837 if $test `./findhdr termio.h`; then
14838 echo "<termio.h> found." >&4
14840 elif $test `./findhdr sgtty.h`; then
14841 echo "<sgtty.h> found." >&4
14844 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14847 if $test `./findhdr sgtty.h`; then
14848 echo "<sgtty.h> found." >&4
14850 elif $test `./findhdr termio.h`; then
14851 echo "<termio.h> found." >&4
14854 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14858 set i_termio; eval $setvar
14859 val=$val2; set i_sgtty; eval $setvar
14860 val=$val3; set i_termios; eval $setvar
14862 : see if this is a shadow.h system
14863 set shadow.h i_shadow
14866 : see if this is a socks.h system
14867 set socks.h i_socks
14870 : see if stdarg is available
14872 if $test `./findhdr stdarg.h`; then
14873 echo "<stdarg.h> found." >&4
14876 echo "<stdarg.h> NOT found." >&4
14880 : see if varags is available
14882 if $test `./findhdr varargs.h`; then
14883 echo "<varargs.h> found." >&4
14885 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14888 : set up the varargs testing programs
14889 $cat > varargs.c <<EOP
14891 #include <stdarg.h>
14894 #include <varargs.h>
14898 int f(char *p, ...)
14912 p = va_arg(ap, char *);
14917 $cat > varargs <<EOP
14919 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14928 : now check which varargs header should be included
14933 if `./varargs I_STDARG`; then
14935 elif `./varargs I_VARARGS`; then
14940 if `./varargs I_VARARGS`; then
14947 echo "I could not find the definition for va_dcl... You have problems..." >&4
14948 val="$undef"; set i_stdarg; eval $setvar
14949 val="$undef"; set i_varargs; eval $setvar
14954 case "$i_varhdr" in
14956 val="$define"; set i_stdarg; eval $setvar
14957 val="$undef"; set i_varargs; eval $setvar
14960 val="$undef"; set i_stdarg; eval $setvar
14961 val="$define"; set i_varargs; eval $setvar
14964 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14968 : see if stddef is available
14969 set stddef.h i_stddef
14972 : see if this is a sunmath.h system
14973 set sunmath.h i_sunmath
14976 : see if sys/access.h is available
14977 set sys/access.h i_sysaccess
14980 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14981 set sys/filio.h i_sysfilio
14984 if $test `./findhdr sys/ioctl.h`; then
14986 echo '<sys/ioctl.h> found.' >&4
14989 if $test $i_sysfilio = "$define"; then
14990 echo '<sys/ioctl.h> NOT found.' >&4
14992 $test $i_sgtty = "$define" && xxx="sgtty.h"
14993 $test $i_termio = "$define" && xxx="termio.h"
14994 $test $i_termios = "$define" && xxx="termios.h"
14995 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15002 : see if this is a syslog.h system
15003 set syslog.h i_syslog
15007 : see if this is a sys/mode.h system
15008 set sys/mode.h i_sysmode
15011 : see if sys/resource.h has to be included
15012 set sys/resource.h i_sysresrc
15015 : see if sys/security.h is available
15016 set sys/security.h i_syssecrt
15019 : see if this is a sys/statvfs.h system
15020 set sys/statvfs.h i_sysstatvfs
15023 : see if this is a sys/uio.h system
15024 set sys/uio.h i_sysuio
15027 : see if this is a sys/un.h system
15028 set sys/un.h i_sysun
15032 : see if this is a sys/utsname.h system
15033 set sys/utsname.h i_sysutsname
15036 : see if this is a syswait system
15037 set sys/wait.h i_syswait
15040 : see if this is a ustat.h system
15041 set ustat.h i_ustat
15044 : see if this is an utime system
15045 set utime.h i_utime
15048 : see if this is a values.h system
15049 set values.h i_values
15052 : see if this is a vfork system
15055 set vfork.h i_vfork
15063 : see if gdbm.h is available
15068 : see if gdbm_open exists
15069 set gdbm_open d_gdbm_open
15071 case "$d_gdbm_open" in
15074 echo "We won't be including <gdbm.h>"
15084 echo "Looking for extensions..." >&4
15085 : If we are using the old config.sh, known_extensions may contain
15086 : old or inaccurate or duplicate values.
15087 known_extensions=''
15088 nonxs_extensions=''
15089 : We do not use find because it might not be available.
15090 : We do not just use MANIFEST because the user may have dropped
15091 : some additional extensions into the source tree and expect them
15094 : Function to recursively find available extensions, ignoring DynaLoader
15095 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15099 DynaLoader|dynaload) ;;
15101 if $test -f $xxx/$xxx.xs; then
15102 known_extensions="$known_extensions $1$xxx";
15103 elif $test -f $xxx/Makefile.PL; then
15104 nonxs_extensions="$nonxs_extensions $1$xxx";
15106 if $test -d $xxx -a $# -lt 10; then
15109 eval $find_extensions;
15121 eval $find_extensions
15122 set X $nonxs_extensions
15124 nonxs_extensions="$*"
15125 set X $known_extensions
15127 known_extensions="$*"
15130 : Now see which are supported on this system.
15132 for xxx in $known_extensions ; do
15136 $define) avail_ext="$avail_ext $xxx" ;;
15139 GDBM_File|gdbm_fil)
15141 $define) avail_ext="$avail_ext $xxx" ;;
15144 NDBM_File|ndbm_fil)
15147 case "$osname-$use64bitint" in
15150 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15153 *) avail_ext="$avail_ext $xxx" ;;
15158 ODBM_File|odbm_fil)
15159 case "${i_dbm}${i_rpcsvcdbm}" in
15161 case "$osname-$use64bitint" in
15164 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15167 *) avail_ext="$avail_ext $xxx" ;;
15173 case "$useposix" in
15174 true|define|y) avail_ext="$avail_ext $xxx" ;;
15178 case "$useopcode" in
15179 true|define|y) avail_ext="$avail_ext $xxx" ;;
15183 case "$d_socket" in
15184 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15187 Sys/Syslog|sys/syslog)
15188 : XXX syslog requires socket
15189 case "$d_socket" in
15190 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15194 case "$usethreads" in
15195 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15199 : XXX Do we need a useipcsysv variable here
15200 case "${d_msg}${d_sem}${d_shm}" in
15201 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15204 *) avail_ext="$avail_ext $xxx"
15213 : Now see which nonxs extensions are supported on this system.
15214 : For now assume all are.
15216 for xxx in $nonxs_extensions ; do
15218 *) nonxs_ext="$nonxs_ext $xxx"
15230 A number of extensions are supplied with $package. You may choose to
15231 compile these extensions for dynamic loading (the default), compile
15232 them into the $package executable (static loading), or not include
15233 them at all. Answer "none" to include no extensions.
15234 Note that DynaLoader is always built and need not be mentioned here.
15237 case "$dynamic_ext" in
15238 '') dflt="$avail_ext" ;;
15239 *) dflt="$dynamic_ext"
15240 # Perhaps we are reusing an old out-of-date config.sh.
15243 if test X"$dynamic_ext" != X"$avail_ext"; then
15245 NOTICE: Your previous config.sh list may be incorrect.
15246 The extensions now available to you are
15248 but the default list from your previous config.sh is
15260 rp="What extensions do you wish to load dynamically?"
15263 none) dynamic_ext=' ' ;;
15264 *) dynamic_ext="$ans" ;;
15267 case "$static_ext" in
15269 : Exclude those already listed in dynamic linking
15271 for xxx in $avail_ext; do
15272 case " $dynamic_ext " in
15274 *) dflt="$dflt $xxx" ;;
15281 *) dflt="$static_ext"
15288 rp="What extensions do you wish to load statically?"
15291 none) static_ext=' ' ;;
15292 *) static_ext="$ans" ;;
15297 A number of extensions are supplied with $package. Answer "none"
15298 to include no extensions.
15299 Note that DynaLoader is always built and need not be mentioned here.
15302 case "$static_ext" in
15303 '') dflt="$avail_ext" ;;
15304 *) dflt="$static_ext"
15305 # Perhaps we are reusing an old out-of-date config.sh.
15308 if test X"$static_ext" != X"$avail_ext"; then
15310 NOTICE: Your previous config.sh list may be incorrect.
15311 The extensions now available to you are
15313 but the default list from your previous config.sh is
15322 : Exclude those that are not xs extensions
15326 rp="What extensions do you wish to include?"
15329 none) static_ext=' ' ;;
15330 *) static_ext="$ans" ;;
15335 set X $dynamic_ext $static_ext $nonxs_ext
15339 : Remove libraries needed only for extensions
15340 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15341 : The exception is SunOS 4.x, which needs them.
15342 case "${osname}X${osvers}" in
15346 *) case "$usedl" in
15347 $define|true|[yY]*)
15348 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15352 *) perllibs="$libs"
15358 : Remove build directory name from cppstdin so it can be used from
15359 : either the present location or the final installed location.
15361 : Get out of the UU directory to get correct path name.
15363 case "$cppstdin" in
15365 echo "Stripping down cppstdin path name"
15371 : end of configuration questions
15373 echo "End of configuration questions."
15376 : back to where it started
15377 if test -d ../UU; then
15381 : configuration may be patched via a 'config.over' file
15382 if $test -f config.over; then
15385 rp='I see a config.over file. Do you wish to load it?'
15388 n*) echo "OK, I'll ignore it.";;
15390 echo "Configuration override changes have been loaded."
15395 : in case they want portability, strip down executable paths
15396 case "$d_portable" in
15399 echo "Stripping down executable paths..." >&4
15400 for file in $loclist $trylist; do
15402 eval $file=`basename $temp`
15407 : create config.sh file
15409 echo "Creating config.sh..." >&4
15410 $spitshell <<EOT >config.sh
15413 # This file was produced by running the Configure script. It holds all the
15414 # definitions figured out by Configure. Should you modify one of these values,
15415 # do not forget to propagate your changes by running "Configure -der". You may
15416 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15419 # Package name : $package
15420 # Source directory : $src
15421 # Configuration time: $cf_time
15422 # Configured by : $cf_by
15423 # Target system : $myuname
15433 Revision='$Revision'
15440 alignbytes='$alignbytes'
15441 ansi2knr='$ansi2knr'
15442 aphostname='$aphostname'
15443 api_revision='$api_revision'
15444 api_subversion='$api_subversion'
15445 api_version='$api_version'
15446 api_versionstring='$api_versionstring'
15449 archlibexp='$archlibexp'
15450 archname64='$archname64'
15451 archname='$archname'
15452 archobjs='$archobjs'
15457 bincompat5005='$bincompat5005'
15461 byteorder='$byteorder'
15463 castflags='$castflags'
15466 cccdlflags='$cccdlflags'
15467 ccdlflags='$ccdlflags'
15469 ccflags_uselargefiles='$ccflags_uselargefiles'
15471 ccsymbols='$ccsymbols'
15472 ccversion='$ccversion'
15474 cf_email='$cf_email'
15476 charsize='$charsize'
15480 clocktype='$clocktype'
15482 compress='$compress'
15483 contains='$contains'
15487 cpp_stuff='$cpp_stuff'
15488 cppccsymbols='$cppccsymbols'
15489 cppflags='$cppflags'
15491 cppminus='$cppminus'
15493 cppstdin='$cppstdin'
15494 cppsymbols='$cppsymbols'
15495 crosscompile='$crosscompile'
15496 cryptlib='$cryptlib'
15498 d_Gconvert='$d_Gconvert'
15499 d_PRIEUldbl='$d_PRIEUldbl'
15500 d_PRIFUldbl='$d_PRIFUldbl'
15501 d_PRIGUldbl='$d_PRIGUldbl'
15502 d_PRIXU64='$d_PRIXU64'
15503 d_PRId64='$d_PRId64'
15504 d_PRIeldbl='$d_PRIeldbl'
15505 d_PRIfldbl='$d_PRIfldbl'
15506 d_PRIgldbl='$d_PRIgldbl'
15507 d_PRIi64='$d_PRIi64'
15508 d_PRIo64='$d_PRIo64'
15509 d_PRIu64='$d_PRIu64'
15510 d_PRIx64='$d_PRIx64'
15511 d_SCNfldbl='$d_SCNfldbl'
15512 d_access='$d_access'
15513 d_accessx='$d_accessx'
15515 d_archlib='$d_archlib'
15518 d_attribut='$d_attribut'
15521 d_bincompat5005='$d_bincompat5005'
15523 d_bsdgetpgrp='$d_bsdgetpgrp'
15524 d_bsdsetpgrp='$d_bsdsetpgrp'
15526 d_casti32='$d_casti32'
15527 d_castneg='$d_castneg'
15528 d_charvspr='$d_charvspr'
15530 d_chroot='$d_chroot'
15531 d_chsize='$d_chsize'
15532 d_closedir='$d_closedir'
15536 d_cuserid='$d_cuserid'
15537 d_dbl_dig='$d_dbl_dig'
15538 d_difftime='$d_difftime'
15539 d_dirnamlen='$d_dirnamlen'
15540 d_dlerror='$d_dlerror'
15541 d_dlopen='$d_dlopen'
15542 d_dlsymun='$d_dlsymun'
15543 d_dosuid='$d_dosuid'
15544 d_drand48proto='$d_drand48proto'
15546 d_eaccess='$d_eaccess'
15547 d_endgrent='$d_endgrent'
15548 d_endhent='$d_endhent'
15549 d_endnent='$d_endnent'
15550 d_endpent='$d_endpent'
15551 d_endpwent='$d_endpwent'
15552 d_endsent='$d_endsent'
15553 d_eofnblk='$d_eofnblk'
15554 d_eunice='$d_eunice'
15555 d_fchmod='$d_fchmod'
15556 d_fchown='$d_fchown'
15558 d_fcntl_can_lock='$d_fcntl_can_lock'
15559 d_fd_macros='$d_fd_macros'
15560 d_fd_set='$d_fd_set'
15561 d_fds_bits='$d_fds_bits'
15562 d_fgetpos='$d_fgetpos'
15563 d_flexfnam='$d_flexfnam'
15566 d_fpathconf='$d_fpathconf'
15567 d_fpos64_t='$d_fpos64_t'
15568 d_frexpl='$d_frexpl'
15569 d_fs_data_s='$d_fs_data_s'
15570 d_fseeko='$d_fseeko'
15571 d_fsetpos='$d_fsetpos'
15572 d_fstatfs='$d_fstatfs'
15573 d_fstatvfs='$d_fstatvfs'
15574 d_ftello='$d_ftello'
15576 d_getcwd='$d_getcwd'
15577 d_getespwnam='$d_getespwnam'
15578 d_getfsstat='$d_getfsstat'
15579 d_getgrent='$d_getgrent'
15580 d_getgrps='$d_getgrps'
15581 d_gethbyaddr='$d_gethbyaddr'
15582 d_gethbyname='$d_gethbyname'
15583 d_gethent='$d_gethent'
15584 d_gethname='$d_gethname'
15585 d_gethostprotos='$d_gethostprotos'
15586 d_getlogin='$d_getlogin'
15587 d_getmnt='$d_getmnt'
15588 d_getmntent='$d_getmntent'
15589 d_getnbyaddr='$d_getnbyaddr'
15590 d_getnbyname='$d_getnbyname'
15591 d_getnent='$d_getnent'
15592 d_getnetprotos='$d_getnetprotos'
15593 d_getpbyname='$d_getpbyname'
15594 d_getpbynumber='$d_getpbynumber'
15595 d_getpent='$d_getpent'
15596 d_getpgid='$d_getpgid'
15597 d_getpgrp2='$d_getpgrp2'
15598 d_getpgrp='$d_getpgrp'
15599 d_getppid='$d_getppid'
15600 d_getprior='$d_getprior'
15601 d_getprotoprotos='$d_getprotoprotos'
15602 d_getprpwnam='$d_getprpwnam'
15603 d_getpwent='$d_getpwent'
15604 d_getsbyname='$d_getsbyname'
15605 d_getsbyport='$d_getsbyport'
15606 d_getsent='$d_getsent'
15607 d_getservprotos='$d_getservprotos'
15608 d_getspnam='$d_getspnam'
15609 d_gettimeod='$d_gettimeod'
15610 d_gnulibc='$d_gnulibc'
15611 d_grpasswd='$d_grpasswd'
15612 d_hasmntopt='$d_hasmntopt'
15616 d_inetaton='$d_inetaton'
15617 d_int64_t='$d_int64_t'
15618 d_isascii='$d_isascii'
15620 d_isnanl='$d_isnanl'
15621 d_killpg='$d_killpg'
15622 d_lchown='$d_lchown'
15623 d_ldbl_dig='$d_ldbl_dig'
15625 d_locconv='$d_locconv'
15627 d_longdbl='$d_longdbl'
15628 d_longlong='$d_longlong'
15629 d_lseekproto='$d_lseekproto'
15631 d_madvise='$d_madvise'
15633 d_mbstowcs='$d_mbstowcs'
15634 d_mbtowc='$d_mbtowc'
15635 d_memchr='$d_memchr'
15636 d_memcmp='$d_memcmp'
15637 d_memcpy='$d_memcpy'
15638 d_memmove='$d_memmove'
15639 d_memset='$d_memset'
15641 d_mkdtemp='$d_mkdtemp'
15642 d_mkfifo='$d_mkfifo'
15643 d_mkstemp='$d_mkstemp'
15644 d_mkstemps='$d_mkstemps'
15645 d_mktime='$d_mktime'
15648 d_mprotect='$d_mprotect'
15650 d_msg_ctrunc='$d_msg_ctrunc'
15651 d_msg_dontroute='$d_msg_dontroute'
15652 d_msg_oob='$d_msg_oob'
15653 d_msg_peek='$d_msg_peek'
15654 d_msg_proxy='$d_msg_proxy'
15655 d_msgctl='$d_msgctl'
15656 d_msgget='$d_msgget'
15657 d_msgrcv='$d_msgrcv'
15658 d_msgsnd='$d_msgsnd'
15660 d_munmap='$d_munmap'
15661 d_mymalloc='$d_mymalloc'
15663 d_nv_preserves_uv='$d_nv_preserves_uv'
15664 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15665 d_off64_t='$d_off64_t'
15666 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15667 d_oldpthreads='$d_oldpthreads'
15668 d_oldsock='$d_oldsock'
15670 d_pathconf='$d_pathconf'
15672 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15673 d_phostname='$d_phostname'
15676 d_portable='$d_portable'
15677 d_pthread_yield='$d_pthread_yield'
15679 d_pwchange='$d_pwchange'
15680 d_pwclass='$d_pwclass'
15681 d_pwcomment='$d_pwcomment'
15682 d_pwexpire='$d_pwexpire'
15683 d_pwgecos='$d_pwgecos'
15684 d_pwpasswd='$d_pwpasswd'
15685 d_pwquota='$d_pwquota'
15688 d_readdir='$d_readdir'
15689 d_readlink='$d_readlink'
15690 d_rename='$d_rename'
15691 d_rewinddir='$d_rewinddir'
15693 d_safebcpy='$d_safebcpy'
15694 d_safemcpy='$d_safemcpy'
15695 d_sanemcmp='$d_sanemcmp'
15696 d_sched_yield='$d_sched_yield'
15697 d_scm_rights='$d_scm_rights'
15698 d_seekdir='$d_seekdir'
15699 d_select='$d_select'
15701 d_semctl='$d_semctl'
15702 d_semctl_semid_ds='$d_semctl_semid_ds'
15703 d_semctl_semun='$d_semctl_semun'
15704 d_semget='$d_semget'
15706 d_setegid='$d_setegid'
15707 d_seteuid='$d_seteuid'
15708 d_setgrent='$d_setgrent'
15709 d_setgrps='$d_setgrps'
15710 d_sethent='$d_sethent'
15711 d_setlinebuf='$d_setlinebuf'
15712 d_setlocale='$d_setlocale'
15713 d_setnent='$d_setnent'
15714 d_setpent='$d_setpent'
15715 d_setpgid='$d_setpgid'
15716 d_setpgrp2='$d_setpgrp2'
15717 d_setpgrp='$d_setpgrp'
15718 d_setprior='$d_setprior'
15719 d_setproctitle='$d_setproctitle'
15720 d_setpwent='$d_setpwent'
15721 d_setregid='$d_setregid'
15722 d_setresgid='$d_setresgid'
15723 d_setresuid='$d_setresuid'
15724 d_setreuid='$d_setreuid'
15725 d_setrgid='$d_setrgid'
15726 d_setruid='$d_setruid'
15727 d_setsent='$d_setsent'
15728 d_setsid='$d_setsid'
15729 d_setvbuf='$d_setvbuf'
15733 d_shmatprototype='$d_shmatprototype'
15734 d_shmctl='$d_shmctl'
15736 d_shmget='$d_shmget'
15737 d_sigaction='$d_sigaction'
15738 d_sigsetjmp='$d_sigsetjmp'
15739 d_socket='$d_socket'
15740 d_socklen_t='$d_socklen_t'
15741 d_sockpair='$d_sockpair'
15742 d_socks5_init='$d_socks5_init'
15744 d_statblks='$d_statblks'
15745 d_statfs_f_flags='$d_statfs_f_flags'
15746 d_statfs_s='$d_statfs_s'
15747 d_statvfs='$d_statvfs'
15748 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15749 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15750 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
15751 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
15752 d_stdio_stream_array='$d_stdio_stream_array'
15753 d_stdiobase='$d_stdiobase'
15754 d_stdstdio='$d_stdstdio'
15755 d_strchr='$d_strchr'
15756 d_strcoll='$d_strcoll'
15757 d_strctcpy='$d_strctcpy'
15758 d_strerrm='$d_strerrm'
15759 d_strerror='$d_strerror'
15760 d_strtod='$d_strtod'
15761 d_strtol='$d_strtol'
15762 d_strtold='$d_strtold'
15763 d_strtoll='$d_strtoll'
15764 d_strtoul='$d_strtoul'
15765 d_strtoull='$d_strtoull'
15766 d_strtouq='$d_strtouq'
15767 d_strxfrm='$d_strxfrm'
15768 d_suidsafe='$d_suidsafe'
15769 d_symlink='$d_symlink'
15770 d_syscall='$d_syscall'
15771 d_sysconf='$d_sysconf'
15772 d_sysernlst='$d_sysernlst'
15773 d_syserrlst='$d_syserrlst'
15774 d_system='$d_system'
15775 d_tcgetpgrp='$d_tcgetpgrp'
15776 d_tcsetpgrp='$d_tcsetpgrp'
15777 d_telldir='$d_telldir'
15778 d_telldirproto='$d_telldirproto'
15781 d_truncate='$d_truncate'
15782 d_tzname='$d_tzname'
15785 d_union_semun='$d_union_semun'
15787 d_vendorarch='$d_vendorarch'
15788 d_vendorbin='$d_vendorbin'
15789 d_vendorlib='$d_vendorlib'
15791 d_void_closedir='$d_void_closedir'
15792 d_voidsig='$d_voidsig'
15793 d_voidtty='$d_voidtty'
15794 d_volatile='$d_volatile'
15795 d_vprintf='$d_vprintf'
15797 d_waitpid='$d_waitpid'
15798 d_wcstombs='$d_wcstombs'
15799 d_wctomb='$d_wctomb'
15802 db_hashtype='$db_hashtype'
15803 db_prefixtype='$db_prefixtype'
15804 defvoidused='$defvoidused'
15805 direntrytype='$direntrytype'
15808 doublesize='$doublesize'
15810 dynamic_ext='$dynamic_ext'
15816 eunicefix='$eunicefix'
15819 extensions='$extensions'
15820 fflushNULL='$fflushNULL'
15821 fflushall='$fflushall'
15823 firstmakefile='$firstmakefile'
15825 fpossize='$fpossize'
15826 fpostype='$fpostype'
15827 freetype='$freetype'
15829 full_csh='$full_csh'
15830 full_sed='$full_sed'
15831 gccosandvers='$gccosandvers'
15832 gccversion='$gccversion'
15833 gidformat='$gidformat'
15839 groupcat='$groupcat'
15840 groupstype='$groupstype'
15843 h_sysfile='$h_sysfile'
15854 i_arpainet='$i_arpainet'
15855 i_bsdioctl='$i_bsdioctl'
15858 i_dirent='$i_dirent'
15866 i_ieeefp='$i_ieeefp'
15867 i_inttypes='$i_inttypes'
15868 i_libutil='$i_libutil'
15869 i_limits='$i_limits'
15870 i_locale='$i_locale'
15871 i_machcthr='$i_machcthr'
15872 i_malloc='$i_malloc'
15874 i_memory='$i_memory'
15875 i_mntent='$i_mntent'
15878 i_neterrno='$i_neterrno'
15879 i_netinettcp='$i_netinettcp'
15883 i_pthread='$i_pthread'
15885 i_rpcsvcdbm='$i_rpcsvcdbm'
15888 i_shadow='$i_shadow'
15890 i_stdarg='$i_stdarg'
15891 i_stddef='$i_stddef'
15892 i_stdlib='$i_stdlib'
15893 i_string='$i_string'
15894 i_sunmath='$i_sunmath'
15895 i_sysaccess='$i_sysaccess'
15896 i_sysdir='$i_sysdir'
15897 i_sysfile='$i_sysfile'
15898 i_sysfilio='$i_sysfilio'
15900 i_sysioctl='$i_sysioctl'
15901 i_syslog='$i_syslog'
15902 i_sysmman='$i_sysmman'
15903 i_sysmode='$i_sysmode'
15904 i_sysmount='$i_sysmount'
15905 i_sysndir='$i_sysndir'
15906 i_sysparam='$i_sysparam'
15907 i_sysresrc='$i_sysresrc'
15908 i_syssecrt='$i_syssecrt'
15909 i_sysselct='$i_sysselct'
15910 i_syssockio='$i_syssockio'
15911 i_sysstat='$i_sysstat'
15912 i_sysstatfs='$i_sysstatfs'
15913 i_sysstatvfs='$i_sysstatvfs'
15914 i_systime='$i_systime'
15915 i_systimek='$i_systimek'
15916 i_systimes='$i_systimes'
15917 i_systypes='$i_systypes'
15918 i_sysuio='$i_sysuio'
15920 i_sysutsname='$i_sysutsname'
15921 i_sysvfs='$i_sysvfs'
15922 i_syswait='$i_syswait'
15923 i_termio='$i_termio'
15924 i_termios='$i_termios'
15926 i_unistd='$i_unistd'
15929 i_values='$i_values'
15930 i_varargs='$i_varargs'
15931 i_varhdr='$i_varhdr'
15933 ignore_versioned_solibs='$ignore_versioned_solibs'
15934 inc_version_list='$inc_version_list'
15935 inc_version_list_init='$inc_version_list_init'
15938 installarchlib='$installarchlib'
15939 installbin='$installbin'
15940 installman1dir='$installman1dir'
15941 installman3dir='$installman3dir'
15942 installprefix='$installprefix'
15943 installprefixexp='$installprefixexp'
15944 installprivlib='$installprivlib'
15945 installscript='$installscript'
15946 installsitearch='$installsitearch'
15947 installsitebin='$installsitebin'
15948 installsitelib='$installsitelib'
15949 installstyle='$installstyle'
15950 installusrbinperl='$installusrbinperl'
15951 installvendorarch='$installvendorarch'
15952 installvendorbin='$installvendorbin'
15953 installvendorlib='$installvendorlib'
15955 ivdformat='$ivdformat'
15958 known_extensions='$known_extensions'
15961 lddlflags='$lddlflags'
15963 ldflags_uselargefiles='$ldflags_uselargefiles'
15964 ldlibpthname='$ldlibpthname'
15971 libsdirs='$libsdirs'
15972 libsfiles='$libsfiles'
15973 libsfound='$libsfound'
15974 libspath='$libspath'
15975 libswanted='$libswanted'
15976 libswanted_uselargefiles='$libswanted_uselargefiles'
15982 locincpth='$locincpth'
15983 loclibpth='$loclibpth'
15984 longdblsize='$longdblsize'
15985 longlongsize='$longlongsize'
15986 longsize='$longsize'
15990 lseeksize='$lseeksize'
15991 lseektype='$lseektype'
15995 make_set_make='$make_set_make'
15996 mallocobj='$mallocobj'
15997 mallocsrc='$mallocsrc'
15998 malloctype='$malloctype'
16000 man1direxp='$man1direxp'
16003 man3direxp='$man3direxp'
16005 mips_type='$mips_type'
16007 mmaptype='$mmaptype'
16008 modetype='$modetype'
16010 multiarch='$multiarch'
16012 myarchname='$myarchname'
16013 mydomain='$mydomain'
16014 myhostname='$myhostname'
16017 netdb_hlen_type='$netdb_hlen_type'
16018 netdb_host_type='$netdb_host_type'
16019 netdb_name_type='$netdb_name_type'
16020 netdb_net_type='$netdb_net_type'
16023 nm_so_opt='$nm_so_opt'
16024 nonxs_ext='$nonxs_ext'
16026 nvEUformat='$nvEUformat'
16027 nvFUformat='$nvFUformat'
16028 nvGUformat='$nvGUformat'
16029 nveformat='$nveformat'
16030 nvfformat='$nvfformat'
16031 nvgformat='$nvgformat'
16034 o_nonblock='$o_nonblock'
16036 old_pthread_create_joinable='$old_pthread_create_joinable'
16037 optimize='$optimize'
16038 orderlib='$orderlib'
16041 otherlibdirs='$otherlibdirs'
16045 patchlevel='$patchlevel'
16046 path_sep='$path_sep'
16049 perladmin='$perladmin'
16050 perllibs='$perllibs'
16051 perlpath='$perlpath'
16053 phostname='$phostname'
16056 pm_apiversion='$pm_apiversion'
16060 prefixexp='$prefixexp'
16062 privlibexp='$privlibexp'
16063 prototype='$prototype'
16065 quadkind='$quadkind'
16066 quadtype='$quadtype'
16067 randbits='$randbits'
16068 randfunc='$randfunc'
16069 randseedtype='$randseedtype'
16071 rd_nodata='$rd_nodata'
16072 revision='$revision'
16076 sPRIEUldbl='$sPRIEUldbl'
16077 sPRIFUldbl='$sPRIFUldbl'
16078 sPRIGUldbl='$sPRIGUldbl'
16079 sPRIXU64='$sPRIXU64'
16081 sPRIeldbl='$sPRIeldbl'
16082 sPRIfldbl='$sPRIfldbl'
16083 sPRIgldbl='$sPRIgldbl'
16088 sSCNfldbl='$sSCNfldbl'
16089 sched_yield='$sched_yield'
16090 scriptdir='$scriptdir'
16091 scriptdirexp='$scriptdirexp'
16093 seedfunc='$seedfunc'
16094 selectminbits='$selectminbits'
16095 selecttype='$selecttype'
16096 sendmail='$sendmail'
16099 sharpbang='$sharpbang'
16100 shmattype='$shmattype'
16101 shortsize='$shortsize'
16104 sig_count='$sig_count'
16105 sig_name='$sig_name'
16106 sig_name_init='$sig_name_init'
16108 sig_num_init='$sig_num_init'
16109 signal_t='$signal_t'
16110 sitearch='$sitearch'
16111 sitearchexp='$sitearchexp'
16113 sitebinexp='$sitebinexp'
16115 sitelib_stem='$sitelib_stem'
16116 sitelibexp='$sitelibexp'
16117 siteprefix='$siteprefix'
16118 siteprefixexp='$siteprefixexp'
16119 sizesize='$sizesize'
16120 sizetype='$sizetype'
16124 sockethdr='$sockethdr'
16125 socketlib='$socketlib'
16126 socksizetype='$socksizetype'
16128 spackage='$spackage'
16129 spitshell='$spitshell'
16131 ssizetype='$ssizetype'
16132 startperl='$startperl'
16134 static_ext='$static_ext'
16136 stdio_base='$stdio_base'
16137 stdio_bufsiz='$stdio_bufsiz'
16138 stdio_cnt='$stdio_cnt'
16139 stdio_filbuf='$stdio_filbuf'
16140 stdio_ptr='$stdio_ptr'
16141 stdio_stream_array='$stdio_stream_array'
16144 subversion='$subversion'
16151 timeincl='$timeincl'
16152 timetype='$timetype'
16165 uidformat='$uidformat'
16171 uquadtype='$uquadtype'
16172 use5005threads='$use5005threads'
16173 use64bitall='$use64bitall'
16174 use64bitint='$use64bitint'
16176 useithreads='$useithreads'
16177 uselargefiles='$uselargefiles'
16178 uselongdouble='$uselongdouble'
16179 usemorebits='$usemorebits'
16180 usemultiplicity='$usemultiplicity'
16181 usemymalloc='$usemymalloc'
16183 useopcode='$useopcode'
16184 useperlio='$useperlio'
16185 useposix='$useposix'
16187 useshrplib='$useshrplib'
16188 usesocks='$usesocks'
16189 usethreads='$usethreads'
16190 usevendorprefix='$usevendorprefix'
16191 usevfork='$usevfork'
16194 uvXUformat='$uvXUformat'
16195 uvoformat='$uvoformat'
16198 uvuformat='$uvuformat'
16199 uvxformat='$uvxformat'
16200 vendorarch='$vendorarch'
16201 vendorarchexp='$vendorarchexp'
16202 vendorbin='$vendorbin'
16203 vendorbinexp='$vendorbinexp'
16204 vendorlib='$vendorlib'
16205 vendorlib_stem='$vendorlib_stem'
16206 vendorlibexp='$vendorlibexp'
16207 vendorprefix='$vendorprefix'
16208 vendorprefixexp='$vendorprefixexp'
16210 versiononly='$versiononly'
16212 voidflags='$voidflags'
16214 xs_apiversion='$xs_apiversion'
16219 : Add in command line options if available
16220 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16222 : add special variables
16223 $test -f $src/patchlevel.h && \
16224 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16225 echo "CONFIGDOTSH=true" >>config.sh
16227 : propagate old symbols
16228 if $test -f UU/config.sh; then
16229 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16230 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16231 $sort | $uniq -u >UU/oldsyms
16232 set X `cat UU/oldsyms`
16238 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16240 echo "# Variables propagated from previous config.sh file." >>config.sh
16241 for sym in `cat UU/oldsyms`; do
16242 echo " Propagating $hint variable "'$'"$sym..."
16243 eval 'tmp="$'"${sym}"'"'
16245 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16251 : Finish up by extracting the .SH files
16265 If you'd like to make any changes to the config.sh file before I begin
16266 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16269 rp="Press return or use a shell escape to edit config.sh:"
16274 *) : in case they cannot read
16275 sh 1>&4 -c "$ans";;
16280 : if this fails, just run all the .SH files by hand
16287 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16294 Now you need to generate make dependencies by running "$make depend".
16295 You might prefer to run it in background: "$make depend > makedepend.out &"
16296 It can take a while, so you might not want to run it right now.
16301 rp="Run $make depend now?"
16305 $make depend && echo "Now you must run '$make'."
16308 echo "You must run '$make depend' then '$make'."
16311 elif test -f [Mm]akefile; then
16313 echo "Now you must run a $make."
16318 if $test -f Policy.sh; then
16321 If you compile $package on a different machine or from a different object
16322 directory, copy the Policy.sh file from this object directory to the
16323 new one before you run Configure -- this will help you with most of
16324 the policy defaults.
16328 if $test -f config.msg; then
16329 echo "Hmm. I also noted the following information while running:"
16331 $cat config.msg >&4
16334 $rm -f kit*isdone ark*isdone