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 Sat Nov 11 18:45: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
463 d_old_pthread_create_joinable=''
464 old_pthread_create_joinable=''
541 d_stdio_ptr_lval_nochange_cnt=''
542 d_stdio_ptr_lval_sets_cnt=''
713 inc_version_list_init=''
731 ignore_versioned_solibs=''
789 d_perl_otherlibdirs=''
806 d_nv_preserves_uv_bits=''
904 d_stdio_stream_array=''
905 stdio_stream_array=''
915 ccflags_uselargefiles=''
916 ldflags_uselargefiles=''
917 libswanted_uselargefiles=''
960 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
963 : We must find out about Eunice early
965 if test -f /etc/unixtovms; then
966 eunicefix=/etc/unixtovms
968 if test -f /etc/unixtovms.exe; then
969 eunicefix=/etc/unixtovms.exe
976 : set useposix=false in your hint file to disable the POSIX extension.
978 : set useopcode=false in your hint file to disable the Opcode extension.
980 : Trailing extension. Override this in a hint file, if needed.
982 : Extra object files, if any, needed on this platform.
985 : Possible local include directories to search.
986 : Set locincpth to "" in a hint file to defeat local include searches.
987 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
988 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
990 : no include file wanted by default
994 : change the next line if compiling for Xenix/286 on Xenix/386
995 xlibpth='/usr/lib/386 /lib/386'
996 : Possible local library directories to search.
997 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
998 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1000 : general looking path for locating libraries
1001 glibpth="/lib /usr/lib $xlibpth"
1002 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1003 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1004 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1006 : Private path used by Configure to find libraries. Its value
1007 : is prepended to libpth. This variable takes care of special
1008 : machines, like the mips. Usually, it should be empty.
1011 : default library list
1013 : some systems want to use only the non-versioned libso:s
1014 ignore_versioned_solibs=''
1016 ccflags_uselargefiles=''
1017 ldflags_uselargefiles=''
1018 libswanted_uselargefiles=''
1019 : set usemultiplicity on the Configure command line to enable multiplicity.
1020 : set usesocks on the Configure command line to enable socks.
1021 : set usethreads on the Configure command line to enable threads.
1022 : full support for void wanted by default
1025 : List of libraries we want.
1026 : If anyone needs -lnet, put it in a hint file.
1027 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1028 libswanted="$libswanted dld ld sun m c cposix posix"
1029 libswanted="$libswanted ndir dir crypt sec"
1030 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1031 : We probably want to search /usr/shlib before most other libraries.
1032 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1033 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1034 glibpth="/usr/shlib $glibpth"
1035 : Do not use vfork unless overridden by a hint file.
1038 : Find the basic shell for Bourne shell scripts
1042 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1045 if test -f "$xxx"; then
1048 : Build up a list and do a single loop so we can 'break' out.
1049 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1050 for xxx in sh bash ksh pdksh ash; do
1052 try="$try ${p}/${xxx}"
1056 if test -f "$xxx"; then
1059 elif test -f "$xxx.exe"; then
1070 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1072 Usually it's in /bin/sh. How did you even get this far?
1073 Please contact me (Perl Maintainers) at perlbug@perl.org and
1074 we'll try to straighten this all out.
1080 : see if sh knows # comments
1081 if `$sh -c '#' >/dev/null 2>&1`; then
1085 test -f $xcat || xcat=/usr/bin/cat
1090 if test -s today; then
1093 echo "#! $xcat" > try
1097 if test -s today; then
1105 echo "Your $sh doesn't grok # comments--I will strip them later on."
1108 echo "exec grep -v '^[ ]*#'" >spitshell
1110 $eunicefix spitshell
1111 spitshell=`pwd`/spitshell
1113 echo "I presume that if # doesn't work, #! won't work either!"
1118 : figure out how to guarantee sh startup
1120 '') startsh=${sharpbang}${sh} ;;
1132 : echo "Yup, it does."
1134 echo "Hmm... '$startsh' does not guarantee sh startup..."
1135 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1140 : Save command line options in file UU/cmdline.opt for later use in
1141 : generating config.sh.
1142 cat > cmdline.opt <<EOSH
1143 # Configure command line arguments.
1150 cat >>cmdline.opt <<EOSH
1151 config_arg$argn='$arg'
1153 argn=`expr $argn + 1`
1156 : produce awk script to parse command line options
1157 cat >options.awk <<'EOF'
1159 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1161 len = length(optstr);
1162 for (i = 1; i <= len; i++) {
1163 c = substr(optstr, i, 1);
1164 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1175 if (substr(str, 1, 1) != "-") {
1176 printf("'%s'\n", str);
1180 for (i = 2; i <= len; i++) {
1181 c = substr(str, i, 1);
1183 printf("-%s\n", substr(str, i));
1189 printf("'%s'\n", substr(str, i + 1));
1202 : process the command line options
1203 set X `for arg in "$@"; do echo "X$arg"; done |
1204 sed -e s/X// | awk -f options.awk`
1209 : set up default values
1219 rm -f optdef.sh posthint.sh
1220 cat >optdef.sh <<EOS
1226 while test $# -gt 0; do
1228 -d) shift; fastread=yes;;
1229 -e) shift; alldone=cont;;
1233 if test -r "$1"; then
1236 echo "$me: cannot read config file $1." >&2
1241 -h) shift; error=true;;
1242 -r) shift; reuseval=true;;
1243 -s) shift; silent=true; realsilent=true;;
1244 -E) shift; alldone=exit;;
1245 -K) shift; knowitall=true;;
1246 -O) shift; override=true;;
1247 -S) shift; silent=true; extractsh=true;;
1252 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1253 echo "$me: ignoring -D $1" >&2
1256 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1257 *) echo "$1='define'" >> optdef.sh;;
1264 *=) echo "$1" >> optdef.sh;;
1266 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1267 echo "$me: ignoring -U $1" >&2
1269 *) echo "$1='undef'" >> optdef.sh;;
1280 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1284 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1285 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1291 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1292 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1293 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1294 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1295 *) xxx=`echo $yyy|sed 's!:.*!!'`
1296 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1302 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1304 echo "$yyy=''" >> posthint.sh ;;
1309 echo "$yyy='$zzz'" >> posthint.sh ;;
1311 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1313 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1318 echo "$yyy=$zzz" >> posthint.sh ;;
1319 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1323 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1326 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1334 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1335 [-U symbol] [-U symbol=] [-A command:symbol...]
1336 -d : use defaults for all answers.
1337 -e : go on without questioning past the production of config.sh.
1338 -f : specify an alternate default configuration file.
1339 -h : print this help message and exit (with an error status).
1340 -r : reuse C symbols value if possible (skips costly nm extraction).
1341 -s : silent mode, only echoes questions and essential information.
1342 -D : define symbol to have some value:
1343 -D symbol symbol gets the value 'define'
1344 -D symbol=value symbol gets the value 'value'
1345 -E : stop at the end of questions, after having produced config.sh.
1346 -K : do not use unless you know what you are doing.
1347 -O : let -D and -U override definitions from loaded configuration file.
1348 -S : perform variable substitutions on all .SH files (can mix with -f)
1349 -U : undefine symbol:
1350 -U symbol symbol gets the value 'undef'
1351 -U symbol= symbol gets completely empty
1352 -A : manipulate symbol after the platform specific hints have been applied:
1353 -A symbol=value append " "value to symbol
1354 -A append:symbol=value append value to symbol
1355 -A define:symbol=value define symbol to have value
1356 -A clear:symbol define symbol to be ''
1357 -A define:symbol define symbol to be 'define'
1358 -A eval:symbol=value define symbol to be eval of value
1359 -A prepend:symbol=value prepend value to symbol
1360 -A undef:symbol define symbol to be 'undef'
1361 -A undef:symbol= define symbol to be ''
1362 -V : print version number and exit (with a zero status).
1369 case "$fastread$alldone" in
1372 case "$extractsh" in
1375 if test ! -t 0; then
1376 echo "Say 'sh Configure', not 'sh <Configure'"
1386 true) exec 1>/dev/null;;
1389 : run the defines and the undefines, if any, but leave the file out there...
1392 : create the posthint manipulation script and leave the file out there...
1397 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1398 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1399 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1400 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1401 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1404 : Some greps do not return status, grrr.
1405 echo "grimblepritz" >grimble
1406 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1408 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1414 : the following should work in any shell
1418 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1419 cat >contains <<'EOSS'
1420 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1425 : Find the path to the source tree
1428 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1431 *) src=`cd ../$src && pwd` ;;
1444 if test -f $rsrc/Configure && \
1445 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1447 : found it, so we are ok.
1450 for src in . .. ../.. ../../.. ../../../..; do
1451 if test -f ../$src/Configure && \
1452 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1463 Sorry, I can't seem to locate the source dir for $package. Please start
1464 Configure with an explicit path -- i.e. /some/path/Configure.
1472 echo "Sources for $package found in \"$src\"." >&4
1476 : script used to extract .SH files with variable substitutions
1477 cat >extract <<'EOS'
1479 echo "Doing variable substitutions on .SH files..."
1480 if test -f $src/MANIFEST; then
1481 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1483 echo "(Looking for .SH files under the source directory.)"
1484 set x `(cd $src; find . -name "*.SH" -print)`
1488 0) set x `(cd $src; echo *.SH)`; shift;;
1490 if test ! -f $src/$1; then
1496 while test $name; do
1497 if test ! -d "$name"; then
1498 create="$name $create";
1499 name=`echo $name | sed -e "s|^[^/]*$||"`;
1500 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1505 for file in $create; do
1514 dir=`expr X$file : 'X\(.*\)/'`
1515 file=`expr X$file : 'X.*/\(.*\)'`
1516 (cd $dir && . ./$file)
1526 dir=`expr X$file : 'X\(.*\)/'`
1527 file=`expr X$file : 'X.*/\(.*\)'`
1528 (set x $dir; shift; eval $mkdir_p)
1538 if test -f $src/config_h.SH; then
1539 if test ! -f config.h; then
1540 : oops, they left it out of MANIFEST, probably, so do it anyway.
1546 : extract files and exit if asked to do so
1547 case "$extractsh" in
1549 case "$realsilent" in
1553 case "$config_sh" in
1554 '') config_sh='config.sh';;
1557 echo "Fetching answers from $config_sh..."
1560 test "$override" && . ./optdef.sh
1569 : Eunice requires " " instead of "", can you believe it
1572 echo "Beginning of configuration questions for $package."
1574 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1576 : first determine how to suppress newline on echo command
1578 echo "Checking echo to see how to suppress newlines..."
1579 (echo "hi there\c" ; echo " ") >.echotmp
1580 if $contains c .echotmp >/dev/null 2>&1 ; then
1591 echo $n "The star should be here-->$c"
1595 : Now test for existence of everything in MANIFEST
1597 if test -f $rsrc/MANIFEST; then
1598 echo "First let's make sure your kit is complete. Checking..." >&4
1599 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1602 for filelist in x??; do
1603 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1605 if test -s missing; then
1609 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1611 You have the option of continuing the configuration process, despite the
1612 distinct possibility that your kit is damaged, by typing 'y'es. If you
1613 do, don't blame me if something goes wrong. I advise you to type 'n'o
1614 and contact the author (perlbug@perl.org).
1617 echo $n "Continue? [n] $c" >&4
1621 echo "Continuing..." >&4
1625 echo "ABORTING..." >&4
1630 echo "Looks good..."
1633 echo "There is no MANIFEST file. I hope your kit is complete !"
1638 : Find the appropriate value for a newline for tr
1639 if test -n "$DJGPP"; then
1642 if test X"$trnl" = X; then
1643 case "`echo foo|tr '\n' x 2>/dev/null`" in
1647 if test X"$trnl" = X; then
1648 case "`echo foo|tr '\012' x 2>/dev/null`" in
1649 foox) trnl='\012' ;;
1652 if test X"$trnl" = X; then
1655 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1661 : compute the number of columns on the terminal for proper question formatting
1666 : set up the echo used in my read
1667 myecho="case \"\$xxxm\" in
1668 '') echo $n \"\$rp $c\" >&4;;
1670 '') echo $n \"[\$xxxm] $c\";;
1672 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1674 echo $n \"[\$xxxm] $c\" >&4
1676 echo $n \"\$rp [\$xxxm] $c\" >&4
1682 : now set up to do reads with possible shell escape and default assignment
1688 case "\$fastread" in
1689 yes) case "\$dflt" in
1692 case "\$silent-\$rp" in
1697 *) case "\$silent" in
1698 true) case "\$rp" in
1703 while expr "X\$ans" : "X!" >/dev/null; do
1707 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1715 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1724 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1729 echo "(OK, I'll run with -d after this question.)" >&4
1732 echo "*** Sorry, \$1 not supported yet." >&4
1742 echo "*** Substitution done -- please confirm."
1744 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1749 echo "*** Error -- try again."
1756 case "\$ans\$xxxm\$nostick" in
1768 : create .config dir to save info across Configure sessions
1769 test -d ../.config || mkdir ../.config
1770 cat >../.config/README <<EOF
1771 This directory created by Configure to save information that should
1772 persist across sessions for $package.
1774 You may safely delete it if you wish.
1777 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1779 $define|true|[yY]*) ;;
1780 *) case "$xversion" in
1783 *** WHOA THERE!!! ***
1785 This is an UNSTABLE DEVELOPMENT release.
1786 The version of this $package distribution is $xversion, that is, odd,
1787 (as opposed to even) and that signifies a development release.
1788 If you want a maintenance release, you want an even-numbered version.
1790 Do ***NOT*** install this into production use.
1791 Data corruption and crashes are possible.
1793 It is most seriously suggested that you do not continue any further
1794 unless you want to help in developing and debugging Perl.
1797 rp='Do you really want to continue?'
1801 [yY]) echo >&4 "Okay, continuing." ;;
1802 *) echo >&4 "Okay, bye."
1811 : general instructions
1814 user=`(logname) 2>/dev/null`
1816 '') user=`whoami 2>&1`;;
1818 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1821 rp='Would you like to see the instructions?'
1832 This installation shell script will examine your system and ask you questions
1833 to determine how the perl5 package should be installed. If you get
1834 stuck on a question, you may use a ! shell escape to start a subshell or
1835 execute a command. Many of the questions will have default answers in square
1836 brackets; typing carriage return will give you the default.
1838 On some of the questions which ask for file or directory names you are allowed
1839 to use the ~name construct to specify the login directory belonging to "name",
1840 even if you don't have a shell which knows about that. Questions where this is
1841 allowed will be marked "(~name ok)".
1845 dflt='Type carriage return to continue'
1849 The prompter used in this script allows you to use shell variables and
1850 backticks in your answers. You may use $1, $2, etc... to refer to the words
1851 in the default answer, as if the default line was a set of arguments given to a
1852 script shell. This means you may also use $* to repeat the whole default line,
1853 so you do not have to re-type everything to add something to the default.
1855 Everytime there is a substitution, you will have to confirm. If there is an
1856 error (e.g. an unmatched backtick), the default answer will remain unchanged
1857 and you will be prompted again.
1859 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1860 the questions and use the computed defaults (or the previous answers if there
1861 was already a config.sh file). Type 'Configure -h' for a list of options.
1862 You may also start interactively and then answer '& -d' at any prompt to turn
1863 on the non-interactive behaviour for the remainder of the execution.
1869 Much effort has been expended to ensure that this shell script will run on any
1870 Unix system. If despite that it blows up on yours, your best bet is to edit
1871 Configure and run it again. If you can't run Configure for some reason,
1872 you'll have to generate a config.sh file by hand. Whatever problems you
1873 have, let me (perlbug@perl.org) know how I blew it.
1875 This installation script affects things in two ways:
1877 1) it may do direct variable substitutions on some of the files included
1879 2) it builds a config.h file for inclusion in C programs. You may edit
1880 any of these files as the need arises after running this script.
1882 If you make a mistake on a question, there is no easy way to back up to it
1883 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1884 files. Configure will offer to let you do this before it runs the SH files.
1887 dflt='Type carriage return to continue'
1889 case "$firsttime" in
1890 true) echo $user >>../.config/instruct;;
1894 : find out where common programs are
1896 echo "Locating common programs..." >&4
1909 if test -d \$dir/\$thing; then
1915 for thisthing in \$dir/\$thing; do
1916 : just loop through to pick last item
1918 if test -f \$thisthing; then
1921 elif test -f \$dir/\$thing.exe; then
1922 if test -n "$DJGPP"; then
1923 echo \$dir/\$thing.exe
1925 : on Eunice apparently
1975 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1976 pth="$pth /lib /usr/lib"
1977 for file in $loclist; do
1981 if test -f "$xxx"; then
1984 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1985 xxx=`./loc $file $file $pth`
1988 '') xxx=`./loc $file $file $pth`;;
1989 *) xxx=`./loc $xxx $xxx $pth`;;
1995 echo $file is in $xxx.
1998 echo $file is in $xxx.
2001 echo "I don't know where '$file' is, and my life depends on it." >&4
2002 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2008 echo "Don't worry if any of the following aren't found..."
2010 for file in $trylist; do
2014 if test -f "$xxx"; then
2017 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2018 xxx=`./loc $file $file $pth`
2021 '') xxx=`./loc $file $file $pth`;;
2022 *) xxx=`./loc $xxx $xxx $pth`;;
2028 echo $file is in $xxx.
2031 echo $file is in $xxx.
2034 echo "I don't see $file out there, $say."
2041 echo "Substituting grep for egrep."
2047 echo "Substituting cp for ln."
2053 echo "Hopefully test is built into your sh."
2056 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2057 echo "Using the test built into your sh."
2065 echo "Hopefully echo is built into your sh."
2070 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2071 $echo $n "hi there$c" >foo1
2072 echo $n "hi there$c" >foo2
2073 if cmp foo1 foo2 >/dev/null 2>&1; then
2074 echo "They are compatible. In fact, they may be identical."
2081 They are not compatible! You are probably running ksh on a non-USG system.
2082 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2083 have echo built in and we may have to run some Bourne shell scripts. That
2084 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2087 $echo $n "The star should be here-->$c"
2097 cat <<'EOSC' >>checkcc
2102 int main(int argc, char *argv[]) {
2106 if $cc -o try $ccflags try.c; then
2109 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2115 case "`$cc -v -c try.c 2>&1`" in
2118 if $test X"$trygcc" = Xyes; then
2119 if gcc -o try -c try.c; then
2121 echo "You seem to have a working gcc, though." >&4
2122 rp="Would you like to use it?"
2124 if $test -f myread; then
2127 if $test -f UU/myread; then
2130 echo "Cannot find myread, sorry. Aborting." >&2
2135 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2139 if $test X"$despair" = Xyes; then
2141 You need to find a working C compiler.
2142 Either (purchase and) install the C compiler supplied by your OS vendor,
2143 or for a free C compiler try http://gcc.gnu.org/
2144 I cannot continue any further, aborting.
2154 : determine whether symbolic links are supported
2157 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2158 echo "Symbolic links are supported." >&4
2161 echo "Symbolic links are NOT supported." >&4
2166 : see whether [:lower:] and [:upper:] are supported character classes
2168 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2170 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2174 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2175 # (0xc9 and 0xd1), therefore that is a nice testing point.
2176 if test "X$up" = X -o "X$low" = X; then
2177 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2183 if test "X$up" = X -o "X$low" = X; then
2184 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2190 if test "X$up" = X -o "X$low" = X; then
2191 case "`echo IJ | od -x 2>/dev/null`" in
2193 echo "Hey, this might be EBCDIC." >&4
2194 if test "X$up" = X -o "X$low" = X; then
2195 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2196 ij) up='[A-IJ-RS-Z]'
2201 if test "X$up" = X -o "X$low" = X; then
2202 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2212 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2214 echo "Using $up and $low to convert case." >&4
2217 echo "I don't know how to translate letters from upper to lower case." >&4
2218 echo "Your tr is not acting any way I know of." >&4
2222 : set up the translation script tr, must be called with ./tr of course
2226 '[A-Z][a-z]') exec $tr '$up' '$low';;
2227 '[a-z][A-Z]') exec $tr '$low' '$up';;
2234 : Try to determine whether config.sh was made on this system
2235 case "$config_sh" in
2237 myuname=`$uname -a 2>/dev/null`
2238 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2239 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2240 # because the A-Z/a-z are not consecutive.
2241 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2242 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2243 newmyuname="$myuname"
2245 case "$knowitall" in
2247 if test -f ../config.sh; then
2248 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2249 eval "`grep myuname= ../config.sh`"
2251 if test "X$myuname" = "X$newmyuname"; then
2259 : Get old answers from old config file if Configure was run on the
2260 : same system, otherwise use the hints.
2263 if test -f config.sh; then
2265 rp="I see a config.sh file. Shall I use it to set the defaults?"
2268 n*|N*) echo "OK, I'll ignore it."
2269 mv config.sh config.sh.old
2270 myuname="$newmyuname"
2272 *) echo "Fetching default answers from your old config.sh file..." >&4
2280 : Older versions did not always set $sh. Catch re-use of such
2290 if test ! -f config.sh; then
2293 First time through, eh? I have some defaults handy for some systems
2294 that need some extra help getting the Configure answers right:
2297 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2299 : Half the following guesses are probably wrong... If you have better
2300 : tests or hints, please send them to perlbug@perl.org
2301 : The metaconfig authors would also appreciate a copy...
2302 $test -f /irix && osname=irix
2303 $test -f /xenix && osname=sco_xenix
2304 $test -f /dynix && osname=dynix
2305 $test -f /dnix && osname=dnix
2306 $test -f /lynx.os && osname=lynxos
2307 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2308 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2309 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2310 $test -f /bin/mips && /bin/mips && osname=mips
2311 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2312 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2313 $test -d /usr/apollo/bin && osname=apollo
2314 $test -f /etc/saf/_sactab && osname=svr4
2315 $test -d /usr/include/minix && osname=minix
2316 if $test -d /MachTen -o -d /MachTen_Folder; then
2318 if $test -x /sbin/version; then
2319 osvers=`/sbin/version | $awk '{print $2}' |
2320 $sed -e 's/[A-Za-z]$//'`
2321 elif $test -x /usr/etc/version; then
2322 osvers=`/usr/etc/version | $awk '{print $2}' |
2323 $sed -e 's/[A-Za-z]$//'`
2329 $test -f /sys/posix.dll &&
2330 $test -f /usr/bin/what &&
2331 set X `/usr/bin/what /sys/posix.dll` &&
2332 $test "$3" = UWIN &&
2336 if $test -f $uname; then
2344 umips) osname=umips ;;
2347 [23]100) osname=mips ;;
2348 next*) osname=next ;;
2350 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2351 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2354 elif $test -f /etc/kconfig; then
2356 if test "$lns" = "$ln -s"; then
2358 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2360 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2367 if test -n "$DJGPP"; then
2376 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2378 'not found') osvers="$4"."$3" ;;
2379 '<3240'|'<>3240') osvers=3.2.0 ;;
2380 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2381 '=3250'|'>3250') osvers=3.2.5 ;;
2385 bsd386) osname=bsd386
2388 cygwin*) osname=cygwin
2391 *dc.osx) osname=dcosx
2397 domainos) osname=apollo
2403 dynixptx*) osname=dynixptx
2404 osvers=`echo "$4"|sed 's/^v//'`
2406 freebsd) osname=freebsd
2408 genix) osname=genix ;;
2410 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2426 netbsd*) osname=netbsd
2429 news-os) osvers="$3"
2431 4*) osname=newsos4 ;;
2435 next*) osname=next ;;
2436 nonstop-ux) osname=nonstopux ;;
2437 POSIX-BC | posix-bc ) osname=posix-bc
2440 powerux | power_ux | powermax_os | powermaxos | \
2441 powerunix | power_unix) osname=powerux
2447 solaris) osname=solaris
2449 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2456 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2460 titanos) osname=titanos
2469 ultrix) osname=ultrix
2472 osf1|mls+) case "$5" in
2475 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2478 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2481 hp*) osname=hp_osf1 ;;
2482 mips) osname=mips_osf1 ;;
2485 unixware) osname=svr5
2491 $2) case "$osname" in
2495 : svr4.x or possibly later
2505 if test -f /stand/boot ; then
2506 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2507 if test -n "$INITPROG" -a -f "$INITPROG"; then
2508 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2509 if test -n "$isesix"; then
2517 *) if test -f /etc/systemid; then
2519 set `echo $3 | $sed 's/\./ /g'` $4
2520 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2522 elif $test -f $src/hints/sco_$1_$2.sh; then
2524 elif $test -f $src/hints/sco_$1.sh; then
2529 '') : Still unknown. Probably a generic Sys V.
2538 *) case "$osname" in
2539 '') : Still unknown. Probably a generic BSD.
2547 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2548 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2549 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2552 $rm -f UU/kernel.what
2553 elif test -d c:/.; then
2560 : Now look for a hint file osname_osvers, unless one has been
2561 : specified already.
2564 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2565 : Also try without trailing minor version numbers.
2566 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2567 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2568 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2569 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2572 *) case "$osvers" in
2575 *) if $test -f $src/hints/$file.sh ; then
2577 elif $test -f $src/hints/$xfile.sh ; then
2579 elif $test -f $src/hints/$xxfile.sh ; then
2581 elif $test -f $src/hints/$xxxfile.sh ; then
2583 elif $test -f $src/hints/$xxxxfile.sh ; then
2585 elif $test -f "$src/hints/${osname}.sh" ; then
2594 if $test -f Policy.sh ; then
2597 none) dflt="Policy" ;;
2598 *) dflt="Policy $dflt" ;;
2603 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2607 if $test -f Policy.sh ; then
2610 There's also a Policy hint file available, which should make the
2611 site-specific (policy) questions easier to answer.
2618 You may give one or more space-separated answers, or "none" if appropriate.
2619 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2620 is a good thing. DO NOT give a wrong version or a wrong OS.
2624 rp="Which of these apply, if any?"
2627 for file in $tans; do
2628 if $test X$file = XPolicy -a -f Policy.sh; then
2630 $cat Policy.sh >> UU/config.sh
2631 elif $test -f $src/hints/$file.sh; then
2632 . $src/hints/$file.sh
2633 $cat $src/hints/$file.sh >> UU/config.sh
2634 elif $test X$tans = X -o X$tans = Xnone ; then
2637 : Give one chance to correct a possible typo.
2638 echo "$file.sh does not exist"
2640 rp="hint to use instead?"
2642 for file in $ans; do
2643 if $test -f "$src/hints/$file.sh"; then
2644 . $src/hints/$file.sh
2645 $cat $src/hints/$file.sh >> UU/config.sh
2646 elif $test X$ans = X -o X$ans = Xnone ; then
2649 echo "$file.sh does not exist -- ignored."
2656 : Remember our hint file for later.
2657 if $test -f "$src/hints/$file.sh" ; then
2667 echo "Fetching default answers from $config_sh..." >&4
2671 cp $config_sh config.sh 2>/dev/null
2681 test "$override" && . ./optdef.sh
2683 : Restore computed paths
2684 for file in $loclist $trylist; do
2685 eval $file="\$_$file"
2690 Configure uses the operating system name and version to set some defaults.
2691 The default value is probably right if the name rings a bell. Otherwise,
2692 since spelling matters for me, either accept the default or answer "none"
2699 ''|' '|none) dflt=none ;;
2700 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2703 *) dflt="$osname" ;;
2705 rp="Operating system name?"
2709 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2715 ''|' '|none) dflt=none ;;
2716 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2717 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2719 ''|' ') dflt=none ;;
2724 *) dflt="$osvers" ;;
2726 rp="Operating system version?"
2736 : who configured the system
2737 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2738 cf_by=`(logname) 2>/dev/null`
2741 cf_by=`(whoami) 2>/dev/null`
2743 "") cf_by=unknown ;;
2747 : set up the script used to warn in case of inconsistency
2754 echo "*** WHOA THERE!!! ***" >&4
2755 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2756 rp=" Keep the $hint value?"
2759 y) td=$was; tu=$was;;
2763 : function used to set $1 to $val
2764 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2766 $define$undef) . ./whoa; eval "$var=\$td";;
2767 $undef$define) . ./whoa; eval "$var=\$tu";;
2768 *) eval "$var=$val";;
2771 case "$usethreads" in
2772 $define|true|[yY]*) dflt='y';;
2777 Perl can be built to take advantage of threads on some systems.
2778 To do so, Configure can be run with -Dusethreads.
2780 Note that threading is a highly experimental feature, and
2781 some known race conditions still remain. If you choose to try
2782 it, be very sure to not actually deploy it for production
2783 purposes. README.threads has more details, and is required
2784 reading if you enable threads.
2786 If this doesn't make any sense to you, just accept the default '$dflt'.
2788 rp='Build a threading Perl?'
2791 y|Y) val="$define" ;;
2797 case "$usethreads" in
2801 As of 5.5.640, Perl has two different internal threading implementations,
2802 the 5.005 version (5005threads) and an interpreter-based version
2803 (ithreads) that has one interpreter per thread. Both are very
2804 experimental. This arrangement exists to help developers work out
2805 which one is better.
2807 If you're a casual user, you probably don't want interpreter-threads
2808 at this time. There doesn't yet exist a way to create threads from
2809 within Perl in this model, i.e., "use Thread;" will NOT work.
2811 : Default to ithreads unless overridden on command line or with
2814 case "$use5005threads" in
2815 $define|true|[yY]*) dflt='n';;
2817 case "$useithreads" in
2818 $undef|false|[nN]*) dflt='n';;
2820 rp='Use interpreter-based ithreads?'
2823 y|Y) val="$define" ;;
2828 : Now set use5005threads to the opposite value.
2829 case "$useithreads" in
2830 $define) val="$undef" ;;
2837 useithreads="$undef"
2838 use5005threads="$undef"
2842 case "$d_oldpthreads" in
2843 '') : Configure tests would be welcome here. For now, assume undef.
2845 *) val="$d_oldpthreads" ;;
2851 case "$usethreads" in
2852 "$define"|true|[yY]*)
2853 : Look for a hint-file generated 'call-back-unit'. If the
2854 : user has specified that a threading perl is to be built,
2855 : we may need to set or change some other defaults.
2856 if $test -f usethreads.cbu; then
2857 echo "Your platform has some specific hints for threaded builds, using them..."
2861 (Your platform doesn't have any specific hints for threaded builds.
2862 Assuming POSIX threads, then.)
2870 Perl can be built so that multiple Perl interpreters can coexist
2871 within the same Perl executable.
2874 case "$useithreads" in
2877 This multiple interpreter support is required for interpreter-based threads.
2881 *) case "$usemultiplicity" in
2882 $define|true|[yY]*) dflt='y';;
2886 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2887 rp='Build Perl for multiplicity?'
2890 y|Y) val="$define" ;;
2898 : make some quick guesses about what we are up against
2900 $echo $n "Hmm... $c"
2910 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2911 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2913 echo "Looks kind of like an OSF/1 system, but we'll see..."
2915 elif test `echo abc | $tr a-z A-Z` = Abc ; then
2916 xxx=`./loc addbib blurfl $pth`
2917 if $test -f $xxx; then
2918 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2922 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2923 echo "Looks kind of like an extended USG system, but we'll see..."
2925 echo "Looks kind of like a USG system, but we'll see..."
2929 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2930 echo "Looks kind of like a BSD system, but we'll see..."
2934 echo "Looks kind of like a Version 7 system, but we'll see..."
2937 case "$eunicefix" in
2940 There is, however, a strange, musty smell in the air that reminds me of
2941 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2945 : it so happens the Eunice I know will not run shell scripts in Unix format
2949 echo "Congratulations. You aren't running Eunice."
2953 : Detect OS2. The p_ variable is set above in the Head.U unit.
2954 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2955 : semicolon as a patch separator
2960 I have the feeling something is not exactly right, however...don't tell me...
2961 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2962 (Or you may be running DOS with DJGPP.)
2967 if test -f /xenix; then
2968 echo "Actually, this looks more like a XENIX system..."
2973 echo "It's not Xenix..."
2978 if test -f /venix; then
2979 echo "Actually, this looks more like a VENIX system..."
2986 echo "Nor is it Venix..."
2989 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2990 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2997 rp="Use which C compiler?"
3000 : Look for a hint-file generated 'call-back-unit'. Now that the
3001 : user has specified the compiler, we may need to set or change some
3003 if $test -f cc.cbu; then
3009 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3010 $cat >gccvers.c <<EOM
3015 printf("%s\n", __VERSION__);
3017 printf("%s\n", "1");
3023 if $cc -o gccvers $ldflags gccvers.c; then
3024 gccversion=`./gccvers`
3025 case "$gccversion" in
3026 '') echo "You are not using GNU cc." ;;
3027 *) echo "You are using GNU cc $gccversion."
3033 echo "*** WHOA THERE!!! ***" >&4
3034 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3035 case "$knowitall" in
3037 echo " You'd better start hunting for one and let me know about it." >&4
3043 case "$gccversion" in
3044 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3046 case "$gccversion" in
3047 '') gccosandvers='' ;;
3048 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3049 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3051 case "$gccosandvers" in
3052 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3053 $osname$osvers) ;; # looking good
3054 $osname*) cat <<EOM >&4
3056 *** WHOA THERE!!! ***
3058 Your gcc has not been compiled for the exact release of
3059 your operating system ($gccosandvers versus $osname$osvers).
3061 In general it is a good idea to keep gcc synchronized with
3062 the operating system because otherwise serious problems
3063 may ensue when trying to compile software, like Perl.
3065 I'm trying to be optimistic here, though, and will continue.
3066 If later during the configuration and build icky compilation
3067 problems appear (headerfile conflicts being the most common
3068 manifestation), I suggest reinstalling the gcc to match
3069 your operating system release.
3073 *) gccosandvers='' ;; # failed to parse, better be silent
3081 : see how we invoke the C preprocessor
3083 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3084 cat <<'EOT' >testcpp.c
3090 if test ! -f cppstdin; then
3091 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3092 # AIX cc -E doesn't show the absolute headerfile
3093 # locations but we'll cheat by using the -M flag.
3094 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
3096 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3099 echo "Keeping your $hint cppstdin wrapper."
3102 wrapper=`pwd`/cppstdin
3106 if $test "X$cppstdin" != "X" && \
3107 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3108 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3110 echo "You used to use $cppstdin $cppminus so we'll use that again."
3112 '') echo "But let's see if we can live without a wrapper..." ;;
3114 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3115 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3117 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3120 echo "(However, $cpprun $cpplast does not work, let's see...)"
3128 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3135 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3136 $cc -E <testcpp.c >testcpp.out 2>&1; \
3137 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3138 echo "Yup, it does."
3141 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3142 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3143 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3144 echo "Yup, it does."
3147 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3148 $cc -P <testcpp.c >testcpp.out 2>&1; \
3149 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3150 echo "Yipee, that works!"
3153 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3154 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3155 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3156 echo "At long last!"
3159 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3160 $cpp <testcpp.c >testcpp.out 2>&1; \
3161 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3165 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3166 $cpp - <testcpp.c >testcpp.out 2>&1; \
3167 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3168 echo "Hooray, it works! I was beginning to wonder."
3171 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3172 $wrapper <testcpp.c >testcpp.out 2>&1; \
3173 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3179 rp="No dice. I can't find a C preprocessor. Name one:"
3183 $x_cpp <testcpp.c >testcpp.out 2>&1
3184 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3185 echo "OK, that will do." >&4
3187 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3202 echo "Perhaps can we force $cc -E using a wrapper..."
3203 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3204 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3210 echo "Nope, we'll have to live without it..."
3224 "$wrapper"|'cppstdin') ;;
3225 *) $rm -f $wrapper;;
3227 $rm -f testcpp.c testcpp.out
3229 : decide how portable to be. Allow command line overrides.
3230 case "$d_portable" in
3232 *) d_portable="$define" ;;
3235 : set up shell script to do ~ expansion
3241 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3244 if $test -f /bin/csh; then
3245 /bin/csh -f -c "glob \$1"
3250 name=\`$expr x\$1 : '..\([^/]*\)'\`
3251 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3252 if $test ! -d "\$dir"; then
3254 echo "\$me: can't locate home directory for: \$name" >&2
3259 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3275 : now set up to get a file name
3279 cat <<'EOSC' >>getfile
3295 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3296 fn=`echo $fn | sed 's/(.*)//'`
3302 loc_file=`expr $fn : '.*:\(.*\)'`
3303 fn=`expr $fn : '\(.*\):.*'`
3311 */*) fullpath=true;;
3320 *e*) exp_file=true;;
3323 *p*) nopath_ok=true;;
3328 *d*) type='Directory';;
3329 *l*) type='Locate';;
3334 Locate) what='File';;
3339 case "$d_portable" in
3347 while test "$type"; do
3352 true) rp="$rp (~name ok)";;
3355 if test -f UU/getfile.ok && \
3356 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3375 value=`UU/filexp $ans`
3378 if test "$ans" != "$value"; then
3379 echo "(That expands to $value on this system.)"
3393 /*) value="$ansexp" ;;
3394 [a-zA-Z]:/*) value="$ansexp" ;;
3399 echo "I shall only accept a full path name, as in /bin/ls." >&4
3400 echo "Use a ! shell escape if you wish to check pathnames." >&4
3403 echo "Please give a full path name, starting with slash." >&4
3406 echo "Note that using ~name is ok provided it expands well." >&4
3419 for fp in $gfpth; do
3420 if test "X$fp" = X.; then
3425 if test -f "$pf"; then
3427 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3429 echo "($value is not a plain file, but that's ok.)"
3432 if test X"$type" = X; then
3439 for fp in $gfpth; do
3440 if test "X$fp" = X.; then
3445 direxp="$fp/$ansexp"
3447 if test -d "$direxp"; then
3455 if test -d "$ansexp"; then
3456 echo "(Looking for $loc_file in directory $value.)"
3457 value="$value/$loc_file"
3458 ansexp="$ansexp/$loc_file"
3460 if test -f "$ansexp"; then
3463 case "$nopath_ok" in
3464 true) case "$value" in
3466 *) echo "Assuming $value will be in people's path."
3482 if test "$fastread" = yes; then
3487 rp="$what $value doesn't exist. Use that name anyway?"
3506 test "X$gfpthkeep" != Xy && gfpth=""
3509 : What should the include directory be ?
3511 $echo $n "Hmm... $c"
3515 if $test -f /bin/mips && /bin/mips; then
3516 echo "Looks like a MIPS system..."
3517 $cat >usr.c <<'EOCP'
3518 #ifdef SYSTYPE_BSD43
3522 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3523 dflt='/bsd43/usr/include'
3527 mips_type='System V'
3529 $rm -f usr.c usr.out
3530 echo "and you're compiling with the $mips_type compiler and libraries."
3534 echo "Doesn't look like a MIPS system."
3544 case "$xxx_prompt" in
3547 rp='Where are the include files you want to use?'
3555 : Set private lib path
3558 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3563 '') dlist="$loclibpth $plibpth $glibpth";;
3564 *) dlist="$libpth";;
3567 : Now check and see which directories actually exist, avoiding duplicates
3571 if $test -d $xxx; then
3574 *) libpth="$libpth $xxx";;
3580 Some systems have incompatible or broken versions of libraries. Among
3581 the directories listed in the question below, please remove any you
3582 know not to be holding relevant libraries, and add any that are needed.
3583 Say "none" for none.
3594 rp="Directories to use for library searches?"
3601 : compute shared library extension
3604 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3614 On some systems, shared libraries may be available. Answer 'none' if
3615 you want to suppress searching of shared libraries for the remainder
3616 of this configuration.
3619 rp='What is the file extension used for shared libraries?'
3623 : Define several unixisms.
3624 : Hints files or command line option can be used to override them.
3625 : The convoluted testing is in case hints files set either the old
3628 '') case "$exe_ext" in
3630 *) _exe="$exe_ext" ;;
3635 '') case "$lib_ext" in
3642 '') case "$obj_ext" in
3649 '') case "$path_sep" in
3660 : Which makefile gets called first. This is used by make depend.
3661 case "$firstmakefile" in
3662 '') firstmakefile='makefile';;
3666 $define|true|[yY]*) dflt='y';;
3671 Perl can be built to use the SOCKS proxy protocol library. To do so,
3672 Configure must be run with -Dusesocks.
3674 If this doesn't make any sense to you, just accept the default '$dflt'.
3676 rp='Build Perl for SOCKS?'
3679 y|Y) val="$define" ;;
3685 : Looking for optional libraries
3687 echo "Checking for optional libraries..." >&4
3692 case "$libswanted" in
3693 '') libswanted='c_s';;
3696 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3702 for thisdir in $libpth $xlibpth; do
3703 test -d $thisdir && libspath="$libspath $thisdir"
3705 for thislib in $libswanted; do
3706 for thisdir in $libspath; do
3708 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3709 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3710 $test -f "$xxx" && eval $libscheck
3711 $test -f "$xxx" && libstyle=shared
3713 if test ! -f "$xxx"; then
3714 xxx=$thisdir/lib$thislib.$so
3715 $test -f "$xxx" && eval $libscheck
3716 $test -f "$xxx" && libstyle=shared
3718 if test ! -f "$xxx"; then
3719 xxx=$thisdir/lib$thislib$_a
3720 $test -f "$xxx" && eval $libscheck
3721 $test -f "$xxx" && libstyle=static
3723 if test ! -f "$xxx"; then
3724 xxx=$thisdir/$thislib$_a
3725 $test -f "$xxx" && eval $libscheck
3726 $test -f "$xxx" && libstyle=static
3728 if test ! -f "$xxx"; then
3729 xxx=$thisdir/lib${thislib}_s$_a
3730 $test -f "$xxx" && eval $libscheck
3731 $test -f "$xxx" && libstyle=static
3732 $test -f "$xxx" && thislib=${thislib}_s
3734 if test ! -f "$xxx"; then
3735 xxx=$thisdir/Slib$thislib$_a
3736 $test -f "$xxx" && eval $libscheck
3737 $test -f "$xxx" && libstyle=static
3739 if $test -f "$xxx"; then
3741 shared) echo "Found -l$thislib (shared)." ;;
3742 static) echo "Found -l$thislib." ;;
3743 *) echo "Found -l$thislib ($libstyle)." ;;
3747 *) dflt="$dflt -l$thislib"
3748 libsfound="$libsfound $xxx"
3750 libsfiles="$libsfiles $yyy"
3751 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3752 case " $libsdirs " in
3754 *) libsdirs="$libsdirs $yyy" ;;
3761 if $test ! -f "$xxx"; then
3762 echo "No -l$thislib."
3773 ' '|'') dflt='none';;
3778 In order to compile $package on your machine, a number of libraries
3779 are usually needed. Include any other special libraries here as well.
3780 Say "none" for none. The default list is almost always right.
3784 rp="What libraries to use?"
3791 : determine optimization, if desired, or use for debug flag also
3793 ' '|$undef) dflt='none';;
3795 *) dflt="$optimize";;
3799 By default, $package compiles with the -O flag to use the optimizer.
3800 Alternately, you might want to use the symbolic debugger, which uses
3801 the -g flag (on traditional Unix systems). Either flag can be
3802 specified here. To use neither flag, specify the word "none".
3805 rp="What optimizer/debugger flag should be used?"
3809 'none') optimize=" ";;
3813 : We will not override a previous value, but we might want to
3814 : augment a hint file
3816 default|recommended)
3817 case "$gccversion" in
3818 1*) dflt='-fpcc-struct-return' ;;
3821 *-g*) dflt="$dflt -DDEBUGGING";;
3823 case "$gccversion" in
3824 2*) if test -d /etc/conf/kconfig.d &&
3825 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3831 case "$gccversion" in
3835 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3836 echo 'int main(void) { return 0; }' > gcctest.c
3837 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3838 echo "Yes, it does." 2>&1
3841 echo "Leaving current flags $ccflags alone." 2>&1
3843 *) dflt="$dflt -fno-strict-aliasing" ;;
3846 echo "Nope, it doesn't, but that's ok." 2>&1
3853 case "$mips_type" in
3854 *BSD*|'') inclwanted="$locincpth $usrinc";;
3855 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3857 for thisincl in $inclwanted; do
3858 if $test -d $thisincl; then
3859 if $test x$thisincl != x$usrinc; then
3861 *" -I$thisincl "*);;
3862 *) dflt="$dflt -I$thisincl ";;
3868 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3870 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3878 *) dflt="$dflt -D$2";;
3882 set signal.h LANGUAGE_C; eval $inctest
3886 ccflags="$ccflags -DSOCKS"
3891 default|recommended) dflt="$ccflags $dflt" ;;
3892 *) dflt="$ccflags";;
3901 Your C compiler may want other flags. For this question you should include
3902 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3903 but you should NOT include libraries or ld flags like -lwhatever. If you
3904 want $package to honor its debug switch, you should include -DDEBUGGING here.
3905 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3907 To use no flags, specify the word "none".
3913 rp="Any additional cc flags?"
3920 : the following weeds options from ccflags that are of no interest to cpp
3922 case "$gccversion" in
3923 1*) cppflags="$cppflags -D__GNUC__"
3925 case "$mips_type" in
3927 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3933 echo "Let me guess what the preprocessor flags are..." >&4
3947 *) ftry="$previous $flag";;
3949 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3950 >cpp1.out 2>/dev/null && \
3951 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3952 >cpp2.out 2>/dev/null && \
3953 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3954 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3956 cppflags="$cppflags $ftry"
3966 *-*) echo "They appear to be: $cppflags";;
3968 $rm -f cpp.c cpp?.out
3972 : flags used in final linking phase
3974 '') if ./venix; then
3980 *-posix*) dflt="$dflt -posix" ;;
3983 *) dflt="$ldflags";;
3986 : Try to guess additional flags to pick up local libraries.
3987 for thislibdir in $libpth; do
3988 case " $loclibpth " in
3991 *"-L$thislibdir "*) ;;
3992 *) dflt="$dflt -L$thislibdir" ;;
4004 Your C linker may need flags. For this question you should
4005 include -L/whatever and any other flags used by the C linker, but you
4006 should NOT include libraries like -lwhatever.
4008 Make sure you include the appropriate -L/path flags if your C linker
4009 does not normally search all of the directories you specified above,
4012 To use no flags, specify the word "none".
4016 rp="Any additional ld flags (NOT including libraries)?"
4022 rmlist="$rmlist pdp11"
4026 echo "Checking your choice of C compiler and flags for coherency..." >&4
4027 $cat > try.c <<'EOF'
4029 int main() { printf("Ok\n"); exit(0); }
4031 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4033 $cat >try.msg <<'EOM'
4034 I've tried to compile and run the following simple program:
4037 $cat try.c >> try.msg
4039 $cat >> try.msg <<EOM
4046 and I got the following output:
4050 if sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4051 if sh -c './try' >>try.msg 2>&1; then
4055 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4058 cat >> try.msg <<'EOQS'
4059 If $libs contains -lsfio, and sfio is mis-configured, then it
4060 sometimes (apparently) runs and exits with a 0 status, but with no
4061 output! It may have to do with sfio's use of _exit vs. exit.
4064 rp="You have a big problem. Shall I abort Configure"
4071 echo "The program compiled OK, but exited with status $?." >>try.msg
4072 rp="You have a problem. Shall I abort Configure"
4076 echo "I can't compile the test program." >>try.msg
4077 rp="You have a BIG problem. Shall I abort Configure"
4083 case "$knowitall" in
4085 echo "(The supplied flags or libraries might be incorrect.)"
4093 *) echo "Ok. Stopping Configure." >&4
4098 n) echo "OK, that should do.";;
4100 $rm -f try try.* core
4102 : define an is-a-typedef? function
4103 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4105 "") inclist="sys/types.h";;
4107 eval "varval=\$$var";
4111 for inc in $inclist; do
4112 echo "#include <$inc>" >>temp.c;
4114 echo "#ifdef $type" >> temp.c;
4115 echo "printf(\"We have $type\");" >> temp.c;
4116 echo "#endif" >> temp.c;
4117 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4118 if $contains $type temp.E >/dev/null 2>&1; then
4124 *) eval "$var=\$varval";;
4127 : define an is-a-typedef? function that prompts if the type is not available.
4128 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4130 "") inclist="sys/types.h";;
4132 eval "varval=\$$var";
4136 for inc in $inclist; do
4137 echo "#include <$inc>" >>temp.c;
4139 echo "#ifdef $type" >> temp.c;
4140 echo "printf(\"We have $type\");" >> temp.c;
4141 echo "#endif" >> temp.c;
4142 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4144 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4145 if $contains $type temp.E >/dev/null 2>&1; then
4146 echo "$type found." >&4;
4149 echo "$type NOT found." >&4;
4155 *) eval "$var=\$varval";;
4158 : define a shorthand compile call
4162 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4163 : define a shorthand compile call for compilations that should be ok.
4167 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4169 : check for lengths of integral types
4173 echo "Checking to see how big your integers are..." >&4
4174 $cat >intsize.c <<'EOCP'
4178 printf("intsize=%d;\n", (int)sizeof(int));
4179 printf("longsize=%d;\n", (int)sizeof(long));
4180 printf("shortsize=%d;\n", (int)sizeof(short));
4185 if eval $compile_ok && ./intsize > /dev/null; then
4187 echo "Your integers are $intsize bytes long."
4188 echo "Your long integers are $longsize bytes long."
4189 echo "Your short integers are $shortsize bytes long."
4193 Help! I can't compile and run the intsize test program: please enlighten me!
4194 (This is probably a misconfiguration in your system or libraries, and
4195 you really ought to fix it. Still, I'll try anyway.)
4199 rp="What is the size of an integer (in bytes)?"
4203 rp="What is the size of a long integer (in bytes)?"
4207 rp="What is the size of a short integer (in bytes)?"
4213 $rm -f intsize intsize.*
4215 : see what type lseek is declared as in the kernel
4216 rp="What is the type used for lseek's offset on this system?"
4217 set off_t lseektype long stdio.h sys/types.h
4221 echo "Checking to see how big your file offsets are..." >&4
4223 #include <sys/types.h>
4227 printf("%d\n", (int)sizeof($lseektype));
4232 if eval $compile_ok; then
4234 echo "Your file offsets are $lseeksize bytes long."
4238 echo "(I can't seem to compile the test program. Guessing...)"
4239 rp="What is the size of your file offsets (in bytes)?"
4245 : see what type file positions are declared as in the library
4246 rp="What is the type for file position used by fsetpos()?"
4247 set fpos_t fpostype long stdio.h sys/types.h
4252 *_t) zzz="$fpostype" ;;
4255 echo "Checking the size of $zzz..." >&4
4257 #include <sys/types.h>
4260 printf("%d\n", (int)sizeof($fpostype));
4265 if eval $compile_ok; then
4269 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4272 echo "Your $zzz is $fpossize bytes long."
4278 echo "(I can't compile the test program. Guessing...)" >&4
4279 rp="What is the size of your file positions (in bytes)?"
4286 # Backward compatibility (uselfs is deprecated).
4288 "$define"|true|[yY]*)
4291 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4293 uselargefiles="$define"
4297 case "$lseeksize:$fpossize" in
4300 You can have files larger than 2 gigabytes.
4303 *) case "$uselargefiles" in
4304 "$undef"|false|[nN]*) dflt='n' ;;
4309 Perl can be built to understand large files (files larger than 2 gigabytes)
4310 on some systems. To do so, Configure can be run with -Duselargefiles.
4312 If this doesn't make any sense to you, just accept the default '$dflt'.
4314 rp='Try to understand large files, if available?'
4317 y|Y) val="$define" ;;
4324 case "$uselargefiles" in
4326 : Look for a hint-file generated 'call-back-unit'. If the
4327 : user has specified that a large files perl is to be built,
4328 : we may need to set or change some other defaults.
4329 if $test -f uselargefiles.cbu; then
4330 echo "Your platform has some specific hints for large file builds, using them..."
4331 . ./uselargefiles.cbu
4333 echo "Rechecking to see how big your file offsets are..." >&4
4335 #include <sys/types.h>
4339 printf("%d\n", (int)sizeof($lseektype));
4344 if eval $compile_ok; then
4346 $echo "Your file offsets are now $lseeksize bytes long."
4350 echo "(I can't seem to compile the test program. Guessing...)"
4351 rp="What is the size of your file offsets (in bytes)?"
4356 *_t) zzz="$fpostype" ;;
4359 $echo $n "Rechecking the size of $zzz...$c" >&4
4361 #include <sys/types.h>
4364 printf("%d\n", (int)sizeof($fpostype));
4369 if eval $compile_ok; then
4374 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4377 echo " $fpossize bytes." >&4
4383 echo "(I can't compile the test program. Guessing...)" >&4
4384 rp="What is the size of your file positions (in bytes)?"
4394 case "$usemorebits" in
4395 "$define"|true|[yY]*)
4396 use64bitint="$define"
4397 uselongdouble="$define"
4398 usemorebits="$define"
4400 *) usemorebits="$undef"
4405 case "$uselonglong" in
4406 "$define"|true|[yY]*)
4409 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4411 use64bitint="$define"
4414 case "$use64bits" in
4415 "$define"|true|[yY]*)
4418 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4420 use64bitint="$define"
4423 case "$use64bitints" in
4424 "$define"|true|[yY]*)
4427 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4429 use64bitint="$define"
4432 case "$use64bitsint" in
4433 "$define"|true|[yY]*)
4436 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4438 use64bitint="$define"
4441 case "$uselonglongs" in
4442 "$define"|true|[yY]*)
4445 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4447 use64bitint="$define"
4450 case "$use64bitsall" in
4451 "$define"|true|[yY]*)
4454 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4456 use64bitall="$define"
4461 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4463 case "$use64bitall" in
4464 "$define"|true|[yY]*) use64bitint="$define" ;;
4470 You have natively 64-bit long integers.
4474 *) case "$use64bitint" in
4475 "$define"|true|[yY]*) dflt='y';;
4480 Perl can be built to take advantage of 64-bit integer types
4481 on some systems. To do so, Configure can be run with -Duse64bitint.
4482 Choosing this option will most probably introduce binary incompatibilities.
4484 If this doesn't make any sense to you, just accept the default '$dflt'.
4486 rp='Try to use 64-bit integers, if available?'
4489 [yY]*) val="$define" ;;
4497 case "$use64bitall" in
4498 "$define"|true|[yY]*) dflt='y' ;;
4499 *) case "$longsize" in
4507 You may also choose to try maximal 64-bitness. It means using as much
4508 64-bitness as possible on the platform. This in turn means even more
4509 binary incompatibilities. On the other hand, your platform may not
4510 have any more 64-bitness available than what you already have chosen.
4512 If this doesn't make any sense to you, just accept the default '$dflt'.
4514 rp='Try to use maximal 64-bit support, if available?'
4517 [yY]*) val="$define" ;;
4522 case "$use64bitall" in
4524 case "$use64bitint" in
4528 Since you have chosen a maximally 64-bit build, I'm also turning on
4529 the use of 64-bit integers.
4531 use64bitint="$define" ;;
4536 case "$use64bitint" in
4537 "$define"|true|[yY]*)
4538 : Look for a hint-file generated 'call-back-unit'. If the
4539 : user has specified that a 64-bit perl is to be built,
4540 : we may need to set or change some other defaults.
4541 if $test -f use64bitint.cbu; then
4542 echo "Your platform has some specific hints for 64-bit integers, using them..."
4546 4) case "$archname64" in
4547 '') archname64=64int ;;
4554 case "$use64bitall" in
4555 "$define"|true|[yY]*)
4556 : Look for a hint-file generated 'call-back-unit'. If the
4557 : user has specified that a maximally 64-bit perl is to be built,
4558 : we may need to set or change some other defaults.
4559 if $test -f use64bitall.cbu; then
4560 echo "Your platform has some specific hints for 64-bit builds, using them..."
4564 4) case "$archname64" in
4565 ''|64int) archname64=64all ;;
4573 echo "Checking for GNU C Library..." >&4
4574 cat >gnulibc.c <<EOM
4586 if eval $compile_ok && ./gnulibc; then
4588 echo "You are using the GNU C Library"
4591 echo "You are not using the GNU C Library"
4597 : see if nm is to be used to determine whether a symbol is defined or not
4601 case "$d_gnulibc" in
4604 echo "nm probably won't work on the GNU C Library." >&4
4610 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4612 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4613 echo "'nm' won't be sufficient on this sytem." >&4
4619 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4620 if $test $dflt -gt 20; then
4630 true|$define) dflt=y;;
4637 I can use $nm to extract the symbols from your C libraries. This
4638 is a time consuming task which may generate huge output on the disk (up
4639 to 3 megabytes) but that should make the symbols extraction faster. The
4640 alternative is to skip the 'nm' extraction part and to compile a small
4641 test program instead to determine whether each symbol is present. If
4642 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4643 this may be the best solution.
4645 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4648 rp="Shall I use $nm to extract C symbols from the libraries?"
4651 [Nn]*) usenm=false;;
4660 : nm options which may be necessary
4662 '') if $test -f /mach_boot; then
4664 elif $test -d /usr/ccs/lib; then
4665 nm_opt='-p' # Solaris (and SunOS?)
4666 elif $test -f /dgux; then
4668 elif $test -f /lib64/rld; then
4669 nm_opt='-p' # 64-bit Irix
4675 : nm options which may be necessary for shared libraries but illegal
4676 : for archive libraries. Thank you, Linux.
4677 case "$nm_so_opt" in
4678 '') case "$myuname" in
4680 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4681 nm_so_opt='--dynamic'
4690 : get list of predefined functions in a handy place
4695 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4702 *) for thislib in $libs; do
4705 : Handle C library specially below.
4708 thislib=`echo $thislib | $sed -e 's/^-l//'`
4709 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4711 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4713 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4715 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4717 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4719 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4721 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4726 libnames="$libnames $try"
4728 *) libnames="$libnames $thislib" ;;
4737 for xxx in $libpth; do
4738 $test -r $1 || set $xxx/libc.$so
4739 : The messy sed command sorts on library version numbers.
4741 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4742 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4744 s/[0-9][0-9]*/0000&/g
4745 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4748 $sort | $sed -e 's/^.* //'`
4751 $test -r $1 || set /usr/ccs/lib/libc.$so
4752 $test -r $1 || set /lib/libsys_s$_a
4758 if $test -r "$1"; then
4759 echo "Your (shared) C library seems to be in $1."
4761 elif $test -r /lib/libc && $test -r /lib/clib; then
4762 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4764 libc='/lib/clib /lib/libc'
4765 if $test -r /lib/syslib; then
4766 echo "(Your math library is in /lib/syslib.)"
4767 libc="$libc /lib/syslib"
4769 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4770 echo "Your C library seems to be in $libc, as you said before."
4771 elif $test -r $incpath/usr/lib/libc$_a; then
4772 libc=$incpath/usr/lib/libc$_a;
4773 echo "Your C library seems to be in $libc. That's fine."
4774 elif $test -r /lib/libc$_a; then
4776 echo "Your C library seems to be in $libc. You're normal."
4778 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4780 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4781 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4782 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4784 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4786 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4789 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4791 if $test -r "$tans"; then
4792 echo "Your C library seems to be in $tans, of all places."
4798 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4802 If the guess above is wrong (which it might be if you're using a strange
4803 compiler, or your machine supports multiple models), you can override it here.
4808 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4810 I can't seem to find your C library. I've looked in the following places:
4813 $sed 's/^/ /' libpath
4816 None of these seems to contain your C library. I need to get its name...
4821 rp='Where is your C library?'
4826 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4827 set X `cat libnames`
4830 case $# in 1) xxx=file; esac
4831 echo "Extracting names from the following $xxx for later perusal:" >&4
4833 $sed 's/^/ /' libnames >&4
4835 $echo $n "This may take a while...$c" >&4
4839 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4840 *) $nm $nm_opt $file 2>/dev/null;;
4845 $grep fprintf libc.tmp > libc.ptf
4846 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4847 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4849 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4851 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4853 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4855 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4857 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4859 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4861 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4863 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4865 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4867 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4869 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4871 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4873 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4874 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4876 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4878 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4880 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4882 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4884 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4886 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4888 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4890 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4892 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4894 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4896 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4898 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4900 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4902 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4904 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4907 $nm -p $* 2>/dev/null >libc.tmp
4908 $grep fprintf libc.tmp > libc.ptf
4909 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4910 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4916 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4918 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4919 for thisname in $libnames $libc; do
4920 $ar t $thisname >>libc.tmp
4922 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4924 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4925 # Repeat libc to extract forwarders to DLL entries too
4926 for thisname in $libnames $libc; do
4927 $ar tv $thisname >>libc.tmp
4928 # Revision 50 of EMX has bug in $ar.
4929 # it will not extract forwarders to DLL entries
4930 # Use emximp which will extract exactly them.
4931 emximp -o tmp.imp $thisname \
4933 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4934 < tmp.imp >>libc.tmp
4937 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4940 echo "$ar didn't seem to work right." >&4
4941 echo "Maybe this is a Cray...trying bld instead..." >&4
4942 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4944 for thisname in $libnames; do
4946 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4947 $ar t $thisname >>libc.tmp
4951 echo "That didn't work either. Giving up." >&4
4958 if $test -f /lib/syscalls.exp; then
4960 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4961 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4965 $rm -f libnames libpath
4967 : is a C symbol defined?
4970 -v) tf=libc.tmp; tc=""; tdc="";;
4971 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4972 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4975 case "$reuseval-$4" in
4977 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4983 if $contains $tlook $tf >/dev/null 2>&1;
4988 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4989 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
4997 $define) tval=true;;
5003 : define an is-in-libc? function
5004 inlibc='echo " "; td=$define; tu=$undef;
5005 sym=$1; var=$2; eval "was=\$$2";
5007 case "$reuseval$was" in
5017 echo "$sym() found." >&4;
5018 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5020 echo "$sym() NOT found." >&4;
5021 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5025 $define) echo "$sym() found." >&4;;
5026 *) echo "$sym() NOT found." >&4;;
5030 : see if sqrtl exists
5035 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5038 case "$uselongdouble" in
5039 $define|true|[yY]*) dflt='y';;
5044 Perl can be built to take advantage of long doubles which
5045 (if available) may give more accuracy and range for floating point numbers.
5047 If this doesn't make any sense to you, just accept the default '$dflt'.
5049 rp='Try to use long doubles if available?'
5052 y|Y) val="$define" ;;
5058 case "$uselongdouble" in
5059 true|[yY]*) uselongdouble="$define" ;;
5062 case "$uselongdouble" in
5064 : Look for a hint-file generated 'call-back-unit'. If the
5065 : user has specified that long doubles should be used,
5066 : we may need to set or change some other defaults.
5067 if $test -f uselongdouble.cbu; then
5068 echo "Your platform has some specific hints for long doubles, using them..."
5069 . ./uselongdouble.cbu
5072 (Your platform doesn't have any specific hints for long doubles.)
5078 case "$uselongdouble:$d_sqrtl" in
5082 *** You requested the use of long doubles but you do not seem to have
5083 *** the mathematic functions for long doubles. I'm disabling the use
5084 *** of long doubles.
5087 uselongdouble=$undef
5091 : check for length of double
5093 case "$doublesize" in
5095 echo "Checking to see how big your double precision numbers are..." >&4
5096 $cat >try.c <<'EOCP'
5100 printf("%d\n", (int)sizeof(double));
5105 if eval $compile_ok; then
5107 echo "Your double is $doublesize bytes long."
5110 echo "(I can't seem to compile the test program. Guessing...)"
5111 rp="What is the size of a double precision number (in bytes)?"
5119 : check for long doubles
5121 echo "Checking to see if you have long double..." >&4
5122 echo 'int main() { long double x = 7.0; }' > try.c
5124 if eval $compile; then
5126 echo "You have long double."
5129 echo "You do not have long double."
5135 : check for length of long double
5136 case "${d_longdbl}${longdblsize}" in
5139 echo "Checking to see how big your long doubles are..." >&4
5140 $cat >try.c <<'EOCP'
5144 printf("%d\n", sizeof(long double));
5149 if eval $compile; then
5150 longdblsize=`./try$exe_ext`
5151 echo "Your long doubles are $longdblsize bytes long."
5155 echo "(I can't seem to compile the test program. Guessing...)" >&4
5156 rp="What is the size of a long double (in bytes)?"
5160 if $test "X$doublesize" = "X$longdblsize"; then
5161 echo "(That isn't any different from an ordinary double.)"
5167 : determine the architecture name
5169 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5170 tarch=`arch`"-$osname"
5171 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5172 if uname -m > tmparch 2>&1 ; then
5173 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5174 -e 's/$/'"-$osname/" tmparch`
5182 case "$myarchname" in
5185 echo "(Your architecture name used to be $myarchname.)"
5192 *) dflt="$archname";;
5194 rp='What is your architecture name'
5197 case "$usethreads" in
5199 echo "Threads selected." >&4
5201 *-thread*) echo "...and architecture name already has -thread." >&4
5203 *) archname="$archname-thread"
5204 echo "...setting architecture name to $archname." >&4
5209 case "$usemultiplicity" in
5211 echo "Multiplicity selected." >&4
5213 *-multi*) echo "...and architecture name already has -multi." >&4
5215 *) archname="$archname-multi"
5216 echo "...setting architecture name to $archname." >&4
5221 case "$use64bitint$use64bitall" in
5223 case "$archname64" in
5225 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5228 case "$use64bitint" in
5229 "$define") echo "64 bit integers selected." >&4 ;;
5231 case "$use64bitall" in
5232 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5235 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5237 *) archname="$archname-$archname64"
5238 echo "...setting architecture name to $archname." >&4
5244 case "$uselongdouble" in
5246 echo "Long doubles selected." >&4
5247 case "$longdblsize" in
5249 "...but long doubles are equal to doubles, not changing architecture name." >&4
5253 *-ld*) echo "...and architecture name already has -ld." >&4
5255 *) archname="$archname-ld"
5256 echo "...setting architecture name to $archname." >&4
5264 : determine root of directory hierarchy where package will be installed.
5267 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5275 By default, $package will be installed in $dflt/bin, manual pages
5276 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5277 installation directories. Typically this is something like /usr/local.
5278 If you wish to have binaries under /usr/bin but other parts of the
5279 installation under /usr/local, that's ok: you will be prompted
5280 separately for each of the installation directories, the prefix being
5281 only used to set the defaults.
5285 rp='Installation prefix to use?'
5293 *) oldprefix="$prefix";;
5303 $define|true) afs=true ;;
5304 $undef|false) afs=false ;;
5305 *) if test -d /afs; then
5313 echo "AFS may be running... I'll be extra cautious then..." >&4
5315 echo "AFS does not seem to be running..." >&4
5318 : determine installation prefix for where package is to be installed.
5322 Since you are running AFS, I need to distinguish the directory in which
5323 files will reside from the directory in which they are installed (and from
5324 which they are presumably copied to the former directory by occult means).
5327 case "$installprefix" in
5328 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5329 *) dflt="$installprefix";;
5334 In some special cases, particularly when building $package for distribution,
5335 it is convenient to distinguish between the directory in which files should
5336 be installed from the directory ($prefix) in which they
5337 will eventually reside. For most users, these two directories are the same.
5340 case "$installprefix" in
5342 *) dflt=$installprefix;;
5346 rp='What installation prefix should I use for installing files?'
5348 installprefix="$ans"
5349 installprefixexp="$ansexp"
5351 : set the prefixit variable, to compute a suitable default value
5352 prefixit='case "$3" in
5354 case "$oldprefix" in
5355 "") eval "$1=\"\$$2\"";;
5362 ""|" ") eval "$1=\"\$$2\"";;
5368 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5370 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5371 /*-$oldprefix/*|\~*-$oldprefix/*)
5372 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5373 *) eval "$1=\"\$$2\"";;
5378 : get the patchlevel
5380 echo "Getting the current patchlevel..." >&4
5381 if $test -r $rsrc/patchlevel.h;then
5382 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5383 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5384 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5385 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5386 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5387 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5396 $echo "(You have $package version $patchlevel subversion $subversion.)"
5399 : XXX Should be a Configure test for double-dots in filenames.
5400 version=`echo $revision $patchlevel $subversion | \
5401 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5402 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5403 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5406 version=`echo $revision $patchlevel $subversion | \
5407 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5408 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5409 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5412 : Special case the 5.005_xx maintenance series, which used 5.005
5413 : without any subversion label as a subdirectory in $sitelib
5414 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5415 api_versionstring='5.005'
5418 : determine installation style
5419 : For now, try to deduce it from prefix unless it is already set.
5420 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5421 case "$installstyle" in
5422 '') case "$prefix" in
5423 *perl*) dflt='lib';;
5424 *) dflt='lib/perl5' ;;
5427 *) dflt="$installstyle" ;;
5429 : Probably not worth prompting for this since we prompt for all
5430 : the directories individually, and the prompt would be too long and
5434 : determine where private library files go
5435 : Usual default is /usr/local/lib/perl5/$version.
5436 : Also allow things like /opt/perl/lib/$version, since
5437 : /opt/perl/lib/perl5... would be redundant.
5438 : The default "style" setting is made in installstyle.U
5439 case "$installstyle" in
5440 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5441 *) set dflt privlib lib/$version ;;
5446 There are some auxiliary files for $package that need to be put into a
5447 private library directory that is accessible by everyone.
5451 rp='Pathname where the private library files will reside?'
5454 privlibexp="$ansexp"
5455 : Change installation prefix, if necessary.
5456 if $test X"$prefix" != X"$installprefix"; then
5457 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5459 installprivlib="$privlibexp"
5462 : set the prefixup variable, to restore leading tilda escape
5463 prefixup='case "$prefixexp" in
5465 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5468 : determine where public architecture dependent libraries go
5471 : privlib default is /usr/local/lib/$package/$version
5472 : archlib default is /usr/local/lib/$package/$version/$archname
5473 : privlib may have an optional trailing /share.
5474 tdflt=`echo $privlib | $sed 's,/share$,,'`
5475 tdflt=$tdflt/$archname
5484 $spackage contains architecture-dependent library files. If you are
5485 sharing libraries in a heterogeneous environment, you might store
5486 these files in a separate location. Otherwise, you can just include
5487 them with the rest of the public library files.
5491 rp='Where do you want to put the public architecture-dependent libraries?'
5494 archlibexp="$ansexp"
5495 if $test X"$archlib" = X"$privlib"; then
5500 : Change installation prefix, if necessary.
5501 if $test X"$prefix" != X"$installprefix"; then
5502 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5504 installarchlib="$archlibexp"
5508 : Binary compatibility with 5.005 is not possible for builds
5509 : with advanced features
5510 case "$usethreads$usemultiplicity" in
5512 bincompat5005="$undef"
5513 d_bincompat5005="$undef"
5517 This version of Perl can be compiled for binary compatibility with 5.005.
5518 If you decide to do so, you will be able to continue using most of the
5519 extensions that were compiled for Perl 5.005.
5522 case "$bincompat5005$d_bincompat5005" in
5523 *"$undef"*) dflt=n ;;
5526 rp='Binary compatibility with Perl 5.005?'
5529 y*) val="$define" ;;
5534 case "$d_bincompat5005" in
5536 bincompat5005="$define"
5538 *) bincompat5005="$undef"
5539 d_bincompat5005="$undef"
5546 : see if setuid scripts can be secure
5549 Some kernels have a bug that prevents setuid #! scripts from being
5550 secure. Some sites have disabled setuid #! scripts because of this.
5552 First let's decide if your kernel supports secure setuid #! scripts.
5553 (If setuid #! scripts would be secure but have been disabled anyway,
5554 don't say that they are secure if asked.)
5559 if $test -d /dev/fd; then
5560 echo "#!$ls" >reflect
5561 chmod +x,u+s reflect
5562 ./reflect >flect 2>&1
5563 if $contains "/dev/fd" flect >/dev/null; then
5564 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5568 If you are not sure if they are secure, I can check but I'll need a
5569 username and password different from the one you are using right now.
5570 If you don't have such a username or don't want me to test, simply
5574 rp='Other username to test security of setuid scripts with?'
5579 case "$d_suidsafe" in
5580 '') echo "I'll assume setuid scripts are *not* secure." >&4
5583 echo "Well, the $hint value is *not* secure." >&4
5585 *) echo "Well, the $hint value *is* secure." >&4
5590 $rm -f reflect flect
5591 echo "#!$ls" >reflect
5592 chmod +x,u+s reflect
5595 echo '"su" will (probably) prompt you for '"$ans's password."
5596 su $ans -c './reflect >flect'
5597 if $contains "/dev/fd" flect >/dev/null; then
5598 echo "Okay, it looks like setuid scripts are secure." >&4
5601 echo "I don't think setuid scripts are secure." >&4
5606 rp='Does your kernel have *secure* setuid scripts?'
5609 [yY]*) val="$define";;
5614 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5615 echo "(That's for file descriptors, not floppy disks.)"
5621 $rm -f reflect flect
5623 : now see if they want to do setuid emulation
5626 case "$d_suidsafe" in
5629 echo "No need to emulate SUID scripts since they are secure here." >& 4
5633 Some systems have disabled setuid scripts, especially systems where
5634 setuid scripts cannot be secure. On systems where setuid scripts have
5635 been disabled, the setuid/setgid bits on scripts are currently
5636 useless. It is possible for $package to detect those bits and emulate
5637 setuid/setgid in a secure fashion. This emulation will only work if
5638 setuid scripts have been disabled in your kernel.
5642 "$define") dflt=y ;;
5645 rp="Do you want to do setuid/setgid emulation?"
5648 [yY]*) val="$define";;
5656 : determine filename position in cpp output
5658 echo "Computing filename position in cpp output for #include directives..." >&4
5659 echo '#include <stdio.h>' > foo.c
5662 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5663 $grep '^[ ]*#.*stdio\.h' | \
5664 while read cline; do
5667 while $test \$# -gt 0; do
5668 if $test -r \`echo \$1 | $tr -d '"'\`; then
5673 pos=\`expr \$pos + 1\`
5685 *) pos="${fieldn}th";;
5687 echo "Your cpp writes the filename in the $pos field of the line."
5689 : locate header file
5694 for usrincdir in $usrinc
5696 if test -f \$usrincdir/\$wanted; then
5697 echo "\$usrincdir/\$wanted"
5701 awkprg='{ print \$$fieldn }'
5702 echo "#include <\$wanted>" > foo\$\$.c
5703 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5704 $grep "^[ ]*#.*\$wanted" | \
5705 while read cline; do
5706 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5708 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5709 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5714 # status = 0: grep returned 0 lines, case statement not executed
5715 # status = 1: headerfile found
5716 # status = 2: while loop executed, no headerfile found
5720 if test \$status -eq 1; then
5727 : define an alternate in-header-list? function
5728 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5729 cont=true; xxf="echo \"<\$1> found.\" >&4";
5730 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5731 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5733 case $# in 4) instead=instead;; *) instead="at last";; esac;
5734 while $test "$cont"; do
5736 var=$2; eval "was=\$$2";
5737 if $test "$xxx" && $test -r "$xxx";
5739 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5742 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5743 set $yyy; shift; shift; yyy=$@;
5744 case $# in 0) cont="";;
5745 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5746 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5747 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5748 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5752 do set $yyy; var=$2; eval "was=\$$2";
5753 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5754 set $yyy; shift; shift; yyy=$@;
5757 : see if this is a malloc.h system
5758 set malloc.h i_malloc
5761 : see if stdlib is available
5762 set stdlib.h i_stdlib
5765 : determine which malloc to compile in
5767 case "$usemymalloc" in
5768 ''|[yY]*|true|$define) dflt='y' ;;
5771 rp="Do you wish to attempt to use the malloc that comes with $package?"
5777 mallocsrc='malloc.c'
5778 mallocobj="malloc$_o"
5779 d_mymalloc="$define"
5782 : Remove malloc from list of libraries to use
5783 echo "Removing unneeded -lmalloc from library list" >&4
5784 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5787 echo "libs = $libs" >&4
5799 : compute the return types of malloc and free
5801 $cat >malloc.c <<END
5805 #include <sys/types.h>
5819 case "$malloctype" in
5821 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5828 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5832 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5839 echo "Your system uses $freetype free(), it would seem." >&4
5843 After $package is installed, you may wish to install various
5844 add-on modules and utilities. Typically, these add-ons will
5845 be installed under $prefix with the rest
5846 of this package. However, you may wish to install such add-ons
5847 elsewhere under a different prefix.
5849 If you do not wish to put everything under a single prefix, that's
5850 ok. You will be prompted for the individual locations; this siteprefix
5851 is only used to suggest the defaults.
5853 The default should be fine for most people.
5857 rp='Installation prefix to use for add-on modules and utilities?'
5858 : XXX Here might be another good place for an installstyle setting.
5859 case "$siteprefix" in
5861 *) dflt=$siteprefix ;;
5864 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5866 case "$siteprefix" in
5870 *) oldsiteprefix="$prefix";;
5875 siteprefixexp="$ansexp"
5877 : determine where site specific libraries go.
5878 : Usual default is /usr/local/lib/perl5/site_perl/$version
5879 : The default "style" setting is made in installstyle.U
5880 : XXX No longer works with Prefixit stuff.
5881 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5883 '') case "$installstyle" in
5884 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5885 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5893 The installation process will create a directory for
5894 site-specific extensions and modules. Most users find it convenient
5895 to place all site-specific files in this directory rather than in the
5896 main distribution directory.
5900 rp='Pathname for the site-specific library files?'
5903 sitelibexp="$ansexp"
5904 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5905 : Change installation prefix, if necessary.
5906 if $test X"$prefix" != X"$installprefix"; then
5907 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5909 installsitelib="$sitelibexp"
5912 : determine where site specific architecture-dependent libraries go.
5913 : sitelib default is /usr/local/lib/perl5/site_perl/$version
5914 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5915 : sitelib may have an optional trailing /share.
5917 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
5918 dflt="$dflt/$archname"
5923 set sitearch sitearch none
5927 The installation process will also create a directory for
5928 architecture-dependent site-specific extensions and modules.
5932 rp='Pathname for the site-specific architecture-dependent library files?'
5935 sitearchexp="$ansexp"
5936 : Change installation prefix, if necessary.
5937 if $test X"$prefix" != X"$installprefix"; then
5938 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5940 installsitearch="$sitearchexp"
5945 The installation process will also create a directory for
5946 vendor-supplied add-ons. Vendors who supply perl with their system
5947 may find it convenient to place all vendor-supplied files in this
5948 directory rather than in the main distribution directory. This will
5949 ease upgrades between binary-compatible maintenance versions of perl.
5951 Of course you may also use these directories in whatever way you see
5952 fit. For example, you might use them to access modules shared over a
5953 company-wide network.
5955 The default answer should be fine for most people.
5956 This causes further questions about vendor add-ons to be skipped
5957 and no vendor-specific directories will be configured for perl.
5960 rp='Do you want to configure vendor-specific add-on directories?'
5961 case "$usevendorprefix" in
5962 define|true|[yY]*) dflt=y ;;
5963 *) : User may have set vendorprefix directly on Configure command line.
5964 case "$vendorprefix" in
5973 rp='Installation prefix to use for vendor-supplied add-ons?'
5974 case "$vendorprefix" in
5976 *) dflt=$vendorprefix ;;
5979 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5981 case "$vendorprefix" in
5985 *) oldvendorprefix="$prefix";;
5989 usevendorprefix="$define"
5991 vendorprefixexp="$ansexp"
5993 *) usevendorprefix="$undef"
5999 case "$vendorprefix" in
6000 '') d_vendorlib="$undef"
6004 *) d_vendorlib="$define"
6005 : determine where vendor-supplied modules go.
6006 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6007 case "$vendorlib" in
6009 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6010 case "$installstyle" in
6011 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6012 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6015 *) dflt="$vendorlib"
6019 rp='Pathname for the vendor-supplied library files?'
6022 vendorlibexp="$ansexp"
6025 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6026 : Change installation prefix, if necessary.
6027 if $test X"$prefix" != X"$installprefix"; then
6028 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6030 installvendorlib="$vendorlibexp"
6033 case "$vendorprefix" in
6034 '') d_vendorarch="$undef"
6038 *) d_vendorarch="$define"
6039 : determine where vendor-supplied architecture-dependent libraries go.
6040 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6041 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6042 : vendorlib may have an optional trailing /share.
6043 case "$vendorarch" in
6044 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6045 dflt="$dflt/$archname"
6047 *) dflt="$vendorarch" ;;
6050 rp='Pathname for vendor-supplied architecture-dependent files?'
6053 vendorarchexp="$ansexp"
6056 : Change installation prefix, if necessary.
6057 if $test X"$prefix" != X"$installprefix"; then
6058 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6060 installvendorarch="$vendorarchexp"
6063 : Final catch-all directories to search
6066 Lastly, you can have perl look in other directories for extensions and
6067 modules in addition to those already specified.
6068 These directories will be searched after
6072 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6073 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6075 case "$otherlibdirs" in
6076 ''|' ') dflt='none' ;;
6077 *) dflt="$otherlibdirs" ;;
6080 Enter a colon-separated set of extra paths to include in perl's @INC
6081 search path, or enter 'none' for no extra paths.
6085 rp='Colon-separated list of additional directories for perl to search?'
6088 ' '|''|none) otherlibdirs=' ' ;;
6089 *) otherlibdirs="$ans" ;;
6091 case "$otherlibdirs" in
6095 set d_perl_otherlibdirs
6098 : Cruising for prototypes
6100 echo "Checking out function prototypes..." >&4
6101 $cat >prototype.c <<'EOCP'
6102 int main(int argc, char *argv[]) {
6105 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6106 echo "Your C compiler appears to support function prototypes."
6109 echo "Your C compiler doesn't seem to understand function prototypes."
6116 case "$prototype" in
6118 *) ansi2knr='ansi2knr'
6123 This version of $package can only be compiled by a compiler that
6124 understands function prototypes. Unfortunately, your C compiler
6126 doesn't seem to understand them. Sorry about that.
6128 If GNU cc is available for your system, perhaps you could try that instead.
6130 Eventually, we hope to support building Perl with pre-ANSI compilers.
6131 If you would like to help in that effort, please contact <perlbug@perl.org>.
6133 Aborting Configure now.
6139 : determine where public executables go
6144 rp='Pathname where the public executables will reside?'
6146 if $test "X$ansexp" != "X$binexp"; then
6151 : Change installation prefix, if necessary.
6152 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6153 if $test X"$prefix" != X"$installprefix"; then
6154 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6156 installbin="$binexp"
6159 : Find perl5.005 or later.
6160 echo "Looking for a previously installed perl5.005 or later... "
6162 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6163 : Check if this perl is recent and can load a simple module
6164 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6167 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6177 '') echo "None found. That's ok.";;
6178 *) echo "Using $perl5." ;;
6181 : Determine list of previous versions to include in @INC
6182 $cat > getverlist <<EOPL
6185 \$api_versionstring = "$api_versionstring";
6186 \$version = "$version";
6187 \$stem = "$sitelib_stem";
6188 \$archname = "$archname";
6190 $cat >> getverlist <<'EOPL'
6191 # Can't have leading @ because metaconfig interprets it as a command!
6192 ;@inc_version_list=();
6193 # XXX Redo to do opendir/readdir?
6196 ;@candidates = glob("5.*");
6202 # XXX ToDo: These comparisons must be reworked when two-digit
6203 # subversions come along, so that 5.7.10 compares as greater than
6204 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6205 # widespread that we can use the built-in version vectors rather
6206 # than reinventing them here. For 5.6.0, however, we must
6207 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6208 foreach $d (@candidates) {
6209 if ($d lt $version) {
6210 if ($d ge $api_versionstring) {
6211 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6213 elsif ($d ge "5.005") {
6214 unshift(@inc_version_list, grep { -d } $d);
6218 # Skip newer version. I.e. don't look in
6219 # 5.7.0 if we're installing 5.6.1.
6223 if (@inc_version_list) {
6224 print join(' ', @inc_version_list);
6227 # Blank space to preserve value for next Configure run.
6232 case "$inc_version_list" in
6233 '') if test -x "$perl5"; then
6234 dflt=`$perl5 getverlist`
6239 $undef) dflt='none' ;;
6240 *) dflt="$inc_version_list" ;;
6243 ''|' ') dflt=none ;;
6246 5.005) case "$bincompat5005" in
6247 $define|true|[yY]*) ;;
6254 In order to ease the process of upgrading, this version of perl
6255 can be configured to use modules built and installed with earlier
6256 versions of perl that were installed under $prefix. Specify here
6257 the list of earlier versions that this version of perl should check.
6258 If Configure detected no earlier versions of perl installed under
6259 $prefix, then the list will be empty. Answer 'none' to tell perl
6260 to not search earlier versions.
6262 The default should almost always be sensible, so if you're not sure,
6263 just accept the default.
6266 rp='List of earlier versions to include in @INC?'
6269 [Nn]one|''|' ') inc_version_list=' ' ;;
6270 *) inc_version_list="$ans" ;;
6272 case "$inc_version_list" in
6274 inc_version_list_init='0';;
6275 *) inc_version_list_init=`echo $inc_version_list |
6276 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6281 : determine whether to install perl also as /usr/bin/perl
6284 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6286 Many scripts expect perl to be installed as /usr/bin/perl.
6287 I can install the perl you are about to compile also as /usr/bin/perl
6288 (in addition to $installbin/perl).
6290 case "$installusrbinperl" in
6291 "$undef"|[nN]*) dflt='n';;
6294 rp="Do you want to install perl as /usr/bin/perl?"
6297 [yY]*) val="$define";;
6303 set installusrbinperl
6306 : see if dld is available
6310 : see if dlopen exists
6317 : determine which dynamic loading, if any, to compile in
6319 dldir="ext/DynaLoader"
6332 $define) dflt='y' ;;
6335 $define) dflt='y' ;;
6337 : Does a dl_xxx.xs file exist for this operating system
6338 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6341 rp="Do you wish to use dynamic loading?"
6348 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6349 dflt="$dldir/dl_${osname}.xs"
6350 elif $test "$d_dlopen" = "$define" ; then
6351 dflt="$dldir/dl_dlopen.xs"
6352 elif $test "$i_dld" = "$define" ; then
6353 dflt="$dldir/dl_dld.xs"
6358 *) dflt="$dldir/$dlsrc"
6361 echo "The following dynamic loading files are available:"
6362 : Can not go over to $dldir because getfile has path hard-coded in.
6363 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6364 rp="Source file to use for dynamic loading"
6370 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6374 Some systems may require passing special flags to $cc -c to
6375 compile modules that will be used to create a shared library.
6376 To use no flags, say "none".
6379 case "$cccdlflags" in
6380 '') case "$gccversion" in
6381 '') case "$osname" in
6383 next) dflt='none' ;;
6384 irix*) dflt='-KPIC' ;;
6385 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6386 sunos) dflt='-pic' ;;
6390 *) case "$osname" in
6391 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6396 *) dflt="$cccdlflags" ;;
6398 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6401 none) cccdlflags=' ' ;;
6402 *) cccdlflags="$ans" ;;
6407 Some systems use ld to create libraries that can be dynamically loaded,
6408 while other systems (such as those using ELF) use $cc.
6412 '') $cat >try.c <<'EOM'
6413 /* Test for whether ELF binaries are produced */
6418 int i = open("a.out",O_RDONLY);
6421 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6422 exit(0); /* succeed (yes, it's ELF) */
6427 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6429 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6433 echo "I'll use ld to build dynamic libraries."
6442 rp="What command should be used to create dynamic libraries?"
6448 Some systems may require passing special flags to $ld to create a
6449 library that can be dynamically loaded. If your ld flags include
6450 -L/other/path options to locate libraries outside your loader's normal
6451 search path, you may need to specify those -L options here as well. To
6452 use no flags, say "none".
6455 case "$lddlflags" in
6456 '') case "$osname" in
6457 beos) dflt='-nostart' ;;
6459 case "$gccversion" in
6460 '') dflt="$dflt +vnocompatwarnings" ;;
6463 linux|irix*) dflt='-shared' ;;
6464 next) dflt='none' ;;
6465 solaris) dflt='-G' ;;
6466 sunos) dflt='-assert nodefinitions' ;;
6467 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6471 *) dflt="$lddlflags" ;;
6474 : Try to guess additional flags to pick up local libraries.
6475 : Be careful not to append to a plain 'none'
6479 for thisflag in $ldflags; do
6484 *) dflt="$dflt $thisflag" ;;
6491 ''|' ') dflt='none' ;;
6494 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6497 none) lddlflags=' ' ;;
6498 *) lddlflags="$ans" ;;
6503 Some systems may require passing special flags to $cc to indicate that
6504 the resulting executable will use dynamic linking. To use no flags,
6508 case "$ccdlflags" in
6509 '') case "$osname" in
6510 hpux) dflt='-Wl,-E' ;;
6511 linux) dflt='-rdynamic' ;;
6512 next) dflt='none' ;;
6513 sunos) dflt='none' ;;
6517 *) dflt="$ccdlflags" ;;
6519 rp="Any special flags to pass to $cc to use dynamic linking?"
6522 none) ccdlflags=' ' ;;
6523 *) ccdlflags="$ans" ;;
6537 # No dynamic loading being used, so don't bother even to prompt.
6540 *) case "$useshrplib" in
6541 '') case "$osname" in
6542 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6544 also='Building a shared libperl is required for dynamic loading to work on your system.'
6549 also='Building a shared libperl is needed for MAB support.'
6567 The perl executable is normally obtained by linking perlmain.c with
6568 libperl${_a}, any static extensions (usually just DynaLoader), and
6569 any other libraries needed on this system (such as -lm, etc.). Since
6570 your system supports dynamic loading, it is probably possible to build
6571 a shared libperl.$so. If you will have more than one executable linked
6572 to libperl.$so, this will significantly reduce the size of each
6573 executable, but it may have a noticeable affect on performance. The
6574 default is probably sensible for your system.
6578 rp="Build a shared libperl.$so (y/n)"
6582 useshrplib='true' ;;
6583 *) useshrplib='false' ;;
6588 case "$useshrplib" in
6592 # Figure out a good name for libperl.so. Since it gets stored in
6593 # a version-specific architecture-dependent library, the version
6594 # number isn't really that important, except for making cc/ld happy.
6596 # A name such as libperl.so.3.1
6597 majmin="libperl.$so.$patchlevel.$subversion"
6598 # A name such as libperl.so.301
6599 majonly=`echo $patchlevel $subversion |
6600 $awk '{printf "%d%02d", $1, $2}'`
6601 majonly=libperl.$so.$majonly
6602 # I'd prefer to keep the os-specific stuff here to a minimum, and
6603 # rely on figuring it out from the naming of libc.
6604 case "${osname}${osvers}" in
6607 # XXX How handle the --version stuff for MAB?
6609 linux*) # ld won't link with a bare -lperl otherwise.
6612 cygwin*) # include version
6613 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6615 *) # Try to guess based on whether libc has major.minor.
6617 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6618 *libc.$so.[0-9]*) dflt=$majonly ;;
6619 *) dflt=libperl.$so ;;
6629 I need to select a good name for the shared libperl. If your system uses
6630 library names with major and minor numbers, then you might want something
6631 like $majmin. Alternatively, if your system uses a single version
6632 number for shared libraries, then you might want to use $majonly.
6633 Or, your system might be quite happy with a simple libperl.$so.
6635 Since the shared libperl will get installed into a version-specific
6636 architecture-dependent directory, the version number of the shared perl
6637 library probably isn't important, so the default should be o.k.
6640 rp='What name do you want to give to the shared libperl?'
6643 echo "Ok, I'll use $libperl"
6646 libperl="libperl${_a}"
6650 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6654 WARNING: Use of the shrpdir variable for the installation location of
6655 the shared $libperl is not supported. It was never documented and
6656 will not work in this version. Let me (perlbug@perl.org)
6657 know of any problems this may cause.
6663 But your current setting of $shrpdir is
6664 the default anyway, so it's harmless.
6669 Further, your current attempted setting of $shrpdir
6670 conflicts with the value of $archlibexp/CORE
6671 that installperl will use.
6678 # How will the perl executable find the installed shared $libperl?
6679 # Add $xxx to ccdlflags.
6680 # If we can't figure out a command-line option, use $shrpenv to
6681 # set env LD_RUN_PATH. The main perl makefile uses this.
6682 shrpdir=$archlibexp/CORE
6685 if "$useshrplib"; then
6688 # We'll set it in Makefile.SH...
6694 xxx="-Wl,-R$shrpdir"
6696 linux|irix*|dec_osf)
6697 xxx="-Wl,-rpath,$shrpdir"
6700 # next doesn't like the default...
6703 # beos doesn't like the default, either.
6706 # hpux doesn't like the default, either.
6707 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6710 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6716 # Only add $xxx if it isn't already in ccdlflags.
6717 case " $ccdlflags " in
6719 *) ccdlflags="$ccdlflags $xxx"
6722 Adding $xxx to the flags
6723 passed to $ld so that the perl executable will find the
6724 installed shared $libperl.
6732 # Fix ccdlflags in AIX for building external extensions.
6733 # (For building Perl itself bare -bE:perl.exp is needed,
6734 # Makefile.SH takes care of this.)
6736 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6738 # Respect a hint or command-line value.
6740 '') shrpenv="$tmp_shrpenv" ;;
6742 case "$ldlibpthname" in
6743 '') ldlibpthname=LD_LIBRARY_PATH ;;
6744 none) ldlibpthname='' ;;
6747 : determine where manual pages are on this system
6751 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6752 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6753 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6754 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6755 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6756 sysman=`./loc . /usr/man/man1 $syspath`
6759 if $test -d "$sysman"; then
6760 echo "System manual is in $sysman." >&4
6762 echo "Could not find manual pages in source form." >&4
6765 : determine where manual pages go
6766 set man1dir man1dir none
6770 $spackage has manual pages available in source form.
6774 echo "However, you don't have nroff, so they're probably useless to you."
6776 '') man1dir="none";;
6779 echo "If you don't want the manual sources installed, answer 'none'."
6784 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6785 lookpath="$lookpath $prefixexp/man/p_man/man1"
6786 lookpath="$lookpath $prefixexp/man/u_man/man1"
6787 lookpath="$lookpath $prefixexp/man/man.1"
6789 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6790 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6800 rp="Where do the main $spackage manual pages (source) go?"
6802 if $test "X$man1direxp" != "X$ansexp"; then
6806 man1direxp="$ansexp"
6812 : Change installation prefix, if necessary.
6813 if $test X"$prefix" != X"$installprefix"; then
6814 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6816 installman1dir="$man1direxp"
6819 : What suffix to use on installed man pages
6826 rp="What suffix should be used for the main $spackage man pages?"
6828 '') case "$man1dir" in
6842 *) dflt="$man1ext";;
6849 : see if we can have long filenames
6851 first=123456789abcdef
6853 if (echo hi >$first) 2>/dev/null; then
6854 if $test -f 123456789abcde; then
6855 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6858 echo 'You can have filenames longer than 14 characters.'>&4
6863 You can't have filenames longer than 14 chars.
6864 You can't even think about them!
6870 $rm -rf 123456789abcde*
6872 : determine where library module manual pages go
6873 set man3dir man3dir none
6877 $spackage has manual pages for many of the library modules.
6883 However, you don't have nroff, so they're probably useless to you.
6886 '') man3dir="none";;
6890 case "$d_flexfnam" in
6893 However, your system can't handle the long file names like File::Basename.3.
6896 '') man3dir="none";;
6900 echo "If you don't want the manual sources installed, answer 'none'."
6901 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6903 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6904 if $test -d "$privlib/man/man3"; then
6907 WARNING: Previous versions of perl installed man3 pages into
6908 $privlib/man/man3. This version will suggest a
6909 new default of $dflt.
6913 rp='Do you wish to preserve the old behavior?(y/n)'
6916 y*) dflt="$privlib/man/man3" ;;
6921 *) dflt="$man3dir" ;;
6928 rp="Where do the $package library man pages (source) go?"
6931 man3direxp="$ansexp"
6937 : Change installation prefix, if necessary.
6938 if $test X"$prefix" != X"$installprefix"; then
6939 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6941 installman3dir="$man3direxp"
6944 : What suffix to use on installed man pages
6950 rp="What suffix should be used for the $package library man pages?"
6952 '') case "$man3dir" in
6966 *) dflt="$man3ext";;
6973 : see if we have to deal with yellow pages, now NIS.
6974 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6975 if $test -f /usr/etc/nibindd; then
6977 echo "I'm fairly confident you're on a NeXT."
6979 rp='Do you get the hosts file via NetInfo?'
6988 y*) hostcat='nidump hosts .';;
6989 *) case "$hostcat" in
6990 nidump*) hostcat='';;
7000 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7008 rp='Are you getting the hosts file via yellow pages?'
7011 y*) hostcat='ypcat hosts';;
7012 *) hostcat='cat /etc/hosts';;
7018 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7021 '') test -f /etc/group && groupcat='cat /etc/group';;
7024 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7027 : now get the host name
7029 echo "Figuring out host name..." >&4
7030 case "$myhostname" in
7032 echo 'Maybe "hostname" will work...'
7033 if tans=`sh -c hostname 2>&1` ; then
7041 if $test "$cont"; then
7043 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7044 if tans=`cat /etc/systemid 2>&1` ; then
7046 phostname='cat /etc/systemid'
7047 echo "Whadyaknow. Xenix always was a bit strange..."
7050 elif $test -r /etc/systemid; then
7051 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7054 if $test "$cont"; then
7055 echo 'No, maybe "uuname -l" will work...'
7056 if tans=`sh -c 'uuname -l' 2>&1` ; then
7058 phostname='uuname -l'
7060 echo 'Strange. Maybe "uname -n" will work...'
7061 if tans=`sh -c 'uname -n' 2>&1` ; then
7063 phostname='uname -n'
7065 echo 'Oh well, maybe I can mine it out of whoami.h...'
7066 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7067 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7068 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7070 case "$myhostname" in
7071 '') echo "Does this machine have an identity crisis or something?"
7074 echo "Well, you said $myhostname before..."
7075 phostname='echo $myhostname';;
7081 : you do not want to know about this
7086 if $test "$myhostname" ; then
7088 rp='Your host name appears to be "'$myhostname'".'" Right?"
7096 : bad guess or no guess
7097 while $test "X$myhostname" = X ; do
7099 rp="Please type the (one word) name of your host:"
7104 : translate upper to lower if necessary
7105 case "$myhostname" in
7107 echo "(Normalizing case in your host name)"
7108 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7112 case "$myhostname" in
7114 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7115 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7116 echo "(Trimming domain name from host name--host name is now $myhostname)"
7118 *) case "$mydomain" in
7121 test "X$hostcat" = "Xypcat hosts" &&
7122 ypmatch "$myhostname" hosts 2>/dev/null |\
7123 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7126 test "X$hostcat" != "X" &&
7127 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7128 /[ ]$myhostname[ . ]/p" > hosts
7131 if $test -f hosts; then
7132 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7133 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7134 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7135 hosts | $sort | $uniq | \
7136 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7137 case `$echo X$dflt` in
7138 X*\ *) echo "(Several hosts in the database matched hostname)"
7141 X.) echo "(You do not have fully-qualified names in the hosts database)"
7145 echo "(I cannot locate a hosts database anywhere)"
7150 tans=`./loc resolv.conf X /etc /usr/etc`
7151 if $test -f "$tans"; then
7152 echo "(Attempting domain name extraction from $tans)"
7153 dflt=.`$sed -n -e 's/ / /g' \
7154 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7155 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7157 .) dflt=.`$sed -n -e 's/ / /g' \
7158 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7159 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7166 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7167 dflt=.`sh -c domainname 2>/dev/null`
7170 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7175 .) echo "(Lost all hope -- silly guess then)"
7181 *) dflt="$mydomain";;
7185 rp="What is your domain name?"
7195 : translate upper to lower if necessary
7198 echo "(Normalizing case in your domain name)"
7199 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7203 : a little sanity check here
7204 case "$phostname" in
7207 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7208 $myhostname$mydomain|$myhostname) ;;
7210 case "$phostname" in
7212 echo "(That doesn't agree with your whoami.h file, by the way.)"
7215 echo "(That doesn't agree with your $phostname command, by the way.)"
7225 I need to get your e-mail address in Internet format if possible, i.e.
7226 something like user@host.domain. Please answer accurately since I have
7227 no easy means to double check it. The default value provided below
7228 is most probably close to reality but may not be valid from outside
7229 your organization...
7233 while test "$cont"; do
7235 '') dflt="$cf_by@$myhostname$mydomain";;
7236 *) dflt="$cf_email";;
7238 rp='What is your e-mail address?'
7244 rp='Address does not look like an Internet one. Use it anyway?'
7260 If you or somebody else will be maintaining perl at your site, please
7261 fill in the correct e-mail address here so that they may be contacted
7262 if necessary. Currently, the "perlbug" program included with perl
7263 will send mail to this address in addition to perlbug@perl.org. You may
7264 enter "none" for no administrator.
7267 case "$perladmin" in
7268 '') dflt="$cf_email";;
7269 *) dflt="$perladmin";;
7271 rp='Perl administrator e-mail address'
7275 : determine whether to only install version-specific parts.
7278 Do you want to install only the version-specific parts of the perl
7279 distribution? Usually you do *not* want to do this.
7281 case "$versiononly" in
7282 "$define"|[Yy]*|true) dflt='y' ;;
7285 rp="Do you want to install only the version-specific parts of perl?"
7288 [yY]*) val="$define";;
7294 : figure out how to guarantee perl startup
7295 case "$startperl" in
7297 case "$sharpbang" in
7301 I can use the #! construct to start perl on your system. This will
7302 make startup of perl scripts faster, but may cause problems if you
7303 want to share those scripts and perl is not in a standard place
7304 ($binexp/perl) on all your platforms. The alternative is to force
7305 a shell by starting the script with a single ':' character.
7308 case "$versiononly" in
7309 "$define") dflt="$binexp/perl$version";;
7310 *) dflt="$binexp/perl";;
7312 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7315 none) startperl=": # use perl";;
7316 *) startperl="#!$ans"
7317 if $test 30 -lt `echo "$ans" | wc -c`; then
7320 WARNING: Some systems limit the #! command to 32 characters.
7321 If you experience difficulty running Perl scripts with #!, try
7322 installing Perl in a directory with a shorter pathname.
7328 *) startperl=": # use perl"
7333 echo "I'll use $startperl to start perl scripts."
7335 : figure best path for perl in scripts
7338 perlpath="$binexp/perl"
7339 case "$startperl" in
7344 I will use the "eval 'exec'" idiom to start Perl on your system.
7345 I can use the full path of your Perl binary for this purpose, but
7346 doing so may cause problems if you want to share those scripts and
7347 Perl is not always in a standard place ($binexp/perl).
7351 rp="What path shall I use in \"eval 'exec'\"?"
7358 case "$startperl" in
7360 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7363 : determine where public executable scripts go
7364 set scriptdir scriptdir
7366 case "$scriptdir" in
7369 : guess some guesses
7370 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7371 $test -d /usr/share/bin && dflt=/usr/share/bin
7372 $test -d /usr/local/script && dflt=/usr/local/script
7373 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7374 $test -d $prefixexp/script && dflt=$prefixexp/script
7378 *) dflt="$scriptdir"
7383 Some installations have a separate directory just for executable scripts so
7384 that they can mount it across multiple architectures but keep the scripts in
7385 one spot. You might, for example, have a subdirectory of /usr/share for this.
7386 Or you might just lump your scripts in with all your other executables.
7390 rp='Where do you keep publicly executable scripts?'
7392 if $test "X$ansexp" != "X$scriptdirexp"; then
7396 scriptdirexp="$ansexp"
7397 : Change installation prefix, if necessary.
7398 if $test X"$prefix" != X"$installprefix"; then
7399 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7401 installscript="$scriptdirexp"
7404 : determine where add-on public executables go
7406 '') dflt=$siteprefix/bin ;;
7410 rp='Pathname where the add-on public executables should be installed?'
7413 sitebinexp="$ansexp"
7414 : Change installation prefix, if necessary.
7415 if $test X"$prefix" != X"$installprefix"; then
7416 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7418 installsitebin="$sitebinexp"
7421 case "$useperlio" in
7422 $define|true|[yY]*) dflt='y';;
7427 Previous version of $package used the standard IO mechanisms as defined
7428 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7429 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7430 the default. This abstraction layer can use AT&T's sfio (if you already
7431 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7432 problems with some extension modules. Using PerlIO with stdio is safe,
7433 but it is slower than plain stdio and therefore is not the default.
7435 If this doesn't make any sense to you, just accept the default '$dflt'.
7437 rp='Use the experimental PerlIO abstraction layer?'
7444 echo "Ok, doing things the stdio way"
7451 case "$vendorprefix" in
7452 '') d_vendorbin="$undef"
7456 *) d_vendorbin="$define"
7457 : determine where vendor-supplied executables go.
7458 case "$vendorbin" in
7459 '') dflt=$vendorprefix/bin ;;
7460 *) dflt="$vendorbin" ;;
7463 rp='Pathname for the vendor-supplied executables directory?'
7466 vendorbinexp="$ansexp"
7469 : Change installation prefix, if necessary.
7470 if $test X"$prefix" != X"$installprefix"; then
7471 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7473 installvendorbin="$vendorbinexp"
7476 : see if qgcvt exists
7482 if $test X"$d_longdbl" = X"$define"; then
7484 echo "Checking how to print long doubles..." >&4
7486 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7487 $cat >try.c <<'EOCP'
7488 #include <sys/types.h>
7492 printf("%.3f\n", d);
7496 if eval $compile; then
7500 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7501 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7502 echo "We will use %f."
7508 if $test X"$sPRIfldbl" = X; then
7509 $cat >try.c <<'EOCP'
7510 #include <sys/types.h>
7513 long double d = 123.456;
7514 printf("%.3llf\n", d);
7518 if eval $compile; then
7522 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7523 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7524 echo "We will use %llf."
7530 if $test X"$sPRIfldbl" = X; then
7531 $cat >try.c <<'EOCP'
7532 #include <sys/types.h>
7535 long double d = 123.456;
7536 printf("%.3Lf\n", d);
7540 if eval $compile; then
7544 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7545 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7546 echo "We will use %Lf."
7552 if $test X"$sPRIfldbl" = X; then
7553 $cat >try.c <<'EOCP'
7554 #include <sys/types.h>
7557 long double d = 123.456;
7558 printf("%.3lf\n", d);
7562 if eval $compile; then
7566 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7567 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7568 echo "We will use %lf."
7574 if $test X"$sPRIfldbl" = X; then
7575 echo "Cannot figure out how to print long doubles." >&4
7577 sSCNfldbl=$sPRIfldbl # expect consistency
7584 case "$sPRIfldbl" in
7585 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7586 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7587 d_SCNfldbl="$undef";
7589 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7590 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7591 d_SCNfldbl="$define";
7595 : Check how to convert floats to strings.
7597 echo "Checking for an efficient way to convert floats to strings."
7599 case "$uselongdouble" in
7600 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7602 case "$d_longdbl" in
7603 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7605 case "$d_PRIgldbl" in
7606 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7610 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7611 char *myname = "gconvert";
7614 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7615 char *myname = "gcvt";
7618 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7619 char *myname = "qgcvt";
7620 #define DOUBLETYPE long double
7623 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7624 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7626 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7628 char *myname = "sprintf";
7632 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7633 #define DOUBLETYPE long double
7635 #define DOUBLETYPE double
7641 #define I_STDLIB $i_stdlib
7647 checkit(expect, got)
7651 if (strcmp(expect, got)) {
7652 printf("%s oddity: Expected %s, got %s\n",
7653 myname, expect, got);
7663 /* This must be 1st test on (which?) platform */
7664 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7665 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7666 checkit("0.1", buf);
7668 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7671 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7672 checkit("1.1", buf);
7674 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7675 checkit("1.01", buf);
7677 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7678 checkit("1.001", buf);
7680 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7681 checkit("1.0001", buf);
7683 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7684 checkit("1.00001", buf);
7686 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7687 checkit("1.000001", buf);
7689 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7692 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7695 /* Some Linux gcvt's give 1.e+5 here. */
7696 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7697 checkit("100000", buf);
7699 /* Some Linux gcvt's give -1.e+5 here. */
7700 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7701 checkit("-100000", buf);
7703 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7704 checkit("123.456", buf);
7709 case "$d_Gconvert" in
7710 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7711 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7712 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7713 *) xxx_list='gconvert gcvt sprintf' ;;
7716 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7717 "$define$define$define")
7718 # for long doubles prefer first qgcvt, then sprintf
7719 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7720 xxx_list="sprintf $xxx_list"
7722 "$define") xxx_list="qgcvt $xxx_list" ;;
7727 for xxx_convert in $xxx_list; do
7728 echo "Trying $xxx_convert..."
7730 set try -DTRY_$xxx_convert
7731 if eval $compile; then
7732 echo "$xxx_convert() found." >&4
7734 echo "I'll use $xxx_convert to convert floats into a string." >&4
7737 echo "...But $xxx_convert didn't work as I expected."
7740 echo "$xxx_convert NOT found." >&4
7744 case "$xxx_convert" in
7745 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7746 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7747 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7748 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7749 "$define$define$define")
7750 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7751 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7756 : Initialize h_fcntl
7759 : Initialize h_sysfile
7762 : access call always available on UNIX
7766 : locate the flags for 'access()'
7770 $cat >access.c <<'EOCP'
7771 #include <sys/types.h>
7776 #include <sys/file.h>
7785 : check sys/file.h first, no particular reason here
7786 if $test `./findhdr sys/file.h` && \
7787 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7789 echo "<sys/file.h> defines the *_OK access constants." >&4
7790 elif $test `./findhdr fcntl.h` && \
7791 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7793 echo "<fcntl.h> defines the *_OK access constants." >&4
7794 elif $test `./findhdr unistd.h` && \
7795 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7796 echo "<unistd.h> defines the *_OK access constants." >&4
7798 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7804 : see if accessx exists
7805 set accessx d_accessx
7808 : see if alarm exists
7812 : see if atolf exists
7816 : see if atoll exists
7820 : Look for GNU-cc style attribute checking
7822 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7823 $cat >attrib.c <<'EOCP'
7825 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7827 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7828 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7829 echo "Your C compiler doesn't fully support __attribute__."
7832 echo "Your C compiler supports __attribute__."
7836 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7843 : see if bcmp exists
7847 : see if bcopy exists
7851 : see if this is a unistd.h system
7852 set unistd.h i_unistd
7855 : see if getpgrp exists
7856 set getpgrp d_getpgrp
7859 case "$d_getpgrp" in
7862 echo "Checking to see which flavor of getpgrp is in use..."
7865 #include <sys/types.h>
7867 # include <unistd.h>
7871 if (getuid() == 0) {
7872 printf("(I see you are running Configure as super-user...)\n");
7876 if (getpgrp(1) == 0)
7885 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7886 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7888 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7889 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7892 echo "I can't seem to compile and run the test program."
7894 xxx="a USG one, i.e. you use getpgrp()."
7896 # SVR4 systems can appear rather BSD-ish.
7899 xxx="a BSD one, i.e. you use getpgrp(pid)."
7903 xxx="probably a USG one, i.e. you use getpgrp()."
7908 echo "Assuming your getpgrp is $xxx" >&4
7917 : see if setpgrp exists
7918 set setpgrp d_setpgrp
7921 case "$d_setpgrp" in
7924 echo "Checking to see which flavor of setpgrp is in use..."
7927 #include <sys/types.h>
7929 # include <unistd.h>
7933 if (getuid() == 0) {
7934 printf("(I see you are running Configure as super-user...)\n");
7938 if (-1 == setpgrp(1, 1))
7941 if (setpgrp() != -1)
7947 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7948 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7950 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7951 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7954 echo "(I can't seem to compile and run the test program.)"
7956 xxx="a USG one, i.e. you use setpgrp()."
7958 # SVR4 systems can appear rather BSD-ish.
7961 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7965 xxx="probably a USG one, i.e. you use setpgrp()."
7970 echo "Assuming your setpgrp is $xxx" >&4
7978 : see if bzero exists
7982 : see if signal is declared as pointer to function returning int or void
7984 xxx=`./findhdr signal.h`
7985 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7986 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7987 echo "You have int (*signal())() instead of void." >&4
7989 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7990 echo "You have void (*signal())()." >&4
7992 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7993 echo "You have int (*signal())() instead of void." >&4
7995 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7996 echo "You have void (*signal())()." >&4
7999 case "$d_voidsig" in
8001 echo "I can't determine whether signal handler returns void or int..." >&4
8003 rp="What type does your signal handler return?"
8010 echo "As you already told me, signal handler returns void." >&4
8013 *) echo "As you already told me, signal handler returns int." >&4
8020 case "$d_voidsig" in
8021 "$define") signal_t="void";;
8026 : check for ability to cast large floats to 32-bit ints.
8028 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8029 if $test "$intsize" -ge 4; then
8036 #include <sys/types.h>
8038 $signal_t blech(s) int s; { exit(3); }
8045 signal(SIGFPE, blech);
8047 /* Don't let compiler optimize the test away. Store the number
8048 in a writable string for gcc to pass to sscanf under HP/UX.
8050 sprintf(str, "2147483647");
8051 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8055 /* x86 processors will probably give 0x8000 0000, which is a
8056 sign change. We don't want that. We want to mimic SPARC
8057 behavior here, which is to preserve the sign and give
8060 if (i32 != ($xxx) f)
8066 if eval $compile_ok; then
8070 echo "(I can't seem to compile the test program--assuming it can't)"
8078 echo "Nope, it can't."
8085 : check for ability to cast negative floats to unsigned
8087 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8090 #include <sys/types.h>
8092 $signal_t blech(s) int s; { exit(7); }
8093 $signal_t blech_in_list(s) int s; { exit(4); }
8094 unsigned long dummy_long(p) unsigned long p; { return p; }
8095 unsigned int dummy_int(p) unsigned int p; { return p; }
8096 unsigned short dummy_short(p) unsigned short p; { return p; }
8100 unsigned long along;
8102 unsigned short ashort;
8106 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8107 a direct f = -123. assignment. gcc-2.8.0 reportedly
8108 optimized the whole file away
8110 /* Store the number in a writable string for gcc to pass to
8113 sprintf(str, "-123");
8114 sscanf(str, "%lf", &f); /* f = -123.; */
8116 signal(SIGFPE, blech);
8117 along = (unsigned long)f;
8118 aint = (unsigned int)f;
8119 ashort = (unsigned short)f;
8120 if (along != (unsigned long)-123)
8122 if (aint != (unsigned int)-123)
8124 if (ashort != (unsigned short)-123)
8126 sprintf(str, "1073741824.");
8127 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8130 along = (unsigned long)f;
8131 if (along != 0x80000000)
8135 along = (unsigned long)f;
8136 if (along != 0x7fffffff)
8140 along = (unsigned long)f;
8141 if (along != 0x80000001)
8145 signal(SIGFPE, blech_in_list);
8146 sprintf(str, "123.");
8147 sscanf(str, "%lf", &f); /* f = 123.; */
8148 along = dummy_long((unsigned long)f);
8149 aint = dummy_int((unsigned int)f);
8150 ashort = dummy_short((unsigned short)f);
8151 if (along != (unsigned long)123)
8153 if (aint != (unsigned int)123)
8155 if (ashort != (unsigned short)123)
8162 if eval $compile_ok; then
8166 echo "(I can't seem to compile the test program--assuming it can't)"
8169 case "$castflags" in
8174 echo "Nope, it can't."
8181 : see if vprintf exists
8183 if set vprintf val -f d_vprintf; eval $csym; $val; then
8184 echo 'vprintf() found.' >&4
8186 $cat >vprintf.c <<'EOF'
8187 #include <varargs.h>
8189 int main() { xxx("foo"); }
8198 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8202 if eval $compile && ./vprintf; then
8203 echo "Your vsprintf() returns (int)." >&4
8206 echo "Your vsprintf() returns (char*)." >&4
8210 echo 'vprintf() NOT found.' >&4
8220 : see if chown exists
8224 : see if chroot exists
8228 : see if chsize exists
8232 : check for const keyword
8234 echo 'Checking to see if your C compiler knows about "const"...' >&4
8235 $cat >const.c <<'EOCP'
8236 typedef struct spug { int drokk; } spug;
8243 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8245 echo "Yup, it does."
8248 echo "Nope, it doesn't."
8253 : see if crypt exists
8255 if set crypt val -f d_crypt; eval $csym; $val; then
8256 echo 'crypt() found.' >&4
8260 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8261 if $test -z "$cryptlib"; then
8262 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8266 if $test -z "$cryptlib"; then
8267 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8271 if $test -z "$cryptlib"; then
8272 cryptlib=`./loc libcrypt$_a "" $libpth`
8276 if $test -z "$cryptlib"; then
8277 echo 'crypt() NOT found.' >&4
8286 : get csh whereabouts
8288 'csh') val="$undef" ;;
8293 : Respect a hint or command line value for full_csh.
8295 '') full_csh=$csh ;;
8298 : see if cuserid exists
8299 set cuserid d_cuserid
8302 : see if this is a limits.h system
8303 set limits.h i_limits
8306 : see if this is a float.h system
8310 : See if number of significant digits in a double precision number is known
8312 $cat >dbl_dig.c <<EOM
8322 printf("Contains DBL_DIG");
8325 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8326 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8327 echo "DBL_DIG found." >&4
8330 echo "DBL_DIG NOT found." >&4
8337 : see if difftime exists
8338 set difftime d_difftime
8341 : see if this is a dirent system
8343 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8345 echo "<dirent.h> found." >&4
8348 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8349 echo "<sys/dir.h> found." >&4
8352 xinc=`./findhdr sys/ndir.h`
8354 echo "<dirent.h> NOT found." >&4
8359 : Look for type of directory structure.
8361 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8363 case "$direntrytype" in
8366 $define) guess1='struct dirent' ;;
8367 *) guess1='struct direct' ;;
8370 *) guess1="$direntrytype"
8375 'struct dirent') guess2='struct direct' ;;
8376 *) guess2='struct dirent' ;;
8379 if $contains "$guess1" try.c >/dev/null 2>&1; then
8380 direntrytype="$guess1"
8381 echo "Your directory entries are $direntrytype." >&4
8382 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8383 direntrytype="$guess2"
8384 echo "Your directory entries seem to be $direntrytype." >&4
8386 echo "I don't recognize your system's directory entries." >&4
8387 rp="What type is used for directory entries on this system?"
8395 : see if the directory entry stores field length
8397 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8398 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8399 echo "Good, your directory entry keeps length information in d_namlen." >&4
8402 echo "Your directory entry does not know about the d_namlen field." >&4
8409 : see if dlerror exists
8412 set dlerror d_dlerror
8416 : see if dlfcn is available
8424 On a few systems, the dynamically loaded modules that perl generates and uses
8425 will need a different extension than shared libs. The default will probably
8433 rp='What is the extension of dynamically loaded modules'
8442 : Check if dlsym need a leading underscore
8448 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8449 $cat >dyna.c <<'EOM'
8458 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8460 #include <sys/types.h>
8474 int mode = RTLD_LAZY ;
8476 handle = dlopen("./dyna.$dlext", mode) ;
8477 if (handle == NULL) {
8482 symbol = dlsym(handle, "fred") ;
8483 if (symbol == NULL) {
8484 /* try putting a leading underscore */
8485 symbol = dlsym(handle, "_fred") ;
8486 if (symbol == NULL) {
8499 : Call the object file tmp-dyna.o in case dlext=o.
8500 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8501 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8502 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
8503 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8506 1) echo "Test program failed using dlopen." >&4
8507 echo "Perhaps you should not use dynamic loading." >&4;;
8508 2) echo "Test program failed using dlsym." >&4
8509 echo "Perhaps you should not use dynamic loading." >&4;;
8510 3) echo "dlsym needs a leading underscore" >&4
8512 4) echo "dlsym doesn't need a leading underscore." >&4;;
8515 echo "I can't compile and run the test program." >&4
8516 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8521 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8526 hasproto='varname=$1; func=$2; shift; shift;
8527 while $test $# -ge 2; do
8529 $define) echo "#include <$2>";;
8533 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8534 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8535 echo "$func() prototype found.";
8538 echo "$func() prototype NOT found.";
8543 $rm -f try.c tryout.c'
8545 : see if prototype for drand48 is available
8547 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8550 : see if dup2 exists
8554 : see if eaccess exists
8555 set eaccess d_eaccess
8558 : see if endgrent exists
8559 set endgrent d_endgrent
8562 : see if endhostent exists
8563 set endhostent d_endhent
8566 : see if endnetent exists
8567 set endnetent d_endnent
8570 : see if endprotoent exists
8571 set endprotoent d_endpent
8574 : see if endpwent exists
8575 set endpwent d_endpwent
8578 : see if endservent exists
8579 set endservent d_endsent
8582 : Locate the flags for 'open()'
8584 $cat >open3.c <<'EOCP'
8585 #include <sys/types.h>
8590 #include <sys/file.h>
8601 : check sys/file.h first to get FREAD on Sun
8602 if $test `./findhdr sys/file.h` && \
8603 set open3 -DI_SYS_FILE && eval $compile; then
8605 echo "<sys/file.h> defines the O_* constants..." >&4
8607 echo "and you have the 3 argument form of open()." >&4
8610 echo "but not the 3 argument form of open(). Oh, well." >&4
8613 elif $test `./findhdr fcntl.h` && \
8614 set open3 -DI_FCNTL && eval $compile; then
8616 echo "<fcntl.h> defines the O_* constants..." >&4
8618 echo "and you have the 3 argument form of open()." >&4
8621 echo "but not the 3 argument form of open(). Oh, well." >&4
8626 echo "I can't find the O_* constant definitions! You got problems." >&4
8632 : see which of string.h or strings.h is needed
8634 strings=`./findhdr string.h`
8635 if $test "$strings" && $test -r "$strings"; then
8636 echo "Using <string.h> instead of <strings.h>." >&4
8640 strings=`./findhdr strings.h`
8641 if $test "$strings" && $test -r "$strings"; then
8642 echo "Using <strings.h> instead of <string.h>." >&4
8644 echo "No string header found -- You'll surely have problems." >&4
8650 "$undef") strings=`./findhdr strings.h`;;
8651 *) strings=`./findhdr string.h`;;
8654 : check for non-blocking I/O stuff
8655 case "$h_sysfile" in
8656 true) echo "#include <sys/file.h>" > head.c;;
8659 true) echo "#include <fcntl.h>" > head.c;;
8660 *) echo "#include <sys/fcntl.h>" > head.c;;
8665 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8666 case "$o_nonblock" in
8669 $cat >>try.c <<'EOCP'
8673 printf("O_NONBLOCK\n");
8677 printf("O_NDELAY\n");
8681 printf("FNDELAY\n");
8688 if eval $compile_ok; then
8690 case "$o_nonblock" in
8691 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8692 *) echo "Seems like we can use $o_nonblock.";;
8695 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8698 *) echo "Using $hint value $o_nonblock.";;
8700 $rm -f try try.* .out core
8703 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8709 #include <sys/types.h>
8712 #define MY_O_NONBLOCK $o_nonblock
8713 #ifndef errno /* XXX need better Configure test */
8724 #include <strings.h>
8726 $signal_t blech(x) int x; { exit(3); }
8728 $cat >> try.c <<'EOCP'
8736 pipe(pd); /* Down: child -> parent */
8737 pipe(pu); /* Up: parent -> child */
8740 close(pd[1]); /* Parent reads from pd[0] */
8741 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8742 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8744 signal(SIGALRM, blech);
8746 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8748 sprintf(string, "%d\n", ret);
8749 write(2, string, strlen(string));
8752 if (errno == EAGAIN) {
8758 if (errno == EWOULDBLOCK)
8759 printf("EWOULDBLOCK\n");
8762 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8763 sleep(2); /* Give it time to close our pipe */
8765 ret = read(pd[0], buf, 1); /* Should read EOF */
8767 sprintf(string, "%d\n", ret);
8768 write(3, string, strlen(string));
8772 close(pd[0]); /* We write to pd[1] */
8773 close(pu[1]); /* We read from pu[0] */
8774 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8775 close(pd[1]); /* Pipe pd is now fully closed! */
8776 exit(0); /* Bye bye, thank you for playing! */
8780 if eval $compile_ok; then
8781 echo "$startsh" >mtry
8782 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8784 ./mtry >/dev/null 2>&1
8786 0) eagain=`$cat try.out`;;
8787 1) echo "Could not perform non-blocking setting!";;
8788 2) echo "I did a successful read() for something that was not there!";;
8789 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8790 *) echo "Something terribly wrong happened during testing.";;
8792 rd_nodata=`$cat try.ret`
8793 echo "A read() system call with no data present returns $rd_nodata."
8794 case "$rd_nodata" in
8797 echo "(That's peculiar, fixing that to be -1.)"
8803 echo "Forcing errno EAGAIN on read() with no data available."
8807 echo "Your read() sets errno to $eagain when no data is available."
8810 status=`$cat try.err`
8812 0) echo "And it correctly returns 0 to signal EOF.";;
8813 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8814 *) echo "However, your read() returns '$status' on EOF??";;
8817 if test "$status" = "$rd_nodata"; then
8818 echo "WARNING: you can't distinguish between EOF and no data!"
8822 echo "I can't compile the test program--assuming errno EAGAIN will do."
8829 echo "Using $hint value $eagain."
8830 echo "Your read() returns $rd_nodata when no data is present."
8831 case "$d_eofnblk" in
8832 "$define") echo "And you can see EOF because read() returns 0.";;
8833 "$undef") echo "But you can't see EOF status from read() returned value.";;
8835 echo "(Assuming you can't see EOF status from read anyway.)"
8841 $rm -f try try.* .out core head.c mtry
8843 : see if fchmod exists
8847 : see if fchown exists
8851 : see if this is an fcntl system
8856 : See if fcntl-based locking works.
8857 $cat >try.c <<'EOCP'
8862 #if defined(F_SETLK) && defined(F_SETLKW)
8865 fd = open("try.c", O_RDONLY);
8866 flock.l_type = F_RDLCK;
8867 flock.l_whence = SEEK_SET;
8868 flock.l_start = flock.l_len = 0;
8869 retval = fcntl(fd, F_SETLK, &flock);
8871 (retval < 0 ? exit(2) : exit(0));
8877 echo "Checking if fcntl-based file locking works... "
8881 if eval $compile_ok; then
8883 echo "Yes, it seems to work."
8886 echo "Nope, it didn't work."
8890 echo "I'm unable to compile the test program, so I'll assume not."
8895 echo "Nope, since you don't even have fcntl()."
8898 set d_fcntl_can_lock
8903 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8904 while $test $# -ge 2; do
8906 $define) echo "#include <$2>";;
8910 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8912 if eval $compile; then
8923 : see whether socket exists
8925 $echo $n "Hmm... $c" >&4
8926 if set socket val -f d_socket; eval $csym; $val; then
8927 echo "Looks like you have Berkeley networking support." >&4
8929 if set setsockopt val -f; eval $csym; $val; then
8932 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8936 if $contains socklib libc.list >/dev/null 2>&1; then
8937 echo "Looks like you have Berkeley networking support." >&4
8939 : we will have to assume that it supports the 4.2 BSD interface
8942 echo "You don't have Berkeley networking in libc$_a..." >&4
8943 if test "X$d_socket" = "X$define"; then
8944 echo "...but you seem to believe that you have sockets." >&4
8946 for net in net socket
8948 if test -f /usr/lib/lib$net$_a; then
8949 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8950 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8951 if $contains socket libc.list >/dev/null 2>&1; then
8956 echo "...but the Wollongong group seems to have hacked it in." >&4
8957 sockethdr="-I/usr/netinclude"
8960 echo "Found Berkeley sockets interface in lib$net." >& 4
8961 if $contains setsockopt libc.list >/dev/null 2>&1; then
8964 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8971 if test "X$d_socket" != "X$define"; then
8972 echo "or anywhere else I see." >&4
8980 : see if socketpair exists
8981 set socketpair d_sockpair
8986 echo "Checking the availability of certain socket constants..." >& 4
8987 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8988 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8990 #include <sys/types.h>
8991 #include <sys/socket.h>
8997 set try; if eval $compile; then
9000 set d_${enum}; eval $setvar
9004 : see if sys/select.h has to be included
9005 set sys/select.h i_sysselct
9008 : see if we should include time.h, sys/time.h, or both
9010 if test "X$timeincl" = X; then
9011 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9012 $echo $n "I'm now running the test program...$c"
9013 $cat >try.c <<'EOCP'
9014 #include <sys/types.h>
9019 #ifdef SYSTIMEKERNEL
9022 #include <sys/time.h>
9025 #include <sys/select.h>
9034 struct timezone tzp;
9036 if (foo.tm_sec == foo.tm_sec)
9039 if (bar.tv_sec == bar.tv_sec)
9046 for s_timezone in '-DS_TIMEZONE' ''; do
9048 for s_timeval in '-DS_TIMEVAL' ''; do
9049 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9050 for i_time in '' '-DI_TIME'; do
9051 for i_systime in '-DI_SYSTIME' ''; do
9054 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9055 if eval $compile; then
9056 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9060 $echo $n "Succeeded with $flags$c"
9072 *SYSTIMEKERNEL*) i_systimek="$define"
9073 timeincl=`./findhdr sys/time.h`
9074 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9075 *) i_systimek="$undef";;
9078 *I_TIME*) i_time="$define"
9079 timeincl=`./findhdr time.h`" $timeincl"
9080 echo "We'll include <time.h>." >&4;;
9081 *) i_time="$undef";;
9084 *I_SYSTIME*) i_systime="$define"
9085 timeincl=`./findhdr sys/time.h`" $timeincl"
9086 echo "We'll include <sys/time.h>." >&4;;
9087 *) i_systime="$undef";;
9092 : check for fd_set items
9095 Checking to see how well your C compiler handles fd_set and friends ...
9097 $cat >fd_set.c <<EOCP
9098 #$i_systime I_SYS_TIME
9099 #$i_sysselct I_SYS_SELECT
9100 #$d_socket HAS_SOCKET
9101 #include <sys/types.h>
9103 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9106 #include <sys/time.h>
9109 #include <sys/select.h>
9118 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9125 set fd_set -DTRYBITS
9126 if eval $compile; then
9127 d_fds_bits="$define"
9129 echo "Well, your system knows about the normal fd_set typedef..." >&4
9131 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9132 d_fd_macros="$define"
9135 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9137 d_fd_macros="$undef"
9141 Hmm, your compiler has some difficulty with fd_set. Checking further...
9144 if eval $compile; then
9147 echo "Well, your system has some sort of fd_set available..." >&4
9149 echo "and you have the normal fd_set macros." >&4
9150 d_fd_macros="$define"
9153 but not the normal fd_set macros! Gross! More work for me...
9155 d_fd_macros="$undef"
9158 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9161 d_fd_macros="$undef"
9166 : see if fgetpos exists
9167 set fgetpos d_fgetpos
9170 : see if flock exists
9174 : see if fork exists
9178 : see if pathconf exists
9179 set pathconf d_pathconf
9182 : see if fpathconf exists
9183 set fpathconf d_fpathconf
9187 : check for fpos64_t
9189 echo "Checking to see if you have fpos64_t..." >&4
9192 int main() { fpos64_t x = 7; }
9195 if eval $compile; then
9197 echo "You have fpos64_t."
9200 echo "You do not have fpos64_t."
9202 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9209 : see if frexpl exists
9213 hasstruct='varname=$1; struct=$2; shift; shift;
9214 while $test $# -ge 2; do
9216 $define) echo "#include <$2>";;
9220 echo "int main () { struct $struct foo; }" >> try.c;
9222 if eval $compile; then
9231 : see if this is a sys/param system
9232 set sys/param.h i_sysparam
9235 : see if this is a sys/mount.h system
9236 set sys/mount.h i_sysmount
9239 : see if sys/types.h has to be included
9240 set sys/types.h i_systypes
9245 echo "Checking to see if your system supports struct fs_data..." >&4
9246 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9248 case "$d_fs_data_s" in
9249 "$define") echo "Yes, it does." ;;
9250 *) echo "No, it doesn't." ;;
9253 : see if fseeko exists
9257 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9260 : see if fsetpos exists
9261 set fsetpos d_fsetpos
9265 : see if fstatfs exists
9266 set fstatfs d_fstatfs
9270 : see if statvfs exists
9271 set statvfs d_statvfs
9274 : see if fstatvfs exists
9275 set fstatvfs d_fstatvfs
9279 : see if ftello exists
9283 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9286 : see if getcwd exists
9290 : see if getespwnam exists
9291 set getespwnam d_getespwnam
9295 : see if getfsstat exists
9296 set getfsstat d_getfsstat
9299 : see if getgrent exists
9300 set getgrent d_getgrent
9303 : see if gethostbyaddr exists
9304 set gethostbyaddr d_gethbyaddr
9307 : see if gethostbyname exists
9308 set gethostbyname d_gethbyname
9311 : see if gethostent exists
9312 set gethostent d_gethent
9315 : see how we will look up host name
9318 if set gethostname val -f d_gethname; eval $csym; $val; then
9319 echo 'gethostname() found.' >&4
9320 d_gethname="$define"
9323 if set uname val -f d_uname; eval $csym; $val; then
9326 uname() was found, but you're running xenix, and older versions of xenix
9327 have a broken uname(). If you don't really know whether your xenix is old
9328 enough to have a broken system call, use the default answer.
9335 rp='Is your uname() broken?'
9338 n*) d_uname="$define"; call=uname;;
9341 echo 'uname() found.' >&4
9348 case "$d_gethname" in
9349 '') d_gethname="$undef";;
9352 '') d_uname="$undef";;
9354 case "$d_uname$d_gethname" in
9359 Every now and then someone has a $call() that lies about the hostname
9360 but can't be fixed for political or economic reasons. If you wish, I can
9361 pretend $call() isn't there and maybe compute hostname at run-time
9362 thanks to the '$phostname' command.
9365 rp="Shall I ignore $call() from now on?"
9368 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9371 case "$phostname" in
9373 *) case "$aphostname" in
9379 file=`./loc $file $file $pth`
9380 aphostname=`echo $file $*`
9385 case "$d_uname$d_gethname" in
9388 case "$phostname" in
9390 echo "There will be no way for $package to get your hostname." >&4;;
9392 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9396 case "$d_phostname" in
9397 '') d_phostname="$undef";;
9400 : see if this is a netdb.h system
9404 : see if prototypes for various gethostxxx netdb.h functions are available
9406 set d_gethostprotos gethostent $i_netdb netdb.h
9409 : see if getlogin exists
9410 set getlogin d_getlogin
9413 : see if getmnt exists
9417 : see if getmntent exists
9418 set getmntent d_getmntent
9421 : see if getnetbyaddr exists
9422 set getnetbyaddr d_getnbyaddr
9425 : see if getnetbyname exists
9426 set getnetbyname d_getnbyname
9429 : see if getnetent exists
9430 set getnetent d_getnent
9433 : see if prototypes for various getnetxxx netdb.h functions are available
9435 set d_getnetprotos getnetent $i_netdb netdb.h
9438 : see if getpagesize exists
9439 set getpagesize d_getpagsz
9443 : see if getprotobyname exists
9444 set getprotobyname d_getpbyname
9447 : see if getprotobynumber exists
9448 set getprotobynumber d_getpbynumber
9451 : see if getprotoent exists
9452 set getprotoent d_getpent
9455 : see if getpgid exists
9456 set getpgid d_getpgid
9459 : see if getpgrp2 exists
9460 set getpgrp2 d_getpgrp2
9463 : see if getppid exists
9464 set getppid d_getppid
9467 : see if getpriority exists
9468 set getpriority d_getprior
9471 : see if prototypes for various getprotoxxx netdb.h functions are available
9473 set d_getprotoprotos getprotoent $i_netdb netdb.h
9476 : see if getprpwnam exists
9477 set getprpwnam d_getprpwnam
9480 : see if getpwent exists
9481 set getpwent d_getpwent
9485 : see if getservbyname exists
9486 set getservbyname d_getsbyname
9489 : see if getservbyport exists
9490 set getservbyport d_getsbyport
9493 : see if getservent exists
9494 set getservent d_getsent
9497 : see if prototypes for various getservxxx netdb.h functions are available
9499 set d_getservprotos getservent $i_netdb netdb.h
9502 : see if getspnam exists
9503 set getspnam d_getspnam
9506 : see if gettimeofday or ftime exists
9507 set gettimeofday d_gettimeod
9509 case "$d_gettimeod" in
9515 val="$undef"; set d_ftime; eval $setvar
9518 case "$d_gettimeod$d_ftime" in
9521 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9525 : see if this is an grp system
9531 xxx=`./findhdr grp.h`
9532 $cppstdin $cppflags $cppminus < $xxx >$$.h
9534 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9546 set d_grpasswd; eval $setvar
9550 : see if hasmntopt exists
9551 set hasmntopt d_hasmntopt
9554 : see if this is a netinet/in.h or sys/in.h system
9555 set netinet/in.h i_niin sys/in.h i_sysin
9558 : see if arpa/inet.h has to be included
9559 set arpa/inet.h i_arpainet
9562 : see if htonl --and friends-- exists
9567 : Maybe they are macros.
9572 #include <sys/types.h>
9573 #$i_niin I_NETINET_IN
9575 #$i_arpainet I_ARPA_INET
9577 #include <netinet/in.h>
9583 #include <arpa/inet.h>
9586 printf("Defined as a macro.");
9589 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9590 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9592 echo "But it seems to be defined as a macro." >&4
9600 : see if iconv exists
9606 if set index val -f; eval $csym; $val; then
9607 if set strchr val -f d_strchr; eval $csym; $val; then
9608 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9611 echo "strchr() found." >&4
9615 echo "index() found." >&4
9620 echo "index() found." >&4
9623 if set strchr val -f d_strchr; eval $csym; $val; then
9626 echo "strchr() found." >&4
9628 echo "No index() or strchr() found!" >&4
9633 set d_strchr; eval $setvar
9635 set d_index; eval $setvar
9637 : check whether inet_aton exists
9638 set inet_aton d_inetaton
9641 : see if inttypes.h is available
9642 : we want a real compile instead of Inhdr because some systems
9643 : have an inttypes.h which includes non-existent headers
9646 #include <inttypes.h>
9648 static int32_t foo32 = 0x12345678;
9652 if eval $compile; then
9653 echo "<inttypes.h> found." >&4
9656 echo "<inttypes.h> NOT found." >&4
9665 echo "Checking to see if you have int64_t..." >&4
9667 #include <sys/types.h>
9668 #$i_inttypes I_INTTYPES
9670 #include <inttypes.h>
9672 int main() { int64_t x = 7; }
9675 if eval $compile; then
9677 echo "You have int64_t."
9680 echo "You do not have int64_t."
9688 $cat >isascii.c <<'EOCP'
9700 if eval $compile; then
9701 echo "isascii() found." >&4
9704 echo "isascii() NOT found." >&4
9711 : see if isnan exists
9715 : see if isnanl exists
9719 : see if killpg exists
9723 : see if lchown exists
9725 $cat > try.c <<'EOCP'
9726 /* System header to define __stub macros and hopefully few prototypes,
9727 which can conflict with char lchown(); below. */
9729 /* Override any gcc2 internal prototype to avoid an error. */
9730 /* We use char because int might match the return type of a gcc2
9731 builtin and then its argument prototype would still apply. */
9734 /* The GNU C library defines this for functions which it implements
9735 to always fail with ENOSYS. Some functions are actually named
9736 something starting with __ and the normal name is an alias. */
9737 #if defined (__stub_lchown) || defined (__stub___lchown)
9745 if eval $compile; then
9746 $echo "lchown() found." >&4
9749 $echo "lchown() NOT found." >&4
9755 : See if number of significant digits in a double precision number is known
9757 $cat >ldbl_dig.c <<EOM
9767 printf("Contains LDBL_DIG");
9770 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9771 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9772 echo "LDBL_DIG found." >&4
9775 echo "LDBL_DIG NOT found." >&4
9782 : see if link exists
9786 : see if localeconv exists
9787 set localeconv d_locconv
9790 : see if lockf exists
9794 : check for long long
9796 echo "Checking to see if you have long long..." >&4
9797 echo 'int main() { long long x = 7; return 0; }' > try.c
9799 if eval $compile; then
9801 echo "You have long long."
9804 echo "You do not have long long."
9810 : check for length of long long
9811 case "${d_longlong}${longlongsize}" in
9814 echo "Checking to see how big your long longs are..." >&4
9815 $cat >try.c <<'EOCP'
9819 printf("%d\n", (int)sizeof(long long));
9824 if eval $compile_ok; then
9825 longlongsize=`./try$exe_ext`
9826 echo "Your long longs are $longlongsize bytes long."
9830 echo "(I can't seem to compile the test program. Guessing...)"
9831 rp="What is the size of a long long (in bytes)?"
9835 if $test "X$longsize" = "X$longlongsize"; then
9836 echo "(That isn't any different from an ordinary long.)"
9842 : see if prototype for lseek is available
9844 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9847 : see if lstat exists
9851 : see if madvise exists
9852 set madvise d_madvise
9855 : see if mblen exists
9859 : see if mbstowcs exists
9860 set mbstowcs d_mbstowcs
9863 : see if mbtowc exists
9867 : see if memchr exists
9871 : see if memcmp exists
9875 : see if memcpy exists
9879 : see if memmove exists
9880 set memmove d_memmove
9883 : see if memset exists
9887 : see if mkdir exists
9891 : see if mkdtemp exists
9892 set mkdtemp d_mkdtemp
9895 : see if mkfifo exists
9899 : see if mkstemp exists
9900 set mkstemp d_mkstemp
9903 : see if mkstemps exists
9904 set mkstemps d_mkstemps
9907 : see if mktime exists
9911 : see if this is a sys/mman.h system
9912 set sys/mman.h i_sysmman
9915 : see if mmap exists
9918 : see what shmat returns
9919 : default to something harmless
9921 case "$i_sysmman$d_mmap" in
9923 $cat >mmap.c <<'END'
9924 #include <sys/mman.h>
9927 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9932 echo "and it returns ($mmaptype)." >&4
9938 : see if modfl exists
9942 : see if mprotect exists
9943 set mprotect d_mprotect
9946 : see if msgctl exists
9950 : see if msgget exists
9954 : see if msgsnd exists
9958 : see if msgrcv exists
9962 : see how much of the 'msg*(2)' library is present.
9965 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9966 *"$undef"*) h_msg=false;;
9970 case "`ipcs 2>&1`" in
9971 "SVID messages"*"not configured"*)
9972 echo "Your $osname does not have the msg*(2) configured." >&4
9987 : we could also check for sys/ipc.h ...
9988 if $h_msg && $test `./findhdr sys/msg.h`; then
9989 echo "You have the full msg*(2) library." >&4
9992 echo "You don't have the full msg*(2) library." >&4
9998 : see if msync exists
10002 : see if munmap exists
10003 set munmap d_munmap
10006 : see if nice exists
10012 echo "Checking which 64-bit integer type we could use..." >&4
10018 val='"unsigned int"'
10023 *) case "$longsize" in
10027 val='"unsigned long"'
10032 *) case "$d_longlong:$longlongsize" in
10037 val='"unsigned long long"'
10042 *) case "$d_int64_t" in
10060 case "$quadtype" in
10061 '') echo "Alas, no 64-bit integer types in sight." >&4
10064 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10069 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10074 : check for length of character
10076 case "$charsize" in
10078 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10079 $cat >try.c <<'EOCP'
10083 printf("%d\n", (int)sizeof(char));
10088 if eval $compile_ok; then
10092 echo "(I can't seem to compile the test program. Guessing...)"
10099 rp="What is the size of a character (in bytes)?"
10104 : check for volatile keyword
10106 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10107 $cat >try.c <<'EOCP'
10110 typedef struct _goo_struct goo_struct;
10111 goo_struct * volatile goo = ((goo_struct *)0);
10112 struct _goo_struct {
10117 typedef unsigned short foo_t;
10118 char *volatile foo;
10120 volatile foo_t blech;
10124 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10126 echo "Yup, it does."
10129 echo "Nope, it doesn't."
10137 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10139 case "$use64bitint:$d_quad:$quadtype" in
10142 uvtype="$uquadtype"
10147 uvtype="unsigned long"
10153 case "$uselongdouble:$d_longdbl" in
10155 nvtype="long double"
10156 nvsize=$longdblsize
10163 $echo "(IV will be "$ivtype", $ivsize bytes)"
10164 $echo "(UV will be "$uvtype", $uvsize bytes)"
10165 $echo "(NV will be "$nvtype", $nvsize bytes)"
10168 #$i_inttypes I_INTTYPES
10170 #include <inttypes.h>
10175 int8_t i = INT8_MAX;
10176 uint8_t u = UINT8_MAX;
10177 printf("int8_t\n");
10180 int16_t i = INT16_MAX;
10181 uint16_t i = UINT16_MAX;
10182 printf("int16_t\n");
10185 int32_t i = INT32_MAX;
10186 uint32_t u = UINT32_MAX;
10187 printf("int32_t\n");
10193 '') case "$charsize" in
10195 u8type="unsigned char"
10204 if eval $compile; then
10205 case "`./try$exe_ext`" in
10206 int8_t) i8type=int8_t
10216 '') if $test $charsize -ge 1; then
10218 u8type="unsigned char"
10226 '') case "$shortsize" in
10228 u16type="unsigned short"
10236 '') set try -DINT16
10237 if eval $compile; then
10238 case "`./try$exe_ext`" in
10250 '') if $test $shortsize -ge 2; then
10252 u16type="unsigned short"
10260 '') case "$longsize" in
10262 u32type="unsigned long"
10266 *) case "$intsize" in
10268 u32type="unsigned int"
10278 '') set try -DINT32
10279 if eval $compile; then
10280 case "`./try$exe_ext`" in
10292 '') if $test $intsize -ge 4; then
10294 u32type="unsigned int"
10302 '') case "$d_quad:$quadtype" in
10304 i64type="$quadtype"
10305 u64type="$uquadtype"
10313 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10314 : volatile so that the compiler has to store it out to memory.
10315 if test X"$d_volatile" = X"$define"; then
10320 #include <sys/types.h>
10321 #include <signal.h>
10323 $volatile int bletched = 0;
10324 $signal_t blech(s) int s; { bletched = 1; }
10329 int n = 8 * $uvsize;
10332 signal(SIGFPE, blech);
10335 for (i = 0; i < n; i++) {
10336 u = u << 1 | ($uvtype)1;
10338 if (($uvtype)d != u)
10342 d = ($nvtype)(u - 1);
10343 if (($uvtype)d != (u - 1))
10351 printf("%d\n", ((i == n) ? -n : i));
10357 d_nv_preserves_uv="$undef"
10358 if eval $compile; then
10359 d_nv_preserves_uv_bits="`./try$exe_ext`"
10361 case "$d_nv_preserves_uv_bits" in
10363 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10364 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10365 d_nv_preserves_uv="$define"
10367 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10368 d_nv_preserves_uv="$undef" ;;
10369 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10370 d_nv_preserves_uv_bits="$undef" ;;
10376 : check for off64_t
10378 echo "Checking to see if you have off64_t..." >&4
10380 #include <sys/types.h>
10381 #include <unistd.h>
10382 int main() { off64_t x = 7; }
10385 if eval $compile; then
10387 echo "You have off64_t."
10390 echo "You do not have off64_t."
10391 case "$lseeksize" in
10392 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10399 : see if POSIX threads are available
10400 set pthread.h i_pthread
10406 : how to create joinable pthreads
10407 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10409 echo "Checking what constant to use for creating joinable pthreads..." >&4
10410 $cat >try.c <<'EOCP'
10411 #include <pthread.h>
10413 int detachstate = JOINABLE;
10416 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10417 if eval $compile; then
10418 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10419 val="$undef" # Yes, undef.
10420 set d_old_pthread_create_joinable
10423 set old_pthread_create_joinable
10426 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10427 if eval $compile; then
10428 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10430 set d_old_pthread_create_joinable
10432 val=PTHREAD_CREATE_UNDETACHED
10433 set old_pthread_create_joinable
10436 set try -DJOINABLE=__UNDETACHED
10437 if eval $compile; then
10438 echo "You seem to use __UNDETACHED." >&4
10440 set d_old_pthread_create_joinable
10443 set old_pthread_create_joinable
10446 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10448 set d_old_pthread_create_joinable
10451 set old_pthread_create_joinable
10458 d_old_pthread_create_joinable="$undef"
10459 old_pthread_create_joinable=""
10462 : see if pause exists
10466 : see if pipe exists
10470 : see if poll exists
10475 : see whether the various POSIXish _yields exist
10477 #include <pthread.h>
10483 #ifdef PTHREAD_YIELD
10486 #ifdef PTHREAD_YIELD_NULL
10487 pthread_yield(NULL);
10493 : see if sched_yield exists
10494 set try -DSCHED_YIELD
10495 if eval $compile; then
10497 sched_yield='sched_yield()'
10501 case "$usethreads" in
10504 $define) echo 'sched_yield() found.' >&4 ;;
10505 *) echo 'sched_yield() NOT found.' >&4 ;;
10511 : see if pthread_yield exists
10512 set try -DPTHREAD_YIELD
10513 if eval $compile; then
10515 case "$sched_yield" in
10516 '') sched_yield='pthread_yield()' ;;
10519 set try -DPTHREAD_YIELD_NULL
10520 if eval $compile; then
10522 case "$sched_yield" in
10523 '') sched_yield='pthread_yield(NULL)' ;;
10529 case "$usethreads" in
10532 $define) echo 'pthread_yield() found.' >&4 ;;
10533 *) echo 'pthread_yield() NOT found.' >&4 ;;
10537 set d_pthread_yield
10540 case "$sched_yield" in
10541 '') sched_yield=undef ;;
10546 : see if this is a pwd.h system
10552 xxx=`./findhdr pwd.h`
10553 $cppstdin $cppflags $cppminus < $xxx >$$.h
10555 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10563 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10571 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10579 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10587 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10595 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10603 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10611 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10623 set d_pwquota; eval $setvar
10624 set d_pwage; eval $setvar
10625 set d_pwchange; eval $setvar
10626 set d_pwclass; eval $setvar
10627 set d_pwexpire; eval $setvar
10628 set d_pwcomment; eval $setvar
10629 set d_pwgecos; eval $setvar
10630 set d_pwpasswd; eval $setvar
10634 : see if readdir and friends exist
10635 set readdir d_readdir
10637 set seekdir d_seekdir
10639 set telldir d_telldir
10641 set rewinddir d_rewinddir
10644 : see if readlink exists
10645 set readlink d_readlink
10648 : see if rename exists
10649 set rename d_rename
10652 : see if rmdir exists
10656 : see if memory.h is available.
10661 : See if it conflicts with string.h
10667 $cppstdin $cppflags $cppminus < $strings > mem.h
10668 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10670 echo "We won't be including <memory.h>."
10680 : can bcopy handle overlapping blocks?
10685 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10687 #$i_memory I_MEMORY
10688 #$i_stdlib I_STDLIB
10689 #$i_string I_STRING
10690 #$i_unistd I_UNISTD
10692 $cat >>try.c <<'EOCP'
10695 # include <memory.h>
10698 # include <stdlib.h>
10701 # include <string.h>
10703 # include <strings.h>
10706 # include <unistd.h> /* Needed for NetBSD */
10710 char buf[128], abc[128];
10716 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10718 for (align = 7; align >= 0; align--) {
10719 for (len = 36; len; len--) {
10721 bcopy(abc, b, len);
10722 for (off = 1; off <= len; off++) {
10723 bcopy(b, b+off, len);
10724 bcopy(b+off, b, len);
10725 if (bcmp(b, abc, len))
10734 if eval $compile_ok; then
10735 if ./try 2>/dev/null; then
10736 echo "Yes, it can."
10739 echo "It can't, sorry."
10740 case "$d_memmove" in
10741 "$define") echo "But that's Ok since you have memmove()." ;;
10745 echo "(I can't compile the test program, so we'll assume not...)"
10746 case "$d_memmove" in
10747 "$define") echo "But that's Ok since you have memmove()." ;;
10752 $rm -f try.* try core
10756 : can memcpy handle overlapping blocks?
10758 case "$d_memcpy" in
10761 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10763 #$i_memory I_MEMORY
10764 #$i_stdlib I_STDLIB
10765 #$i_string I_STRING
10766 #$i_unistd I_UNISTD
10768 $cat >>try.c <<'EOCP'
10771 # include <memory.h>
10774 # include <stdlib.h>
10777 # include <string.h>
10779 # include <strings.h>
10782 # include <unistd.h> /* Needed for NetBSD */
10786 char buf[128], abc[128];
10792 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10793 try to store the string in read-only memory. */
10794 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10796 for (align = 7; align >= 0; align--) {
10797 for (len = 36; len; len--) {
10799 memcpy(b, abc, len);
10800 for (off = 1; off <= len; off++) {
10801 memcpy(b+off, b, len);
10802 memcpy(b, b+off, len);
10803 if (memcmp(b, abc, len))
10812 if eval $compile_ok; then
10813 if ./try 2>/dev/null; then
10814 echo "Yes, it can."
10817 echo "It can't, sorry."
10818 case "$d_memmove" in
10819 "$define") echo "But that's Ok since you have memmove()." ;;
10823 echo "(I can't compile the test program, so we'll assume not...)"
10824 case "$d_memmove" in
10825 "$define") echo "But that's Ok since you have memmove()." ;;
10830 $rm -f try.* try core
10834 : can memcmp be trusted to compare relative magnitude?
10836 case "$d_memcmp" in
10839 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10841 #$i_memory I_MEMORY
10842 #$i_stdlib I_STDLIB
10843 #$i_string I_STRING
10844 #$i_unistd I_UNISTD
10846 $cat >>try.c <<'EOCP'
10849 # include <memory.h>
10852 # include <stdlib.h>
10855 # include <string.h>
10857 # include <strings.h>
10860 # include <unistd.h> /* Needed for NetBSD */
10866 if ((a < b) && memcmp(&a, &b, 1) < 0)
10872 if eval $compile_ok; then
10873 if ./try 2>/dev/null; then
10874 echo "Yes, it can."
10877 echo "No, it can't (it uses signed chars)."
10880 echo "(I can't compile the test program, so we'll assume not...)"
10884 $rm -f try.* try core
10888 : see if select exists
10889 set select d_select
10892 : see if semctl exists
10893 set semctl d_semctl
10896 : see if semget exists
10897 set semget d_semget
10900 : see if semop exists
10904 : see how much of the 'sem*(2)' library is present.
10907 case "$d_semctl$d_semget$d_semop" in
10908 *"$undef"*) h_sem=false;;
10912 case "`ipcs 2>&1`" in
10913 "SVID messages"*"not configured"*)
10914 echo "Your $osname does not have the sem*(2) configured." >&4
10917 set semctl d_semctl
10919 set semget d_semget
10927 : we could also check for sys/ipc.h ...
10928 if $h_sem && $test `./findhdr sys/sem.h`; then
10929 echo "You have the full sem*(2) library." >&4
10932 echo "You don't have the full sem*(2) library." >&4
10938 : see whether sys/sem.h defines union semun
10940 $cat > try.c <<'END'
10941 #include <sys/types.h>
10942 #include <sys/ipc.h>
10943 #include <sys/sem.h>
10944 int main () { union semun semun; semun.buf = 0; }
10947 if eval $compile; then
10948 echo "You have union semun in <sys/sem.h>." >&4
10951 echo "You do not have union semun in <sys/sem.h>." >&4
10954 $rm -f try try.c try.h
10958 : see how to do semctl IPC_STAT
10961 : see whether semctl IPC_STAT can use union semun
10966 # define S_IRUSR S_IREAD
10967 # define S_IWUSR S_IWRITE
10968 # define S_IXUSR S_IEXEC
10970 # define S_IRUSR 0400
10971 # define S_IWUSR 0200
10972 # define S_IXUSR 0100
10974 # define S_IRGRP (S_IRUSR>>3)
10975 # define S_IWGRP (S_IWUSR>>3)
10976 # define S_IXGRP (S_IXUSR>>3)
10977 # define S_IROTH (S_IRUSR>>6)
10978 # define S_IWOTH (S_IWUSR>>6)
10979 # define S_IXOTH (S_IXUSR>>6)
10982 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10983 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10984 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10989 #include <sys/types.h>
10990 #include <sys/ipc.h>
10991 #include <sys/sem.h>
10992 #include <sys/stat.h>
10999 #$d_union_semun HAS_UNION_SEMUN
11002 #ifndef HAS_UNION_SEMUN
11005 struct semid_ds *buf;
11006 unsigned short *array;
11012 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11013 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11015 struct semid_ds argbuf;
11018 st = semctl(sem, 0, IPC_STAT, arg);
11022 # endif /* IPC_STAT */
11023 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11025 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11026 # endif /* IPC_RMID */
11027 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11029 #endif /* IPC_PRIVATE && ... */
11030 printf("semget failed: errno = %d\n", errno);
11036 if eval $compile; then
11039 semun) val="$define" ;;
11045 case "$d_semctl_semun" in
11047 echo "You can use union semun for semctl IPC_STAT." >&4
11050 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11055 : see whether semctl IPC_STAT can use struct semid_ds pointer
11056 $cat > try.c <<'END'
11057 #include <sys/types.h>
11058 #include <sys/ipc.h>
11059 #include <sys/sem.h>
11060 #include <sys/stat.h>
11068 struct semid_ds arg;
11071 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11072 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11075 st = semctl(sem, 0, IPC_STAT, &arg);
11077 printf("semid_ds\n");
11079 # endif /* IPC_STAT */
11080 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11082 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11083 # endif /* IPC_RMID */
11084 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11086 #endif /* IPC_PRIVATE && ... */
11087 printf("semget failed: errno = %d\n", errno);
11094 if eval $compile; then
11097 semid_ds) val="$define" ;;
11101 set d_semctl_semid_ds
11103 case "$d_semctl_semid_ds" in
11105 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11107 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11114 # We do not have the full sem*(2) library, so assume we can not
11120 set d_semctl_semid_ds
11125 : see if setegid exists
11126 set setegid d_setegid
11129 : see if seteuid exists
11130 set seteuid d_seteuid
11133 : see if setgrent exists
11134 set setgrent d_setgrent
11137 : see if sethostent exists
11138 set sethostent d_sethent
11141 : see if setlinebuf exists
11142 set setlinebuf d_setlinebuf
11145 : see if setlocale exists
11146 set setlocale d_setlocale
11149 : see if setnetent exists
11150 set setnetent d_setnent
11153 : see if setprotoent exists
11154 set setprotoent d_setpent
11157 : see if setpgid exists
11158 set setpgid d_setpgid
11161 : see if setpgrp2 exists
11162 set setpgrp2 d_setpgrp2
11165 : see if setpriority exists
11166 set setpriority d_setprior
11169 : see if setproctitle exists
11170 set setproctitle d_setproctitle
11173 : see if setpwent exists
11174 set setpwent d_setpwent
11177 : see if setregid exists
11178 set setregid d_setregid
11180 set setresgid d_setresgid
11183 : see if setreuid exists
11184 set setreuid d_setreuid
11186 set setresuid d_setresuid
11189 : see if setrgid exists
11190 set setrgid d_setrgid
11193 : see if setruid exists
11194 set setruid d_setruid
11197 : see if setservent exists
11198 set setservent d_setsent
11201 : see if setsid exists
11202 set setsid d_setsid
11205 : see if setvbuf exists
11206 set setvbuf d_setvbuf
11209 : see if sfio.h is available
11214 : see if sfio library is available
11225 : Ok, but do we want to use it.
11229 true|$define|[yY]*) dflt='y';;
11232 echo "$package can use the sfio library, but it is experimental."
11233 case "$useperlio" in
11235 echo "For sfio also the PerlIO abstraction layer is needed."
11236 echo "Earlier you said you wouldn't want that."
11239 rp="You seem to have sfio available, do you want to try using it?"
11242 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11243 useperlio="$define"
11246 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11248 : Remove sfio from list of libraries to use
11249 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11252 echo "libs = $libs" >&4
11256 *) case "$usesfio" in
11257 true|$define|[yY]*)
11258 echo "Sorry, cannot find sfio on this machine." >&4
11259 echo "Ignoring your setting of usesfio=$usesfio." >&4
11268 $define) usesfio='true';;
11269 *) usesfio='false';;
11272 : see if shmctl exists
11273 set shmctl d_shmctl
11276 : see if shmget exists
11277 set shmget d_shmget
11280 : see if shmat exists
11283 : see what shmat returns
11286 $cat >shmat.c <<'END'
11287 #include <sys/shm.h>
11290 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11295 echo "and it returns ($shmattype)." >&4
11296 : see if a prototype for shmat is available
11297 xxx=`./findhdr sys/shm.h`
11298 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11299 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11310 set d_shmatprototype
11313 : see if shmdt exists
11317 : see how much of the 'shm*(2)' library is present.
11320 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11321 *"$undef"*) h_shm=false;;
11325 case "`ipcs 2>&1`" in
11326 "SVID shared memory"*"not configured"*)
11327 echo "Your $osname does not have the shm*(2) configured." >&4
11330 set shmctl d_shmctl
11332 set shmget d_shmget
11342 : we could also check for sys/ipc.h ...
11343 if $h_shm && $test `./findhdr sys/shm.h`; then
11344 echo "You have the full shm*(2) library." >&4
11347 echo "You don't have the full shm*(2) library." >&4
11354 : see if we have sigaction
11355 if set sigaction val -f d_sigaction; eval $csym; $val; then
11356 echo 'sigaction() found.' >&4
11357 $cat > try.c <<'EOP'
11359 #include <sys/types.h>
11360 #include <signal.h>
11363 struct sigaction act, oact;
11365 oact.sa_handler = 0;
11366 /* so that act and oact are used */
11367 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11371 if eval $compile_ok; then
11374 echo "But you don't seem to have a useable struct sigaction." >&4
11378 echo 'sigaction NOT found.' >&4
11381 set d_sigaction; eval $setvar
11382 $rm -f try try$_o try.c
11384 : see if sigsetjmp exists
11386 case "$d_sigsetjmp" in
11388 $cat >try.c <<'EOP'
11389 #include <setjmp.h>
11394 if (sigsetjmp(env,1))
11397 siglongjmp(env, 1);
11402 if eval $compile; then
11403 if ./try >/dev/null 2>&1; then
11404 echo "POSIX sigsetjmp found." >&4
11408 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11414 echo "sigsetjmp not found." >&4
11418 *) val="$d_sigsetjmp"
11419 case "$d_sigsetjmp" in
11420 $define) echo "POSIX sigsetjmp found." >&4;;
11421 $undef) echo "sigsetjmp not found." >&4;;
11429 : see if socks5_init exists
11430 set socks5_init d_socks5_init
11433 : see if sys/stat.h is available
11434 set sys/stat.h i_sysstat
11438 : see if stat knows about block sizes
11440 echo "Checking to see if your struct stat has st_blocks field..." >&4
11441 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11445 : see if this is a sys/vfs.h system
11446 set sys/vfs.h i_sysvfs
11450 : see if this is a sys/statfs.h system
11451 set sys/statfs.h i_sysstatfs
11456 echo "Checking to see if your system supports struct statfs..." >&4
11457 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
11459 case "$d_statfs_s" in
11460 "$define") echo "Yes, it does." ;;
11461 *) echo "No, it doesn't." ;;
11466 : see if struct statfs knows about f_flags
11467 case "$d_statfs_s" in
11470 echo "Checking to see if your struct statfs has f_flags field..." >&4
11471 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
11475 set d_statfs_f_flags
11479 case "$d_statfs_f_flags" in
11480 "$define") echo "Yes, it does." ;;
11481 *) echo "No, it doesn't." ;;
11484 : see if _ptr and _cnt from stdio act std
11487 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11488 echo "(Looks like you have stdio.h from BSD.)"
11489 case "$stdio_ptr" in
11490 '') stdio_ptr='((fp)->_p)'
11493 *) ptr_lval=$d_stdio_ptr_lval;;
11495 case "$stdio_cnt" in
11496 '') stdio_cnt='((fp)->_r)'
11499 *) cnt_lval=$d_stdio_cnt_lval;;
11501 case "$stdio_base" in
11502 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11504 case "$stdio_bufsiz" in
11505 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11507 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11508 echo "(Looks like you have stdio.h from Linux.)"
11509 case "$stdio_ptr" in
11510 '') stdio_ptr='((fp)->_IO_read_ptr)'
11513 *) ptr_lval=$d_stdio_ptr_lval;;
11515 case "$stdio_cnt" in
11516 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11519 *) cnt_lval=$d_stdio_cnt_lval;;
11521 case "$stdio_base" in
11522 '') stdio_base='((fp)->_IO_read_base)';;
11524 case "$stdio_bufsiz" in
11525 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11528 case "$stdio_ptr" in
11529 '') stdio_ptr='((fp)->_ptr)'
11532 *) ptr_lval=$d_stdio_ptr_lval;;
11534 case "$stdio_cnt" in
11535 '') stdio_cnt='((fp)->_cnt)'
11538 *) cnt_lval=$d_stdio_cnt_lval;;
11540 case "$stdio_base" in
11541 '') stdio_base='((fp)->_base)';;
11543 case "$stdio_bufsiz" in
11544 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11548 : test whether _ptr and _cnt really work
11549 echo "Checking how std your stdio is..." >&4
11552 #define FILE_ptr(fp) $stdio_ptr
11553 #define FILE_cnt(fp) $stdio_cnt
11555 FILE *fp = fopen("try.c", "r");
11558 18 <= FILE_cnt(fp) &&
11559 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11567 if eval $compile; then
11569 echo "Your stdio acts pretty std."
11572 echo "Your stdio isn't very std."
11575 echo "Your stdio doesn't appear very std."
11581 : Can _ptr be used as an lvalue?
11582 case "$d_stdstdio$ptr_lval" in
11583 $define$define) val=$define ;;
11586 set d_stdio_ptr_lval
11589 : Can _cnt be used as an lvalue?
11590 case "$d_stdstdio$cnt_lval" in
11591 $define$define) val=$define ;;
11594 set d_stdio_cnt_lval
11598 : test whether setting _ptr sets _cnt as a side effect
11599 d_stdio_ptr_lval_sets_cnt="$undef"
11600 d_stdio_ptr_lval_nochange_cnt="$undef"
11601 case "$d_stdio_ptr_lval$d_stdstdio" in
11603 echo "Checking to see what happens if we set the stdio ptr..." >&4
11606 /* Can we scream? */
11607 /* Eat dust sed :-) */
11608 /* In the buffer space, no one can hear you scream. */
11609 #define FILE_ptr(fp) $stdio_ptr
11610 #define FILE_cnt(fp) $stdio_cnt
11611 #include <sys/types.h>
11613 FILE *fp = fopen("try.c", "r");
11618 puts("Fail even to read");
11621 c = getc(fp); /* Read away the first # */
11623 puts("Fail even to read");
11627 18 <= FILE_cnt(fp) &&
11628 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11630 puts("Fail even to read");
11633 ptr = (char*) FILE_ptr(fp);
11634 cnt = (size_t)FILE_cnt(fp);
11636 FILE_ptr(fp) += 42;
11638 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11639 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11642 if (FILE_cnt(fp) <= 20) {
11643 printf ("Fail (<20 chars to test)");
11646 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11647 puts("Fail compare");
11650 if (cnt == FILE_cnt(fp)) {
11651 puts("Pass_unchanged");
11654 if (FILE_cnt(fp) == (cnt - 42)) {
11655 puts("Pass_changed");
11658 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11664 if eval $compile; then
11665 case `./try$exe_ext` in
11667 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11668 d_stdio_ptr_lval_sets_cnt="$define" ;;
11670 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11671 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11673 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11675 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11678 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11684 : see if _base is also standard
11686 case "$d_stdstdio" in
11690 #define FILE_base(fp) $stdio_base
11691 #define FILE_bufsiz(fp) $stdio_bufsiz
11693 FILE *fp = fopen("try.c", "r");
11696 19 <= FILE_bufsiz(fp) &&
11697 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11704 if eval $compile; then
11706 echo "And its _base field acts std."
11709 echo "But its _base field isn't std."
11712 echo "However, it seems to be lacking the _base field."
11721 Checking how to access stdio streams by file descriptor number...
11723 case "$stdio_stream_array" in
11724 '') $cat >try.c <<EOCP
11727 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11731 for s in _iob __iob __sF
11733 set try -DSTDIO_STREAM_ARRAY=$s
11734 if eval $compile; then
11735 case "`./try$exe_ext`" in
11736 yes) stdio_stream_array=$s; break ;;
11740 $rm -f try.* try$exe_ext
11742 case "$stdio_stream_array" in
11744 I can't figure out how to access stdio streams by file descriptor number.
11746 d_stdio_stream_array="$undef"
11749 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11751 d_stdio_stream_array="$define"
11755 : see if strcoll exists
11756 set strcoll d_strcoll
11759 : check for structure copying
11761 echo "Checking to see if your C compiler can copy structs..." >&4
11762 $cat >try.c <<'EOCP'
11772 if $cc -c try.c >/dev/null 2>&1 ; then
11774 echo "Yup, it can."
11777 echo "Nope, it can't."
11783 : see if strerror and/or sys_errlist[] exist
11785 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11786 if set strerror val -f d_strerror; eval $csym; $val; then
11787 echo 'strerror() found.' >&4
11788 d_strerror="$define"
11789 d_strerrm='strerror(e)'
11790 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11791 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11792 d_syserrlst="$define"
11794 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11795 d_syserrlst="$undef"
11797 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11798 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11799 echo 'strerror() found in string header.' >&4
11800 d_strerror="$define"
11801 d_strerrm='strerror(e)'
11802 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11803 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11804 d_syserrlst="$define"
11806 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11807 d_syserrlst="$undef"
11809 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11810 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11811 d_strerror="$undef"
11812 d_syserrlst="$define"
11813 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11815 echo 'strerror() and sys_errlist[] NOT found.' >&4
11816 d_strerror="$undef"
11817 d_syserrlst="$undef"
11818 d_strerrm='"unknown"'
11822 : see if strtod exists
11823 set strtod d_strtod
11826 : see if strtol exists
11827 set strtol d_strtol
11830 : see if strtold exists
11831 set strtold d_strtold
11834 : see if strtoll exists
11835 set strtoll d_strtoll
11838 case "$d_longlong-$d_strtoll" in
11841 Checking whether your strtoll() works okay...
11843 $cat >try.c <<'EOCP'
11846 #define strtoll __strtoll
11849 #define strtoll _strtoll
11852 extern long long int strtoll(char *s, char **, int);
11853 static int bad = 0;
11854 int check(char *s, long long ell, int een) {
11857 gll = strtoll(s, 0, 10);
11858 if (!((gll == ell) && (errno == een)))
11862 check(" 1", 1LL, 0);
11863 check(" 0", 0LL, 0);
11864 check("-1", -1LL, 0);
11865 check("-9223372036854775808", -9223372036854775808LL, 0);
11866 check("-9223372036854775808", -9223372036854775808LL, 0);
11867 check(" 9223372036854775807", 9223372036854775807LL, 0);
11868 check("-9223372036854775808", -9223372036854775808LL, 0);
11869 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11870 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11876 if eval $compile; then
11879 ok) echo "Your strtoll() seems to be working okay." ;;
11881 Your strtoll() doesn't seem to be working okay.
11887 echo "(I can't seem to compile the test program--assuming it doesn't)"
11893 : see if strtoul exists
11894 set strtoul d_strtoul
11897 : see if strtoull exists
11898 set strtoull d_strtoull
11901 case "$d_longlong-$d_strtoull" in
11904 Checking whether your strtoull() works okay...
11906 $cat >try.c <<'EOCP'
11909 #define strtoull __strtoull
11912 extern unsigned long long int strtoull(char *s, char **, int);
11913 static int bad = 0;
11914 int check(char *s, long long eull, int een) {
11917 gull = strtoull(s, 0, 10);
11918 if (!((gull == eull) && (errno == een)))
11922 check(" 1", 1LL, 0);
11923 check(" 0", 0LL, 0);
11924 check("18446744073709551615", 18446744073709551615ULL, 0);
11925 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11931 if eval $compile; then
11933 ok) echo "Your strtoull() seems to be working okay." ;;
11935 Your strtoull() doesn't seem to be working okay.
11937 d_strtoull="$undef"
11944 : see if strtouq exists
11945 set strtouq d_strtouq
11948 : see if strxfrm exists
11949 set strxfrm d_strxfrm
11952 : see if symlink exists
11953 set symlink d_symlink
11956 : see if syscall exists
11957 set syscall d_syscall
11960 : see if sysconf exists
11961 set sysconf d_sysconf
11964 : see if system exists
11965 set system d_system
11968 : see if tcgetpgrp exists
11969 set tcgetpgrp d_tcgetpgrp
11972 : see if tcsetpgrp exists
11973 set tcsetpgrp d_tcsetpgrp
11976 : see if prototype for telldir is available
11978 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11981 : see if this is a sys/times.h system
11982 set sys/times.h i_systimes
11985 : see if times exists
11987 if set times val -f d_times; eval $csym; $val; then
11988 echo 'times() found.' >&4
11991 case "$i_systimes" in
11992 "$define") inc='sys/times.h';;
11994 rp="What is the type returned by times() on this system?"
11995 set clock_t clocktype long stdio.h sys/types.h $inc
11998 echo 'times() NOT found, hope that will do.' >&4
12003 : see if truncate exists
12004 set truncate d_truncate
12007 : see if tzname[] exists
12009 if set tzname val -a d_tzname; eval $csym; $val; then
12011 echo 'tzname[] found.' >&4
12014 echo 'tzname[] NOT found.' >&4
12019 : see if umask exists
12023 : see if ustat exists
12027 : backward compatibility for d_hvfork
12028 if test X$d_hvfork != X; then
12029 d_vfork="$d_hvfork"
12032 : see if there is a vfork
12037 : Ok, but do we want to use it. vfork is reportedly unreliable in
12038 : perl on Solaris 2.x, and probably elsewhere.
12042 case "$usevfork" in
12048 Perl can only use a vfork() that doesn't suffer from strict
12049 restrictions on calling functions or modifying global data in
12050 the child. For example, glibc-2.1 contains such a vfork()
12051 that is unsuitable. If your system provides a proper fork()
12052 call, chances are that you do NOT want perl to use vfork().
12055 rp="Do you still want to use vfork()?"
12060 echo "Ok, we won't use vfork()."
12069 $define) usevfork='true';;
12070 *) usevfork='false';;
12073 : see if this is an sysdir system
12074 set sys/dir.h i_sysdir
12077 : see if this is an sysndir system
12078 set sys/ndir.h i_sysndir
12081 : see if closedir exists
12082 set closedir d_closedir
12085 case "$d_closedir" in
12088 echo "Checking whether closedir() returns a status..." >&4
12089 cat > closedir.c <<EOM
12090 #$i_dirent I_DIRENT /**/
12091 #$i_sysdir I_SYS_DIR /**/
12092 #$i_sysndir I_SYS_NDIR /**/
12093 #$i_systypes I_SYS_TYPES /**/
12095 #if defined(I_SYS_TYPES)
12096 #include <sys/types.h>
12098 #if defined(I_DIRENT)
12099 #include <dirent.h>
12100 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12101 #include <sys/dir.h>
12105 #include <sys/ndir.h>
12109 #include <ndir.h> /* may be wrong in the future */
12111 #include <sys/dir.h>
12116 int main() { return closedir(opendir(".")); }
12119 if eval $compile_ok; then
12120 if ./closedir > /dev/null 2>&1 ; then
12121 echo "Yes, it does."
12124 echo "No, it doesn't."
12128 echo "(I can't seem to compile the test program--assuming it doesn't)"
12136 set d_void_closedir
12139 : see if there is a wait4
12143 : see if waitpid exists
12144 set waitpid d_waitpid
12147 : see if wcstombs exists
12148 set wcstombs d_wcstombs
12151 : see if wctomb exists
12152 set wctomb d_wctomb
12155 : preserve RCS keywords in files with variable substitution, grrr
12160 Revision='$Revision'
12162 case "$crosscompile" in
12163 ''|[nN]*) crosscompile="$undef" ;;
12167 next|rhapsody|darwin) multiarch="$define" ;;
12169 case "$multiarch" in
12170 ''|[nN]*) multiarch="$undef" ;;
12173 : check for alignment requirements
12175 case "$crosscompile$multiarch" in
12178 You seem to be either cross-compiling or doing a multiarchitecture build,
12179 skipping the memory alignment check.
12182 case "$alignbytes" in
12183 '') alignbytes=8 ;;
12187 case "$alignbytes" in
12188 '') echo "Checking alignment constraints..." >&4
12189 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12190 $cat >try.c <<'EOCP'
12191 typedef long double NV;
12194 $cat >try.c <<'EOCP'
12198 $cat >>try.c <<'EOCP'
12206 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12211 if eval $compile_ok; then
12215 echo "(I can't seem to compile the test program...)"
12218 *) dflt="$alignbytes"
12221 rp="Doubles must be aligned on a how-many-byte boundary?"
12229 : set the base revision
12232 : check for ordering of bytes in a long
12234 case "$crosscompile$multiarch" in
12237 You seem to be either cross-compiling or doing a multiarchitecture build,
12238 skipping the byteorder check.
12244 case "$byteorder" in
12247 In the following, larger digits indicate more significance. A big-endian
12248 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12249 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12250 machines may have weird orders like 3412. A Cray will report 87654321,
12251 an Alpha will report 12345678. If the test program works the default is
12253 I'm now running the test program...
12255 $cat >try.c <<'EOCP'
12262 char c[sizeof(long)];
12265 if (sizeof(long) > 4)
12266 u.l = (0x08070605L << 32) | 0x04030201L;
12269 for (i = 0; i < sizeof(long); i++)
12270 printf("%c", u.c[i]+'0');
12277 if eval $compile && ./try > /dev/null; then
12280 [1-4][1-4][1-4][1-4]|12345678|87654321)
12281 echo "(The test program ran ok.)"
12282 echo "byteorder=$dflt"
12285 ????|????????) echo "(The test program ran ok.)" ;;
12286 *) echo "(The test program didn't run right for some reason.)" ;;
12291 (I can't seem to compile the test program. Guessing big-endian...)
12294 case "$xxx_prompt" in
12296 rp="What is the order of bytes in a long?"
12310 : how do we catenate cpp tokens here?
12312 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12313 $cat >cpp_stuff.c <<'EOCP'
12314 #define RCAT(a,b)a/**/b
12315 #define ACAT(a,b)a ## b
12319 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12320 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12321 echo "Oh! Smells like ANSI's been here." >&4
12322 echo "We can catify or stringify, separately or together!"
12324 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12325 echo "Ah, yes! The good old days!" >&4
12326 echo "However, in the good old days we don't know how to stringify and"
12327 echo "catify at the same time."
12331 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12332 to have to edit the values of CAT[2-5] in config.h...
12334 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12338 : see if this is a db.h system
12344 : Check db version.
12346 echo "Checking Berkeley DB version ..." >&4
12352 #include <sys/types.h>
12357 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12358 int Major, Minor, Patch ;
12359 unsigned long Version ;
12360 (void)db_version(&Major, &Minor, &Patch) ;
12361 printf("You have Berkeley DB Version 2 or greater\n");
12363 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12364 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12365 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12366 Major, Minor, Patch) ;
12368 /* check that db.h & libdb are compatible */
12369 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12370 printf("db.h and libdb are incompatible\n") ;
12374 printf("db.h and libdb are compatible\n") ;
12376 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12377 + DB_VERSION_PATCH ;
12379 /* needs to be >= 2.3.4 */
12380 if (Version < 2003004) {
12381 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12382 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12388 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12389 printf("You have Berkeley DB Version 1\n");
12390 exit(0); /* DB version < 2: the coast is clear. */
12392 exit(1); /* <db.h> not Berkeley DB? */
12398 if eval $compile_ok && ./try; then
12399 echo 'Looks OK.' >&4
12401 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12405 : Remove db from list of libraries to use
12406 echo "Removing unusable -ldb from library list" >&4
12407 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12410 echo "libs = $libs" >&4
12420 : Check the return type needed for hash
12422 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12428 #include <sys/types.h>
12431 #ifndef DB_VERSION_MAJOR
12432 u_int32_t hash_cb (ptr, size)
12440 info.hash = hash_cb;
12444 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12445 if $contains warning try.out >>/dev/null 2>&1 ; then
12448 db_hashtype='u_int32_t'
12451 : XXX Maybe we should just give up here.
12452 db_hashtype=u_int32_t
12454 echo "Help: I can't seem to compile the db test program." >&4
12455 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12458 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12460 *) db_hashtype=u_int32_t
12465 : Check the return type needed for prefix
12467 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12473 #include <sys/types.h>
12476 #ifndef DB_VERSION_MAJOR
12477 size_t prefix_cb (key1, key2)
12485 info.prefix = prefix_cb;
12489 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12490 if $contains warning try.out >>/dev/null 2>&1 ; then
12491 db_prefixtype='int'
12493 db_prefixtype='size_t'
12496 db_prefixtype='size_t'
12497 : XXX Maybe we should just give up here.
12499 echo "Help: I can't seem to compile the db test program." >&4
12500 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12503 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12505 *) db_prefixtype='size_t'
12509 : check for void type
12511 echo "Checking to see how well your C compiler groks the void type..." >&4
12512 case "$voidflags" in
12514 $cat >try.c <<'EOCP'
12520 extern void moo(); /* function returning void */
12521 void (*goo)(); /* ptr to func returning void */
12523 void *hue; /* generic ptr */
12536 int main() { sub(); }
12538 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12539 voidflags=$defvoidused
12540 echo "Good. It appears to support void to the level $package wants.">&4
12541 if $contains warning .out >/dev/null 2>&1; then
12542 echo "However, you might get some warnings that look like this:"
12546 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12547 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12548 echo "It supports 1..."
12549 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12550 echo "It also supports 2..."
12551 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12553 echo "And it supports 4 but not 8 definitely."
12555 echo "It doesn't support 4..."
12556 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12558 echo "But it supports 8."
12561 echo "Neither does it support 8."
12565 echo "It does not support 2..."
12566 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12568 echo "But it supports 4 and 8."
12570 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12572 echo "And it supports 4 but has not heard about 8."
12574 echo "However it supports 8 but not 4."
12579 echo "There is no support at all for void."
12584 case "$voidflags" in
12586 *) $cat >&4 <<'EOM'
12587 Support flag bits are:
12588 1: basic void declarations.
12589 2: arrays of pointers to functions returning void.
12590 4: operations between pointers to and addresses of void functions.
12591 8: generic void pointers.
12594 rp="Your void support flags add up to what?"
12602 : How can we generate normalized random numbers ?
12604 echo "Looking for a random number function..." >&4
12605 case "$randfunc" in
12607 if set drand48 val -f; eval $csym; $val; then
12609 echo "Good, found drand48()." >&4
12610 elif set random val -f; eval $csym; $val; then
12612 echo "OK, found random()." >&4
12615 echo "Yick, looks like I have to use rand()." >&4
12626 *-Dmy_rand=*|*-Dmy_srand=*)
12627 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12628 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12629 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12630 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12634 while $test "$cont"; do
12635 rp="Use which function to generate random numbers?"
12637 if $test "$ans" = "$dflt"; then
12643 if set $ans val -f; eval $csym; $val; then
12647 rp="I cannot find function $ans. Use that name anyway?"
12656 case "$randfunc" in
12658 drand01="drand48()"
12664 case "$randbits" in
12666 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12668 #$i_unistd I_UNISTD
12669 #$i_stdlib I_STDLIB
12672 # include <unistd.h>
12675 # include <stdlib.h>
12680 register unsigned long tmp;
12681 register unsigned long max = 0L;
12683 for (i = 1000; i; i--) {
12684 tmp = (unsigned long) $randfunc();
12685 if (tmp > max) max = tmp;
12687 for (i = 0; max; i++)
12693 if eval $compile_ok; then
12697 echo "(I can't seem to compile the test program...)"
12704 rp="How many bits does your $randfunc() function produce?"
12708 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12709 seedfunc="s$randfunc"
12710 randseedtype=unsigned
12714 rp="How many bits does your $randfunc() function produce?"
12717 seedfunc="s$randfunc"
12718 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12719 if set $seedfunc val -f; eval $csym; $val; then
12720 echo "(Using $seedfunc() to seed random generator)"
12722 echo "(Warning: no $seedfunc() to seed random generator)"
12725 randseedtype=unsigned
12733 echo "Determining whether or not we are on an EBCDIC system..." >&4
12734 $cat >tebcdic.c <<'EOM'
12737 if ('M'==0xd4) return 0;
12744 if eval $compile_ok; then
12746 echo "You seem to speak EBCDIC." >&4
12749 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12752 echo "I'm unable to compile the test program." >&4
12753 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12755 $rm -f tebcdic.c tebcdic
12761 Checking how to flush all pending stdio output...
12763 # I only know how to find the first 32 possibly open files on SunOS.
12764 # See also hints/sunos_4_1.sh and util.c --AD
12766 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12768 $cat >>try.c <<EOCP
12770 #$i_unistd I_UNISTD
12772 # include <unistd.h>
12774 #$d_sysconf HAS_SYSCONF
12775 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12776 #ifdef HAS_STDIO_STREAM_ARRAY
12777 # define STDIO_STREAM_ARRAY $stdio_stream_array
12780 FILE* p = fopen("try.out", "w");
12784 # ifdef TRY_FPRINTF
12788 #ifdef TRY_FFLUSH_NULL
12791 #ifdef TRY_FFLUSH_ALL
12793 long open_max = -1;
12794 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12795 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12797 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12798 open_max = sysconf(_SC_OPEN_MAX);
12801 open_max = FOPEN_MAX;
12804 open_max = OPEN_MAX;
12813 # ifdef HAS_STDIO_STREAM_ARRAY
12814 if (open_max > 0) {
12816 for (i = 0; i < open_max; i++)
12817 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12818 STDIO_STREAM_ARRAY[i]._file < open_max &&
12819 STDIO_STREAM_ARRAY[i]._flag)
12820 fflush(&STDIO_STREAM_ARRAY[i]);
12828 : first we have to find out how _not_ to flush
12829 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12831 set try -DTRY_FPUTC
12832 if eval $compile; then
12834 ./try$exe_ext 2>/dev/null
12835 if $test ! -s try.out -a "X$?" = X42; then
12841 set try -DTRY_FPRINTF
12843 if eval $compile; then
12845 ./try$exe_ext 2>/dev/null
12846 if $test ! -s try.out -a "X$?" = X42; then
12847 output=-DTRY_FPRINTF
12853 : check for fflush NULL behaviour
12854 case "$fflushNULL" in
12855 '') set try -DTRY_FFLUSH_NULL $output
12856 if eval $compile; then
12858 ./try$exe_ext 2>/dev/null
12860 if $test -s try.out -a "X$code" = X42; then
12861 fflushNULL="`$cat try.out`"
12863 if $test "X$code" != X42; then
12865 (If this test failed, don't worry, we'll try another method shortly.)
12870 $rm -f core try.core core.try.*
12871 case "$fflushNULL" in
12873 Your fflush(NULL) works okay for output streams.
12874 Let's see if it clobbers input pipes...
12876 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12877 # bug that improperly flushes the input end of pipes. So we avoid the
12878 # autoflush on fork/system/exec support for now. :-(
12879 $cat >tryp.c <<EOCP
12882 main(int argc, char **argv)
12888 while ((i = getc(stdin)) != -1
12889 && (*bp++ = i) != '\n'
12890 && bp < &buf[1024])
12893 fprintf(stdout, "%s", buf);
12901 fflushNULL="$define"
12903 if eval $compile; then
12905 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12906 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12908 fflush(NULL) seems to behave okay with input streams.
12910 fflushNULL="$define"
12913 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12915 fflushNULL="$undef"
12918 $rm -f core tryp.c tryp.core core.tryp.*
12921 Your fflush(NULL) isn't working (contrary to ANSI C).
12923 fflushNULL="$undef"
12926 Cannot figure out whether your fflush(NULL) works or not.
12927 I'm assuming it doesn't (contrary to ANSI C).
12929 fflushNULL="$undef"
12933 $define|true|[yY]*)
12934 fflushNULL="$define"
12937 fflushNULL="$undef"
12940 : check explicit looping only if NULL did not work, and if the pipe
12941 : bug does not show up on an explicit flush too
12942 case "$fflushNULL" in
12944 $cat >tryp.c <<EOCP
12947 main(int argc, char **argv)
12953 while ((i = getc(stdin)) != -1
12954 && (*bp++ = i) != '\n'
12955 && bp < &buf[1024])
12958 fprintf(stdout, "%s", buf);
12967 if eval $compile; then
12969 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12970 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12972 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12974 : now check for fflushall behaviour
12975 case "$fflushall" in
12976 '') set try -DTRY_FFLUSH_ALL $output
12977 if eval $compile; then
12979 (Now testing the other method--but note that this also may fail.)
12982 ./try$exe_ext 2>/dev/null
12983 if $test -s try.out -a "X$?" = X42; then
12984 fflushall="`$cat try.out`"
12987 $rm -f core try.core core.try.*
12988 case "$fflushall" in
12990 Whew. Flushing explicitly all the stdio streams works.
12992 fflushall="$define"
12995 Sigh. Flushing explicitly all the stdio streams doesn't work.
13000 Cannot figure out whether flushing stdio streams explicitly works or not.
13001 I'm assuming it doesn't.
13007 "$define"|true|[yY]*)
13008 fflushall="$define"
13016 All is futile. Even fflush(stdin) clobbers input pipes!
13023 $rm -f core tryp.c tryp.core core.tryp.*
13025 *) fflushall="$undef"
13029 case "$fflushNULL$fflushall" in
13032 OK, I give up. I cannot figure out how to flush pending stdio output.
13033 We won't be flushing handles at all before fork/exec/popen.
13037 $rm -f try.* try$exe_ext
13039 : Store the full pathname to the ar program for use in the C program
13040 : Respect a hint or command line value for full_ar.
13045 : Store the full pathname to the sed program for use in the C program
13048 : see what type gids are declared as in the kernel
13050 echo "Looking for the type for group ids returned by getgid()."
13051 set gid_t gidtype xxx stdio.h sys/types.h
13055 xxx=`./findhdr sys/user.h`
13056 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13058 unsigned) dflt="$1 $2" ;;
13062 *) dflt="$gidtype";;
13065 gid_t) echo "gid_t found." ;;
13066 *) rp="What is the type for group ids returned by getgid()?"
13074 *_t) zzz="$gidtype" ;;
13077 echo "Checking the size of $zzz..." >&4
13079 #include <sys/types.h>
13082 printf("%d\n", (int)sizeof($gidtype));
13087 if eval $compile_ok; then
13091 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13094 echo "Your $zzz is $gidsize bytes long."
13099 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13105 *_t) zzz="$gidtype" ;;
13108 echo "Checking the sign of $zzz..." >&4
13110 #include <sys/types.h>
13121 if eval $compile; then
13125 echo "(I can't execute the test program--guessing unsigned.)" >&4
13129 1) echo "Your $zzz is unsigned." ;;
13130 -1) echo "Your $zzz is signed." ;;
13136 echo "(I can't compile the test program--guessing unsigned.)" >&4
13142 if $test X"$quadtype" != X; then
13144 echo "Checking how to print 64-bit integers..." >&4
13146 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13147 $cat >try.c <<'EOCP'
13148 #include <sys/types.h>
13151 int q = 12345678901;
13152 printf("%ld\n", q);
13156 if eval $compile; then
13157 yyy=`./try$exe_ext`
13160 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13161 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13162 echo "We will use %d."
13168 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13169 $cat >try.c <<'EOCP'
13170 #include <sys/types.h>
13173 long q = 12345678901;
13174 printf("%ld\n", q);
13178 if eval $compile; then
13179 yyy=`./try$exe_ext`
13182 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13183 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13184 echo "We will use %ld."
13190 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13191 $cat >try.c <<'EOCP'
13192 #include <sys/types.h>
13193 #include <inttypes.h>
13196 int64_t q = 12345678901;
13197 printf("%" PRId64 "\n", q);
13201 if eval $compile; then
13202 yyy=`./try$exe_ext`
13205 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13206 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13207 echo "We will use the C9X style."
13213 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13214 $cat >try.c <<'EOCP'
13215 #include <sys/types.h>
13218 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13219 printf("%lld\n", q);
13223 if eval $compile; then
13224 yyy=`./try$exe_ext`
13227 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13228 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13229 echo "We will use the %lld style."
13235 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13237 #include <sys/types.h>
13240 $quadtype q = 12345678901;
13241 printf("%Ld\n", q);
13245 if eval $compile; then
13246 yyy=`./try$exe_ext`
13249 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13250 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13251 echo "We will use %Ld."
13257 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13259 #include <sys/types.h>
13262 $quadtype q = 12345678901;
13263 printf("%qd\n", q);
13267 if eval $compile; then
13268 yyy=`./try$exe_ext`
13271 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13272 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13273 echo "We will use %qd."
13279 if $test X"$sPRId64" = X; then
13280 echo "Cannot figure out how to print 64-bit integers." >&4
13288 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13289 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13291 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13292 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13298 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13300 if $test X"$ivsize" = X8; then
13301 ivdformat="$sPRId64"
13302 uvuformat="$sPRIu64"
13303 uvoformat="$sPRIo64"
13304 uvxformat="$sPRIx64"
13305 uvXUformat="$sPRIXU64"
13307 if $test X"$ivsize" = X"$longsize"; then
13314 if $test X"$ivsize" = X"$intsize"; then
13322 if $test X"$ivsize" = X"$shortsize"; then
13333 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13334 nveformat="$sPRIeldbl"
13335 nvfformat="$sPRIfldbl"
13336 nvgformat="$sPRIgldbl"
13337 nvEUformat="$sPRIEUldbl"
13338 nvFUformat="$sPRIFUldbl"
13339 nvGUformat="$sPRIGUldbl"
13349 case "$ivdformat" in
13350 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13357 $echo "Checking the format string to be used for gids..." >&4
13360 -1) if $test X"$gidsize" = X"$ivsize"; then
13361 gidformat="$ivdformat"
13363 if $test X"$gidsize" = X"$longsize"; then
13366 if $test X"$gidsize" = X"$intsize"; then
13369 if $test X"$gidsize" = X"$shortsize"; then
13376 *) if $test X"$gidsize" = X"$uvsize"; then
13377 gidformat="$uvuformat"
13379 if $test X"$gidsize" = X"$longsize"; then
13382 if $test X"$gidsize" = X"$intsize"; then
13385 if $test X"$gidsize" = X"$shortsize"; then
13394 : see if getgroups exists
13395 set getgroups d_getgrps
13398 : see if setgroups exists
13399 set setgroups d_setgrps
13403 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13405 case "$d_getgrps$d_setgrps" in
13407 case "$groupstype" in
13408 '') dflt="$gidtype" ;;
13409 *) dflt="$groupstype" ;;
13412 What type of pointer is the second argument to getgroups() and setgroups()?
13413 Usually this is the same as group ids, $gidtype, but not always.
13416 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13420 *) groupstype="$gidtype";;
13424 echo "Checking if your $make program sets \$(MAKE)..." >&4
13425 case "$make_set_make" in
13427 $sed 's/^X //' > testmake.mak << 'EOF'
13429 X @echo 'maketemp="$(MAKE)"'
13431 case "`$make -f testmake.mak 2>/dev/null`" in
13432 *maketemp=*) make_set_make='#' ;;
13433 *) make_set_make="MAKE=$make" ;;
13435 $rm -f testmake.mak
13438 case "$make_set_make" in
13439 '#') echo "Yup, it does.";;
13440 *) echo "Nope, it doesn't.";;
13443 : see what type is used for mode_t
13444 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13445 set mode_t modetype int stdio.h sys/types.h
13448 : define a fucntion to check prototypes
13449 $cat > protochk <<EOSH
13452 optimize="$optimize"
13454 prototype="$prototype"
13459 $cat >> protochk <<'EOSH'
13464 while test $# -ge 2; do
13466 $define) echo "#include <$2>" >> try.c ;;
13467 literal) echo "$2" >> try.c ;;
13471 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13472 cat >> try.c <<'EOCP'
13473 #ifdef CAN_PROTOTYPE
13474 #define _(args) args
13479 echo "$foo" >> try.c
13480 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13481 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13487 $eunicefix protochk
13489 : see what type is used for size_t
13490 rp="What is the type used for the length parameter for string functions?"
13491 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13494 : check for type of arguments to gethostbyaddr.
13495 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13496 case "$d_gethbyaddr" in
13500 Checking to see what type of arguments are accepted by gethostbyaddr().
13502 hdrs="$define sys/types.h
13503 $d_socket sys/socket.h
13504 $i_niin netinet/in.h
13506 $i_unistd unistd.h"
13507 : The first arg can 'char *' or 'void *'
13508 : The second arg is some of integral type
13509 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13510 for yyy in size_t long int; do
13511 case "$netdb_host_type" in
13512 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13513 if ./protochk "$try" $hdrs; then
13514 echo "Your system accepts $xxx for the first arg."
13515 echo "...and $yyy for the second arg."
13516 netdb_host_type="$xxx"
13517 netdb_hlen_type="$yyy"
13523 : In case none of those worked, prompt the user.
13524 case "$netdb_host_type" in
13525 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13528 netdb_host_type=$ans
13529 rp='What is the type for the 2nd argument to gethostbyaddr?'
13532 netdb_hlen_type=$ans
13536 *) : no gethostbyaddr, so pick harmless defaults
13537 netdb_host_type='char *'
13538 netdb_hlen_type="$sizetype"
13541 # Remove the "const" if needed. -- but then we'll have a
13543 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13546 : check for type of argument to gethostbyname.
13547 if test "X$netdb_name_type" = X ; then
13548 case "$d_gethbyname" in
13552 Checking to see what type of argument is accepted by gethostbyname().
13554 hdrs="$define sys/types.h
13555 $d_socket sys/socket.h
13556 $i_niin netinet/in.h
13558 $i_unistd unistd.h"
13559 for xxx in "const char *" "char *"; do
13560 case "$netdb_name_type" in
13561 '') try="extern struct hostent *gethostbyname($xxx);"
13562 if ./protochk "$try" $hdrs; then
13563 echo "Your system accepts $xxx."
13564 netdb_name_type="$xxx"
13569 : In case none of those worked, prompt the user.
13570 case "$netdb_name_type" in
13571 '') rp='What is the type for the 1st argument to gethostbyname?'
13574 netdb_name_type=$ans
13578 *) : no gethostbyname, so pick harmless default
13579 netdb_name_type='char *'
13584 : check for type of 1st argument to getnetbyaddr.
13585 if test "X$netdb_net_type" = X ; then
13586 case "$d_getnbyaddr" in
13590 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13592 hdrs="$define sys/types.h
13593 $d_socket sys/socket.h
13594 $i_niin netinet/in.h
13596 $i_unistd unistd.h"
13597 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13598 case "$netdb_net_type" in
13599 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13600 if ./protochk "$try" $hdrs; then
13601 echo "Your system accepts $xxx."
13602 netdb_net_type="$xxx"
13607 : In case none of those worked, prompt the user.
13608 case "$netdb_net_type" in
13609 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13612 netdb_net_type=$ans
13616 *) : no getnetbyaddr, so pick harmless default
13617 netdb_net_type='long'
13621 : locate the preferred pager for this system
13627 [a-zA-Z]:/*) dflt=$pg;;
13631 [a-zA-Z]:/*) dflt=$more;;
13635 [a-zA-Z]:/*) dflt=$less;;
13638 '') dflt=/usr/ucb/more;;
13645 rp='What pager is used on your system?'
13649 : see what type pids are declared as in the kernel
13650 rp="What is the type of process ids on this system?"
13651 set pid_t pidtype int stdio.h sys/types.h
13654 : Find earliest binary compatible site_perl subdirectory perl can use.
13655 case "$bincompat5005" in
13656 "$define") xs_apiversion='5.005' ;;
13657 *) xs_apiversion=$version ;; # The current site_perl version.
13659 : Find earliest pure perl site_perl subdirectory perl can use.
13660 : The versioned directories started at 5.005.
13661 pm_apiversion='5.005'
13663 : check for length of pointer
13667 echo "Checking to see how big your pointers are..." >&4
13668 if test "$voidflags" -gt 7; then
13669 echo '#define VOID_PTR char *' > try.c
13671 echo '#define VOID_PTR void *' > try.c
13673 $cat >>try.c <<'EOCP'
13677 printf("%d\n", (int)sizeof(VOID_PTR));
13682 if eval $compile_ok; then
13684 echo "Your pointers are $ptrsize bytes long."
13687 echo "(I can't seem to compile the test program. Guessing...)" >&4
13688 rp="What is the size of a pointer (in bytes)?"
13696 : see if ar generates random libraries by itself
13698 echo "Checking how to generate random libraries on your machine..." >&4
13699 echo 'int bar1() { return bar2(); }' > bar1.c
13700 echo 'int bar2() { return 2; }' > bar2.c
13701 $cat > foo.c <<'EOP'
13702 int main() { printf("%d\n", bar1()); exit(0); }
13704 $cc $ccflags -c bar1.c >/dev/null 2>&1
13705 $cc $ccflags -c bar2.c >/dev/null 2>&1
13706 $cc $ccflags -c foo.c >/dev/null 2>&1
13707 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13708 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13709 ./foobar >/dev/null 2>&1; then
13710 echo "$ar appears to generate random libraries itself."
13713 elif $ar ts bar$_a >/dev/null 2>&1 &&
13714 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13715 ./foobar >/dev/null 2>&1; then
13716 echo "a table of contents needs to be added with '$ar ts'."
13723 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13724 $test -f $ranlib || ranlib=''
13727 if $test -n "$ranlib"; then
13728 echo "your system has '$ranlib'; we'll use that."
13731 echo "your system doesn't seem to support random libraries"
13732 echo "so we'll use lorder and tsort to order the libraries."
13739 : check for type of arguments to select.
13740 case "$selecttype" in
13741 '') case "$d_select" in
13745 Checking to see what type of arguments are accepted by select().
13747 hdrs="$define sys/types.h
13748 $i_systime sys/time.h
13749 $i_sysselct sys/select.h
13750 $d_socket sys/socket.h"
13751 : The first arg can be int, unsigned, or size_t
13752 : The last arg may or may not be 'const'
13754 : void pointer has been seen but using that
13755 : breaks the selectminbits test
13756 for xxx in 'fd_set *' 'int *'; do
13757 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13758 for tmo in 'struct timeval *' 'const struct timeval *'; do
13760 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13761 if ./protochk "$try" $hdrs; then
13762 echo "Your system accepts $xxx."
13771 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13772 case "$d_fd_set" in
13773 $define) dflt="fd_set *" ;;
13782 *) : no select, so pick a harmless default
13789 : check for the select 'width'
13790 case "$selectminbits" in
13791 '') case "$d_select" in
13795 Checking to see on how many bits at a time your select() operates...
13798 #include <sys/types.h>
13800 #$i_systime I_SYS_TIME
13801 #$i_systimek I_SYS_TIME_KERNEL
13806 # ifdef I_SYS_TIME_KERNEL
13809 # include <sys/time.h>
13810 # ifdef I_SYS_TIME_KERNEL
13814 #$i_sysselct I_SYS_SELECT
13815 #ifdef I_SYS_SELECT
13816 #include <sys/select.h>
13818 #$d_socket HAS_SOCKET
13820 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13824 #define S sizeof(*(b))
13826 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13827 #define NBITS (NBYTES * 8)
13836 fp = fopen("try.c", "r");
13842 b = ($selecttype)s;
13843 for (i = 0; i < NBITS; i++)
13847 select(fd + 1, b, 0, 0, &t);
13848 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13849 printf("%d\n", i + 1);
13854 if eval $compile_ok; then
13855 selectminbits=`./try`
13856 case "$selectminbits" in
13858 Cannot figure out on how many bits at a time your select() operates.
13859 I'll play safe and guess it is 32 bits.
13865 *) bits="$selectminbits bits" ;;
13867 echo "Your select() operates on $bits at a time." >&4
13869 rp='What is the minimum number of bits your select() operates on?'
13870 case "$byteorder" in
13871 1234|12345678) dflt=32 ;;
13876 selectminbits="$val"
13880 *) : no select, so pick a harmless default
13887 : Trace out the files included by signal.h, then look for SIGxxx names.
13888 : Remove SIGARRAYSIZE used by HPUX.
13889 : Remove SIGSTKSIZE used by Linux.
13890 : Remove SIGSTKSZ used by Posix.
13891 : Remove SIGTYP void lines used by OS2.
13892 : Some cpps, like os390, dont give the file name anywhere
13893 if [ "X$fieldn" = X ]; then
13894 : Just make some guesses. We check them later.
13895 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13897 xxx=`echo '#include <signal.h>' |
13898 $cppstdin $cppminus $cppflags 2>/dev/null |
13899 $grep '^[ ]*#.*include' |
13900 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13902 : Check this list of files to be sure we have parsed the cpp output ok.
13903 : This will also avoid potentially non-existent files, such
13906 for xx in $xxx /dev/null ; do
13907 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13909 : If we have found no files, at least try signal.h
13910 case "$xxxfiles" in
13911 '') xxxfiles=`./findhdr signal.h` ;;
13914 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13915 print substr($2, 4, 20)
13917 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13918 print substr($3, 4, 20)
13920 : Append some common names just in case the awk scan failed.
13921 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13922 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13923 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13924 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13925 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13927 : generate a few handy files for later
13928 $cat > signal.c <<'EOCP'
13929 #include <sys/types.h>
13930 #include <signal.h>
13934 /* Strange style to avoid deeply-nested #if/#else/#endif */
13937 # define NSIG (_NSIG)
13943 # define NSIG (SIGMAX+1)
13949 # define NSIG (SIG_MAX+1)
13955 # define NSIG (MAXSIG+1)
13961 # define NSIG (MAX_SIG+1)
13966 # ifdef SIGARRAYSIZE
13967 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13973 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13977 /* Default to some arbitrary number that's big enough to get most
13978 of the common signals.
13984 printf("NSIG %d\n", NSIG);
13990 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13992 printf "#ifdef SIG"; printf $1; printf "\n"
13993 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13994 printf $1; printf ");\n"
13998 printf "#endif /* JUST_NSIG */\n";
13999 printf "exit(0);\n}\n";
14002 $cat >signal.awk <<'EOP'
14003 BEGIN { ndups = 0 }
14004 $1 ~ /^NSIG$/ { nsig = $2 }
14005 ($1 !~ /^NSIG$/) && (NF == 2) {
14006 if ($2 > maxsig) { maxsig = $2 }
14007 if (sig_name[$2]) {
14008 dup_name[ndups] = $1
14009 dup_num[ndups] = $2
14021 printf("NSIG %d\n", nsig);
14022 for (n = 1; n < nsig; n++) {
14024 printf("%s %d\n", sig_name[n], sig_num[n])
14027 printf("NUM%d %d\n", n, n)
14030 for (n = 0; n < ndups; n++) {
14031 printf("%s %d\n", dup_name[n], dup_num[n])
14035 $cat >signal_cmd <<EOS
14037 if $test -s signal.lst; then
14038 echo "Using your existing signal.lst file"
14043 $cat >>signal_cmd <<'EOS'
14046 if eval $compile_ok; then
14047 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14049 echo "(I can't seem be able to compile the whole test program)" >&4
14050 echo "(I'll try it in little pieces.)" >&4
14051 set signal -DJUST_NSIG
14052 if eval $compile_ok; then
14053 ./signal$_exe > signal.nsg
14056 echo "I can't seem to figure out how many signals you have." >&4
14057 echo "Guessing 50." >&4
14058 echo 'NSIG 50' > signal.nsg
14060 : Now look at all the signal names, one at a time.
14061 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14062 $cat > signal.c <<EOCP
14063 #include <sys/types.h>
14064 #include <signal.h>
14067 printf("$xx %d\n", SIG${xx});
14072 if eval $compile; then
14073 echo "SIG${xx} found."
14074 ./signal$_exe >> signal.ls1
14076 echo "SIG${xx} NOT found."
14079 if $test -s signal.ls1; then
14080 $cat signal.nsg signal.ls1 |
14081 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14085 if $test -s signal.lst; then
14088 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14089 echo 'kill -l' >signal
14090 set X `csh -f <signal`
14094 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14096 echo $@ | $tr ' ' $trnl | \
14097 $awk '{ printf "%s %d\n", $1, ++s; }
14098 END { printf "NSIG %d\n", ++s }' >signal.lst
14100 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14102 chmod a+x signal_cmd
14103 $eunicefix signal_cmd
14105 : generate list of signal names
14107 case "$sig_name_init" in
14109 *) case "$sig_num_init" in
14110 ''|*,*) doinit=yes ;;
14115 echo "Generating a list of signal names and numbers..." >&4
14117 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14118 sig_name=`$awk 'BEGIN { printf "ZERO " }
14119 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14120 sig_num=`$awk 'BEGIN { printf "0 " }
14121 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14122 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14123 !/^NSIG/ { printf "\"%s\", ", $1 }
14124 END { printf "0\n" }' signal.lst`
14125 sig_num_init=`$awk 'BEGIN { printf "0, " }
14126 !/^NSIG/ { printf "%d, ", $2}
14127 END { printf "0\n"}' signal.lst`
14130 echo "The following $sig_count signals are available:"
14132 echo $sig_name | $awk \
14133 'BEGIN { linelen = 0 }
14135 for (i = 1; i <= NF; i++) {
14136 name = "SIG" $i " "
14137 linelen = linelen + length(name)
14138 if (linelen > 70) {
14140 linelen = length(name)
14146 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14149 case "$sizetype" in
14150 *_t) zzz="$sizetype" ;;
14151 *) zzz="filesize" ;;
14153 echo "Checking the size of $zzz..." >&4
14155 #include <sys/types.h>
14158 printf("%d\n", (int)sizeof($sizetype));
14163 if eval $compile_ok; then
14167 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14170 echo "Your $zzz size is $sizesize bytes."
14175 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14179 : check for socklen_t
14181 echo "Checking to see if you have socklen_t..." >&4
14183 #include <sys/types.h>
14184 #$d_socket HAS_SOCKET
14186 #include <sys/socket.h>
14188 int main() { socklen_t x = 16; }
14191 if eval $compile; then
14193 echo "You have socklen_t."
14196 echo "You do not have socklen_t."
14197 case "$sizetype" in
14198 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14205 : check for type of the size argument to socket calls
14206 case "$d_socket" in
14210 Checking to see what type is the last argument of accept().
14212 hdrs="$define sys/types.h $d_socket sys/socket.h"
14214 case "$d_socklen_t" in
14215 "$define") yyy="$yyy socklen_t"
14217 yyy="$yyy $sizetype int long unsigned"
14218 for xxx in $yyy; do
14219 case "$socksizetype" in
14220 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14221 if ./protochk "$try" $hdrs; then
14222 echo "Your system accepts '$xxx *' for the last argument of accept()."
14223 socksizetype="$xxx"
14228 : In case none of those worked, prompt the user.
14229 case "$socksizetype" in
14230 '') rp='What is the type for socket address structure sizes?'
14237 *) : no sockets, so pick relatively harmless default
14242 : see what type is used for signed size_t
14243 set ssize_t ssizetype int stdio.h sys/types.h
14246 $cat > ssize.c <<EOM
14248 #include <sys/types.h>
14249 #define Size_t $sizetype
14250 #define SSize_t $dflt
14253 if (sizeof(Size_t) == sizeof(SSize_t))
14255 else if (sizeof(Size_t) == sizeof(int))
14264 if eval $compile_ok && ./ssize > /dev/null; then
14265 ssizetype=`./ssize`
14266 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14269 Help! I can't compile and run the ssize_t test program: please enlighten me!
14270 (This is probably a misconfiguration in your system or libraries, and
14271 you really ought to fix it. Still, I'll try anyway.)
14273 I need a type that is the same size as $sizetype, but is guaranteed to
14274 be signed. Common values are ssize_t, int and long.
14277 rp="What signed type is the same size as $sizetype?"
14281 $rm -f ssize ssize.*
14283 : see what type of char stdio uses.
14285 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14286 echo "Your stdio uses unsigned chars." >&4
14287 stdchar="unsigned char"
14289 echo "Your stdio uses signed chars." >&4
14293 : see if time exists
14295 if test "X$d_time" = X -o X"$timetype" = X; then
14296 if set time val -f d_time; eval $csym; $val; then
14297 echo 'time() found.' >&4
14299 rp="What is the type returned by time() on this system?"
14300 set time_t timetype long stdio.h sys/types.h
14303 echo 'time() not found, hope that will do.' >&4
14311 : see what type uids are declared as in the kernel
14313 echo "Looking for the type for user ids returned by getuid()."
14314 set uid_t uidtype xxx stdio.h sys/types.h
14318 xxx=`./findhdr sys/user.h`
14319 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14321 unsigned) dflt="$1 $2" ;;
14325 *) dflt="$uidtype";;
14328 uid_t) echo "uid_t found." ;;
14329 *) rp="What is the type for user ids returned by getuid()?"
14337 *_t) zzz="$uidtype" ;;
14340 echo "Checking the size of $zzz..." >&4
14342 #include <sys/types.h>
14345 printf("%d\n", (int)sizeof($uidtype));
14350 if eval $compile_ok; then
14354 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14357 echo "Your $zzz is $uidsize bytes long."
14362 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14367 *_t) zzz="$uidtype" ;;
14370 echo "Checking the sign of $zzz..." >&4
14372 #include <sys/types.h>
14383 if eval $compile; then
14387 echo "(I can't execute the test program--guessing unsigned.)" >&4
14391 1) echo "Your $zzz is unsigned." ;;
14392 -1) echo "Your $zzz is signed." ;;
14398 echo "(I can't compile the test program--guessing unsigned.)" >&4
14404 $echo "Checking the format string to be used for uids..." >&4
14407 -1) if $test X"$uidsize" = X"$ivsize"; then
14408 uidformat="$ivdformat"
14410 if $test X"$uidsize" = X"$longsize"; then
14413 if $test X"$uidsize" = X"$intsize"; then
14416 if $test X"$uidsize" = X"$shortsize"; then
14423 *) if $test X"$uidsize" = X"$uvsize"; then
14424 uidformat="$uvuformat"
14426 if $test X"$uidsize" = X"$longsize"; then
14429 if $test X"$uidsize" = X"$intsize"; then
14432 if $test X"$uidsize" = X"$shortsize"; then
14441 : see if dbm.h is available
14442 : see if dbmclose exists
14443 set dbmclose d_dbmclose
14446 case "$d_dbmclose" in
14456 *) set rpcsvc/dbm.h i_rpcsvcdbm
14461 *) echo "We won't be including <dbm.h>"
14471 : see if this is a sys/file.h system
14476 : do we need to include sys/file.h ?
14480 if $h_sysfile; then
14482 echo "We'll be including <sys/file.h>." >&4
14485 echo "We won't be including <sys/file.h>." >&4
14495 : see if fcntl.h is there
14500 : see if we can include fcntl.h
14506 echo "We'll be including <fcntl.h>." >&4
14509 if $h_sysfile; then
14510 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14512 echo "We won't be including <fcntl.h>." >&4
14524 : see if this is a iconv.h system
14525 set iconv.h i_iconv
14528 : see if this is a ieeefp.h system
14529 set ieeefp.h i_ieeefp
14532 : see if this is a libutil.h system
14533 set libutil.h i_libutil
14536 : see if locale.h is available
14537 set locale.h i_locale
14540 : see if mach cthreads are available
14541 if test "X$usethreads" = "X$define"; then
14542 set mach/cthreads.h i_machcthr
14545 i_machcthr="$undef"
14550 : see if this is a math.h system
14554 : see if this is a mntent.h system
14555 set mntent.h i_mntent
14558 : see if ndbm.h is available
14563 : see if dbm_open exists
14564 set dbm_open d_dbm_open
14566 case "$d_dbm_open" in
14569 echo "We won't be including <ndbm.h>"
14578 : see if net/errno.h is available
14580 set net/errno.h val
14583 : Unfortunately, it causes problems on some systems. Arrgh.
14586 cat > try.c <<'EOM'
14589 #include <net/errno.h>
14595 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14596 echo "We'll be including <net/errno.h>." >&4
14598 echo "We won't be including <net/errno.h>." >&4
14607 : see if netinet/tcp.h is available
14608 set netinet/tcp.h i_netinettcp
14611 : see if this is a poll.h system
14615 : see if this is a prot.h system
14620 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14621 $cat <<'EOSH' > Cppsym.know
14622 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14623 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14624 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14625 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14626 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14627 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14628 bull c cadmus clipper CMU COFF COMPILER_VERSION
14629 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14630 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14631 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14632 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14633 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14634 H3050R H3050RX hbullx20 hcx host_mips
14635 hp200 hp300 hp700 HP700 hp800 hp9000
14636 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14637 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14638 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14639 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14640 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14641 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14642 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14643 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14644 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14645 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14646 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14647 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14648 MATH_HAS_NO_SIDE_EFFECTS
14649 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14650 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14651 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14652 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14653 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14654 NetBSD news1500 news1700 news1800 news1900 news3700
14655 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
14656 ns32016 ns32332 ns32k nsc32000
14657 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14658 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14659 pc532 pdp11 PGC PIC plexus PORTAR posix
14660 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14661 POSIX_C_SOURCE POSIX_SOURCE POWER
14662 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14663 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14664 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14665 sony sony_news sonyrisc sparc sparclite spectrum
14666 stardent stdc STDC_EXT stratos sun sun3 sun386
14667 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14668 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14669 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14670 sysV68 sysV88 Tek4132 Tek4300 titan
14671 tower tower32 tower32_200 tower32_600 tower32_700
14672 tower32_800 tower32_850 tss
14673 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14674 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14675 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14676 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14677 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14678 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14681 # Maybe put other stuff here too.
14682 cat <<EOSH >>Cppsym.know
14685 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14686 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14687 $cat Cppsym.know > Cppsym.c
14688 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
14689 $rm -f Cppsym.a Cppsym.b Cppsym.c
14690 cat <<EOSH > Cppsym
14692 if $test \$# -gt 0; then
14693 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14694 if $test -s Cppsym.got; then
14701 $tr " " "$trnl" | ./Cppsym.try
14707 cat <<EOSH > Cppsym.try
14709 cat <<'EOCP' > try.c
14715 cat <<'EOSH' >> Cppsym.try
14717 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
14718 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 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
14720 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
14724 cat <<EOSH >> Cppsym.try
14726 case "$osname-$gccversion" in
14727 irix-) ccflags="\$ccflags -woff 1178" ;;
14728 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14730 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
14732 chmod +x Cppsym.try
14733 $eunicefix Cppsym.try
14734 ./Cppsym < Cppsym.know > Cppsym.true
14735 : now check the C compiler for additional symbols
14736 postprocess_cc_v=''
14738 aix) postprocess_cc_v="|$tr , ' '" ;;
14745 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14748 -D*) echo "\$i" | $sed 's/^-D//';;
14749 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14754 postprocess_cc_v=''
14757 ./ccsym > ccsym1.raw
14758 if $test -s ccsym1.raw; then
14759 $sort ccsym1.raw | $uniq >ccsym.raw
14761 mv ccsym1.raw ccsym.raw
14764 $awk '/\=/ { print $0; next }
14765 { print $0"=1" }' ccsym.raw >ccsym.list
14766 $awk '/\=/ { print $0; next }
14767 { print $0"=1" }' Cppsym.true >ccsym.true
14768 $comm -13 ccsym.true ccsym.list >ccsym.own
14769 $comm -12 ccsym.true ccsym.list >ccsym.com
14770 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14772 if $test -z ccsym.raw; then
14773 echo "Your C compiler doesn't seem to define any symbols!" >&4
14775 echo "However, your C preprocessor defines the following symbols:"
14778 cppsymbols=`$cat Cppsym.true`
14779 cppsymbols=`echo $cppsymbols`
14780 cppccsymbols="$cppsymbols"
14782 if $test -s ccsym.com; then
14783 echo "Your C compiler and pre-processor define these symbols:"
14784 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14787 cppccsymbols=`$cat ccsym.com`
14788 cppccsymbols=`echo $cppccsymbols`
14789 $test "$silent" || sleep 1
14791 if $test -s ccsym.cpp; then
14792 $test "$also" && echo " "
14793 echo "Your C pre-processor ${also}defines the following symbols:"
14794 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14796 cppsymbols=`$cat ccsym.cpp`
14797 cppsymbols=`echo $cppsymbols`
14798 $test "$silent" || sleep 1
14800 if $test -s ccsym.own; then
14801 $test "$also" && echo " "
14802 echo "Your C compiler ${also}defines the following cpp symbols:"
14803 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14804 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14805 ccsymbols=`$cat ccsym.own`
14806 ccsymbols=`echo $ccsymbols`
14807 $test "$silent" || sleep 1
14810 $rm -f ccsym* Cppsym.*
14812 : see if this is a termio system
14816 if $test `./findhdr termios.h`; then
14817 set tcsetattr i_termios
14823 "$define") echo "You have POSIX termios.h... good!" >&4;;
14824 *) if ./Cppsym pyr; then
14825 case "`/bin/universe`" in
14826 ucb) if $test `./findhdr sgtty.h`; then
14828 echo "<sgtty.h> found." >&4
14830 echo "System is pyramid with BSD universe."
14831 echo "<sgtty.h> not found--you could have problems." >&4
14833 *) if $test `./findhdr termio.h`; then
14835 echo "<termio.h> found." >&4
14837 echo "System is pyramid with USG universe."
14838 echo "<termio.h> not found--you could have problems." >&4
14842 if $test `./findhdr termio.h`; then
14843 echo "<termio.h> found." >&4
14845 elif $test `./findhdr sgtty.h`; then
14846 echo "<sgtty.h> found." >&4
14849 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14852 if $test `./findhdr sgtty.h`; then
14853 echo "<sgtty.h> found." >&4
14855 elif $test `./findhdr termio.h`; then
14856 echo "<termio.h> found." >&4
14859 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14863 set i_termio; eval $setvar
14864 val=$val2; set i_sgtty; eval $setvar
14865 val=$val3; set i_termios; eval $setvar
14867 : see if this is a shadow.h system
14868 set shadow.h i_shadow
14871 : see if this is a socks.h system
14872 set socks.h i_socks
14875 : see if stdarg is available
14877 if $test `./findhdr stdarg.h`; then
14878 echo "<stdarg.h> found." >&4
14881 echo "<stdarg.h> NOT found." >&4
14885 : see if varags is available
14887 if $test `./findhdr varargs.h`; then
14888 echo "<varargs.h> found." >&4
14890 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14893 : set up the varargs testing programs
14894 $cat > varargs.c <<EOP
14896 #include <stdarg.h>
14899 #include <varargs.h>
14903 int f(char *p, ...)
14917 p = va_arg(ap, char *);
14922 $cat > varargs <<EOP
14924 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14933 : now check which varargs header should be included
14938 if `./varargs I_STDARG`; then
14940 elif `./varargs I_VARARGS`; then
14945 if `./varargs I_VARARGS`; then
14952 echo "I could not find the definition for va_dcl... You have problems..." >&4
14953 val="$undef"; set i_stdarg; eval $setvar
14954 val="$undef"; set i_varargs; eval $setvar
14959 case "$i_varhdr" in
14961 val="$define"; set i_stdarg; eval $setvar
14962 val="$undef"; set i_varargs; eval $setvar
14965 val="$undef"; set i_stdarg; eval $setvar
14966 val="$define"; set i_varargs; eval $setvar
14969 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14973 : see if stddef is available
14974 set stddef.h i_stddef
14977 : see if this is a sunmath.h system
14978 set sunmath.h i_sunmath
14981 : see if sys/access.h is available
14982 set sys/access.h i_sysaccess
14985 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14986 set sys/filio.h i_sysfilio
14989 if $test `./findhdr sys/ioctl.h`; then
14991 echo '<sys/ioctl.h> found.' >&4
14994 if $test $i_sysfilio = "$define"; then
14995 echo '<sys/ioctl.h> NOT found.' >&4
14997 $test $i_sgtty = "$define" && xxx="sgtty.h"
14998 $test $i_termio = "$define" && xxx="termio.h"
14999 $test $i_termios = "$define" && xxx="termios.h"
15000 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15007 : see if this is a syslog.h system
15008 set syslog.h i_syslog
15012 : see if this is a sys/mode.h system
15013 set sys/mode.h i_sysmode
15016 : see if sys/resource.h has to be included
15017 set sys/resource.h i_sysresrc
15020 : see if sys/security.h is available
15021 set sys/security.h i_syssecrt
15024 : see if this is a sys/statvfs.h system
15025 set sys/statvfs.h i_sysstatvfs
15028 : see if this is a sys/uio.h system
15029 set sys/uio.h i_sysuio
15032 : see if this is a sys/un.h system
15033 set sys/un.h i_sysun
15037 : see if this is a sys/utsname.h system
15038 set sys/utsname.h i_sysutsname
15041 : see if this is a syswait system
15042 set sys/wait.h i_syswait
15045 : see if this is a ustat.h system
15046 set ustat.h i_ustat
15049 : see if this is an utime system
15050 set utime.h i_utime
15053 : see if this is a values.h system
15054 set values.h i_values
15057 : see if this is a vfork system
15060 set vfork.h i_vfork
15068 : see if gdbm.h is available
15073 : see if gdbm_open exists
15074 set gdbm_open d_gdbm_open
15076 case "$d_gdbm_open" in
15079 echo "We won't be including <gdbm.h>"
15089 echo "Looking for extensions..." >&4
15090 : If we are using the old config.sh, known_extensions may contain
15091 : old or inaccurate or duplicate values.
15092 known_extensions=''
15093 nonxs_extensions=''
15094 : We do not use find because it might not be available.
15095 : We do not just use MANIFEST because the user may have dropped
15096 : some additional extensions into the source tree and expect them
15099 : Function to recursively find available extensions, ignoring DynaLoader
15100 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15104 DynaLoader|dynaload) ;;
15106 if $test -f $xxx/$xxx.xs; then
15107 known_extensions="$known_extensions $1$xxx";
15108 elif $test -f $xxx/Makefile.PL; then
15109 nonxs_extensions="$nonxs_extensions $1$xxx";
15111 if $test -d $xxx -a $# -lt 10; then
15114 eval $find_extensions;
15126 eval $find_extensions
15127 set X $nonxs_extensions
15129 nonxs_extensions="$*"
15130 set X $known_extensions
15132 known_extensions="$*"
15135 : Now see which are supported on this system.
15137 for xxx in $known_extensions ; do
15141 $define) avail_ext="$avail_ext $xxx" ;;
15144 GDBM_File|gdbm_fil)
15146 $define) avail_ext="$avail_ext $xxx" ;;
15149 NDBM_File|ndbm_fil)
15152 case "$osname-$use64bitint" in
15155 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15158 *) avail_ext="$avail_ext $xxx" ;;
15163 ODBM_File|odbm_fil)
15164 case "${i_dbm}${i_rpcsvcdbm}" in
15166 case "$osname-$use64bitint" in
15169 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15172 *) avail_ext="$avail_ext $xxx" ;;
15178 case "$useposix" in
15179 true|define|y) avail_ext="$avail_ext $xxx" ;;
15183 case "$useopcode" in
15184 true|define|y) avail_ext="$avail_ext $xxx" ;;
15188 case "$d_socket" in
15189 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15192 Sys/Syslog|sys/syslog)
15193 : XXX syslog requires socket
15194 case "$d_socket" in
15195 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15199 case "$usethreads" in
15200 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15204 : XXX Do we need a useipcsysv variable here
15205 case "${d_msg}${d_sem}${d_shm}" in
15206 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15209 *) avail_ext="$avail_ext $xxx"
15218 : Now see which nonxs extensions are supported on this system.
15219 : For now assume all are.
15221 for xxx in $nonxs_extensions ; do
15223 *) nonxs_ext="$nonxs_ext $xxx"
15235 A number of extensions are supplied with $package. You may choose to
15236 compile these extensions for dynamic loading (the default), compile
15237 them into the $package executable (static loading), or not include
15238 them at all. Answer "none" to include no extensions.
15239 Note that DynaLoader is always built and need not be mentioned here.
15242 case "$dynamic_ext" in
15243 '') dflt="$avail_ext" ;;
15244 *) dflt="$dynamic_ext"
15245 # Perhaps we are reusing an old out-of-date config.sh.
15248 if test X"$dynamic_ext" != X"$avail_ext"; then
15250 NOTICE: Your previous config.sh list may be incorrect.
15251 The extensions now available to you are
15253 but the default list from your previous config.sh is
15265 rp="What extensions do you wish to load dynamically?"
15268 none) dynamic_ext=' ' ;;
15269 *) dynamic_ext="$ans" ;;
15272 case "$static_ext" in
15274 : Exclude those already listed in dynamic linking
15276 for xxx in $avail_ext; do
15277 case " $dynamic_ext " in
15279 *) dflt="$dflt $xxx" ;;
15286 *) dflt="$static_ext"
15293 rp="What extensions do you wish to load statically?"
15296 none) static_ext=' ' ;;
15297 *) static_ext="$ans" ;;
15302 A number of extensions are supplied with $package. Answer "none"
15303 to include no extensions.
15304 Note that DynaLoader is always built and need not be mentioned here.
15307 case "$static_ext" in
15308 '') dflt="$avail_ext" ;;
15309 *) dflt="$static_ext"
15310 # Perhaps we are reusing an old out-of-date config.sh.
15313 if test X"$static_ext" != X"$avail_ext"; then
15315 NOTICE: Your previous config.sh list may be incorrect.
15316 The extensions now available to you are
15318 but the default list from your previous config.sh is
15327 : Exclude those that are not xs extensions
15331 rp="What extensions do you wish to include?"
15334 none) static_ext=' ' ;;
15335 *) static_ext="$ans" ;;
15340 set X $dynamic_ext $static_ext $nonxs_ext
15344 : Remove libraries needed only for extensions
15345 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15346 : The exception is SunOS 4.x, which needs them.
15347 case "${osname}X${osvers}" in
15351 *) case "$usedl" in
15352 $define|true|[yY]*)
15353 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15357 *) perllibs="$libs"
15363 : Remove build directory name from cppstdin so it can be used from
15364 : either the present location or the final installed location.
15366 : Get out of the UU directory to get correct path name.
15368 case "$cppstdin" in
15370 echo "Stripping down cppstdin path name"
15376 : end of configuration questions
15378 echo "End of configuration questions."
15381 : back to where it started
15382 if test -d ../UU; then
15386 : configuration may be patched via a 'config.over' file
15387 if $test -f config.over; then
15390 rp='I see a config.over file. Do you wish to load it?'
15393 n*) echo "OK, I'll ignore it.";;
15395 echo "Configuration override changes have been loaded."
15400 : in case they want portability, strip down executable paths
15401 case "$d_portable" in
15404 echo "Stripping down executable paths..." >&4
15405 for file in $loclist $trylist; do
15407 eval $file=`basename $temp`
15412 : create config.sh file
15414 echo "Creating config.sh..." >&4
15415 $spitshell <<EOT >config.sh
15418 # This file was produced by running the Configure script. It holds all the
15419 # definitions figured out by Configure. Should you modify one of these values,
15420 # do not forget to propagate your changes by running "Configure -der". You may
15421 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15424 # Package name : $package
15425 # Source directory : $src
15426 # Configuration time: $cf_time
15427 # Configured by : $cf_by
15428 # Target system : $myuname
15438 Revision='$Revision'
15445 alignbytes='$alignbytes'
15446 ansi2knr='$ansi2knr'
15447 aphostname='$aphostname'
15448 api_revision='$api_revision'
15449 api_subversion='$api_subversion'
15450 api_version='$api_version'
15451 api_versionstring='$api_versionstring'
15454 archlibexp='$archlibexp'
15455 archname64='$archname64'
15456 archname='$archname'
15457 archobjs='$archobjs'
15462 bincompat5005='$bincompat5005'
15466 byteorder='$byteorder'
15468 castflags='$castflags'
15471 cccdlflags='$cccdlflags'
15472 ccdlflags='$ccdlflags'
15474 ccflags_uselargefiles='$ccflags_uselargefiles'
15476 ccsymbols='$ccsymbols'
15477 ccversion='$ccversion'
15479 cf_email='$cf_email'
15481 charsize='$charsize'
15485 clocktype='$clocktype'
15487 compress='$compress'
15488 contains='$contains'
15492 cpp_stuff='$cpp_stuff'
15493 cppccsymbols='$cppccsymbols'
15494 cppflags='$cppflags'
15496 cppminus='$cppminus'
15498 cppstdin='$cppstdin'
15499 cppsymbols='$cppsymbols'
15500 crosscompile='$crosscompile'
15501 cryptlib='$cryptlib'
15503 d_Gconvert='$d_Gconvert'
15504 d_PRIEUldbl='$d_PRIEUldbl'
15505 d_PRIFUldbl='$d_PRIFUldbl'
15506 d_PRIGUldbl='$d_PRIGUldbl'
15507 d_PRIXU64='$d_PRIXU64'
15508 d_PRId64='$d_PRId64'
15509 d_PRIeldbl='$d_PRIeldbl'
15510 d_PRIfldbl='$d_PRIfldbl'
15511 d_PRIgldbl='$d_PRIgldbl'
15512 d_PRIi64='$d_PRIi64'
15513 d_PRIo64='$d_PRIo64'
15514 d_PRIu64='$d_PRIu64'
15515 d_PRIx64='$d_PRIx64'
15516 d_SCNfldbl='$d_SCNfldbl'
15517 d_access='$d_access'
15518 d_accessx='$d_accessx'
15520 d_archlib='$d_archlib'
15523 d_attribut='$d_attribut'
15526 d_bincompat5005='$d_bincompat5005'
15528 d_bsdgetpgrp='$d_bsdgetpgrp'
15529 d_bsdsetpgrp='$d_bsdsetpgrp'
15531 d_casti32='$d_casti32'
15532 d_castneg='$d_castneg'
15533 d_charvspr='$d_charvspr'
15535 d_chroot='$d_chroot'
15536 d_chsize='$d_chsize'
15537 d_closedir='$d_closedir'
15541 d_cuserid='$d_cuserid'
15542 d_dbl_dig='$d_dbl_dig'
15543 d_difftime='$d_difftime'
15544 d_dirnamlen='$d_dirnamlen'
15545 d_dlerror='$d_dlerror'
15546 d_dlopen='$d_dlopen'
15547 d_dlsymun='$d_dlsymun'
15548 d_dosuid='$d_dosuid'
15549 d_drand48proto='$d_drand48proto'
15551 d_eaccess='$d_eaccess'
15552 d_endgrent='$d_endgrent'
15553 d_endhent='$d_endhent'
15554 d_endnent='$d_endnent'
15555 d_endpent='$d_endpent'
15556 d_endpwent='$d_endpwent'
15557 d_endsent='$d_endsent'
15558 d_eofnblk='$d_eofnblk'
15559 d_eunice='$d_eunice'
15560 d_fchmod='$d_fchmod'
15561 d_fchown='$d_fchown'
15563 d_fcntl_can_lock='$d_fcntl_can_lock'
15564 d_fd_macros='$d_fd_macros'
15565 d_fd_set='$d_fd_set'
15566 d_fds_bits='$d_fds_bits'
15567 d_fgetpos='$d_fgetpos'
15568 d_flexfnam='$d_flexfnam'
15571 d_fpathconf='$d_fpathconf'
15572 d_fpos64_t='$d_fpos64_t'
15573 d_frexpl='$d_frexpl'
15574 d_fs_data_s='$d_fs_data_s'
15575 d_fseeko='$d_fseeko'
15576 d_fsetpos='$d_fsetpos'
15577 d_fstatfs='$d_fstatfs'
15578 d_fstatvfs='$d_fstatvfs'
15579 d_ftello='$d_ftello'
15581 d_getcwd='$d_getcwd'
15582 d_getespwnam='$d_getespwnam'
15583 d_getfsstat='$d_getfsstat'
15584 d_getgrent='$d_getgrent'
15585 d_getgrps='$d_getgrps'
15586 d_gethbyaddr='$d_gethbyaddr'
15587 d_gethbyname='$d_gethbyname'
15588 d_gethent='$d_gethent'
15589 d_gethname='$d_gethname'
15590 d_gethostprotos='$d_gethostprotos'
15591 d_getlogin='$d_getlogin'
15592 d_getmnt='$d_getmnt'
15593 d_getmntent='$d_getmntent'
15594 d_getnbyaddr='$d_getnbyaddr'
15595 d_getnbyname='$d_getnbyname'
15596 d_getnent='$d_getnent'
15597 d_getnetprotos='$d_getnetprotos'
15598 d_getpagsz='$d_getpagsz'
15599 d_getpbyname='$d_getpbyname'
15600 d_getpbynumber='$d_getpbynumber'
15601 d_getpent='$d_getpent'
15602 d_getpgid='$d_getpgid'
15603 d_getpgrp2='$d_getpgrp2'
15604 d_getpgrp='$d_getpgrp'
15605 d_getppid='$d_getppid'
15606 d_getprior='$d_getprior'
15607 d_getprotoprotos='$d_getprotoprotos'
15608 d_getprpwnam='$d_getprpwnam'
15609 d_getpwent='$d_getpwent'
15610 d_getsbyname='$d_getsbyname'
15611 d_getsbyport='$d_getsbyport'
15612 d_getsent='$d_getsent'
15613 d_getservprotos='$d_getservprotos'
15614 d_getspnam='$d_getspnam'
15615 d_gettimeod='$d_gettimeod'
15616 d_gnulibc='$d_gnulibc'
15617 d_grpasswd='$d_grpasswd'
15618 d_hasmntopt='$d_hasmntopt'
15622 d_inetaton='$d_inetaton'
15623 d_int64_t='$d_int64_t'
15624 d_isascii='$d_isascii'
15626 d_isnanl='$d_isnanl'
15627 d_killpg='$d_killpg'
15628 d_lchown='$d_lchown'
15629 d_ldbl_dig='$d_ldbl_dig'
15631 d_locconv='$d_locconv'
15633 d_longdbl='$d_longdbl'
15634 d_longlong='$d_longlong'
15635 d_lseekproto='$d_lseekproto'
15637 d_madvise='$d_madvise'
15639 d_mbstowcs='$d_mbstowcs'
15640 d_mbtowc='$d_mbtowc'
15641 d_memchr='$d_memchr'
15642 d_memcmp='$d_memcmp'
15643 d_memcpy='$d_memcpy'
15644 d_memmove='$d_memmove'
15645 d_memset='$d_memset'
15647 d_mkdtemp='$d_mkdtemp'
15648 d_mkfifo='$d_mkfifo'
15649 d_mkstemp='$d_mkstemp'
15650 d_mkstemps='$d_mkstemps'
15651 d_mktime='$d_mktime'
15654 d_mprotect='$d_mprotect'
15656 d_msg_ctrunc='$d_msg_ctrunc'
15657 d_msg_dontroute='$d_msg_dontroute'
15658 d_msg_oob='$d_msg_oob'
15659 d_msg_peek='$d_msg_peek'
15660 d_msg_proxy='$d_msg_proxy'
15661 d_msgctl='$d_msgctl'
15662 d_msgget='$d_msgget'
15663 d_msgrcv='$d_msgrcv'
15664 d_msgsnd='$d_msgsnd'
15666 d_munmap='$d_munmap'
15667 d_mymalloc='$d_mymalloc'
15669 d_nv_preserves_uv='$d_nv_preserves_uv'
15670 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15671 d_off64_t='$d_off64_t'
15672 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15673 d_oldpthreads='$d_oldpthreads'
15674 d_oldsock='$d_oldsock'
15676 d_pathconf='$d_pathconf'
15678 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15679 d_phostname='$d_phostname'
15682 d_portable='$d_portable'
15683 d_pthread_yield='$d_pthread_yield'
15685 d_pwchange='$d_pwchange'
15686 d_pwclass='$d_pwclass'
15687 d_pwcomment='$d_pwcomment'
15688 d_pwexpire='$d_pwexpire'
15689 d_pwgecos='$d_pwgecos'
15690 d_pwpasswd='$d_pwpasswd'
15691 d_pwquota='$d_pwquota'
15694 d_readdir='$d_readdir'
15695 d_readlink='$d_readlink'
15696 d_rename='$d_rename'
15697 d_rewinddir='$d_rewinddir'
15699 d_safebcpy='$d_safebcpy'
15700 d_safemcpy='$d_safemcpy'
15701 d_sanemcmp='$d_sanemcmp'
15702 d_sched_yield='$d_sched_yield'
15703 d_scm_rights='$d_scm_rights'
15704 d_seekdir='$d_seekdir'
15705 d_select='$d_select'
15707 d_semctl='$d_semctl'
15708 d_semctl_semid_ds='$d_semctl_semid_ds'
15709 d_semctl_semun='$d_semctl_semun'
15710 d_semget='$d_semget'
15712 d_setegid='$d_setegid'
15713 d_seteuid='$d_seteuid'
15714 d_setgrent='$d_setgrent'
15715 d_setgrps='$d_setgrps'
15716 d_sethent='$d_sethent'
15717 d_setlinebuf='$d_setlinebuf'
15718 d_setlocale='$d_setlocale'
15719 d_setnent='$d_setnent'
15720 d_setpent='$d_setpent'
15721 d_setpgid='$d_setpgid'
15722 d_setpgrp2='$d_setpgrp2'
15723 d_setpgrp='$d_setpgrp'
15724 d_setprior='$d_setprior'
15725 d_setproctitle='$d_setproctitle'
15726 d_setpwent='$d_setpwent'
15727 d_setregid='$d_setregid'
15728 d_setresgid='$d_setresgid'
15729 d_setresuid='$d_setresuid'
15730 d_setreuid='$d_setreuid'
15731 d_setrgid='$d_setrgid'
15732 d_setruid='$d_setruid'
15733 d_setsent='$d_setsent'
15734 d_setsid='$d_setsid'
15735 d_setvbuf='$d_setvbuf'
15739 d_shmatprototype='$d_shmatprototype'
15740 d_shmctl='$d_shmctl'
15742 d_shmget='$d_shmget'
15743 d_sigaction='$d_sigaction'
15744 d_sigsetjmp='$d_sigsetjmp'
15745 d_socket='$d_socket'
15746 d_socklen_t='$d_socklen_t'
15747 d_sockpair='$d_sockpair'
15748 d_socks5_init='$d_socks5_init'
15750 d_statblks='$d_statblks'
15751 d_statfs_f_flags='$d_statfs_f_flags'
15752 d_statfs_s='$d_statfs_s'
15753 d_statvfs='$d_statvfs'
15754 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15755 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15756 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
15757 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
15758 d_stdio_stream_array='$d_stdio_stream_array'
15759 d_stdiobase='$d_stdiobase'
15760 d_stdstdio='$d_stdstdio'
15761 d_strchr='$d_strchr'
15762 d_strcoll='$d_strcoll'
15763 d_strctcpy='$d_strctcpy'
15764 d_strerrm='$d_strerrm'
15765 d_strerror='$d_strerror'
15766 d_strtod='$d_strtod'
15767 d_strtol='$d_strtol'
15768 d_strtold='$d_strtold'
15769 d_strtoll='$d_strtoll'
15770 d_strtoul='$d_strtoul'
15771 d_strtoull='$d_strtoull'
15772 d_strtouq='$d_strtouq'
15773 d_strxfrm='$d_strxfrm'
15774 d_suidsafe='$d_suidsafe'
15775 d_symlink='$d_symlink'
15776 d_syscall='$d_syscall'
15777 d_sysconf='$d_sysconf'
15778 d_sysernlst='$d_sysernlst'
15779 d_syserrlst='$d_syserrlst'
15780 d_system='$d_system'
15781 d_tcgetpgrp='$d_tcgetpgrp'
15782 d_tcsetpgrp='$d_tcsetpgrp'
15783 d_telldir='$d_telldir'
15784 d_telldirproto='$d_telldirproto'
15787 d_truncate='$d_truncate'
15788 d_tzname='$d_tzname'
15791 d_union_semun='$d_union_semun'
15793 d_vendorarch='$d_vendorarch'
15794 d_vendorbin='$d_vendorbin'
15795 d_vendorlib='$d_vendorlib'
15797 d_void_closedir='$d_void_closedir'
15798 d_voidsig='$d_voidsig'
15799 d_voidtty='$d_voidtty'
15800 d_volatile='$d_volatile'
15801 d_vprintf='$d_vprintf'
15803 d_waitpid='$d_waitpid'
15804 d_wcstombs='$d_wcstombs'
15805 d_wctomb='$d_wctomb'
15808 db_hashtype='$db_hashtype'
15809 db_prefixtype='$db_prefixtype'
15810 defvoidused='$defvoidused'
15811 direntrytype='$direntrytype'
15814 doublesize='$doublesize'
15816 dynamic_ext='$dynamic_ext'
15822 eunicefix='$eunicefix'
15825 extensions='$extensions'
15826 fflushNULL='$fflushNULL'
15827 fflushall='$fflushall'
15829 firstmakefile='$firstmakefile'
15831 fpossize='$fpossize'
15832 fpostype='$fpostype'
15833 freetype='$freetype'
15835 full_csh='$full_csh'
15836 full_sed='$full_sed'
15837 gccosandvers='$gccosandvers'
15838 gccversion='$gccversion'
15839 gidformat='$gidformat'
15845 groupcat='$groupcat'
15846 groupstype='$groupstype'
15849 h_sysfile='$h_sysfile'
15860 i_arpainet='$i_arpainet'
15861 i_bsdioctl='$i_bsdioctl'
15864 i_dirent='$i_dirent'
15872 i_ieeefp='$i_ieeefp'
15873 i_inttypes='$i_inttypes'
15874 i_libutil='$i_libutil'
15875 i_limits='$i_limits'
15876 i_locale='$i_locale'
15877 i_machcthr='$i_machcthr'
15878 i_malloc='$i_malloc'
15880 i_memory='$i_memory'
15881 i_mntent='$i_mntent'
15884 i_neterrno='$i_neterrno'
15885 i_netinettcp='$i_netinettcp'
15889 i_pthread='$i_pthread'
15891 i_rpcsvcdbm='$i_rpcsvcdbm'
15894 i_shadow='$i_shadow'
15896 i_stdarg='$i_stdarg'
15897 i_stddef='$i_stddef'
15898 i_stdlib='$i_stdlib'
15899 i_string='$i_string'
15900 i_sunmath='$i_sunmath'
15901 i_sysaccess='$i_sysaccess'
15902 i_sysdir='$i_sysdir'
15903 i_sysfile='$i_sysfile'
15904 i_sysfilio='$i_sysfilio'
15906 i_sysioctl='$i_sysioctl'
15907 i_syslog='$i_syslog'
15908 i_sysmman='$i_sysmman'
15909 i_sysmode='$i_sysmode'
15910 i_sysmount='$i_sysmount'
15911 i_sysndir='$i_sysndir'
15912 i_sysparam='$i_sysparam'
15913 i_sysresrc='$i_sysresrc'
15914 i_syssecrt='$i_syssecrt'
15915 i_sysselct='$i_sysselct'
15916 i_syssockio='$i_syssockio'
15917 i_sysstat='$i_sysstat'
15918 i_sysstatfs='$i_sysstatfs'
15919 i_sysstatvfs='$i_sysstatvfs'
15920 i_systime='$i_systime'
15921 i_systimek='$i_systimek'
15922 i_systimes='$i_systimes'
15923 i_systypes='$i_systypes'
15924 i_sysuio='$i_sysuio'
15926 i_sysutsname='$i_sysutsname'
15927 i_sysvfs='$i_sysvfs'
15928 i_syswait='$i_syswait'
15929 i_termio='$i_termio'
15930 i_termios='$i_termios'
15932 i_unistd='$i_unistd'
15935 i_values='$i_values'
15936 i_varargs='$i_varargs'
15937 i_varhdr='$i_varhdr'
15939 ignore_versioned_solibs='$ignore_versioned_solibs'
15940 inc_version_list='$inc_version_list'
15941 inc_version_list_init='$inc_version_list_init'
15944 installarchlib='$installarchlib'
15945 installbin='$installbin'
15946 installman1dir='$installman1dir'
15947 installman3dir='$installman3dir'
15948 installprefix='$installprefix'
15949 installprefixexp='$installprefixexp'
15950 installprivlib='$installprivlib'
15951 installscript='$installscript'
15952 installsitearch='$installsitearch'
15953 installsitebin='$installsitebin'
15954 installsitelib='$installsitelib'
15955 installstyle='$installstyle'
15956 installusrbinperl='$installusrbinperl'
15957 installvendorarch='$installvendorarch'
15958 installvendorbin='$installvendorbin'
15959 installvendorlib='$installvendorlib'
15961 ivdformat='$ivdformat'
15964 known_extensions='$known_extensions'
15967 lddlflags='$lddlflags'
15969 ldflags_uselargefiles='$ldflags_uselargefiles'
15970 ldlibpthname='$ldlibpthname'
15977 libsdirs='$libsdirs'
15978 libsfiles='$libsfiles'
15979 libsfound='$libsfound'
15980 libspath='$libspath'
15981 libswanted='$libswanted'
15982 libswanted_uselargefiles='$libswanted_uselargefiles'
15988 locincpth='$locincpth'
15989 loclibpth='$loclibpth'
15990 longdblsize='$longdblsize'
15991 longlongsize='$longlongsize'
15992 longsize='$longsize'
15996 lseeksize='$lseeksize'
15997 lseektype='$lseektype'
16001 make_set_make='$make_set_make'
16002 mallocobj='$mallocobj'
16003 mallocsrc='$mallocsrc'
16004 malloctype='$malloctype'
16006 man1direxp='$man1direxp'
16009 man3direxp='$man3direxp'
16011 mips_type='$mips_type'
16013 mmaptype='$mmaptype'
16014 modetype='$modetype'
16016 multiarch='$multiarch'
16018 myarchname='$myarchname'
16019 mydomain='$mydomain'
16020 myhostname='$myhostname'
16023 netdb_hlen_type='$netdb_hlen_type'
16024 netdb_host_type='$netdb_host_type'
16025 netdb_name_type='$netdb_name_type'
16026 netdb_net_type='$netdb_net_type'
16029 nm_so_opt='$nm_so_opt'
16030 nonxs_ext='$nonxs_ext'
16032 nvEUformat='$nvEUformat'
16033 nvFUformat='$nvFUformat'
16034 nvGUformat='$nvGUformat'
16035 nveformat='$nveformat'
16036 nvfformat='$nvfformat'
16037 nvgformat='$nvgformat'
16040 o_nonblock='$o_nonblock'
16042 old_pthread_create_joinable='$old_pthread_create_joinable'
16043 optimize='$optimize'
16044 orderlib='$orderlib'
16047 otherlibdirs='$otherlibdirs'
16051 patchlevel='$patchlevel'
16052 path_sep='$path_sep'
16055 perladmin='$perladmin'
16056 perllibs='$perllibs'
16057 perlpath='$perlpath'
16059 phostname='$phostname'
16062 pm_apiversion='$pm_apiversion'
16066 prefixexp='$prefixexp'
16068 privlibexp='$privlibexp'
16069 prototype='$prototype'
16071 quadkind='$quadkind'
16072 quadtype='$quadtype'
16073 randbits='$randbits'
16074 randfunc='$randfunc'
16075 randseedtype='$randseedtype'
16077 rd_nodata='$rd_nodata'
16078 revision='$revision'
16082 sPRIEUldbl='$sPRIEUldbl'
16083 sPRIFUldbl='$sPRIFUldbl'
16084 sPRIGUldbl='$sPRIGUldbl'
16085 sPRIXU64='$sPRIXU64'
16087 sPRIeldbl='$sPRIeldbl'
16088 sPRIfldbl='$sPRIfldbl'
16089 sPRIgldbl='$sPRIgldbl'
16094 sSCNfldbl='$sSCNfldbl'
16095 sched_yield='$sched_yield'
16096 scriptdir='$scriptdir'
16097 scriptdirexp='$scriptdirexp'
16099 seedfunc='$seedfunc'
16100 selectminbits='$selectminbits'
16101 selecttype='$selecttype'
16102 sendmail='$sendmail'
16105 sharpbang='$sharpbang'
16106 shmattype='$shmattype'
16107 shortsize='$shortsize'
16110 sig_count='$sig_count'
16111 sig_name='$sig_name'
16112 sig_name_init='$sig_name_init'
16114 sig_num_init='$sig_num_init'
16115 signal_t='$signal_t'
16116 sitearch='$sitearch'
16117 sitearchexp='$sitearchexp'
16119 sitebinexp='$sitebinexp'
16121 sitelib_stem='$sitelib_stem'
16122 sitelibexp='$sitelibexp'
16123 siteprefix='$siteprefix'
16124 siteprefixexp='$siteprefixexp'
16125 sizesize='$sizesize'
16126 sizetype='$sizetype'
16130 sockethdr='$sockethdr'
16131 socketlib='$socketlib'
16132 socksizetype='$socksizetype'
16134 spackage='$spackage'
16135 spitshell='$spitshell'
16137 ssizetype='$ssizetype'
16138 startperl='$startperl'
16140 static_ext='$static_ext'
16142 stdio_base='$stdio_base'
16143 stdio_bufsiz='$stdio_bufsiz'
16144 stdio_cnt='$stdio_cnt'
16145 stdio_filbuf='$stdio_filbuf'
16146 stdio_ptr='$stdio_ptr'
16147 stdio_stream_array='$stdio_stream_array'
16150 subversion='$subversion'
16157 timeincl='$timeincl'
16158 timetype='$timetype'
16171 uidformat='$uidformat'
16177 uquadtype='$uquadtype'
16178 use5005threads='$use5005threads'
16179 use64bitall='$use64bitall'
16180 use64bitint='$use64bitint'
16182 useithreads='$useithreads'
16183 uselargefiles='$uselargefiles'
16184 uselongdouble='$uselongdouble'
16185 usemorebits='$usemorebits'
16186 usemultiplicity='$usemultiplicity'
16187 usemymalloc='$usemymalloc'
16189 useopcode='$useopcode'
16190 useperlio='$useperlio'
16191 useposix='$useposix'
16193 useshrplib='$useshrplib'
16194 usesocks='$usesocks'
16195 usethreads='$usethreads'
16196 usevendorprefix='$usevendorprefix'
16197 usevfork='$usevfork'
16200 uvXUformat='$uvXUformat'
16201 uvoformat='$uvoformat'
16204 uvuformat='$uvuformat'
16205 uvxformat='$uvxformat'
16206 vendorarch='$vendorarch'
16207 vendorarchexp='$vendorarchexp'
16208 vendorbin='$vendorbin'
16209 vendorbinexp='$vendorbinexp'
16210 vendorlib='$vendorlib'
16211 vendorlib_stem='$vendorlib_stem'
16212 vendorlibexp='$vendorlibexp'
16213 vendorprefix='$vendorprefix'
16214 vendorprefixexp='$vendorprefixexp'
16216 versiononly='$versiononly'
16218 voidflags='$voidflags'
16220 xs_apiversion='$xs_apiversion'
16225 : Add in command line options if available
16226 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16228 : add special variables
16229 $test -f $src/patchlevel.h && \
16230 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16231 echo "CONFIGDOTSH=true" >>config.sh
16233 : propagate old symbols
16234 if $test -f UU/config.sh; then
16235 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16236 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16237 $sort | $uniq -u >UU/oldsyms
16238 set X `cat UU/oldsyms`
16244 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16246 echo "# Variables propagated from previous config.sh file." >>config.sh
16247 for sym in `cat UU/oldsyms`; do
16248 echo " Propagating $hint variable "'$'"$sym..."
16249 eval 'tmp="$'"${sym}"'"'
16251 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16257 : Finish up by extracting the .SH files
16271 If you'd like to make any changes to the config.sh file before I begin
16272 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16275 rp="Press return or use a shell escape to edit config.sh:"
16280 *) : in case they cannot read
16281 sh 1>&4 -c "$ans";;
16286 : if this fails, just run all the .SH files by hand
16293 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16300 Now you need to generate make dependencies by running "$make depend".
16301 You might prefer to run it in background: "$make depend > makedepend.out &"
16302 It can take a while, so you might not want to run it right now.
16307 rp="Run $make depend now?"
16311 $make depend && echo "Now you must run '$make'."
16314 echo "You must run '$make depend' then '$make'."
16317 elif test -f [Mm]akefile; then
16319 echo "Now you must run a $make."
16324 if $test -f Policy.sh; then
16327 If you compile $package on a different machine or from a different object
16328 directory, copy the Policy.sh file from this object directory to the
16329 new one before you run Configure -- this will help you with most of
16330 the policy defaults.
16334 if $test -f config.msg; then
16335 echo "Hmm. I also noted the following information while running:"
16337 $cat config.msg >&4
16340 $rm -f kit*isdone ark*isdone