3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Sun Jan 14 06:37:36 EET 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
118 case "$inksh/$needksh" in
125 case "$inksh/$avoidksh" in
131 case "$inksh/$needksh-$avoidksh-" in
134 (I see you are using the Korn shell. Some ksh's blow up on $me,
135 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
141 echo "(Feeding myself to $newsh $reason.)"
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
154 *bash*) CDPATH='.' ;;
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
465 d_old_pthread_create_joinable=''
466 old_pthread_create_joinable=''
545 d_stdio_ptr_lval_nochange_cnt=''
546 d_stdio_ptr_lval_sets_cnt=''
719 inc_version_list_init=''
738 ignore_versioned_solibs=''
797 d_perl_otherlibdirs=''
814 d_nv_preserves_uv_bits=''
912 d_stdio_stream_array=''
913 stdio_stream_array=''
923 ccflags_uselargefiles=''
924 ldflags_uselargefiles=''
925 libswanted_uselargefiles=''
968 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
971 : We must find out about Eunice early
973 if test -f /etc/unixtovms; then
974 eunicefix=/etc/unixtovms
976 if test -f /etc/unixtovms.exe; then
977 eunicefix=/etc/unixtovms.exe
984 : set useposix=false in your hint file to disable the POSIX extension.
986 : set useopcode=false in your hint file to disable the Opcode extension.
988 : Trailing extension. Override this in a hint file, if needed.
990 : Extra object files, if any, needed on this platform.
993 : Possible local include directories to search.
994 : Set locincpth to "" in a hint file to defeat local include searches.
995 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
996 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
998 : no include file wanted by default
1002 : change the next line if compiling for Xenix/286 on Xenix/386
1003 xlibpth='/usr/lib/386 /lib/386'
1004 : Possible local library directories to search.
1005 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1006 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1008 : general looking path for locating libraries
1009 glibpth="/lib /usr/lib $xlibpth"
1010 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1011 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1012 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1014 : Private path used by Configure to find libraries. Its value
1015 : is prepended to libpth. This variable takes care of special
1016 : machines, like the mips. Usually, it should be empty.
1019 : default library list
1021 : some systems want to use only the non-versioned libso:s
1022 ignore_versioned_solibs=''
1024 ccflags_uselargefiles=''
1025 ldflags_uselargefiles=''
1026 libswanted_uselargefiles=''
1027 : set usemultiplicity on the Configure command line to enable multiplicity.
1028 : set usesocks on the Configure command line to enable socks.
1029 : set usethreads on the Configure command line to enable threads.
1030 : full support for void wanted by default
1033 : List of libraries we want.
1034 : If anyone needs -lnet, put it in a hint file.
1035 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1036 libswanted="$libswanted dld ld sun m c cposix posix"
1037 libswanted="$libswanted ndir dir crypt sec"
1038 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1039 : We probably want to search /usr/shlib before most other libraries.
1040 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1041 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1042 glibpth="/usr/shlib $glibpth"
1043 : Do not use vfork unless overridden by a hint file.
1046 : Find the basic shell for Bourne shell scripts
1050 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1053 if test -f "$xxx"; then
1056 : Build up a list and do a single loop so we can 'break' out.
1057 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1058 for xxx in sh bash ksh pdksh ash; do
1060 try="$try ${p}/${xxx}"
1064 if test -f "$xxx"; then
1067 elif test -f "$xxx.exe"; then
1078 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1080 Usually it's in /bin/sh. How did you even get this far?
1081 Please contact me (Perl Maintainers) at perlbug@perl.org and
1082 we'll try to straighten this all out.
1088 : see if sh knows # comments
1089 if `$sh -c '#' >/dev/null 2>&1`; then
1093 test -f $xcat || xcat=/usr/bin/cat
1098 if test -s today; then
1101 echo "#! $xcat" > try
1105 if test -s today; then
1113 echo "Your $sh doesn't grok # comments--I will strip them later on."
1116 echo "exec grep -v '^[ ]*#'" >spitshell
1118 $eunicefix spitshell
1119 spitshell=`pwd`/spitshell
1121 echo "I presume that if # doesn't work, #! won't work either!"
1126 : figure out how to guarantee sh startup
1128 '') startsh=${sharpbang}${sh} ;;
1140 : echo "Yup, it does."
1142 echo "Hmm... '$startsh' does not guarantee sh startup..."
1143 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1148 : Save command line options in file UU/cmdline.opt for later use in
1149 : generating config.sh.
1150 cat > cmdline.opt <<EOSH
1151 # Configure command line arguments.
1158 cat >>cmdline.opt <<EOSH
1159 config_arg$argn='$arg'
1161 argn=`expr $argn + 1`
1164 : produce awk script to parse command line options
1165 cat >options.awk <<'EOF'
1167 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1169 len = length(optstr);
1170 for (i = 1; i <= len; i++) {
1171 c = substr(optstr, i, 1);
1172 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1183 if (substr(str, 1, 1) != "-") {
1184 printf("'%s'\n", str);
1188 for (i = 2; i <= len; i++) {
1189 c = substr(str, i, 1);
1191 printf("-%s\n", substr(str, i));
1197 printf("'%s'\n", substr(str, i + 1));
1210 : process the command line options
1211 set X `for arg in "$@"; do echo "X$arg"; done |
1212 sed -e s/X// | awk -f options.awk`
1217 : set up default values
1227 rm -f optdef.sh posthint.sh
1228 cat >optdef.sh <<EOS
1234 while test $# -gt 0; do
1236 -d) shift; fastread=yes;;
1237 -e) shift; alldone=cont;;
1241 if test -r "$1"; then
1244 echo "$me: cannot read config file $1." >&2
1249 -h) shift; error=true;;
1250 -r) shift; reuseval=true;;
1251 -s) shift; silent=true; realsilent=true;;
1252 -E) shift; alldone=exit;;
1253 -K) shift; knowitall=true;;
1254 -O) shift; override=true;;
1255 -S) shift; silent=true; extractsh=true;;
1260 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1261 echo "$me: ignoring -D $1" >&2
1264 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1265 *) echo "$1='define'" >> optdef.sh;;
1272 *=) echo "$1" >> optdef.sh;;
1274 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1275 echo "$me: ignoring -U $1" >&2
1277 *) echo "$1='undef'" >> optdef.sh;;
1288 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1292 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1293 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1299 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1300 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1301 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1302 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1303 *) xxx=`echo $yyy|sed 's!:.*!!'`
1304 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1310 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1312 echo "$yyy=''" >> posthint.sh ;;
1317 echo "$yyy='$zzz'" >> posthint.sh ;;
1319 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1321 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1326 echo "$yyy=$zzz" >> posthint.sh ;;
1327 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1331 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1334 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1342 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1343 [-U symbol] [-U symbol=] [-A command:symbol...]
1344 -d : use defaults for all answers.
1345 -e : go on without questioning past the production of config.sh.
1346 -f : specify an alternate default configuration file.
1347 -h : print this help message and exit (with an error status).
1348 -r : reuse C symbols value if possible (skips costly nm extraction).
1349 -s : silent mode, only echoes questions and essential information.
1350 -D : define symbol to have some value:
1351 -D symbol symbol gets the value 'define'
1352 -D symbol=value symbol gets the value 'value'
1353 -E : stop at the end of questions, after having produced config.sh.
1354 -K : do not use unless you know what you are doing.
1355 -O : let -D and -U override definitions from loaded configuration file.
1356 -S : perform variable substitutions on all .SH files (can mix with -f)
1357 -U : undefine symbol:
1358 -U symbol symbol gets the value 'undef'
1359 -U symbol= symbol gets completely empty
1360 -A : manipulate symbol after the platform specific hints have been applied:
1361 -A symbol=value append " "value to symbol
1362 -A append:symbol=value append value to symbol
1363 -A define:symbol=value define symbol to have value
1364 -A clear:symbol define symbol to be ''
1365 -A define:symbol define symbol to be 'define'
1366 -A eval:symbol=value define symbol to be eval of value
1367 -A prepend:symbol=value prepend value to symbol
1368 -A undef:symbol define symbol to be 'undef'
1369 -A undef:symbol= define symbol to be ''
1370 -V : print version number and exit (with a zero status).
1377 case "$fastread$alldone" in
1380 case "$extractsh" in
1383 if test ! -t 0; then
1384 echo "Say 'sh Configure', not 'sh <Configure'"
1394 true) exec 1>/dev/null;;
1397 : run the defines and the undefines, if any, but leave the file out there...
1400 : create the posthint manipulation script and leave the file out there...
1405 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1406 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1407 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1408 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1409 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1412 : Some greps do not return status, grrr.
1413 echo "grimblepritz" >grimble
1414 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1416 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1422 : the following should work in any shell
1426 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1427 cat >contains <<'EOSS'
1428 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1433 : Find the path to the source tree
1436 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1440 *) src=`cd ../$src && pwd` ;;
1453 if test -f $rsrc/Configure && \
1454 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1456 : found it, so we are ok.
1459 for src in . .. ../.. ../../.. ../../../..; do
1460 if test -f ../$src/Configure && \
1461 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1472 Sorry, I can't seem to locate the source dir for $package. Please start
1473 Configure with an explicit path -- i.e. /some/path/Configure.
1481 echo "Sources for $package found in \"$src\"." >&4
1485 : script used to extract .SH files with variable substitutions
1486 cat >extract <<'EOS'
1488 echo "Doing variable substitutions on .SH files..."
1489 if test -f $src/MANIFEST; then
1490 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1492 echo "(Looking for .SH files under the source directory.)"
1493 set x `(cd $src; find . -name "*.SH" -print)`
1497 0) set x `(cd $src; echo *.SH)`; shift;;
1499 if test ! -f $src/$1; then
1505 while test $name; do
1506 if test ! -d "$name"; then
1507 create="$name $create";
1508 name=`echo $name | sed -e "s|^[^/]*$||"`;
1509 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1514 for file in $create; do
1523 dir=`expr X$file : 'X\(.*\)/'`
1524 file=`expr X$file : 'X.*/\(.*\)'`
1525 (cd $dir && . ./$file)
1535 dir=`expr X$file : 'X\(.*\)/'`
1536 file=`expr X$file : 'X.*/\(.*\)'`
1537 (set x $dir; shift; eval $mkdir_p)
1547 if test -f $src/config_h.SH; then
1548 if test ! -f config.h; then
1549 : oops, they left it out of MANIFEST, probably, so do it anyway.
1555 : extract files and exit if asked to do so
1556 case "$extractsh" in
1558 case "$realsilent" in
1562 case "$config_sh" in
1563 '') config_sh='config.sh';;
1566 echo "Fetching answers from $config_sh..."
1569 test "$override" && . ./optdef.sh
1578 : Eunice requires " " instead of "", can you believe it
1581 echo "Beginning of configuration questions for $package."
1583 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1585 : first determine how to suppress newline on echo command
1587 echo "Checking echo to see how to suppress newlines..."
1588 (echo "hi there\c" ; echo " ") >.echotmp
1589 if $contains c .echotmp >/dev/null 2>&1 ; then
1600 echo $n "The star should be here-->$c"
1604 : Now test for existence of everything in MANIFEST
1606 if test -f $rsrc/MANIFEST; then
1607 echo "First let's make sure your kit is complete. Checking..." >&4
1608 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1611 for filelist in x??; do
1612 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1614 if test -s missing; then
1618 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1620 You have the option of continuing the configuration process, despite the
1621 distinct possibility that your kit is damaged, by typing 'y'es. If you
1622 do, don't blame me if something goes wrong. I advise you to type 'n'o
1623 and contact the author (perlbug@perl.org).
1626 echo $n "Continue? [n] $c" >&4
1630 echo "Continuing..." >&4
1634 echo "ABORTING..." >&4
1639 echo "Looks good..."
1642 echo "There is no MANIFEST file. I hope your kit is complete !"
1647 : Find the appropriate value for a newline for tr
1648 if test -n "$DJGPP"; then
1651 if test X"$trnl" = X; then
1652 case "`echo foo|tr '\n' x 2>/dev/null`" in
1656 if test X"$trnl" = X; then
1657 case "`echo foo|tr '\012' x 2>/dev/null`" in
1658 foox) trnl='\012' ;;
1661 if test X"$trnl" = X; then
1664 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1670 : compute the number of columns on the terminal for proper question formatting
1675 : set up the echo used in my read
1676 myecho="case \"\$xxxm\" in
1677 '') echo $n \"\$rp $c\" >&4;;
1679 '') echo $n \"[\$xxxm] $c\";;
1681 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1683 echo $n \"[\$xxxm] $c\" >&4
1685 echo $n \"\$rp [\$xxxm] $c\" >&4
1691 : now set up to do reads with possible shell escape and default assignment
1697 case "\$fastread" in
1698 yes) case "\$dflt" in
1701 case "\$silent-\$rp" in
1706 *) case "\$silent" in
1707 true) case "\$rp" in
1712 while expr "X\$ans" : "X!" >/dev/null; do
1716 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1724 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1733 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1738 echo "(OK, I'll run with -d after this question.)" >&4
1741 echo "*** Sorry, \$1 not supported yet." >&4
1751 echo "*** Substitution done -- please confirm."
1753 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1758 echo "*** Error -- try again."
1765 case "\$ans\$xxxm\$nostick" in
1777 : create .config dir to save info across Configure sessions
1778 test -d ../.config || mkdir ../.config
1779 cat >../.config/README <<EOF
1780 This directory created by Configure to save information that should
1781 persist across sessions for $package.
1783 You may safely delete it if you wish.
1786 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1788 $define|true|[yY]*) ;;
1789 *) case "$xversion" in
1792 *** WHOA THERE!!! ***
1794 This is an UNSTABLE DEVELOPMENT release.
1795 The version of this $package distribution is $xversion, that is, odd,
1796 (as opposed to even) and that signifies a development release.
1797 If you want a maintenance release, you want an even-numbered version.
1799 Do ***NOT*** install this into production use.
1800 Data corruption and crashes are possible.
1802 It is most seriously suggested that you do not continue any further
1803 unless you want to help in developing and debugging Perl.
1806 rp='Do you really want to continue?'
1810 [yY]) echo >&4 "Okay, continuing." ;;
1811 *) echo >&4 "Okay, bye."
1820 : general instructions
1823 user=`(logname) 2>/dev/null`
1825 '') user=`whoami 2>&1`;;
1827 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1830 rp='Would you like to see the instructions?'
1841 This installation shell script will examine your system and ask you questions
1842 to determine how the perl5 package should be installed. If you get
1843 stuck on a question, you may use a ! shell escape to start a subshell or
1844 execute a command. Many of the questions will have default answers in square
1845 brackets; typing carriage return will give you the default.
1847 On some of the questions which ask for file or directory names you are allowed
1848 to use the ~name construct to specify the login directory belonging to "name",
1849 even if you don't have a shell which knows about that. Questions where this is
1850 allowed will be marked "(~name ok)".
1854 dflt='Type carriage return to continue'
1858 The prompter used in this script allows you to use shell variables and
1859 backticks in your answers. You may use $1, $2, etc... to refer to the words
1860 in the default answer, as if the default line was a set of arguments given to a
1861 script shell. This means you may also use $* to repeat the whole default line,
1862 so you do not have to re-type everything to add something to the default.
1864 Everytime there is a substitution, you will have to confirm. If there is an
1865 error (e.g. an unmatched backtick), the default answer will remain unchanged
1866 and you will be prompted again.
1868 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1869 the questions and use the computed defaults (or the previous answers if there
1870 was already a config.sh file). Type 'Configure -h' for a list of options.
1871 You may also start interactively and then answer '& -d' at any prompt to turn
1872 on the non-interactive behaviour for the remainder of the execution.
1878 Much effort has been expended to ensure that this shell script will run on any
1879 Unix system. If despite that it blows up on yours, your best bet is to edit
1880 Configure and run it again. If you can't run Configure for some reason,
1881 you'll have to generate a config.sh file by hand. Whatever problems you
1882 have, let me (perlbug@perl.org) know how I blew it.
1884 This installation script affects things in two ways:
1886 1) it may do direct variable substitutions on some of the files included
1888 2) it builds a config.h file for inclusion in C programs. You may edit
1889 any of these files as the need arises after running this script.
1891 If you make a mistake on a question, there is no easy way to back up to it
1892 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1893 files. Configure will offer to let you do this before it runs the SH files.
1896 dflt='Type carriage return to continue'
1898 case "$firsttime" in
1899 true) echo $user >>../.config/instruct;;
1903 : find out where common programs are
1905 echo "Locating common programs..." >&4
1918 if test -d \$dir/\$thing; then
1924 for thisthing in \$dir/\$thing; do
1925 : just loop through to pick last item
1927 if test -f \$thisthing; then
1930 elif test -f \$dir/\$thing.exe; then
1931 if test -n "$DJGPP"; then
1932 echo \$dir/\$thing.exe
1934 : on Eunice apparently
1984 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1985 pth="$pth /lib /usr/lib"
1986 for file in $loclist; do
1990 if test -f "$xxx"; then
1993 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1994 xxx=`./loc $file $file $pth`
1997 '') xxx=`./loc $file $file $pth`;;
1998 *) xxx=`./loc $xxx $xxx $pth`;;
2004 echo $file is in $xxx.
2007 echo $file is in $xxx.
2010 echo "I don't know where '$file' is, and my life depends on it." >&4
2011 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2017 echo "Don't worry if any of the following aren't found..."
2019 for file in $trylist; do
2023 if test -f "$xxx"; then
2026 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2027 xxx=`./loc $file $file $pth`
2030 '') xxx=`./loc $file $file $pth`;;
2031 *) xxx=`./loc $xxx $xxx $pth`;;
2037 echo $file is in $xxx.
2040 echo $file is in $xxx.
2043 echo "I don't see $file out there, $say."
2050 echo "Substituting grep for egrep."
2056 echo "Substituting cp for ln."
2062 echo "Hopefully test is built into your sh."
2065 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2066 echo "Using the test built into your sh."
2067 echo "Using the test built into your sh."
2075 echo "Hopefully echo is built into your sh."
2080 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2081 $echo $n "hi there$c" >foo1
2082 echo $n "hi there$c" >foo2
2083 if cmp foo1 foo2 >/dev/null 2>&1; then
2084 echo "They are compatible. In fact, they may be identical."
2091 They are not compatible! You are probably running ksh on a non-USG system.
2092 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2093 have echo built in and we may have to run some Bourne shell scripts. That
2094 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2097 $echo $n "The star should be here-->$c"
2107 cat <<'EOSC' >>checkcc
2112 int main(int argc, char *argv[]) {
2116 if $cc -o try $ccflags try.c; then
2119 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2125 case "`$cc -v -c try.c 2>&1`" in
2128 if $test X"$trygcc" = Xyes; then
2129 if gcc -o try -c try.c; then
2131 echo "You seem to have a working gcc, though." >&4
2132 rp="Would you like to use it?"
2134 if $test -f myread; then
2137 if $test -f UU/myread; then
2140 echo "Cannot find myread, sorry. Aborting." >&2
2145 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2149 if $test X"$despair" = Xyes; then
2151 You need to find a working C compiler.
2152 Either (purchase and) install the C compiler supplied by your OS vendor,
2153 or for a free C compiler try http://gcc.gnu.org/
2154 I cannot continue any further, aborting.
2164 : determine whether symbolic links are supported
2167 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2168 echo "Symbolic links are supported." >&4
2171 echo "Symbolic links are NOT supported." >&4
2176 : determine whether symbolic links are supported
2180 echo "Checking how to test for symbolic links..." >&4
2182 if $test "X$issymlink" = X; then
2183 sh -c "PATH= test -h sym" >/dev/null 2>&1
2184 if test $? = 0; then
2188 if $test "X$issymlink" = X; then
2189 if $test -h >/dev/null 2>&1; then
2190 issymlink="$test -h"
2191 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2194 if $test "X$issymlink" = X; then
2195 if $test -L sym 2>/dev/null; then
2196 issymlink="$test -L"
2199 if $test "X$issymlink" != X; then
2200 echo "You can test for symbolic links with '$issymlink'." >&4
2202 echo "I do not know how you can test for symbolic links." >&4
2206 *) echo "No symbolic links, so not testing for their testing..." >&4
2212 case "$mksymlinks" in
2215 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2218 *) case "$lns:$issymlink" in
2219 *"ln -s:"*"test -"?)
2220 echo "Creating the symbolic links..." >&4
2221 echo "(First creating the subdirectories...)" >&4
2223 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2225 test -z "$directory" && break
2229 if test ! -d t/base; then
2230 echo "Failed to create the subdirectories. Aborting." >&4
2233 echo "(Then creating the symlinks...)" >&4
2234 awk '{print $1}' $src/MANIFEST | while true; do
2236 test -z "$filename" && break
2237 if test -f $filename; then
2238 if $issymlink $filename; then
2242 if test -f $filename; then
2243 echo "$filename already exists, not symlinking."
2245 ln -s $src/$filename $filename
2249 if test ! -f t/base/commonsense.t; then
2250 echo "Failed to create the symlinks. Aborting." >&4
2255 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2263 : see whether [:lower:] and [:upper:] are supported character classes
2265 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2267 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2271 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2272 # (0xc9 and 0xd1), therefore that is a nice testing point.
2273 if test "X$up" = X -o "X$low" = X; then
2274 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2280 if test "X$up" = X -o "X$low" = X; then
2281 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2287 if test "X$up" = X -o "X$low" = X; then
2288 case "`echo IJ | od -x 2>/dev/null`" in
2290 echo "Hey, this might be EBCDIC." >&4
2291 if test "X$up" = X -o "X$low" = X; then
2292 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2293 ij) up='[A-IJ-RS-Z]'
2298 if test "X$up" = X -o "X$low" = X; then
2299 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2309 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2311 echo "Using $up and $low to convert case." >&4
2314 echo "I don't know how to translate letters from upper to lower case." >&4
2315 echo "Your tr is not acting any way I know of." >&4
2319 : set up the translation script tr, must be called with ./tr of course
2323 '[A-Z][a-z]') exec $tr '$up' '$low';;
2324 '[a-z][A-Z]') exec $tr '$low' '$up';;
2331 : Try to determine whether config.sh was made on this system
2332 case "$config_sh" in
2334 myuname=`$uname -a 2>/dev/null`
2335 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2336 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2337 # because the A-Z/a-z are not consecutive.
2338 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2339 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2340 newmyuname="$myuname"
2342 case "$knowitall" in
2344 if test -f ../config.sh; then
2345 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2346 eval "`grep myuname= ../config.sh`"
2348 if test "X$myuname" = "X$newmyuname"; then
2356 : Get old answers from old config file if Configure was run on the
2357 : same system, otherwise use the hints.
2360 if test -f config.sh; then
2362 rp="I see a config.sh file. Shall I use it to set the defaults?"
2365 n*|N*) echo "OK, I'll ignore it."
2366 mv config.sh config.sh.old
2367 myuname="$newmyuname"
2369 *) echo "Fetching default answers from your old config.sh file..." >&4
2377 : Older versions did not always set $sh. Catch re-use of such
2387 if test ! -f config.sh; then
2390 First time through, eh? I have some defaults handy for some systems
2391 that need some extra help getting the Configure answers right:
2394 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2396 : Half the following guesses are probably wrong... If you have better
2397 : tests or hints, please send them to perlbug@perl.org
2398 : The metaconfig authors would also appreciate a copy...
2399 $test -f /irix && osname=irix
2400 $test -f /xenix && osname=sco_xenix
2401 $test -f /dynix && osname=dynix
2402 $test -f /dnix && osname=dnix
2403 $test -f /lynx.os && osname=lynxos
2404 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2405 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2406 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2407 $test -f /bin/mips && /bin/mips && osname=mips
2408 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2409 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2410 $test -d /usr/apollo/bin && osname=apollo
2411 $test -f /etc/saf/_sactab && osname=svr4
2412 $test -d /usr/include/minix && osname=minix
2413 if $test -d /MachTen -o -d /MachTen_Folder; then
2415 if $test -x /sbin/version; then
2416 osvers=`/sbin/version | $awk '{print $2}' |
2417 $sed -e 's/[A-Za-z]$//'`
2418 elif $test -x /usr/etc/version; then
2419 osvers=`/usr/etc/version | $awk '{print $2}' |
2420 $sed -e 's/[A-Za-z]$//'`
2426 $test -f /sys/posix.dll &&
2427 $test -f /usr/bin/what &&
2428 set X `/usr/bin/what /sys/posix.dll` &&
2429 $test "$3" = UWIN &&
2433 if $test -f $uname; then
2441 umips) osname=umips ;;
2444 [23]100) osname=mips ;;
2445 next*) osname=next ;;
2447 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2448 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2451 elif $test -f /etc/kconfig; then
2453 if test "$lns" = "$ln -s"; then
2455 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2457 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2464 if test -n "$DJGPP"; then
2473 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2475 'not found') osvers="$4"."$3" ;;
2476 '<3240'|'<>3240') osvers=3.2.0 ;;
2477 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2478 '=3250'|'>3250') osvers=3.2.5 ;;
2482 bsd386) osname=bsd386
2485 cygwin*) osname=cygwin
2488 *dc.osx) osname=dcosx
2494 domainos) osname=apollo
2500 dynixptx*) osname=dynixptx
2501 osvers=`echo "$4"|sed 's/^v//'`
2503 freebsd) osname=freebsd
2505 genix) osname=genix ;;
2507 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2523 netbsd*) osname=netbsd
2526 news-os) osvers="$3"
2528 4*) osname=newsos4 ;;
2532 next*) osname=next ;;
2533 nonstop-ux) osname=nonstopux ;;
2534 POSIX-BC | posix-bc ) osname=posix-bc
2537 powerux | power_ux | powermax_os | powermaxos | \
2538 powerunix | power_unix) osname=powerux
2544 solaris) osname=solaris
2546 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2553 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2557 titanos) osname=titanos
2566 ultrix) osname=ultrix
2569 osf1|mls+) case "$5" in
2572 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2575 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2578 hp*) osname=hp_osf1 ;;
2579 mips) osname=mips_osf1 ;;
2582 unixware) osname=svr5
2588 $2) case "$osname" in
2592 : svr4.x or possibly later
2602 if test -f /stand/boot ; then
2603 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2604 if test -n "$INITPROG" -a -f "$INITPROG"; then
2605 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2606 if test -n "$isesix"; then
2614 *) if test -f /etc/systemid; then
2616 set `echo $3 | $sed 's/\./ /g'` $4
2617 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2619 elif $test -f $src/hints/sco_$1_$2.sh; then
2621 elif $test -f $src/hints/sco_$1.sh; then
2626 '') : Still unknown. Probably a generic Sys V.
2635 *) case "$osname" in
2636 '') : Still unknown. Probably a generic BSD.
2644 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2645 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2646 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2649 $rm -f UU/kernel.what
2650 elif test -d c:/.; then
2657 : Now look for a hint file osname_osvers, unless one has been
2658 : specified already.
2661 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2662 : Also try without trailing minor version numbers.
2663 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2664 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2665 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2666 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2669 *) case "$osvers" in
2672 *) if $test -f $src/hints/$file.sh ; then
2674 elif $test -f $src/hints/$xfile.sh ; then
2676 elif $test -f $src/hints/$xxfile.sh ; then
2678 elif $test -f $src/hints/$xxxfile.sh ; then
2680 elif $test -f $src/hints/$xxxxfile.sh ; then
2682 elif $test -f "$src/hints/${osname}.sh" ; then
2691 if $test -f Policy.sh ; then
2694 none) dflt="Policy" ;;
2695 *) dflt="Policy $dflt" ;;
2700 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2704 if $test -f Policy.sh ; then
2707 There's also a Policy hint file available, which should make the
2708 site-specific (policy) questions easier to answer.
2715 You may give one or more space-separated answers, or "none" if appropriate.
2716 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2717 is a good thing. DO NOT give a wrong version or a wrong OS.
2721 rp="Which of these apply, if any?"
2724 for file in $tans; do
2725 if $test X$file = XPolicy -a -f Policy.sh; then
2727 $cat Policy.sh >> UU/config.sh
2728 elif $test -f $src/hints/$file.sh; then
2729 . $src/hints/$file.sh
2730 $cat $src/hints/$file.sh >> UU/config.sh
2731 elif $test X$tans = X -o X$tans = Xnone ; then
2734 : Give one chance to correct a possible typo.
2735 echo "$file.sh does not exist"
2737 rp="hint to use instead?"
2739 for file in $ans; do
2740 if $test -f "$src/hints/$file.sh"; then
2741 . $src/hints/$file.sh
2742 $cat $src/hints/$file.sh >> UU/config.sh
2743 elif $test X$ans = X -o X$ans = Xnone ; then
2746 echo "$file.sh does not exist -- ignored."
2753 : Remember our hint file for later.
2754 if $test -f "$src/hints/$file.sh" ; then
2764 echo "Fetching default answers from $config_sh..." >&4
2768 cp $config_sh config.sh 2>/dev/null
2778 test "$override" && . ./optdef.sh
2780 : Restore computed paths
2781 for file in $loclist $trylist; do
2782 eval $file="\$_$file"
2787 Configure uses the operating system name and version to set some defaults.
2788 The default value is probably right if the name rings a bell. Otherwise,
2789 since spelling matters for me, either accept the default or answer "none"
2796 ''|' '|none) dflt=none ;;
2797 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2800 *) dflt="$osname" ;;
2802 rp="Operating system name?"
2806 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2812 ''|' '|none) dflt=none ;;
2813 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2814 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2816 ''|' ') dflt=none ;;
2821 *) dflt="$osvers" ;;
2823 rp="Operating system version?"
2833 : who configured the system
2834 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2835 cf_by=`(logname) 2>/dev/null`
2838 cf_by=`(whoami) 2>/dev/null`
2840 "") cf_by=unknown ;;
2844 : set up the script used to warn in case of inconsistency
2851 echo "*** WHOA THERE!!! ***" >&4
2852 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2853 rp=" Keep the $hint value?"
2856 y) td=$was; tu=$was;;
2860 : function used to set $1 to $val
2861 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2863 $define$undef) . ./whoa; eval "$var=\$td";;
2864 $undef$define) . ./whoa; eval "$var=\$tu";;
2865 *) eval "$var=$val";;
2868 case "$usethreads" in
2869 $define|true|[yY]*) dflt='y';;
2874 Perl can be built to take advantage of threads on some systems.
2875 To do so, Configure can be run with -Dusethreads.
2877 Note that threading is a highly experimental feature, and
2878 some known race conditions still remain. If you choose to try
2879 it, be very sure to not actually deploy it for production
2880 purposes. README.threads has more details, and is required
2881 reading if you enable threads.
2883 If this doesn't make any sense to you, just accept the default '$dflt'.
2885 rp='Build a threading Perl?'
2888 y|Y) val="$define" ;;
2894 case "$usethreads" in
2898 As of 5.5.640, Perl has two different internal threading implementations,
2899 the 5.005 version (5005threads) and an interpreter-based version
2900 (ithreads) that has one interpreter per thread. Both are very
2901 experimental. This arrangement exists to help developers work out
2902 which one is better.
2904 If you're a casual user, you probably don't want interpreter-threads
2905 at this time. There doesn't yet exist a way to create threads from
2906 within Perl in this model, i.e., "use Thread;" will NOT work.
2908 : Default to ithreads unless overridden on command line or with
2911 case "$use5005threads" in
2912 $define|true|[yY]*) dflt='n';;
2914 case "$useithreads" in
2915 $undef|false|[nN]*) dflt='n';;
2917 rp='Use interpreter-based ithreads?'
2920 y|Y) val="$define" ;;
2925 : Now set use5005threads to the opposite value.
2926 case "$useithreads" in
2927 $define) val="$undef" ;;
2934 useithreads="$undef"
2935 use5005threads="$undef"
2939 case "$d_oldpthreads" in
2940 '') : Configure tests would be welcome here. For now, assume undef.
2942 *) val="$d_oldpthreads" ;;
2948 case "$usethreads" in
2949 "$define"|true|[yY]*)
2950 : Look for a hint-file generated 'call-back-unit'. If the
2951 : user has specified that a threading perl is to be built,
2952 : we may need to set or change some other defaults.
2953 if $test -f usethreads.cbu; then
2954 echo "Your platform has some specific hints for threaded builds, using them..."
2958 (Your platform doesn't have any specific hints for threaded builds.
2959 Assuming POSIX threads, then.)
2967 Perl can be built so that multiple Perl interpreters can coexist
2968 within the same Perl executable.
2971 case "$useithreads" in
2974 This multiple interpreter support is required for interpreter-based threads.
2978 *) case "$usemultiplicity" in
2979 $define|true|[yY]*) dflt='y';;
2983 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2984 rp='Build Perl for multiplicity?'
2987 y|Y) val="$define" ;;
2995 : make some quick guesses about what we are up against
2997 $echo $n "Hmm... $c"
3007 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3008 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3010 echo "Looks kind of like an OSF/1 system, but we'll see..."
3012 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3013 xxx=`./loc addbib blurfl $pth`
3014 if $test -f $xxx; then
3015 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3019 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3020 echo "Looks kind of like an extended USG system, but we'll see..."
3022 echo "Looks kind of like a USG system, but we'll see..."
3026 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3027 echo "Looks kind of like a BSD system, but we'll see..."
3031 echo "Looks kind of like a Version 7 system, but we'll see..."
3034 case "$eunicefix" in
3037 There is, however, a strange, musty smell in the air that reminds me of
3038 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3042 : it so happens the Eunice I know will not run shell scripts in Unix format
3046 echo "Congratulations. You aren't running Eunice."
3050 : Detect OS2. The p_ variable is set above in the Head.U unit.
3051 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3052 : semicolon as a patch separator
3057 I have the feeling something is not exactly right, however...don't tell me...
3058 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3059 (Or you may be running DOS with DJGPP.)
3064 if test -f /xenix; then
3065 echo "Actually, this looks more like a XENIX system..."
3070 echo "It's not Xenix..."
3075 if test -f /venix; then
3076 echo "Actually, this looks more like a VENIX system..."
3083 echo "Nor is it Venix..."
3086 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3087 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3094 rp="Use which C compiler?"
3097 : Look for a hint-file generated 'call-back-unit'. Now that the
3098 : user has specified the compiler, we may need to set or change some
3100 if $test -f cc.cbu; then
3106 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3107 $cat >gccvers.c <<EOM
3112 printf("%s\n", __VERSION__);
3114 printf("%s\n", "1");
3120 if $cc -o gccvers $ldflags gccvers.c; then
3121 gccversion=`./gccvers`
3122 case "$gccversion" in
3123 '') echo "You are not using GNU cc." ;;
3124 *) echo "You are using GNU cc $gccversion."
3130 echo "*** WHOA THERE!!! ***" >&4
3131 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3132 case "$knowitall" in
3134 echo " You'd better start hunting for one and let me know about it." >&4
3140 case "$gccversion" in
3141 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3143 case "$gccversion" in
3144 '') gccosandvers='' ;;
3145 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3146 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3148 case "$gccosandvers" in
3149 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3150 $osname$osvers) ;; # looking good
3151 $osname*) cat <<EOM >&4
3153 *** WHOA THERE!!! ***
3155 Your gcc has not been compiled for the exact release of
3156 your operating system ($gccosandvers versus $osname$osvers).
3158 In general it is a good idea to keep gcc synchronized with
3159 the operating system because otherwise serious problems
3160 may ensue when trying to compile software, like Perl.
3162 I'm trying to be optimistic here, though, and will continue.
3163 If later during the configuration and build icky compilation
3164 problems appear (headerfile conflicts being the most common
3165 manifestation), I suggest reinstalling the gcc to match
3166 your operating system release.
3170 *) gccosandvers='' ;; # failed to parse, better be silent
3178 : see how we invoke the C preprocessor
3180 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3181 cat <<'EOT' >testcpp.c
3187 if test ! -f cppstdin; then
3188 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3189 # AIX cc -E doesn't show the absolute headerfile
3190 # locations but we'll cheat by using the -M flag.
3191 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
3193 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3196 echo "Keeping your $hint cppstdin wrapper."
3199 wrapper=`pwd`/cppstdin
3203 if $test "X$cppstdin" != "X" && \
3204 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3205 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3207 echo "You used to use $cppstdin $cppminus so we'll use that again."
3209 '') echo "But let's see if we can live without a wrapper..." ;;
3211 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3212 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3214 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3217 echo "(However, $cpprun $cpplast does not work, let's see...)"
3225 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3232 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3233 $cc -E <testcpp.c >testcpp.out 2>&1; \
3234 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3235 echo "Yup, it does."
3238 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3239 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3240 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3241 echo "Yup, it does."
3244 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3245 $cc -P <testcpp.c >testcpp.out 2>&1; \
3246 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3247 echo "Yipee, that works!"
3250 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3251 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3252 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3253 echo "At long last!"
3256 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3257 $cpp <testcpp.c >testcpp.out 2>&1; \
3258 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3262 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3263 $cpp - <testcpp.c >testcpp.out 2>&1; \
3264 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3265 echo "Hooray, it works! I was beginning to wonder."
3268 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3269 $wrapper <testcpp.c >testcpp.out 2>&1; \
3270 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3276 rp="No dice. I can't find a C preprocessor. Name one:"
3280 $x_cpp <testcpp.c >testcpp.out 2>&1
3281 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3282 echo "OK, that will do." >&4
3284 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3299 echo "Perhaps can we force $cc -E using a wrapper..."
3300 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3301 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3307 echo "Nope, we'll have to live without it..."
3321 "$wrapper"|'cppstdin') ;;
3322 *) $rm -f $wrapper;;
3324 $rm -f testcpp.c testcpp.out
3326 : decide how portable to be. Allow command line overrides.
3327 case "$d_portable" in
3329 *) d_portable="$define" ;;
3332 : set up shell script to do ~ expansion
3338 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3341 if $test -f /bin/csh; then
3342 /bin/csh -f -c "glob \$1"
3347 name=\`$expr x\$1 : '..\([^/]*\)'\`
3348 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3349 if $test ! -d "\$dir"; then
3351 echo "\$me: can't locate home directory for: \$name" >&2
3356 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3372 : now set up to get a file name
3376 cat <<'EOSC' >>getfile
3392 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3393 fn=`echo $fn | sed 's/(.*)//'`
3399 loc_file=`expr $fn : '.*:\(.*\)'`
3400 fn=`expr $fn : '\(.*\):.*'`
3408 */*) fullpath=true;;
3417 *e*) exp_file=true;;
3420 *p*) nopath_ok=true;;
3425 *d*) type='Directory';;
3426 *l*) type='Locate';;
3431 Locate) what='File';;
3436 case "$d_portable" in
3444 while test "$type"; do
3449 true) rp="$rp (~name ok)";;
3452 if test -f UU/getfile.ok && \
3453 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3472 value=`UU/filexp $ans`
3475 if test "$ans" != "$value"; then
3476 echo "(That expands to $value on this system.)"
3490 /*) value="$ansexp" ;;
3491 [a-zA-Z]:/*) value="$ansexp" ;;
3496 echo "I shall only accept a full path name, as in /bin/ls." >&4
3497 echo "Use a ! shell escape if you wish to check pathnames." >&4
3500 echo "Please give a full path name, starting with slash." >&4
3503 echo "Note that using ~name is ok provided it expands well." >&4
3516 for fp in $gfpth; do
3517 if test "X$fp" = X.; then
3522 if test -f "$pf"; then
3524 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3526 echo "($value is not a plain file, but that's ok.)"
3529 if test X"$type" = X; then
3536 for fp in $gfpth; do
3537 if test "X$fp" = X.; then
3542 direxp="$fp/$ansexp"
3544 if test -d "$direxp"; then
3552 if test -d "$ansexp"; then
3553 echo "(Looking for $loc_file in directory $value.)"
3554 value="$value/$loc_file"
3555 ansexp="$ansexp/$loc_file"
3557 if test -f "$ansexp"; then
3560 case "$nopath_ok" in
3561 true) case "$value" in
3563 *) echo "Assuming $value will be in people's path."
3579 if test "$fastread" = yes; then
3584 rp="$what $value doesn't exist. Use that name anyway?"
3603 test "X$gfpthkeep" != Xy && gfpth=""
3606 : What should the include directory be ?
3608 $echo $n "Hmm... $c"
3612 if $test -f /bin/mips && /bin/mips; then
3613 echo "Looks like a MIPS system..."
3614 $cat >usr.c <<'EOCP'
3615 #ifdef SYSTYPE_BSD43
3619 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3620 dflt='/bsd43/usr/include'
3624 mips_type='System V'
3626 $rm -f usr.c usr.out
3627 echo "and you're compiling with the $mips_type compiler and libraries."
3631 echo "Doesn't look like a MIPS system."
3641 case "$xxx_prompt" in
3644 rp='Where are the include files you want to use?'
3652 : Set private lib path
3655 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3660 '') dlist="$loclibpth $plibpth $glibpth";;
3661 *) dlist="$libpth";;
3664 : Now check and see which directories actually exist, avoiding duplicates
3668 if $test -d $xxx; then
3671 *) libpth="$libpth $xxx";;
3677 Some systems have incompatible or broken versions of libraries. Among
3678 the directories listed in the question below, please remove any you
3679 know not to be holding relevant libraries, and add any that are needed.
3680 Say "none" for none.
3691 rp="Directories to use for library searches?"
3698 : compute shared library extension
3701 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3711 On some systems, shared libraries may be available. Answer 'none' if
3712 you want to suppress searching of shared libraries for the remainder
3713 of this configuration.
3716 rp='What is the file extension used for shared libraries?'
3720 : Define several unixisms.
3721 : Hints files or command line option can be used to override them.
3722 : The convoluted testing is in case hints files set either the old
3725 '') case "$exe_ext" in
3727 *) _exe="$exe_ext" ;;
3732 '') case "$lib_ext" in
3739 '') case "$obj_ext" in
3746 '') case "$path_sep" in
3757 : Which makefile gets called first. This is used by make depend.
3758 case "$firstmakefile" in
3759 '') firstmakefile='makefile';;
3763 $define|true|[yY]*) dflt='y';;
3768 Perl can be built to use the SOCKS proxy protocol library. To do so,
3769 Configure must be run with -Dusesocks. If you use SOCKS you also need
3770 to use the PerlIO abstraction layer, this will be implicitly selected.
3772 If this doesn't make any sense to you, just accept the default '$dflt'.
3774 rp='Build Perl for SOCKS?'
3777 y|Y) val="$define" ;;
3784 $define|true|[yY]*) useperlio="$define";;
3787 : Looking for optional libraries
3789 echo "Checking for optional libraries..." >&4
3794 case "$libswanted" in
3795 '') libswanted='c_s';;
3798 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3804 for thisdir in $libpth $xlibpth; do
3805 test -d $thisdir && libspath="$libspath $thisdir"
3807 for thislib in $libswanted; do
3808 for thisdir in $libspath; do
3810 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3811 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3812 $test -f "$xxx" && eval $libscheck
3813 $test -f "$xxx" && libstyle=shared
3815 if test ! -f "$xxx"; then
3816 xxx=$thisdir/lib$thislib.$so
3817 $test -f "$xxx" && eval $libscheck
3818 $test -f "$xxx" && libstyle=shared
3820 if test ! -f "$xxx"; then
3821 xxx=$thisdir/lib$thislib$_a
3822 $test -f "$xxx" && eval $libscheck
3823 $test -f "$xxx" && libstyle=static
3825 if test ! -f "$xxx"; then
3826 xxx=$thisdir/$thislib$_a
3827 $test -f "$xxx" && eval $libscheck
3828 $test -f "$xxx" && libstyle=static
3830 if test ! -f "$xxx"; then
3831 xxx=$thisdir/lib${thislib}_s$_a
3832 $test -f "$xxx" && eval $libscheck
3833 $test -f "$xxx" && libstyle=static
3834 $test -f "$xxx" && thislib=${thislib}_s
3836 if test ! -f "$xxx"; then
3837 xxx=$thisdir/Slib$thislib$_a
3838 $test -f "$xxx" && eval $libscheck
3839 $test -f "$xxx" && libstyle=static
3841 if $test -f "$xxx"; then
3843 shared) echo "Found -l$thislib (shared)." ;;
3844 static) echo "Found -l$thislib." ;;
3845 *) echo "Found -l$thislib ($libstyle)." ;;
3849 *) dflt="$dflt -l$thislib"
3850 libsfound="$libsfound $xxx"
3852 libsfiles="$libsfiles $yyy"
3853 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3854 case " $libsdirs " in
3856 *) libsdirs="$libsdirs $yyy" ;;
3863 if $test ! -f "$xxx"; then
3864 echo "No -l$thislib."
3875 ' '|'') dflt='none';;
3880 In order to compile $package on your machine, a number of libraries
3881 are usually needed. Include any other special libraries here as well.
3882 Say "none" for none. The default list is almost always right.
3886 rp="What libraries to use?"
3893 : determine optimization, if desired, or use for debug flag also
3895 ' '|$undef) dflt='none';;
3897 *) dflt="$optimize";;
3901 By default, $package compiles with the -O flag to use the optimizer.
3902 Alternately, you might want to use the symbolic debugger, which uses
3903 the -g flag (on traditional Unix systems). Either flag can be
3904 specified here. To use neither flag, specify the word "none".
3907 rp="What optimizer/debugger flag should be used?"
3911 'none') optimize=" ";;
3915 : We will not override a previous value, but we might want to
3916 : augment a hint file
3918 default|recommended)
3919 case "$gccversion" in
3920 1*) dflt='-fpcc-struct-return' ;;
3923 *-g*) dflt="$dflt -DDEBUGGING";;
3925 case "$gccversion" in
3926 2*) if test -d /etc/conf/kconfig.d &&
3927 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3933 case "$gccversion" in
3937 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3938 echo 'int main(void) { return 0; }' > gcctest.c
3939 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3940 echo "Yes, it does." 2>&1
3943 echo "Leaving current flags $ccflags alone." 2>&1
3945 *) dflt="$dflt -fno-strict-aliasing" ;;
3948 echo "Nope, it doesn't, but that's ok." 2>&1
3955 case "$mips_type" in
3956 *BSD*|'') inclwanted="$locincpth $usrinc";;
3957 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3959 for thisincl in $inclwanted; do
3960 if $test -d $thisincl; then
3961 if $test x$thisincl != x$usrinc; then
3963 *" -I$thisincl "*);;
3964 *) dflt="$dflt -I$thisincl ";;
3970 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3972 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3980 *) dflt="$dflt -D$2";;
3984 set signal.h LANGUAGE_C; eval $inctest
3988 ccflags="$ccflags -DSOCKS"
3993 default|recommended) dflt="$ccflags $dflt" ;;
3994 *) dflt="$ccflags";;
4003 Your C compiler may want other flags. For this question you should include
4004 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4005 but you should NOT include libraries or ld flags like -lwhatever. If you
4006 want $package to honor its debug switch, you should include -DDEBUGGING here.
4007 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4009 To use no flags, specify the word "none".
4015 rp="Any additional cc flags?"
4022 : the following weeds options from ccflags that are of no interest to cpp
4024 case "$gccversion" in
4025 1*) cppflags="$cppflags -D__GNUC__"
4027 case "$mips_type" in
4029 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4035 echo "Let me guess what the preprocessor flags are..." >&4
4049 *) ftry="$previous $flag";;
4051 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4052 >cpp1.out 2>/dev/null && \
4053 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4054 >cpp2.out 2>/dev/null && \
4055 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4056 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4058 cppflags="$cppflags $ftry"
4068 *-*) echo "They appear to be: $cppflags";;
4070 $rm -f cpp.c cpp?.out
4074 : flags used in final linking phase
4076 '') if ./venix; then
4082 *-posix*) dflt="$dflt -posix" ;;
4085 *) dflt="$ldflags";;
4088 : Try to guess additional flags to pick up local libraries.
4089 for thislibdir in $libpth; do
4090 case " $loclibpth " in
4093 *"-L$thislibdir "*) ;;
4094 *) dflt="$dflt -L$thislibdir" ;;
4106 Your C linker may need flags. For this question you should
4107 include -L/whatever and any other flags used by the C linker, but you
4108 should NOT include libraries like -lwhatever.
4110 Make sure you include the appropriate -L/path flags if your C linker
4111 does not normally search all of the directories you specified above,
4114 To use no flags, specify the word "none".
4118 rp="Any additional ld flags (NOT including libraries)?"
4124 rmlist="$rmlist pdp11"
4128 echo "Checking your choice of C compiler and flags for coherency..." >&4
4129 $cat > try.c <<'EOF'
4131 int main() { printf("Ok\n"); exit(0); }
4133 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4135 $cat >try.msg <<'EOM'
4136 I've tried to compile and run the following simple program:
4139 $cat try.c >> try.msg
4141 $cat >> try.msg <<EOM
4148 and I got the following output:
4152 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4153 if $sh -c './try' >>try.msg 2>&1; then
4157 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4160 cat >> try.msg <<'EOQS'
4161 If $libs contains -lsfio, and sfio is mis-configured, then it
4162 sometimes (apparently) runs and exits with a 0 status, but with no
4163 output! It may have to do with sfio's use of _exit vs. exit.
4166 rp="You have a big problem. Shall I abort Configure"
4173 echo "The program compiled OK, but exited with status $?." >>try.msg
4174 rp="You have a problem. Shall I abort Configure"
4178 echo "I can't compile the test program." >>try.msg
4179 rp="You have a BIG problem. Shall I abort Configure"
4185 case "$knowitall" in
4187 echo "(The supplied flags or libraries might be incorrect.)"
4195 *) echo "Ok. Stopping Configure." >&4
4200 n) echo "OK, that should do.";;
4202 $rm -f try try.* core
4204 : define an is-a-typedef? function
4205 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4207 "") inclist="sys/types.h";;
4209 eval "varval=\$$var";
4213 for inc in $inclist; do
4214 echo "#include <$inc>" >>temp.c;
4216 echo "#ifdef $type" >> temp.c;
4217 echo "printf(\"We have $type\");" >> temp.c;
4218 echo "#endif" >> temp.c;
4219 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4220 if $contains $type temp.E >/dev/null 2>&1; then
4226 *) eval "$var=\$varval";;
4229 : define an is-a-typedef? function that prompts if the type is not available.
4230 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4232 "") inclist="sys/types.h";;
4234 eval "varval=\$$var";
4238 for inc in $inclist; do
4239 echo "#include <$inc>" >>temp.c;
4241 echo "#ifdef $type" >> temp.c;
4242 echo "printf(\"We have $type\");" >> temp.c;
4243 echo "#endif" >> temp.c;
4244 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4246 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4247 if $contains $type temp.E >/dev/null 2>&1; then
4248 echo "$type found." >&4;
4251 echo "$type NOT found." >&4;
4257 *) eval "$var=\$varval";;
4260 : define a shorthand compile call
4264 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4265 : define a shorthand compile call for compilations that should be ok.
4269 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4271 : check for lengths of integral types
4275 echo "Checking to see how big your integers are..." >&4
4276 $cat >intsize.c <<'EOCP'
4280 printf("intsize=%d;\n", (int)sizeof(int));
4281 printf("longsize=%d;\n", (int)sizeof(long));
4282 printf("shortsize=%d;\n", (int)sizeof(short));
4287 if eval $compile_ok && ./intsize > /dev/null; then
4289 echo "Your integers are $intsize bytes long."
4290 echo "Your long integers are $longsize bytes long."
4291 echo "Your short integers are $shortsize bytes long."
4295 Help! I can't compile and run the intsize test program: please enlighten me!
4296 (This is probably a misconfiguration in your system or libraries, and
4297 you really ought to fix it. Still, I'll try anyway.)
4301 rp="What is the size of an integer (in bytes)?"
4305 rp="What is the size of a long integer (in bytes)?"
4309 rp="What is the size of a short integer (in bytes)?"
4315 $rm -f intsize intsize.*
4317 : see what type lseek is declared as in the kernel
4318 rp="What is the type used for lseek's offset on this system?"
4319 set off_t lseektype long stdio.h sys/types.h
4323 echo "Checking to see how big your file offsets are..." >&4
4325 #include <sys/types.h>
4329 printf("%d\n", (int)sizeof($lseektype));
4334 if eval $compile_ok; then
4336 echo "Your file offsets are $lseeksize bytes long."
4340 echo "(I can't seem to compile the test program. Guessing...)"
4341 rp="What is the size of your file offsets (in bytes)?"
4347 : see what type file positions are declared as in the library
4348 rp="What is the type for file position used by fsetpos()?"
4349 set fpos_t fpostype long stdio.h sys/types.h
4354 *_t) zzz="$fpostype" ;;
4357 echo "Checking the size of $zzz..." >&4
4359 #include <sys/types.h>
4362 printf("%d\n", (int)sizeof($fpostype));
4367 if eval $compile_ok; then
4371 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4374 echo "Your $zzz is $fpossize bytes long."
4380 echo "(I can't compile the test program. Guessing...)" >&4
4381 rp="What is the size of your file positions (in bytes)?"
4388 # Backward compatibility (uselfs is deprecated).
4390 "$define"|true|[yY]*)
4393 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4395 uselargefiles="$define"
4399 case "$lseeksize:$fpossize" in
4402 You can have files larger than 2 gigabytes.
4405 *) case "$uselargefiles" in
4406 "$undef"|false|[nN]*) dflt='n' ;;
4411 Perl can be built to understand large files (files larger than 2 gigabytes)
4412 on some systems. To do so, Configure can be run with -Duselargefiles.
4414 If this doesn't make any sense to you, just accept the default '$dflt'.
4416 rp='Try to understand large files, if available?'
4419 y|Y) val="$define" ;;
4426 case "$uselargefiles" in
4428 : Look for a hint-file generated 'call-back-unit'. If the
4429 : user has specified that a large files perl is to be built,
4430 : we may need to set or change some other defaults.
4431 if $test -f uselargefiles.cbu; then
4432 echo "Your platform has some specific hints for large file builds, using them..."
4433 . ./uselargefiles.cbu
4435 echo "Rechecking to see how big your file offsets are..." >&4
4437 #include <sys/types.h>
4441 printf("%d\n", (int)sizeof($lseektype));
4446 if eval $compile_ok; then
4448 $echo "Your file offsets are now $lseeksize bytes long."
4452 echo "(I can't seem to compile the test program. Guessing...)"
4453 rp="What is the size of your file offsets (in bytes)?"
4458 *_t) zzz="$fpostype" ;;
4461 $echo $n "Rechecking the size of $zzz...$c" >&4
4463 #include <sys/types.h>
4466 printf("%d\n", (int)sizeof($fpostype));
4471 if eval $compile_ok; then
4476 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4479 echo " $fpossize bytes." >&4
4485 echo "(I can't compile the test program. Guessing...)" >&4
4486 rp="What is the size of your file positions (in bytes)?"
4496 case "$usemorebits" in
4497 "$define"|true|[yY]*)
4498 use64bitint="$define"
4499 uselongdouble="$define"
4500 usemorebits="$define"
4502 *) usemorebits="$undef"
4507 case "$uselonglong" in
4508 "$define"|true|[yY]*)
4511 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4513 use64bitint="$define"
4516 case "$use64bits" in
4517 "$define"|true|[yY]*)
4520 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4522 use64bitint="$define"
4525 case "$use64bitints" in
4526 "$define"|true|[yY]*)
4529 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4531 use64bitint="$define"
4534 case "$use64bitsint" in
4535 "$define"|true|[yY]*)
4538 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4540 use64bitint="$define"
4543 case "$uselonglongs" in
4544 "$define"|true|[yY]*)
4547 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4549 use64bitint="$define"
4552 case "$use64bitsall" in
4553 "$define"|true|[yY]*)
4556 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4558 use64bitall="$define"
4563 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4565 case "$use64bitall" in
4566 "$define"|true|[yY]*) use64bitint="$define" ;;
4572 You have natively 64-bit long integers.
4576 *) case "$use64bitint" in
4577 "$define"|true|[yY]*) dflt='y';;
4582 Perl can be built to take advantage of 64-bit integer types
4583 on some systems. To do so, Configure can be run with -Duse64bitint.
4584 Choosing this option will most probably introduce binary incompatibilities.
4586 If this doesn't make any sense to you, just accept the default '$dflt'.
4588 rp='Try to use 64-bit integers, if available?'
4591 [yY]*) val="$define" ;;
4599 case "$use64bitall" in
4600 "$define"|true|[yY]*) dflt='y' ;;
4601 *) case "$longsize" in
4609 You may also choose to try maximal 64-bitness. It means using as much
4610 64-bitness as possible on the platform. This in turn means even more
4611 binary incompatibilities. On the other hand, your platform may not
4612 have any more 64-bitness available than what you already have chosen.
4614 If this doesn't make any sense to you, just accept the default '$dflt'.
4616 rp='Try to use maximal 64-bit support, if available?'
4619 [yY]*) val="$define" ;;
4624 case "$use64bitall" in
4626 case "$use64bitint" in
4630 Since you have chosen a maximally 64-bit build, I'm also turning on
4631 the use of 64-bit integers.
4633 use64bitint="$define" ;;
4638 case "$use64bitint" in
4639 "$define"|true|[yY]*)
4640 : Look for a hint-file generated 'call-back-unit'. If the
4641 : user has specified that a 64-bit perl is to be built,
4642 : we may need to set or change some other defaults.
4643 if $test -f use64bitint.cbu; then
4644 echo "Your platform has some specific hints for 64-bit integers, using them..."
4648 4) case "$archname64" in
4649 '') archname64=64int ;;
4656 case "$use64bitall" in
4657 "$define"|true|[yY]*)
4658 : Look for a hint-file generated 'call-back-unit'. If the
4659 : user has specified that a maximally 64-bit perl is to be built,
4660 : we may need to set or change some other defaults.
4661 if $test -f use64bitall.cbu; then
4662 echo "Your platform has some specific hints for 64-bit builds, using them..."
4666 4) case "$archname64" in
4667 ''|64int) archname64=64all ;;
4675 echo "Checking for GNU C Library..." >&4
4676 cat >gnulibc.c <<EOM
4688 if eval $compile_ok && ./gnulibc; then
4690 echo "You are using the GNU C Library"
4693 echo "You are not using the GNU C Library"
4699 : see if nm is to be used to determine whether a symbol is defined or not
4703 case "$d_gnulibc" in
4706 echo "nm probably won't work on the GNU C Library." >&4
4712 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4714 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4715 echo "'nm' won't be sufficient on this sytem." >&4
4721 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4722 if $test $dflt -gt 20; then
4732 true|$define) dflt=y;;
4739 I can use $nm to extract the symbols from your C libraries. This
4740 is a time consuming task which may generate huge output on the disk (up
4741 to 3 megabytes) but that should make the symbols extraction faster. The
4742 alternative is to skip the 'nm' extraction part and to compile a small
4743 test program instead to determine whether each symbol is present. If
4744 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4745 this may be the best solution.
4747 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4750 rp="Shall I use $nm to extract C symbols from the libraries?"
4753 [Nn]*) usenm=false;;
4762 : nm options which may be necessary
4764 '') if $test -f /mach_boot; then
4766 elif $test -d /usr/ccs/lib; then
4767 nm_opt='-p' # Solaris (and SunOS?)
4768 elif $test -f /dgux; then
4770 elif $test -f /lib64/rld; then
4771 nm_opt='-p' # 64-bit Irix
4777 : nm options which may be necessary for shared libraries but illegal
4778 : for archive libraries. Thank you, Linux.
4779 case "$nm_so_opt" in
4780 '') case "$myuname" in
4782 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4783 nm_so_opt='--dynamic'
4792 : get list of predefined functions in a handy place
4797 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4804 *) for thislib in $libs; do
4807 : Handle C library specially below.
4810 thislib=`echo $thislib | $sed -e 's/^-l//'`
4811 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4813 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4815 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4817 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4819 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4821 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4823 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4828 libnames="$libnames $try"
4830 *) libnames="$libnames $thislib" ;;
4839 for xxx in $libpth; do
4840 $test -r $1 || set $xxx/libc.$so
4841 : The messy sed command sorts on library version numbers.
4843 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4844 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4846 s/[0-9][0-9]*/0000&/g
4847 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4850 $sort | $sed -e 's/^.* //'`
4853 $test -r $1 || set /usr/ccs/lib/libc.$so
4854 $test -r $1 || set /lib/libsys_s$_a
4860 if $test -r "$1"; then
4861 echo "Your (shared) C library seems to be in $1."
4863 elif $test -r /lib/libc && $test -r /lib/clib; then
4864 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4866 libc='/lib/clib /lib/libc'
4867 if $test -r /lib/syslib; then
4868 echo "(Your math library is in /lib/syslib.)"
4869 libc="$libc /lib/syslib"
4871 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4872 echo "Your C library seems to be in $libc, as you said before."
4873 elif $test -r $incpath/usr/lib/libc$_a; then
4874 libc=$incpath/usr/lib/libc$_a;
4875 echo "Your C library seems to be in $libc. That's fine."
4876 elif $test -r /lib/libc$_a; then
4878 echo "Your C library seems to be in $libc. You're normal."
4880 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4882 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4883 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4884 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4886 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4888 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4891 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4893 if $test -r "$tans"; then
4894 echo "Your C library seems to be in $tans, of all places."
4900 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4904 If the guess above is wrong (which it might be if you're using a strange
4905 compiler, or your machine supports multiple models), you can override it here.
4910 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4912 I can't seem to find your C library. I've looked in the following places:
4915 $sed 's/^/ /' libpath
4918 None of these seems to contain your C library. I need to get its name...
4923 rp='Where is your C library?'
4928 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4929 set X `cat libnames`
4932 case $# in 1) xxx=file; esac
4933 echo "Extracting names from the following $xxx for later perusal:" >&4
4935 $sed 's/^/ /' libnames >&4
4937 $echo $n "This may take a while...$c" >&4
4941 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4942 *) $nm $nm_opt $file 2>/dev/null;;
4947 $grep fprintf libc.tmp > libc.ptf
4948 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4949 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4951 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4953 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4955 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4957 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4959 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4961 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4963 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4965 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4967 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4969 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4971 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4973 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4975 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4976 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4978 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4980 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4982 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4984 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4986 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4988 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4990 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4992 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4994 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4996 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4998 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5000 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5002 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5004 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5006 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5009 $nm -p $* 2>/dev/null >libc.tmp
5010 $grep fprintf libc.tmp > libc.ptf
5011 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5012 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5018 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5020 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5021 for thisname in $libnames $libc; do
5022 $ar t $thisname >>libc.tmp
5024 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5026 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5027 # Repeat libc to extract forwarders to DLL entries too
5028 for thisname in $libnames $libc; do
5029 $ar tv $thisname >>libc.tmp
5030 # Revision 50 of EMX has bug in $ar.
5031 # it will not extract forwarders to DLL entries
5032 # Use emximp which will extract exactly them.
5033 emximp -o tmp.imp $thisname \
5035 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5036 < tmp.imp >>libc.tmp
5039 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5042 echo "$ar didn't seem to work right." >&4
5043 echo "Maybe this is a Cray...trying bld instead..." >&4
5044 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5046 for thisname in $libnames; do
5048 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5049 $ar t $thisname >>libc.tmp
5053 echo "That didn't work either. Giving up." >&4
5060 if $test -f /lib/syscalls.exp; then
5062 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5063 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5067 $rm -f libnames libpath
5069 : is a C symbol defined?
5072 -v) tf=libc.tmp; tc=""; tdc="";;
5073 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5074 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5077 case "$reuseval-$4" in
5079 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5085 if $contains $tlook $tf >/dev/null 2>&1;
5090 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5091 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5099 $define) tval=true;;
5105 : define an is-in-libc? function
5106 inlibc='echo " "; td=$define; tu=$undef;
5107 sym=$1; var=$2; eval "was=\$$2";
5109 case "$reuseval$was" in
5119 echo "$sym() found." >&4;
5120 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5122 echo "$sym() NOT found." >&4;
5123 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5127 $define) echo "$sym() found." >&4;;
5128 *) echo "$sym() NOT found." >&4;;
5132 : see if sqrtl exists
5137 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5140 case "$uselongdouble" in
5141 $define|true|[yY]*) dflt='y';;
5146 Perl can be built to take advantage of long doubles which
5147 (if available) may give more accuracy and range for floating point numbers.
5149 If this doesn't make any sense to you, just accept the default '$dflt'.
5151 rp='Try to use long doubles if available?'
5154 y|Y) val="$define" ;;
5160 case "$uselongdouble" in
5161 true|[yY]*) uselongdouble="$define" ;;
5164 case "$uselongdouble" in
5166 : Look for a hint-file generated 'call-back-unit'. If the
5167 : user has specified that long doubles should be used,
5168 : we may need to set or change some other defaults.
5169 if $test -f uselongdouble.cbu; then
5170 echo "Your platform has some specific hints for long doubles, using them..."
5171 . ./uselongdouble.cbu
5174 (Your platform doesn't have any specific hints for long doubles.)
5180 case "$uselongdouble:$d_sqrtl" in
5184 *** You requested the use of long doubles but you do not seem to have
5185 *** the mathematic functions for long doubles. I'm disabling the use
5186 *** of long doubles.
5189 uselongdouble=$undef
5193 : check for length of double
5195 case "$doublesize" in
5197 echo "Checking to see how big your double precision numbers are..." >&4
5198 $cat >try.c <<'EOCP'
5202 printf("%d\n", (int)sizeof(double));
5207 if eval $compile_ok; then
5209 echo "Your double is $doublesize bytes long."
5212 echo "(I can't seem to compile the test program. Guessing...)"
5213 rp="What is the size of a double precision number (in bytes)?"
5221 : check for long doubles
5223 echo "Checking to see if you have long double..." >&4
5224 echo 'int main() { long double x = 7.0; }' > try.c
5226 if eval $compile; then
5228 echo "You have long double."
5231 echo "You do not have long double."
5237 : check for length of long double
5238 case "${d_longdbl}${longdblsize}" in
5241 echo "Checking to see how big your long doubles are..." >&4
5242 $cat >try.c <<'EOCP'
5246 printf("%d\n", sizeof(long double));
5251 if eval $compile; then
5252 longdblsize=`./try$exe_ext`
5253 echo "Your long doubles are $longdblsize bytes long."
5257 echo "(I can't seem to compile the test program. Guessing...)" >&4
5258 rp="What is the size of a long double (in bytes)?"
5262 if $test "X$doublesize" = "X$longdblsize"; then
5263 echo "(That isn't any different from an ordinary double.)"
5269 : determine the architecture name
5271 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5272 tarch=`arch`"-$osname"
5273 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5274 if uname -m > tmparch 2>&1 ; then
5275 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5276 -e 's/$/'"-$osname/" tmparch`
5284 case "$myarchname" in
5287 echo "(Your architecture name used to be $myarchname.)"
5294 *) dflt="$archname";;
5296 rp='What is your architecture name'
5299 case "$usethreads" in
5301 echo "Threads selected." >&4
5303 *-thread*) echo "...and architecture name already has -thread." >&4
5305 *) archname="$archname-thread"
5306 echo "...setting architecture name to $archname." >&4
5311 case "$usemultiplicity" in
5313 echo "Multiplicity selected." >&4
5315 *-multi*) echo "...and architecture name already has -multi." >&4
5317 *) archname="$archname-multi"
5318 echo "...setting architecture name to $archname." >&4
5323 case "$use64bitint$use64bitall" in
5325 case "$archname64" in
5327 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5330 case "$use64bitint" in
5331 "$define") echo "64 bit integers selected." >&4 ;;
5333 case "$use64bitall" in
5334 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5337 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5339 *) archname="$archname-$archname64"
5340 echo "...setting architecture name to $archname." >&4
5346 case "$uselongdouble" in
5348 echo "Long doubles selected." >&4
5349 case "$longdblsize" in
5351 "...but long doubles are equal to doubles, not changing architecture name." >&4
5355 *-ld*) echo "...and architecture name already has -ld." >&4
5357 *) archname="$archname-ld"
5358 echo "...setting architecture name to $archname." >&4
5366 : determine root of directory hierarchy where package will be installed.
5369 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5377 By default, $package will be installed in $dflt/bin, manual pages
5378 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5379 installation directories. Typically this is something like /usr/local.
5380 If you wish to have binaries under /usr/bin but other parts of the
5381 installation under /usr/local, that's ok: you will be prompted
5382 separately for each of the installation directories, the prefix being
5383 only used to set the defaults.
5387 rp='Installation prefix to use?'
5395 *) oldprefix="$prefix";;
5405 $define|true) afs=true ;;
5406 $undef|false) afs=false ;;
5407 *) if test -d /afs; then
5415 echo "AFS may be running... I'll be extra cautious then..." >&4
5417 echo "AFS does not seem to be running..." >&4
5420 : determine installation prefix for where package is to be installed.
5424 Since you are running AFS, I need to distinguish the directory in which
5425 files will reside from the directory in which they are installed (and from
5426 which they are presumably copied to the former directory by occult means).
5429 case "$installprefix" in
5430 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5431 *) dflt="$installprefix";;
5436 In some special cases, particularly when building $package for distribution,
5437 it is convenient to distinguish between the directory in which files should
5438 be installed from the directory ($prefix) in which they
5439 will eventually reside. For most users, these two directories are the same.
5442 case "$installprefix" in
5444 *) dflt=$installprefix;;
5448 rp='What installation prefix should I use for installing files?'
5450 installprefix="$ans"
5451 installprefixexp="$ansexp"
5453 : set the prefixit variable, to compute a suitable default value
5454 prefixit='case "$3" in
5456 case "$oldprefix" in
5457 "") eval "$1=\"\$$2\"";;
5464 ""|" ") eval "$1=\"\$$2\"";;
5470 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5472 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5473 /*-$oldprefix/*|\~*-$oldprefix/*)
5474 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5475 *) eval "$1=\"\$$2\"";;
5480 : get the patchlevel
5482 echo "Getting the current patchlevel..." >&4
5483 if $test -r $rsrc/patchlevel.h;then
5484 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5485 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5486 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5487 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5488 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5489 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5498 $echo "(You have $package version $patchlevel subversion $subversion.)"
5501 : XXX Should be a Configure test for double-dots in filenames.
5502 version=`echo $revision $patchlevel $subversion | \
5503 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5504 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5505 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5508 version=`echo $revision $patchlevel $subversion | \
5509 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5510 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5511 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5514 : Special case the 5.005_xx maintenance series, which used 5.005
5515 : without any subversion label as a subdirectory in $sitelib
5516 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5517 api_versionstring='5.005'
5520 : determine installation style
5521 : For now, try to deduce it from prefix unless it is already set.
5522 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5523 case "$installstyle" in
5524 '') case "$prefix" in
5525 *perl*) dflt='lib';;
5526 *) dflt='lib/perl5' ;;
5529 *) dflt="$installstyle" ;;
5531 : Probably not worth prompting for this since we prompt for all
5532 : the directories individually, and the prompt would be too long and
5536 : determine where private library files go
5537 : Usual default is /usr/local/lib/perl5/$version.
5538 : Also allow things like /opt/perl/lib/$version, since
5539 : /opt/perl/lib/perl5... would be redundant.
5540 : The default "style" setting is made in installstyle.U
5541 case "$installstyle" in
5542 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5543 *) set dflt privlib lib/$version ;;
5548 There are some auxiliary files for $package that need to be put into a
5549 private library directory that is accessible by everyone.
5553 rp='Pathname where the private library files will reside?'
5556 privlibexp="$ansexp"
5557 : Change installation prefix, if necessary.
5558 if $test X"$prefix" != X"$installprefix"; then
5559 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5561 installprivlib="$privlibexp"
5564 : set the prefixup variable, to restore leading tilda escape
5565 prefixup='case "$prefixexp" in
5567 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5570 : determine where public architecture dependent libraries go
5573 : privlib default is /usr/local/lib/$package/$version
5574 : archlib default is /usr/local/lib/$package/$version/$archname
5575 : privlib may have an optional trailing /share.
5576 tdflt=`echo $privlib | $sed 's,/share$,,'`
5577 tdflt=$tdflt/$archname
5586 $spackage contains architecture-dependent library files. If you are
5587 sharing libraries in a heterogeneous environment, you might store
5588 these files in a separate location. Otherwise, you can just include
5589 them with the rest of the public library files.
5593 rp='Where do you want to put the public architecture-dependent libraries?'
5596 archlibexp="$ansexp"
5597 if $test X"$archlib" = X"$privlib"; then
5602 : Change installation prefix, if necessary.
5603 if $test X"$prefix" != X"$installprefix"; then
5604 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5606 installarchlib="$archlibexp"
5610 : Binary compatibility with 5.005 is not possible for builds
5611 : with advanced features
5612 case "$usethreads$usemultiplicity" in
5614 bincompat5005="$undef"
5615 d_bincompat5005="$undef"
5619 This version of Perl can be compiled for binary compatibility with 5.005.
5620 If you decide to do so, you will be able to continue using most of the
5621 extensions that were compiled for Perl 5.005.
5624 case "$bincompat5005$d_bincompat5005" in
5625 *"$undef"*) dflt=n ;;
5628 rp='Binary compatibility with Perl 5.005?'
5631 y*) val="$define" ;;
5636 case "$d_bincompat5005" in
5638 bincompat5005="$define"
5640 *) bincompat5005="$undef"
5641 d_bincompat5005="$undef"
5648 : see if setuid scripts can be secure
5651 Some kernels have a bug that prevents setuid #! scripts from being
5652 secure. Some sites have disabled setuid #! scripts because of this.
5654 First let's decide if your kernel supports secure setuid #! scripts.
5655 (If setuid #! scripts would be secure but have been disabled anyway,
5656 don't say that they are secure if asked.)
5661 if $test -d /dev/fd; then
5662 echo "#!$ls" >reflect
5663 chmod +x,u+s reflect
5664 ./reflect >flect 2>&1
5665 if $contains "/dev/fd" flect >/dev/null; then
5666 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5670 If you are not sure if they are secure, I can check but I'll need a
5671 username and password different from the one you are using right now.
5672 If you don't have such a username or don't want me to test, simply
5676 rp='Other username to test security of setuid scripts with?'
5681 case "$d_suidsafe" in
5682 '') echo "I'll assume setuid scripts are *not* secure." >&4
5685 echo "Well, the $hint value is *not* secure." >&4
5687 *) echo "Well, the $hint value *is* secure." >&4
5692 $rm -f reflect flect
5693 echo "#!$ls" >reflect
5694 chmod +x,u+s reflect
5697 echo '"su" will (probably) prompt you for '"$ans's password."
5698 su $ans -c './reflect >flect'
5699 if $contains "/dev/fd" flect >/dev/null; then
5700 echo "Okay, it looks like setuid scripts are secure." >&4
5703 echo "I don't think setuid scripts are secure." >&4
5708 rp='Does your kernel have *secure* setuid scripts?'
5711 [yY]*) val="$define";;
5716 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5717 echo "(That's for file descriptors, not floppy disks.)"
5723 $rm -f reflect flect
5725 : now see if they want to do setuid emulation
5728 case "$d_suidsafe" in
5731 echo "No need to emulate SUID scripts since they are secure here." >& 4
5735 Some systems have disabled setuid scripts, especially systems where
5736 setuid scripts cannot be secure. On systems where setuid scripts have
5737 been disabled, the setuid/setgid bits on scripts are currently
5738 useless. It is possible for $package to detect those bits and emulate
5739 setuid/setgid in a secure fashion. This emulation will only work if
5740 setuid scripts have been disabled in your kernel.
5744 "$define") dflt=y ;;
5747 rp="Do you want to do setuid/setgid emulation?"
5750 [yY]*) val="$define";;
5758 : determine filename position in cpp output
5760 echo "Computing filename position in cpp output for #include directives..." >&4
5761 echo '#include <stdio.h>' > foo.c
5764 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5765 $grep '^[ ]*#.*stdio\.h' | \
5766 while read cline; do
5769 while $test \$# -gt 0; do
5770 if $test -r \`echo \$1 | $tr -d '"'\`; then
5775 pos=\`expr \$pos + 1\`
5787 *) pos="${fieldn}th";;
5789 echo "Your cpp writes the filename in the $pos field of the line."
5791 : locate header file
5796 for usrincdir in $usrinc
5798 if test -f \$usrincdir/\$wanted; then
5799 echo "\$usrincdir/\$wanted"
5803 awkprg='{ print \$$fieldn }'
5804 echo "#include <\$wanted>" > foo\$\$.c
5805 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5806 $grep "^[ ]*#.*\$wanted" | \
5807 while read cline; do
5808 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5810 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5811 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5816 # status = 0: grep returned 0 lines, case statement not executed
5817 # status = 1: headerfile found
5818 # status = 2: while loop executed, no headerfile found
5822 if test \$status -eq 1; then
5829 : define an alternate in-header-list? function
5830 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5831 cont=true; xxf="echo \"<\$1> found.\" >&4";
5832 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5833 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5835 case $# in 4) instead=instead;; *) instead="at last";; esac;
5836 while $test "$cont"; do
5838 var=$2; eval "was=\$$2";
5839 if $test "$xxx" && $test -r "$xxx";
5841 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5844 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5845 set $yyy; shift; shift; yyy=$@;
5846 case $# in 0) cont="";;
5847 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5848 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5849 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5850 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5854 do set $yyy; var=$2; eval "was=\$$2";
5855 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5856 set $yyy; shift; shift; yyy=$@;
5859 : see if this is a malloc.h system
5860 set malloc.h i_malloc
5863 : see if stdlib is available
5864 set stdlib.h i_stdlib
5867 : determine which malloc to compile in
5869 case "$usemymalloc" in
5870 ''|[yY]*|true|$define) dflt='y' ;;
5873 rp="Do you wish to attempt to use the malloc that comes with $package?"
5879 mallocsrc='malloc.c'
5880 mallocobj="malloc$_o"
5881 d_mymalloc="$define"
5884 : Remove malloc from list of libraries to use
5885 echo "Removing unneeded -lmalloc from library list" >&4
5886 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5889 echo "libs = $libs" >&4
5901 : compute the return types of malloc and free
5903 $cat >malloc.c <<END
5907 #include <sys/types.h>
5921 case "$malloctype" in
5923 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5930 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5934 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5941 echo "Your system uses $freetype free(), it would seem." >&4
5945 After $package is installed, you may wish to install various
5946 add-on modules and utilities. Typically, these add-ons will
5947 be installed under $prefix with the rest
5948 of this package. However, you may wish to install such add-ons
5949 elsewhere under a different prefix.
5951 If you do not wish to put everything under a single prefix, that's
5952 ok. You will be prompted for the individual locations; this siteprefix
5953 is only used to suggest the defaults.
5955 The default should be fine for most people.
5959 rp='Installation prefix to use for add-on modules and utilities?'
5960 : XXX Here might be another good place for an installstyle setting.
5961 case "$siteprefix" in
5963 *) dflt=$siteprefix ;;
5966 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5968 case "$siteprefix" in
5972 *) oldsiteprefix="$prefix";;
5977 siteprefixexp="$ansexp"
5979 : determine where site specific libraries go.
5980 : Usual default is /usr/local/lib/perl5/site_perl/$version
5981 : The default "style" setting is made in installstyle.U
5982 : XXX No longer works with Prefixit stuff.
5983 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5985 '') case "$installstyle" in
5986 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5987 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5995 The installation process will create a directory for
5996 site-specific extensions and modules. Most users find it convenient
5997 to place all site-specific files in this directory rather than in the
5998 main distribution directory.
6002 rp='Pathname for the site-specific library files?'
6005 sitelibexp="$ansexp"
6006 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6007 : Change installation prefix, if necessary.
6008 if $test X"$prefix" != X"$installprefix"; then
6009 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6011 installsitelib="$sitelibexp"
6014 : determine where site specific architecture-dependent libraries go.
6015 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6016 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6017 : sitelib may have an optional trailing /share.
6019 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6020 dflt="$dflt/$archname"
6025 set sitearch sitearch none
6029 The installation process will also create a directory for
6030 architecture-dependent site-specific extensions and modules.
6034 rp='Pathname for the site-specific architecture-dependent library files?'
6037 sitearchexp="$ansexp"
6038 : Change installation prefix, if necessary.
6039 if $test X"$prefix" != X"$installprefix"; then
6040 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6042 installsitearch="$sitearchexp"
6047 The installation process will also create a directory for
6048 vendor-supplied add-ons. Vendors who supply perl with their system
6049 may find it convenient to place all vendor-supplied files in this
6050 directory rather than in the main distribution directory. This will
6051 ease upgrades between binary-compatible maintenance versions of perl.
6053 Of course you may also use these directories in whatever way you see
6054 fit. For example, you might use them to access modules shared over a
6055 company-wide network.
6057 The default answer should be fine for most people.
6058 This causes further questions about vendor add-ons to be skipped
6059 and no vendor-specific directories will be configured for perl.
6062 rp='Do you want to configure vendor-specific add-on directories?'
6063 case "$usevendorprefix" in
6064 define|true|[yY]*) dflt=y ;;
6065 *) : User may have set vendorprefix directly on Configure command line.
6066 case "$vendorprefix" in
6075 rp='Installation prefix to use for vendor-supplied add-ons?'
6076 case "$vendorprefix" in
6078 *) dflt=$vendorprefix ;;
6081 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6083 case "$vendorprefix" in
6087 *) oldvendorprefix="$prefix";;
6091 usevendorprefix="$define"
6093 vendorprefixexp="$ansexp"
6095 *) usevendorprefix="$undef"
6101 case "$vendorprefix" in
6102 '') d_vendorlib="$undef"
6106 *) d_vendorlib="$define"
6107 : determine where vendor-supplied modules go.
6108 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6109 case "$vendorlib" in
6111 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6112 case "$installstyle" in
6113 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6114 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6117 *) dflt="$vendorlib"
6121 rp='Pathname for the vendor-supplied library files?'
6124 vendorlibexp="$ansexp"
6127 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6128 : Change installation prefix, if necessary.
6129 if $test X"$prefix" != X"$installprefix"; then
6130 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6132 installvendorlib="$vendorlibexp"
6135 case "$vendorprefix" in
6136 '') d_vendorarch="$undef"
6140 *) d_vendorarch="$define"
6141 : determine where vendor-supplied architecture-dependent libraries go.
6142 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6143 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6144 : vendorlib may have an optional trailing /share.
6145 case "$vendorarch" in
6146 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6147 dflt="$dflt/$archname"
6149 *) dflt="$vendorarch" ;;
6152 rp='Pathname for vendor-supplied architecture-dependent files?'
6155 vendorarchexp="$ansexp"
6158 : Change installation prefix, if necessary.
6159 if $test X"$prefix" != X"$installprefix"; then
6160 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6162 installvendorarch="$vendorarchexp"
6165 : Final catch-all directories to search
6168 Lastly, you can have perl look in other directories for extensions and
6169 modules in addition to those already specified.
6170 These directories will be searched after
6174 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6175 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6177 case "$otherlibdirs" in
6178 ''|' ') dflt='none' ;;
6179 *) dflt="$otherlibdirs" ;;
6182 Enter a colon-separated set of extra paths to include in perl's @INC
6183 search path, or enter 'none' for no extra paths.
6187 rp='Colon-separated list of additional directories for perl to search?'
6190 ' '|''|none) otherlibdirs=' ' ;;
6191 *) otherlibdirs="$ans" ;;
6193 case "$otherlibdirs" in
6197 set d_perl_otherlibdirs
6200 : Cruising for prototypes
6202 echo "Checking out function prototypes..." >&4
6203 $cat >prototype.c <<'EOCP'
6204 int main(int argc, char *argv[]) {
6207 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6208 echo "Your C compiler appears to support function prototypes."
6211 echo "Your C compiler doesn't seem to understand function prototypes."
6218 case "$prototype" in
6220 *) ansi2knr='ansi2knr'
6225 This version of $package can only be compiled by a compiler that
6226 understands function prototypes. Unfortunately, your C compiler
6228 doesn't seem to understand them. Sorry about that.
6230 If GNU cc is available for your system, perhaps you could try that instead.
6232 Eventually, we hope to support building Perl with pre-ANSI compilers.
6233 If you would like to help in that effort, please contact <perlbug@perl.org>.
6235 Aborting Configure now.
6241 : determine where public executables go
6246 rp='Pathname where the public executables will reside?'
6248 if $test "X$ansexp" != "X$binexp"; then
6253 : Change installation prefix, if necessary.
6254 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6255 if $test X"$prefix" != X"$installprefix"; then
6256 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6258 installbin="$binexp"
6261 : Find perl5.005 or later.
6262 echo "Looking for a previously installed perl5.005 or later... "
6264 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6265 : Check if this perl is recent and can load a simple module
6266 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6269 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6279 '') echo "None found. That's ok.";;
6280 *) echo "Using $perl5." ;;
6283 : Determine list of previous versions to include in @INC
6284 $cat > getverlist <<EOPL
6287 \$api_versionstring = "$api_versionstring";
6288 \$version = "$version";
6289 \$stem = "$sitelib_stem";
6290 \$archname = "$archname";
6292 $cat >> getverlist <<'EOPL'
6293 # Can't have leading @ because metaconfig interprets it as a command!
6294 ;@inc_version_list=();
6295 # XXX Redo to do opendir/readdir?
6298 ;@candidates = glob("5.*");
6304 # XXX ToDo: These comparisons must be reworked when two-digit
6305 # subversions come along, so that 5.7.10 compares as greater than
6306 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6307 # widespread that we can use the built-in version vectors rather
6308 # than reinventing them here. For 5.6.0, however, we must
6309 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6310 foreach $d (@candidates) {
6311 if ($d lt $version) {
6312 if ($d ge $api_versionstring) {
6313 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6315 elsif ($d ge "5.005") {
6316 unshift(@inc_version_list, grep { -d } $d);
6320 # Skip newer version. I.e. don't look in
6321 # 5.7.0 if we're installing 5.6.1.
6325 if (@inc_version_list) {
6326 print join(' ', @inc_version_list);
6329 # Blank space to preserve value for next Configure run.
6334 case "$inc_version_list" in
6335 '') if test -x "$perl5"; then
6336 dflt=`$perl5 getverlist`
6341 $undef) dflt='none' ;;
6342 *) dflt="$inc_version_list" ;;
6345 ''|' ') dflt=none ;;
6348 5.005) case "$bincompat5005" in
6349 $define|true|[yY]*) ;;
6356 In order to ease the process of upgrading, this version of perl
6357 can be configured to use modules built and installed with earlier
6358 versions of perl that were installed under $prefix. Specify here
6359 the list of earlier versions that this version of perl should check.
6360 If Configure detected no earlier versions of perl installed under
6361 $prefix, then the list will be empty. Answer 'none' to tell perl
6362 to not search earlier versions.
6364 The default should almost always be sensible, so if you're not sure,
6365 just accept the default.
6368 rp='List of earlier versions to include in @INC?'
6371 [Nn]one|''|' ') inc_version_list=' ' ;;
6372 *) inc_version_list="$ans" ;;
6374 case "$inc_version_list" in
6376 inc_version_list_init='0';;
6377 *) inc_version_list_init=`echo $inc_version_list |
6378 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6383 : determine whether to install perl also as /usr/bin/perl
6386 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6388 Many scripts expect perl to be installed as /usr/bin/perl.
6389 I can install the perl you are about to compile also as /usr/bin/perl
6390 (in addition to $installbin/perl).
6392 case "$installusrbinperl" in
6393 "$undef"|[nN]*) dflt='n';;
6396 rp="Do you want to install perl as /usr/bin/perl?"
6399 [yY]*) val="$define";;
6405 set installusrbinperl
6408 : see if dld is available
6412 : see if dlopen exists
6419 : determine which dynamic loading, if any, to compile in
6421 dldir="ext/DynaLoader"
6434 $define) dflt='y' ;;
6437 $define) dflt='y' ;;
6439 : Does a dl_xxx.xs file exist for this operating system
6440 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6443 rp="Do you wish to use dynamic loading?"
6450 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6451 dflt="$dldir/dl_${osname}.xs"
6452 elif $test "$d_dlopen" = "$define" ; then
6453 dflt="$dldir/dl_dlopen.xs"
6454 elif $test "$i_dld" = "$define" ; then
6455 dflt="$dldir/dl_dld.xs"
6460 *) dflt="$dldir/$dlsrc"
6463 echo "The following dynamic loading files are available:"
6464 : Can not go over to $dldir because getfile has path hard-coded in.
6465 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6466 rp="Source file to use for dynamic loading"
6472 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6476 Some systems may require passing special flags to $cc -c to
6477 compile modules that will be used to create a shared library.
6478 To use no flags, say "none".
6481 case "$cccdlflags" in
6482 '') case "$gccversion" in
6483 '') case "$osname" in
6485 next) dflt='none' ;;
6486 irix*) dflt='-KPIC' ;;
6487 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6488 sunos) dflt='-pic' ;;
6492 *) case "$osname" in
6493 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6498 *) dflt="$cccdlflags" ;;
6500 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6503 none) cccdlflags=' ' ;;
6504 *) cccdlflags="$ans" ;;
6509 Some systems use ld to create libraries that can be dynamically loaded,
6510 while other systems (such as those using ELF) use $cc.
6514 '') $cat >try.c <<'EOM'
6515 /* Test for whether ELF binaries are produced */
6520 int i = open("a.out",O_RDONLY);
6523 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6524 exit(0); /* succeed (yes, it's ELF) */
6529 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6531 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6535 echo "I'll use ld to build dynamic libraries."
6544 rp="What command should be used to create dynamic libraries?"
6550 Some systems may require passing special flags to $ld to create a
6551 library that can be dynamically loaded. If your ld flags include
6552 -L/other/path options to locate libraries outside your loader's normal
6553 search path, you may need to specify those -L options here as well. To
6554 use no flags, say "none".
6557 case "$lddlflags" in
6558 '') case "$osname" in
6559 beos) dflt='-nostart' ;;
6561 case "$gccversion" in
6562 '') dflt="$dflt +vnocompatwarnings" ;;
6565 linux|irix*) dflt='-shared' ;;
6566 next) dflt='none' ;;
6567 solaris) dflt='-G' ;;
6568 sunos) dflt='-assert nodefinitions' ;;
6569 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6573 *) dflt="$lddlflags" ;;
6576 : Try to guess additional flags to pick up local libraries.
6577 : Be careful not to append to a plain 'none'
6581 for thisflag in $ldflags; do
6586 *) dflt="$dflt $thisflag" ;;
6593 ''|' ') dflt='none' ;;
6596 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6599 none) lddlflags=' ' ;;
6600 *) lddlflags="$ans" ;;
6605 Some systems may require passing special flags to $cc to indicate that
6606 the resulting executable will use dynamic linking. To use no flags,
6610 case "$ccdlflags" in
6611 '') case "$osname" in
6612 hpux) dflt='-Wl,-E' ;;
6613 linux) dflt='-rdynamic' ;;
6614 next) dflt='none' ;;
6615 sunos) dflt='none' ;;
6619 *) dflt="$ccdlflags" ;;
6621 rp="Any special flags to pass to $cc to use dynamic linking?"
6624 none) ccdlflags=' ' ;;
6625 *) ccdlflags="$ans" ;;
6639 # No dynamic loading being used, so don't bother even to prompt.
6642 *) case "$useshrplib" in
6643 '') case "$osname" in
6644 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6646 also='Building a shared libperl is required for dynamic loading to work on your system.'
6651 also='Building a shared libperl is needed for MAB support.'
6669 The perl executable is normally obtained by linking perlmain.c with
6670 libperl${_a}, any static extensions (usually just DynaLoader), and
6671 any other libraries needed on this system (such as -lm, etc.). Since
6672 your system supports dynamic loading, it is probably possible to build
6673 a shared libperl.$so. If you will have more than one executable linked
6674 to libperl.$so, this will significantly reduce the size of each
6675 executable, but it may have a noticeable affect on performance. The
6676 default is probably sensible for your system.
6680 rp="Build a shared libperl.$so (y/n)"
6684 useshrplib='true' ;;
6685 *) useshrplib='false' ;;
6690 case "$useshrplib" in
6694 # Figure out a good name for libperl.so. Since it gets stored in
6695 # a version-specific architecture-dependent library, the version
6696 # number isn't really that important, except for making cc/ld happy.
6698 # A name such as libperl.so.3.1
6699 majmin="libperl.$so.$patchlevel.$subversion"
6700 # A name such as libperl.so.301
6701 majonly=`echo $patchlevel $subversion |
6702 $awk '{printf "%d%02d", $1, $2}'`
6703 majonly=libperl.$so.$majonly
6704 # I'd prefer to keep the os-specific stuff here to a minimum, and
6705 # rely on figuring it out from the naming of libc.
6706 case "${osname}${osvers}" in
6709 # XXX How handle the --version stuff for MAB?
6711 linux*) # ld won't link with a bare -lperl otherwise.
6714 cygwin*) # include version
6715 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6717 *) # Try to guess based on whether libc has major.minor.
6719 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6720 *libc.$so.[0-9]*) dflt=$majonly ;;
6721 *) dflt=libperl.$so ;;
6731 I need to select a good name for the shared libperl. If your system uses
6732 library names with major and minor numbers, then you might want something
6733 like $majmin. Alternatively, if your system uses a single version
6734 number for shared libraries, then you might want to use $majonly.
6735 Or, your system might be quite happy with a simple libperl.$so.
6737 Since the shared libperl will get installed into a version-specific
6738 architecture-dependent directory, the version number of the shared perl
6739 library probably isn't important, so the default should be o.k.
6742 rp='What name do you want to give to the shared libperl?'
6745 echo "Ok, I'll use $libperl"
6748 libperl="libperl${_a}"
6752 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6756 WARNING: Use of the shrpdir variable for the installation location of
6757 the shared $libperl is not supported. It was never documented and
6758 will not work in this version. Let me (perlbug@perl.org)
6759 know of any problems this may cause.
6765 But your current setting of $shrpdir is
6766 the default anyway, so it's harmless.
6771 Further, your current attempted setting of $shrpdir
6772 conflicts with the value of $archlibexp/CORE
6773 that installperl will use.
6780 # How will the perl executable find the installed shared $libperl?
6781 # Add $xxx to ccdlflags.
6782 # If we can't figure out a command-line option, use $shrpenv to
6783 # set env LD_RUN_PATH. The main perl makefile uses this.
6784 shrpdir=$archlibexp/CORE
6787 if "$useshrplib"; then
6790 # We'll set it in Makefile.SH...
6796 xxx="-Wl,-R$shrpdir"
6798 linux|irix*|dec_osf)
6799 xxx="-Wl,-rpath,$shrpdir"
6802 # next doesn't like the default...
6805 # beos doesn't like the default, either.
6808 # hpux doesn't like the default, either.
6809 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6812 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6818 # Only add $xxx if it isn't already in ccdlflags.
6819 case " $ccdlflags " in
6821 *) ccdlflags="$ccdlflags $xxx"
6824 Adding $xxx to the flags
6825 passed to $ld so that the perl executable will find the
6826 installed shared $libperl.
6834 # Fix ccdlflags in AIX for building external extensions.
6835 # (For building Perl itself bare -bE:perl.exp is needed,
6836 # Makefile.SH takes care of this.)
6838 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6840 # Respect a hint or command-line value.
6842 '') shrpenv="$tmp_shrpenv" ;;
6844 case "$ldlibpthname" in
6845 '') ldlibpthname=LD_LIBRARY_PATH ;;
6846 none) ldlibpthname='' ;;
6849 : determine where manual pages are on this system
6853 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6854 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6855 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6856 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6857 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6858 sysman=`./loc . /usr/man/man1 $syspath`
6861 if $test -d "$sysman"; then
6862 echo "System manual is in $sysman." >&4
6864 echo "Could not find manual pages in source form." >&4
6867 : determine where manual pages go
6868 set man1dir man1dir none
6872 $spackage has manual pages available in source form.
6876 echo "However, you don't have nroff, so they're probably useless to you."
6878 '') man1dir="none";;
6881 echo "If you don't want the manual sources installed, answer 'none'."
6886 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6887 lookpath="$lookpath $prefixexp/man/p_man/man1"
6888 lookpath="$lookpath $prefixexp/man/u_man/man1"
6889 lookpath="$lookpath $prefixexp/man/man.1"
6891 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6892 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6902 rp="Where do the main $spackage manual pages (source) go?"
6904 if $test "X$man1direxp" != "X$ansexp"; then
6908 man1direxp="$ansexp"
6914 : Change installation prefix, if necessary.
6915 if $test X"$prefix" != X"$installprefix"; then
6916 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6918 installman1dir="$man1direxp"
6921 : What suffix to use on installed man pages
6928 rp="What suffix should be used for the main $spackage man pages?"
6930 '') case "$man1dir" in
6944 *) dflt="$man1ext";;
6951 : see if we can have long filenames
6953 first=123456789abcdef
6955 if (echo hi >$first) 2>/dev/null; then
6956 if $test -f 123456789abcde; then
6957 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6960 echo 'You can have filenames longer than 14 characters.'>&4
6965 You can't have filenames longer than 14 chars.
6966 You can't even think about them!
6972 $rm -rf 123456789abcde*
6974 : determine where library module manual pages go
6975 set man3dir man3dir none
6979 $spackage has manual pages for many of the library modules.
6985 However, you don't have nroff, so they're probably useless to you.
6988 '') man3dir="none";;
6992 case "$d_flexfnam" in
6995 However, your system can't handle the long file names like File::Basename.3.
6998 '') man3dir="none";;
7002 echo "If you don't want the manual sources installed, answer 'none'."
7003 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7005 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7006 if $test -d "$privlib/man/man3"; then
7009 WARNING: Previous versions of perl installed man3 pages into
7010 $privlib/man/man3. This version will suggest a
7011 new default of $dflt.
7015 rp='Do you wish to preserve the old behavior?(y/n)'
7018 y*) dflt="$privlib/man/man3" ;;
7023 *) dflt="$man3dir" ;;
7030 rp="Where do the $package library man pages (source) go?"
7033 man3direxp="$ansexp"
7039 : Change installation prefix, if necessary.
7040 if $test X"$prefix" != X"$installprefix"; then
7041 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7043 installman3dir="$man3direxp"
7046 : What suffix to use on installed man pages
7052 rp="What suffix should be used for the $package library man pages?"
7054 '') case "$man3dir" in
7068 *) dflt="$man3ext";;
7075 : see if we have to deal with yellow pages, now NIS.
7076 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7077 if $test -f /usr/etc/nibindd; then
7079 echo "I'm fairly confident you're on a NeXT."
7081 rp='Do you get the hosts file via NetInfo?'
7090 y*) hostcat='nidump hosts .';;
7091 *) case "$hostcat" in
7092 nidump*) hostcat='';;
7102 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7110 rp='Are you getting the hosts file via yellow pages?'
7113 y*) hostcat='ypcat hosts';;
7114 *) hostcat='cat /etc/hosts';;
7120 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7123 '') test -f /etc/group && groupcat='cat /etc/group';;
7126 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7129 : now get the host name
7131 echo "Figuring out host name..." >&4
7132 case "$myhostname" in
7134 echo 'Maybe "hostname" will work...'
7135 if tans=`sh -c hostname 2>&1` ; then
7143 if $test "$cont"; then
7145 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7146 if tans=`cat /etc/systemid 2>&1` ; then
7148 phostname='cat /etc/systemid'
7149 echo "Whadyaknow. Xenix always was a bit strange..."
7152 elif $test -r /etc/systemid; then
7153 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7156 if $test "$cont"; then
7157 echo 'No, maybe "uuname -l" will work...'
7158 if tans=`sh -c 'uuname -l' 2>&1` ; then
7160 phostname='uuname -l'
7162 echo 'Strange. Maybe "uname -n" will work...'
7163 if tans=`sh -c 'uname -n' 2>&1` ; then
7165 phostname='uname -n'
7167 echo 'Oh well, maybe I can mine it out of whoami.h...'
7168 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7169 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7170 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7172 case "$myhostname" in
7173 '') echo "Does this machine have an identity crisis or something?"
7176 echo "Well, you said $myhostname before..."
7177 phostname='echo $myhostname';;
7183 : you do not want to know about this
7188 if $test "$myhostname" ; then
7190 rp='Your host name appears to be "'$myhostname'".'" Right?"
7198 : bad guess or no guess
7199 while $test "X$myhostname" = X ; do
7201 rp="Please type the (one word) name of your host:"
7206 : translate upper to lower if necessary
7207 case "$myhostname" in
7209 echo "(Normalizing case in your host name)"
7210 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7214 case "$myhostname" in
7216 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7217 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7218 echo "(Trimming domain name from host name--host name is now $myhostname)"
7220 *) case "$mydomain" in
7223 test "X$hostcat" = "Xypcat hosts" &&
7224 ypmatch "$myhostname" hosts 2>/dev/null |\
7225 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7228 test "X$hostcat" != "X" &&
7229 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7230 /[ ]$myhostname[ . ]/p" > hosts
7233 if $test -f hosts; then
7234 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7235 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7236 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7237 hosts | $sort | $uniq | \
7238 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7239 case `$echo X$dflt` in
7240 X*\ *) echo "(Several hosts in the database matched hostname)"
7243 X.) echo "(You do not have fully-qualified names in the hosts database)"
7247 echo "(I cannot locate a hosts database anywhere)"
7252 tans=`./loc resolv.conf X /etc /usr/etc`
7253 if $test -f "$tans"; then
7254 echo "(Attempting domain name extraction from $tans)"
7255 dflt=.`$sed -n -e 's/ / /g' \
7256 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7257 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7259 .) dflt=.`$sed -n -e 's/ / /g' \
7260 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7261 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7268 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7269 dflt=.`sh -c domainname 2>/dev/null`
7272 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7277 .) echo "(Lost all hope -- silly guess then)"
7283 *) dflt="$mydomain";;
7287 rp="What is your domain name?"
7297 : translate upper to lower if necessary
7300 echo "(Normalizing case in your domain name)"
7301 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7305 : a little sanity check here
7306 case "$phostname" in
7309 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7310 $myhostname$mydomain|$myhostname) ;;
7312 case "$phostname" in
7314 echo "(That doesn't agree with your whoami.h file, by the way.)"
7317 echo "(That doesn't agree with your $phostname command, by the way.)"
7327 I need to get your e-mail address in Internet format if possible, i.e.
7328 something like user@host.domain. Please answer accurately since I have
7329 no easy means to double check it. The default value provided below
7330 is most probably close to reality but may not be valid from outside
7331 your organization...
7335 while test "$cont"; do
7337 '') dflt="$cf_by@$myhostname$mydomain";;
7338 *) dflt="$cf_email";;
7340 rp='What is your e-mail address?'
7346 rp='Address does not look like an Internet one. Use it anyway?'
7362 If you or somebody else will be maintaining perl at your site, please
7363 fill in the correct e-mail address here so that they may be contacted
7364 if necessary. Currently, the "perlbug" program included with perl
7365 will send mail to this address in addition to perlbug@perl.org. You may
7366 enter "none" for no administrator.
7369 case "$perladmin" in
7370 '') dflt="$cf_email";;
7371 *) dflt="$perladmin";;
7373 rp='Perl administrator e-mail address'
7377 : determine whether to only install version-specific parts.
7380 Do you want to install only the version-specific parts of the perl
7381 distribution? Usually you do *not* want to do this.
7383 case "$versiononly" in
7384 "$define"|[Yy]*|true) dflt='y' ;;
7387 rp="Do you want to install only the version-specific parts of perl?"
7390 [yY]*) val="$define";;
7396 : figure out how to guarantee perl startup
7397 case "$startperl" in
7399 case "$sharpbang" in
7403 I can use the #! construct to start perl on your system. This will
7404 make startup of perl scripts faster, but may cause problems if you
7405 want to share those scripts and perl is not in a standard place
7406 ($binexp/perl) on all your platforms. The alternative is to force
7407 a shell by starting the script with a single ':' character.
7410 case "$versiononly" in
7411 "$define") dflt="$binexp/perl$version";;
7412 *) dflt="$binexp/perl";;
7414 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7417 none) startperl=": # use perl";;
7418 *) startperl="#!$ans"
7419 if $test 30 -lt `echo "$ans" | wc -c`; then
7422 WARNING: Some systems limit the #! command to 32 characters.
7423 If you experience difficulty running Perl scripts with #!, try
7424 installing Perl in a directory with a shorter pathname.
7430 *) startperl=": # use perl"
7435 echo "I'll use $startperl to start perl scripts."
7437 : figure best path for perl in scripts
7440 perlpath="$binexp/perl"
7441 case "$startperl" in
7446 I will use the "eval 'exec'" idiom to start Perl on your system.
7447 I can use the full path of your Perl binary for this purpose, but
7448 doing so may cause problems if you want to share those scripts and
7449 Perl is not always in a standard place ($binexp/perl).
7453 rp="What path shall I use in \"eval 'exec'\"?"
7460 case "$startperl" in
7462 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7465 : determine where public executable scripts go
7466 set scriptdir scriptdir
7468 case "$scriptdir" in
7471 : guess some guesses
7472 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7473 $test -d /usr/share/bin && dflt=/usr/share/bin
7474 $test -d /usr/local/script && dflt=/usr/local/script
7475 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7476 $test -d $prefixexp/script && dflt=$prefixexp/script
7480 *) dflt="$scriptdir"
7485 Some installations have a separate directory just for executable scripts so
7486 that they can mount it across multiple architectures but keep the scripts in
7487 one spot. You might, for example, have a subdirectory of /usr/share for this.
7488 Or you might just lump your scripts in with all your other executables.
7492 rp='Where do you keep publicly executable scripts?'
7494 if $test "X$ansexp" != "X$scriptdirexp"; then
7498 scriptdirexp="$ansexp"
7499 : Change installation prefix, if necessary.
7500 if $test X"$prefix" != X"$installprefix"; then
7501 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7503 installscript="$scriptdirexp"
7506 : determine where add-on public executables go
7508 '') dflt=$siteprefix/bin ;;
7512 rp='Pathname where the add-on public executables should be installed?'
7515 sitebinexp="$ansexp"
7516 : Change installation prefix, if necessary.
7517 if $test X"$prefix" != X"$installprefix"; then
7518 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7520 installsitebin="$sitebinexp"
7523 case "$useperlio" in
7524 $define|true|[yY]*) dflt='y';;
7529 Previous version of $package used the standard IO mechanisms as
7530 defined in <stdio.h>. Versions 5.003_02 and later of perl allow
7531 alternate IO mechanisms via the PerlIO abstraction layer, but the
7532 stdio mechanism is still the default. This abstraction layer can
7533 use AT&T's sfio (if you already have sfio installed) or regular stdio.
7534 Using PerlIO with sfio may cause problems with some extension modules.
7536 If this doesn't make any sense to you, just accept the default '$dflt'.
7538 rp='Use the experimental PerlIO abstraction layer?'
7545 echo "Ok, doing things the stdio way."
7554 case "$useperlio" in
7555 $define|true|[yY]*) ;;
7558 You are using the SOCKS proxy protocol library which means that you
7559 should also use the PerlIO layer. You may be headed for trouble.
7568 case "$vendorprefix" in
7569 '') d_vendorbin="$undef"
7573 *) d_vendorbin="$define"
7574 : determine where vendor-supplied executables go.
7575 case "$vendorbin" in
7576 '') dflt=$vendorprefix/bin ;;
7577 *) dflt="$vendorbin" ;;
7580 rp='Pathname for the vendor-supplied executables directory?'
7583 vendorbinexp="$ansexp"
7586 : Change installation prefix, if necessary.
7587 if $test X"$prefix" != X"$installprefix"; then
7588 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7590 installvendorbin="$vendorbinexp"
7593 : see if qgcvt exists
7599 if $test X"$d_longdbl" = X"$define"; then
7601 echo "Checking how to print long doubles..." >&4
7603 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7604 $cat >try.c <<'EOCP'
7605 #include <sys/types.h>
7609 printf("%.3f\n", d);
7613 if eval $compile; then
7617 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7618 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7619 echo "We will use %f."
7625 if $test X"$sPRIfldbl" = X; then
7626 $cat >try.c <<'EOCP'
7627 #include <sys/types.h>
7630 long double d = 123.456;
7631 printf("%.3llf\n", d);
7635 if eval $compile; then
7639 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7640 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7641 echo "We will use %llf."
7647 if $test X"$sPRIfldbl" = X; then
7648 $cat >try.c <<'EOCP'
7649 #include <sys/types.h>
7652 long double d = 123.456;
7653 printf("%.3Lf\n", d);
7657 if eval $compile; then
7661 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7662 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7663 echo "We will use %Lf."
7669 if $test X"$sPRIfldbl" = X; then
7670 $cat >try.c <<'EOCP'
7671 #include <sys/types.h>
7674 long double d = 123.456;
7675 printf("%.3lf\n", d);
7679 if eval $compile; then
7683 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7684 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7685 echo "We will use %lf."
7691 if $test X"$sPRIfldbl" = X; then
7692 echo "Cannot figure out how to print long doubles." >&4
7694 sSCNfldbl=$sPRIfldbl # expect consistency
7701 case "$sPRIfldbl" in
7702 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7703 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7704 d_SCNfldbl="$undef";
7706 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7707 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7708 d_SCNfldbl="$define";
7712 : Check how to convert floats to strings.
7714 echo "Checking for an efficient way to convert floats to strings."
7716 case "$uselongdouble" in
7717 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7719 case "$d_longdbl" in
7720 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7722 case "$d_PRIgldbl" in
7723 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7727 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7728 char *myname = "gconvert";
7731 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7732 char *myname = "gcvt";
7735 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7736 char *myname = "qgcvt";
7737 #define DOUBLETYPE long double
7740 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7741 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7743 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7745 char *myname = "sprintf";
7749 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7750 #define DOUBLETYPE long double
7752 #define DOUBLETYPE double
7758 #define I_STDLIB $i_stdlib
7764 checkit(expect, got)
7768 if (strcmp(expect, got)) {
7769 printf("%s oddity: Expected %s, got %s\n",
7770 myname, expect, got);
7780 /* This must be 1st test on (which?) platform */
7781 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7782 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7783 checkit("0.1", buf);
7785 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7788 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7789 checkit("1.1", buf);
7791 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7792 checkit("1.01", buf);
7794 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7795 checkit("1.001", buf);
7797 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7798 checkit("1.0001", buf);
7800 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7801 checkit("1.00001", buf);
7803 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7804 checkit("1.000001", buf);
7806 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7809 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7812 /* Some Linux gcvt's give 1.e+5 here. */
7813 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7814 checkit("100000", buf);
7816 /* Some Linux gcvt's give -1.e+5 here. */
7817 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7818 checkit("-100000", buf);
7820 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7821 checkit("123.456", buf);
7826 case "$d_Gconvert" in
7827 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7828 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7829 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7830 *) xxx_list='gconvert gcvt sprintf' ;;
7833 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7834 "$define$define$define")
7835 # for long doubles prefer first qgcvt, then sprintf
7836 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7837 xxx_list="sprintf $xxx_list"
7839 "$define") xxx_list="qgcvt $xxx_list" ;;
7844 for xxx_convert in $xxx_list; do
7845 echo "Trying $xxx_convert..."
7847 set try -DTRY_$xxx_convert
7848 if eval $compile; then
7849 echo "$xxx_convert() found." >&4
7851 echo "I'll use $xxx_convert to convert floats into a string." >&4
7854 echo "...But $xxx_convert didn't work as I expected."
7857 echo "$xxx_convert NOT found." >&4
7861 case "$xxx_convert" in
7862 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7863 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7864 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7865 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7866 "$define$define$define")
7867 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7868 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7873 : see if _fwalk exists
7877 : Initialize h_fcntl
7880 : Initialize h_sysfile
7883 : access call always available on UNIX
7887 : locate the flags for 'access()'
7891 $cat >access.c <<'EOCP'
7892 #include <sys/types.h>
7897 #include <sys/file.h>
7906 : check sys/file.h first, no particular reason here
7907 if $test `./findhdr sys/file.h` && \
7908 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7910 echo "<sys/file.h> defines the *_OK access constants." >&4
7911 elif $test `./findhdr fcntl.h` && \
7912 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7914 echo "<fcntl.h> defines the *_OK access constants." >&4
7915 elif $test `./findhdr unistd.h` && \
7916 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7917 echo "<unistd.h> defines the *_OK access constants." >&4
7919 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7925 : see if accessx exists
7926 set accessx d_accessx
7929 : see if alarm exists
7933 : see if atolf exists
7937 : see if atoll exists
7941 : Look for GNU-cc style attribute checking
7943 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7944 $cat >attrib.c <<'EOCP'
7946 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7948 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7949 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7950 echo "Your C compiler doesn't fully support __attribute__."
7953 echo "Your C compiler supports __attribute__."
7957 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7964 : see if bcmp exists
7968 : see if bcopy exists
7972 : see if this is a unistd.h system
7973 set unistd.h i_unistd
7976 : see if getpgrp exists
7977 set getpgrp d_getpgrp
7980 case "$d_getpgrp" in
7983 echo "Checking to see which flavor of getpgrp is in use..."
7986 #include <sys/types.h>
7988 # include <unistd.h>
7992 if (getuid() == 0) {
7993 printf("(I see you are running Configure as super-user...)\n");
7997 if (getpgrp(1) == 0)
8006 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8007 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8009 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8010 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8013 echo "I can't seem to compile and run the test program."
8015 xxx="a USG one, i.e. you use getpgrp()."
8017 # SVR4 systems can appear rather BSD-ish.
8020 xxx="a BSD one, i.e. you use getpgrp(pid)."
8024 xxx="probably a USG one, i.e. you use getpgrp()."
8029 echo "Assuming your getpgrp is $xxx" >&4
8038 : see if setpgrp exists
8039 set setpgrp d_setpgrp
8042 case "$d_setpgrp" in
8045 echo "Checking to see which flavor of setpgrp is in use..."
8048 #include <sys/types.h>
8050 # include <unistd.h>
8054 if (getuid() == 0) {
8055 printf("(I see you are running Configure as super-user...)\n");
8059 if (-1 == setpgrp(1, 1))
8062 if (setpgrp() != -1)
8068 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8069 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8071 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8072 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8075 echo "(I can't seem to compile and run the test program.)"
8077 xxx="a USG one, i.e. you use setpgrp()."
8079 # SVR4 systems can appear rather BSD-ish.
8082 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8086 xxx="probably a USG one, i.e. you use setpgrp()."
8091 echo "Assuming your setpgrp is $xxx" >&4
8099 : see if bzero exists
8103 : see if signal is declared as pointer to function returning int or void
8105 xxx=`./findhdr signal.h`
8106 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8107 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8108 echo "You have int (*signal())() instead of void." >&4
8110 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8111 echo "You have void (*signal())()." >&4
8113 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8114 echo "You have int (*signal())() instead of void." >&4
8116 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8117 echo "You have void (*signal())()." >&4
8120 case "$d_voidsig" in
8122 echo "I can't determine whether signal handler returns void or int..." >&4
8124 rp="What type does your signal handler return?"
8131 echo "As you already told me, signal handler returns void." >&4
8134 *) echo "As you already told me, signal handler returns int." >&4
8141 case "$d_voidsig" in
8142 "$define") signal_t="void";;
8147 : check for ability to cast large floats to 32-bit ints.
8149 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8150 if $test "$intsize" -ge 4; then
8157 #include <sys/types.h>
8159 $signal_t blech(s) int s; { exit(3); }
8166 signal(SIGFPE, blech);
8168 /* Don't let compiler optimize the test away. Store the number
8169 in a writable string for gcc to pass to sscanf under HP/UX.
8171 sprintf(str, "2147483647");
8172 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8176 /* x86 processors will probably give 0x8000 0000, which is a
8177 sign change. We don't want that. We want to mimic SPARC
8178 behavior here, which is to preserve the sign and give
8181 if (i32 != ($xxx) f)
8187 if eval $compile_ok; then
8191 echo "(I can't seem to compile the test program--assuming it can't)"
8199 echo "Nope, it can't."
8206 : check for ability to cast negative floats to unsigned
8208 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8211 #include <sys/types.h>
8213 $signal_t blech(s) int s; { exit(7); }
8214 $signal_t blech_in_list(s) int s; { exit(4); }
8215 unsigned long dummy_long(p) unsigned long p; { return p; }
8216 unsigned int dummy_int(p) unsigned int p; { return p; }
8217 unsigned short dummy_short(p) unsigned short p; { return p; }
8221 unsigned long along;
8223 unsigned short ashort;
8227 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8228 a direct f = -123. assignment. gcc-2.8.0 reportedly
8229 optimized the whole file away
8231 /* Store the number in a writable string for gcc to pass to
8234 sprintf(str, "-123");
8235 sscanf(str, "%lf", &f); /* f = -123.; */
8237 signal(SIGFPE, blech);
8238 along = (unsigned long)f;
8239 aint = (unsigned int)f;
8240 ashort = (unsigned short)f;
8241 if (along != (unsigned long)-123)
8243 if (aint != (unsigned int)-123)
8245 if (ashort != (unsigned short)-123)
8247 sprintf(str, "1073741824.");
8248 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8251 along = (unsigned long)f;
8252 if (along != 0x80000000)
8256 along = (unsigned long)f;
8257 if (along != 0x7fffffff)
8261 along = (unsigned long)f;
8262 if (along != 0x80000001)
8266 signal(SIGFPE, blech_in_list);
8267 sprintf(str, "123.");
8268 sscanf(str, "%lf", &f); /* f = 123.; */
8269 along = dummy_long((unsigned long)f);
8270 aint = dummy_int((unsigned int)f);
8271 ashort = dummy_short((unsigned short)f);
8272 if (along != (unsigned long)123)
8274 if (aint != (unsigned int)123)
8276 if (ashort != (unsigned short)123)
8283 if eval $compile_ok; then
8287 echo "(I can't seem to compile the test program--assuming it can't)"
8290 case "$castflags" in
8295 echo "Nope, it can't."
8302 : see if vprintf exists
8304 if set vprintf val -f d_vprintf; eval $csym; $val; then
8305 echo 'vprintf() found.' >&4
8307 $cat >vprintf.c <<'EOF'
8308 #include <varargs.h>
8310 int main() { xxx("foo"); }
8319 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8323 if eval $compile && ./vprintf; then
8324 echo "Your vsprintf() returns (int)." >&4
8327 echo "Your vsprintf() returns (char*)." >&4
8331 echo 'vprintf() NOT found.' >&4
8341 : see if chown exists
8345 : see if chroot exists
8349 : see if chsize exists
8353 : check for const keyword
8355 echo 'Checking to see if your C compiler knows about "const"...' >&4
8356 $cat >const.c <<'EOCP'
8357 typedef struct spug { int drokk; } spug;
8364 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8366 echo "Yup, it does."
8369 echo "Nope, it doesn't."
8374 : see if crypt exists
8376 if set crypt val -f d_crypt; eval $csym; $val; then
8377 echo 'crypt() found.' >&4
8381 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8382 if $test -z "$cryptlib"; then
8383 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8387 if $test -z "$cryptlib"; then
8388 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8392 if $test -z "$cryptlib"; then
8393 cryptlib=`./loc libcrypt$_a "" $libpth`
8397 if $test -z "$cryptlib"; then
8398 echo 'crypt() NOT found.' >&4
8407 : get csh whereabouts
8409 'csh') val="$undef" ;;
8414 : Respect a hint or command line value for full_csh.
8416 '') full_csh=$csh ;;
8419 : see if cuserid exists
8420 set cuserid d_cuserid
8423 : see if this is a limits.h system
8424 set limits.h i_limits
8427 : see if this is a float.h system
8431 : See if number of significant digits in a double precision number is known
8433 $cat >dbl_dig.c <<EOM
8443 printf("Contains DBL_DIG");
8446 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8447 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8448 echo "DBL_DIG found." >&4
8451 echo "DBL_DIG NOT found." >&4
8458 : see if difftime exists
8459 set difftime d_difftime
8462 : see if this is a dirent system
8464 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8466 echo "<dirent.h> found." >&4
8469 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8470 echo "<sys/dir.h> found." >&4
8473 xinc=`./findhdr sys/ndir.h`
8475 echo "<dirent.h> NOT found." >&4
8480 : Look for type of directory structure.
8482 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8484 case "$direntrytype" in
8487 $define) guess1='struct dirent' ;;
8488 *) guess1='struct direct' ;;
8491 *) guess1="$direntrytype"
8496 'struct dirent') guess2='struct direct' ;;
8497 *) guess2='struct dirent' ;;
8500 if $contains "$guess1" try.c >/dev/null 2>&1; then
8501 direntrytype="$guess1"
8502 echo "Your directory entries are $direntrytype." >&4
8503 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8504 direntrytype="$guess2"
8505 echo "Your directory entries seem to be $direntrytype." >&4
8507 echo "I don't recognize your system's directory entries." >&4
8508 rp="What type is used for directory entries on this system?"
8516 : see if the directory entry stores field length
8518 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8519 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8520 echo "Good, your directory entry keeps length information in d_namlen." >&4
8523 echo "Your directory entry does not know about the d_namlen field." >&4
8530 : see if dlerror exists
8533 set dlerror d_dlerror
8537 : see if dlfcn is available
8545 On a few systems, the dynamically loaded modules that perl generates and uses
8546 will need a different extension than shared libs. The default will probably
8554 rp='What is the extension of dynamically loaded modules'
8563 : Check if dlsym need a leading underscore
8569 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8570 $cat >dyna.c <<'EOM'
8579 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8581 #include <sys/types.h>
8595 int mode = RTLD_LAZY ;
8597 handle = dlopen("./dyna.$dlext", mode) ;
8598 if (handle == NULL) {
8603 symbol = dlsym(handle, "fred") ;
8604 if (symbol == NULL) {
8605 /* try putting a leading underscore */
8606 symbol = dlsym(handle, "_fred") ;
8607 if (symbol == NULL) {
8620 : Call the object file tmp-dyna.o in case dlext=o.
8621 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8622 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8623 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
8624 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8627 1) echo "Test program failed using dlopen." >&4
8628 echo "Perhaps you should not use dynamic loading." >&4;;
8629 2) echo "Test program failed using dlsym." >&4
8630 echo "Perhaps you should not use dynamic loading." >&4;;
8631 3) echo "dlsym needs a leading underscore" >&4
8633 4) echo "dlsym doesn't need a leading underscore." >&4;;
8636 echo "I can't compile and run the test program." >&4
8637 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8642 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8647 hasproto='varname=$1; func=$2; shift; shift;
8648 while $test $# -ge 2; do
8650 $define) echo "#include <$2>";;
8654 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8655 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8656 echo "$func() prototype found.";
8659 echo "$func() prototype NOT found.";
8664 $rm -f try.c tryout.c'
8666 : see if prototype for drand48 is available
8668 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8671 : see if dup2 exists
8675 : see if eaccess exists
8676 set eaccess d_eaccess
8679 : see if endgrent exists
8680 set endgrent d_endgrent
8683 : see if endhostent exists
8684 set endhostent d_endhent
8687 : see if endnetent exists
8688 set endnetent d_endnent
8691 : see if endprotoent exists
8692 set endprotoent d_endpent
8695 : see if endpwent exists
8696 set endpwent d_endpwent
8699 : see if endservent exists
8700 set endservent d_endsent
8703 : Locate the flags for 'open()'
8705 $cat >open3.c <<'EOCP'
8706 #include <sys/types.h>
8711 #include <sys/file.h>
8722 : check sys/file.h first to get FREAD on Sun
8723 if $test `./findhdr sys/file.h` && \
8724 set open3 -DI_SYS_FILE && eval $compile; then
8726 echo "<sys/file.h> defines the O_* constants..." >&4
8728 echo "and you have the 3 argument form of open()." >&4
8731 echo "but not the 3 argument form of open(). Oh, well." >&4
8734 elif $test `./findhdr fcntl.h` && \
8735 set open3 -DI_FCNTL && eval $compile; then
8737 echo "<fcntl.h> defines the O_* constants..." >&4
8739 echo "and you have the 3 argument form of open()." >&4
8742 echo "but not the 3 argument form of open(). Oh, well." >&4
8747 echo "I can't find the O_* constant definitions! You got problems." >&4
8753 : see which of string.h or strings.h is needed
8755 strings=`./findhdr string.h`
8756 if $test "$strings" && $test -r "$strings"; then
8757 echo "Using <string.h> instead of <strings.h>." >&4
8761 strings=`./findhdr strings.h`
8762 if $test "$strings" && $test -r "$strings"; then
8763 echo "Using <strings.h> instead of <string.h>." >&4
8765 echo "No string header found -- You'll surely have problems." >&4
8771 "$undef") strings=`./findhdr strings.h`;;
8772 *) strings=`./findhdr string.h`;;
8775 : check for non-blocking I/O stuff
8776 case "$h_sysfile" in
8777 true) echo "#include <sys/file.h>" > head.c;;
8780 true) echo "#include <fcntl.h>" > head.c;;
8781 *) echo "#include <sys/fcntl.h>" > head.c;;
8786 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8787 case "$o_nonblock" in
8790 $cat >>try.c <<'EOCP'
8794 printf("O_NONBLOCK\n");
8798 printf("O_NDELAY\n");
8802 printf("FNDELAY\n");
8809 if eval $compile_ok; then
8811 case "$o_nonblock" in
8812 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8813 *) echo "Seems like we can use $o_nonblock.";;
8816 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8819 *) echo "Using $hint value $o_nonblock.";;
8821 $rm -f try try.* .out core
8824 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8830 #include <sys/types.h>
8833 #define MY_O_NONBLOCK $o_nonblock
8834 #ifndef errno /* XXX need better Configure test */
8845 #include <strings.h>
8847 $signal_t blech(x) int x; { exit(3); }
8849 $cat >> try.c <<'EOCP'
8857 pipe(pd); /* Down: child -> parent */
8858 pipe(pu); /* Up: parent -> child */
8861 close(pd[1]); /* Parent reads from pd[0] */
8862 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8863 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8865 signal(SIGALRM, blech);
8867 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8869 sprintf(string, "%d\n", ret);
8870 write(2, string, strlen(string));
8873 if (errno == EAGAIN) {
8879 if (errno == EWOULDBLOCK)
8880 printf("EWOULDBLOCK\n");
8883 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8884 sleep(2); /* Give it time to close our pipe */
8886 ret = read(pd[0], buf, 1); /* Should read EOF */
8888 sprintf(string, "%d\n", ret);
8889 write(3, string, strlen(string));
8893 close(pd[0]); /* We write to pd[1] */
8894 close(pu[1]); /* We read from pu[0] */
8895 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8896 close(pd[1]); /* Pipe pd is now fully closed! */
8897 exit(0); /* Bye bye, thank you for playing! */
8901 if eval $compile_ok; then
8902 echo "$startsh" >mtry
8903 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8905 ./mtry >/dev/null 2>&1
8907 0) eagain=`$cat try.out`;;
8908 1) echo "Could not perform non-blocking setting!";;
8909 2) echo "I did a successful read() for something that was not there!";;
8910 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8911 *) echo "Something terribly wrong happened during testing.";;
8913 rd_nodata=`$cat try.ret`
8914 echo "A read() system call with no data present returns $rd_nodata."
8915 case "$rd_nodata" in
8918 echo "(That's peculiar, fixing that to be -1.)"
8924 echo "Forcing errno EAGAIN on read() with no data available."
8928 echo "Your read() sets errno to $eagain when no data is available."
8931 status=`$cat try.err`
8933 0) echo "And it correctly returns 0 to signal EOF.";;
8934 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8935 *) echo "However, your read() returns '$status' on EOF??";;
8938 if test "$status" = "$rd_nodata"; then
8939 echo "WARNING: you can't distinguish between EOF and no data!"
8943 echo "I can't compile the test program--assuming errno EAGAIN will do."
8950 echo "Using $hint value $eagain."
8951 echo "Your read() returns $rd_nodata when no data is present."
8952 case "$d_eofnblk" in
8953 "$define") echo "And you can see EOF because read() returns 0.";;
8954 "$undef") echo "But you can't see EOF status from read() returned value.";;
8956 echo "(Assuming you can't see EOF status from read anyway.)"
8962 $rm -f try try.* .out core head.c mtry
8964 : see if fchmod exists
8968 : see if fchown exists
8972 : see if this is an fcntl system
8977 : See if fcntl-based locking works.
8978 $cat >try.c <<'EOCP'
8983 #if defined(F_SETLK) && defined(F_SETLKW)
8986 fd = open("try.c", O_RDONLY);
8987 flock.l_type = F_RDLCK;
8988 flock.l_whence = SEEK_SET;
8989 flock.l_start = flock.l_len = 0;
8990 retval = fcntl(fd, F_SETLK, &flock);
8992 (retval < 0 ? exit(2) : exit(0));
8998 echo "Checking if fcntl-based file locking works... "
9002 if eval $compile_ok; then
9004 echo "Yes, it seems to work."
9007 echo "Nope, it didn't work."
9011 echo "I'm unable to compile the test program, so I'll assume not."
9016 echo "Nope, since you don't even have fcntl()."
9019 set d_fcntl_can_lock
9024 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9025 while $test $# -ge 2; do
9027 $define) echo "#include <$2>";;
9031 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9033 if eval $compile; then
9044 : see whether socket exists
9046 $echo $n "Hmm... $c" >&4
9047 if set socket val -f d_socket; eval $csym; $val; then
9048 echo "Looks like you have Berkeley networking support." >&4
9050 if set setsockopt val -f; eval $csym; $val; then
9053 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9057 if $contains socklib libc.list >/dev/null 2>&1; then
9058 echo "Looks like you have Berkeley networking support." >&4
9060 : we will have to assume that it supports the 4.2 BSD interface
9063 echo "You don't have Berkeley networking in libc$_a..." >&4
9064 if test "X$d_socket" = "X$define"; then
9065 echo "...but you seem to believe that you have sockets." >&4
9067 for net in net socket
9069 if test -f /usr/lib/lib$net$_a; then
9070 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9071 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9072 if $contains socket libc.list >/dev/null 2>&1; then
9077 echo "...but the Wollongong group seems to have hacked it in." >&4
9078 sockethdr="-I/usr/netinclude"
9081 echo "Found Berkeley sockets interface in lib$net." >& 4
9082 if $contains setsockopt libc.list >/dev/null 2>&1; then
9085 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9092 if test "X$d_socket" != "X$define"; then
9093 echo "or anywhere else I see." >&4
9101 : see if socketpair exists
9102 set socketpair d_sockpair
9107 echo "Checking the availability of certain socket constants..." >& 4
9108 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9109 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9111 #include <sys/types.h>
9112 #include <sys/socket.h>
9118 set try; if eval $compile; then
9121 set d_${enum}; eval $setvar
9125 : see if sys/select.h has to be included
9126 set sys/select.h i_sysselct
9129 : see if we should include time.h, sys/time.h, or both
9131 if test "X$timeincl" = X; then
9132 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9133 $echo $n "I'm now running the test program...$c"
9134 $cat >try.c <<'EOCP'
9135 #include <sys/types.h>
9140 #ifdef SYSTIMEKERNEL
9143 #include <sys/time.h>
9146 #include <sys/select.h>
9155 struct timezone tzp;
9157 if (foo.tm_sec == foo.tm_sec)
9160 if (bar.tv_sec == bar.tv_sec)
9167 for s_timezone in '-DS_TIMEZONE' ''; do
9169 for s_timeval in '-DS_TIMEVAL' ''; do
9170 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9171 for i_time in '' '-DI_TIME'; do
9172 for i_systime in '-DI_SYSTIME' ''; do
9175 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9176 if eval $compile; then
9177 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9181 $echo $n "Succeeded with $flags$c"
9193 *SYSTIMEKERNEL*) i_systimek="$define"
9194 timeincl=`./findhdr sys/time.h`
9195 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9196 *) i_systimek="$undef";;
9199 *I_TIME*) i_time="$define"
9200 timeincl=`./findhdr time.h`" $timeincl"
9201 echo "We'll include <time.h>." >&4;;
9202 *) i_time="$undef";;
9205 *I_SYSTIME*) i_systime="$define"
9206 timeincl=`./findhdr sys/time.h`" $timeincl"
9207 echo "We'll include <sys/time.h>." >&4;;
9208 *) i_systime="$undef";;
9213 : check for fd_set items
9216 Checking to see how well your C compiler handles fd_set and friends ...
9218 $cat >fd_set.c <<EOCP
9219 #$i_systime I_SYS_TIME
9220 #$i_sysselct I_SYS_SELECT
9221 #$d_socket HAS_SOCKET
9222 #include <sys/types.h>
9224 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9227 #include <sys/time.h>
9230 #include <sys/select.h>
9239 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9246 set fd_set -DTRYBITS
9247 if eval $compile; then
9248 d_fds_bits="$define"
9250 echo "Well, your system knows about the normal fd_set typedef..." >&4
9252 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9253 d_fd_macros="$define"
9256 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9258 d_fd_macros="$undef"
9262 Hmm, your compiler has some difficulty with fd_set. Checking further...
9265 if eval $compile; then
9268 echo "Well, your system has some sort of fd_set available..." >&4
9270 echo "and you have the normal fd_set macros." >&4
9271 d_fd_macros="$define"
9274 but not the normal fd_set macros! Gross! More work for me...
9276 d_fd_macros="$undef"
9279 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9282 d_fd_macros="$undef"
9287 : see if fgetpos exists
9288 set fgetpos d_fgetpos
9291 : see if flock exists
9295 : see if fork exists
9299 : see if pathconf exists
9300 set pathconf d_pathconf
9303 : see if fpathconf exists
9304 set fpathconf d_fpathconf
9307 : see if this is a features.h system
9308 set features.h i_features
9312 : check for fpos64_t
9314 echo "Checking to see if you have fpos64_t..." >&4
9316 #$i_features I_FEATURES
9318 #include <features.h>
9321 int main() { fpos64_t x = 7; }
9324 if eval $compile; then
9326 echo "You have fpos64_t."
9329 echo "You do not have fpos64_t."
9331 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9338 : see if frexpl exists
9342 hasstruct='varname=$1; struct=$2; shift; shift;
9343 while $test $# -ge 2; do
9345 $define) echo "#include <$2>";;
9349 echo "int main () { struct $struct foo; }" >> try.c;
9351 if eval $compile; then
9360 : see if this is a sys/param system
9361 set sys/param.h i_sysparam
9364 : see if this is a sys/mount.h system
9365 set sys/mount.h i_sysmount
9368 : see if sys/types.h has to be included
9369 set sys/types.h i_systypes
9374 echo "Checking to see if your system supports struct fs_data..." >&4
9375 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9377 case "$d_fs_data_s" in
9378 "$define") echo "Yes, it does." ;;
9379 *) echo "No, it doesn't." ;;
9382 : see if fseeko exists
9386 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9389 : see if fsetpos exists
9390 set fsetpos d_fsetpos
9394 : see if fstatfs exists
9395 set fstatfs d_fstatfs
9399 : see if statvfs exists
9400 set statvfs d_statvfs
9403 : see if fstatvfs exists
9404 set fstatvfs d_fstatvfs
9408 : see if fsync exists
9412 : see if ftello exists
9416 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9419 : see if getcwd exists
9423 : see if getespwnam exists
9424 set getespwnam d_getespwnam
9428 : see if getfsstat exists
9429 set getfsstat d_getfsstat
9432 : see if getgrent exists
9433 set getgrent d_getgrent
9436 : see if gethostbyaddr exists
9437 set gethostbyaddr d_gethbyaddr
9440 : see if gethostbyname exists
9441 set gethostbyname d_gethbyname
9444 : see if gethostent exists
9445 set gethostent d_gethent
9448 : see how we will look up host name
9451 if set gethostname val -f d_gethname; eval $csym; $val; then
9452 echo 'gethostname() found.' >&4
9453 d_gethname="$define"
9456 if set uname val -f d_uname; eval $csym; $val; then
9459 uname() was found, but you're running xenix, and older versions of xenix
9460 have a broken uname(). If you don't really know whether your xenix is old
9461 enough to have a broken system call, use the default answer.
9468 rp='Is your uname() broken?'
9471 n*) d_uname="$define"; call=uname;;
9474 echo 'uname() found.' >&4
9481 case "$d_gethname" in
9482 '') d_gethname="$undef";;
9485 '') d_uname="$undef";;
9487 case "$d_uname$d_gethname" in
9492 Every now and then someone has a $call() that lies about the hostname
9493 but can't be fixed for political or economic reasons. If you wish, I can
9494 pretend $call() isn't there and maybe compute hostname at run-time
9495 thanks to the '$phostname' command.
9498 rp="Shall I ignore $call() from now on?"
9501 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9504 case "$phostname" in
9506 *) case "$aphostname" in
9512 file=`./loc $file $file $pth`
9513 aphostname=`echo $file $*`
9518 case "$d_uname$d_gethname" in
9521 case "$phostname" in
9523 echo "There will be no way for $package to get your hostname." >&4;;
9525 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9529 case "$d_phostname" in
9530 '') d_phostname="$undef";;
9533 : see if this is a netdb.h system
9537 : see if prototypes for various gethostxxx netdb.h functions are available
9539 set d_gethostprotos gethostent $i_netdb netdb.h
9542 : see if getlogin exists
9543 set getlogin d_getlogin
9546 : see if getmnt exists
9550 : see if getmntent exists
9551 set getmntent d_getmntent
9554 : see if getnetbyaddr exists
9555 set getnetbyaddr d_getnbyaddr
9558 : see if getnetbyname exists
9559 set getnetbyname d_getnbyname
9562 : see if getnetent exists
9563 set getnetent d_getnent
9566 : see if prototypes for various getnetxxx netdb.h functions are available
9568 set d_getnetprotos getnetent $i_netdb netdb.h
9571 : see if getpagesize exists
9572 set getpagesize d_getpagsz
9576 : see if getprotobyname exists
9577 set getprotobyname d_getpbyname
9580 : see if getprotobynumber exists
9581 set getprotobynumber d_getpbynumber
9584 : see if getprotoent exists
9585 set getprotoent d_getpent
9588 : see if getpgid exists
9589 set getpgid d_getpgid
9592 : see if getpgrp2 exists
9593 set getpgrp2 d_getpgrp2
9596 : see if getppid exists
9597 set getppid d_getppid
9600 : see if getpriority exists
9601 set getpriority d_getprior
9604 : see if prototypes for various getprotoxxx netdb.h functions are available
9606 set d_getprotoprotos getprotoent $i_netdb netdb.h
9609 : see if getprpwnam exists
9610 set getprpwnam d_getprpwnam
9613 : see if getpwent exists
9614 set getpwent d_getpwent
9618 : see if getservbyname exists
9619 set getservbyname d_getsbyname
9622 : see if getservbyport exists
9623 set getservbyport d_getsbyport
9626 : see if getservent exists
9627 set getservent d_getsent
9630 : see if prototypes for various getservxxx netdb.h functions are available
9632 set d_getservprotos getservent $i_netdb netdb.h
9635 : see if getspnam exists
9636 set getspnam d_getspnam
9639 : see if gettimeofday or ftime exists
9640 set gettimeofday d_gettimeod
9642 case "$d_gettimeod" in
9648 val="$undef"; set d_ftime; eval $setvar
9651 case "$d_gettimeod$d_ftime" in
9654 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9658 : see if this is an grp system
9664 xxx=`./findhdr grp.h`
9665 $cppstdin $cppflags $cppminus < $xxx >$$.h
9667 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9679 set d_grpasswd; eval $setvar
9683 : see if hasmntopt exists
9684 set hasmntopt d_hasmntopt
9687 : see if this is a netinet/in.h or sys/in.h system
9688 set netinet/in.h i_niin sys/in.h i_sysin
9691 : see if arpa/inet.h has to be included
9692 set arpa/inet.h i_arpainet
9695 : see if htonl --and friends-- exists
9700 : Maybe they are macros.
9705 #include <sys/types.h>
9706 #$i_niin I_NETINET_IN
9708 #$i_arpainet I_ARPA_INET
9710 #include <netinet/in.h>
9716 #include <arpa/inet.h>
9719 printf("Defined as a macro.");
9722 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9723 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9725 echo "But it seems to be defined as a macro." >&4
9733 : see if iconv exists
9739 if set index val -f; eval $csym; $val; then
9740 if set strchr val -f d_strchr; eval $csym; $val; then
9741 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9744 echo "strchr() found." >&4
9748 echo "index() found." >&4
9753 echo "index() found." >&4
9756 if set strchr val -f d_strchr; eval $csym; $val; then
9759 echo "strchr() found." >&4
9761 echo "No index() or strchr() found!" >&4
9766 set d_strchr; eval $setvar
9768 set d_index; eval $setvar
9770 : check whether inet_aton exists
9771 set inet_aton d_inetaton
9774 : see if inttypes.h is available
9775 : we want a real compile instead of Inhdr because some systems
9776 : have an inttypes.h which includes non-existent headers
9779 #include <inttypes.h>
9781 static int32_t foo32 = 0x12345678;
9785 if eval $compile; then
9786 echo "<inttypes.h> found." >&4
9789 echo "<inttypes.h> NOT found." >&4
9798 echo "Checking to see if you have int64_t..." >&4
9800 #include <sys/types.h>
9801 #$i_inttypes I_INTTYPES
9803 #include <inttypes.h>
9805 int main() { int64_t x = 7; }
9808 if eval $compile; then
9810 echo "You have int64_t."
9813 echo "You do not have int64_t."
9821 $cat >isascii.c <<'EOCP'
9833 if eval $compile; then
9834 echo "isascii() found." >&4
9837 echo "isascii() NOT found." >&4
9844 : see if isnan exists
9848 : see if isnanl exists
9852 : see if killpg exists
9856 : see if lchown exists
9858 $cat > try.c <<'EOCP'
9859 /* System header to define __stub macros and hopefully few prototypes,
9860 which can conflict with char lchown(); below. */
9862 /* Override any gcc2 internal prototype to avoid an error. */
9863 /* We use char because int might match the return type of a gcc2
9864 builtin and then its argument prototype would still apply. */
9867 /* The GNU C library defines this for functions which it implements
9868 to always fail with ENOSYS. Some functions are actually named
9869 something starting with __ and the normal name is an alias. */
9870 #if defined (__stub_lchown) || defined (__stub___lchown)
9878 if eval $compile; then
9879 $echo "lchown() found." >&4
9882 $echo "lchown() NOT found." >&4
9888 : See if number of significant digits in a double precision number is known
9890 $cat >ldbl_dig.c <<EOM
9900 printf("Contains LDBL_DIG");
9903 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9904 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9905 echo "LDBL_DIG found." >&4
9908 echo "LDBL_DIG NOT found." >&4
9915 : see if link exists
9919 : see if localeconv exists
9920 set localeconv d_locconv
9923 : see if lockf exists
9927 : check for long long
9929 echo "Checking to see if you have long long..." >&4
9930 echo 'int main() { long long x = 7; return 0; }' > try.c
9932 if eval $compile; then
9934 echo "You have long long."
9937 echo "You do not have long long."
9943 : check for length of long long
9944 case "${d_longlong}${longlongsize}" in
9947 echo "Checking to see how big your long longs are..." >&4
9948 $cat >try.c <<'EOCP'
9952 printf("%d\n", (int)sizeof(long long));
9957 if eval $compile_ok; then
9958 longlongsize=`./try$exe_ext`
9959 echo "Your long longs are $longlongsize bytes long."
9963 echo "(I can't seem to compile the test program. Guessing...)"
9964 rp="What is the size of a long long (in bytes)?"
9968 if $test "X$longsize" = "X$longlongsize"; then
9969 echo "(That isn't any different from an ordinary long.)"
9975 : see if prototype for lseek is available
9977 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9980 : see if lstat exists
9984 : see if madvise exists
9985 set madvise d_madvise
9988 : see if mblen exists
9992 : see if mbstowcs exists
9993 set mbstowcs d_mbstowcs
9996 : see if mbtowc exists
10000 : see if memchr exists
10001 set memchr d_memchr
10004 : see if memcmp exists
10005 set memcmp d_memcmp
10008 : see if memcpy exists
10009 set memcpy d_memcpy
10012 : see if memmove exists
10013 set memmove d_memmove
10016 : see if memset exists
10017 set memset d_memset
10020 : see if mkdir exists
10024 : see if mkdtemp exists
10025 set mkdtemp d_mkdtemp
10028 : see if mkfifo exists
10029 set mkfifo d_mkfifo
10032 : see if mkstemp exists
10033 set mkstemp d_mkstemp
10036 : see if mkstemps exists
10037 set mkstemps d_mkstemps
10040 : see if mktime exists
10041 set mktime d_mktime
10044 : see if this is a sys/mman.h system
10045 set sys/mman.h i_sysmman
10048 : see if mmap exists
10051 : see what shmat returns
10052 : default to something harmless
10054 case "$i_sysmman$d_mmap" in
10056 $cat >mmap.c <<'END'
10057 #include <sys/mman.h>
10060 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10065 echo "and it returns ($mmaptype)." >&4
10071 : see if modfl exists
10075 : see if mprotect exists
10076 set mprotect d_mprotect
10079 : see if msgctl exists
10080 set msgctl d_msgctl
10083 : see if msgget exists
10084 set msgget d_msgget
10087 : see if msgsnd exists
10088 set msgsnd d_msgsnd
10091 : see if msgrcv exists
10092 set msgrcv d_msgrcv
10095 : see how much of the 'msg*(2)' library is present.
10098 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10099 *"$undef"*) h_msg=false;;
10103 case "`ipcs 2>&1`" in
10104 "SVID messages"*"not configured"*)
10105 echo "Your $osname does not have the msg*(2) configured." >&4
10108 set msgctl d_msgctl
10110 set msgget d_msgget
10112 set msgsnd d_msgsnd
10114 set msgrcv d_msgrcv
10120 : we could also check for sys/ipc.h ...
10121 if $h_msg && $test `./findhdr sys/msg.h`; then
10122 echo "You have the full msg*(2) library." >&4
10125 echo "You don't have the full msg*(2) library." >&4
10131 : see if msync exists
10135 : see if munmap exists
10136 set munmap d_munmap
10139 : see if nice exists
10145 echo "Checking which 64-bit integer type we could use..." >&4
10151 val='"unsigned int"'
10156 *) case "$longsize" in
10160 val='"unsigned long"'
10165 *) case "$d_longlong:$longlongsize" in
10170 val='"unsigned long long"'
10175 *) case "$d_int64_t" in
10193 case "$quadtype" in
10194 '') echo "Alas, no 64-bit integer types in sight." >&4
10197 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10202 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10207 : check for length of character
10209 case "$charsize" in
10211 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10212 $cat >try.c <<'EOCP'
10216 printf("%d\n", (int)sizeof(char));
10221 if eval $compile_ok; then
10225 echo "(I can't seem to compile the test program. Guessing...)"
10232 rp="What is the size of a character (in bytes)?"
10237 : check for volatile keyword
10239 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10240 $cat >try.c <<'EOCP'
10243 typedef struct _goo_struct goo_struct;
10244 goo_struct * volatile goo = ((goo_struct *)0);
10245 struct _goo_struct {
10250 typedef unsigned short foo_t;
10251 char *volatile foo;
10253 volatile foo_t blech;
10257 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10259 echo "Yup, it does."
10262 echo "Nope, it doesn't."
10270 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10272 case "$use64bitint:$d_quad:$quadtype" in
10275 uvtype="$uquadtype"
10280 uvtype="unsigned long"
10286 case "$uselongdouble:$d_longdbl" in
10288 nvtype="long double"
10289 nvsize=$longdblsize
10296 $echo "(IV will be "$ivtype", $ivsize bytes)"
10297 $echo "(UV will be "$uvtype", $uvsize bytes)"
10298 $echo "(NV will be "$nvtype", $nvsize bytes)"
10301 #$i_inttypes I_INTTYPES
10303 #include <inttypes.h>
10308 int8_t i = INT8_MAX;
10309 uint8_t u = UINT8_MAX;
10310 printf("int8_t\n");
10313 int16_t i = INT16_MAX;
10314 uint16_t i = UINT16_MAX;
10315 printf("int16_t\n");
10318 int32_t i = INT32_MAX;
10319 uint32_t u = UINT32_MAX;
10320 printf("int32_t\n");
10326 '') case "$charsize" in
10328 u8type="unsigned char"
10337 if eval $compile; then
10338 case "`./try$exe_ext`" in
10339 int8_t) i8type=int8_t
10349 '') if $test $charsize -ge 1; then
10351 u8type="unsigned char"
10359 '') case "$shortsize" in
10361 u16type="unsigned short"
10369 '') set try -DINT16
10370 if eval $compile; then
10371 case "`./try$exe_ext`" in
10383 '') if $test $shortsize -ge 2; then
10385 u16type="unsigned short"
10393 '') case "$longsize" in
10395 u32type="unsigned long"
10399 *) case "$intsize" in
10401 u32type="unsigned int"
10411 '') set try -DINT32
10412 if eval $compile; then
10413 case "`./try$exe_ext`" in
10425 '') if $test $intsize -ge 4; then
10427 u32type="unsigned int"
10435 '') case "$d_quad:$quadtype" in
10437 i64type="$quadtype"
10438 u64type="$uquadtype"
10446 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10447 : volatile so that the compiler has to store it out to memory.
10448 if test X"$d_volatile" = X"$define"; then
10453 #include <sys/types.h>
10454 #include <signal.h>
10456 $volatile int bletched = 0;
10457 $signal_t blech(s) int s; { bletched = 1; }
10462 int n = 8 * $uvsize;
10465 signal(SIGFPE, blech);
10468 for (i = 0; i < n; i++) {
10469 u = u << 1 | ($uvtype)1;
10471 if (($uvtype)d != u)
10475 d = ($nvtype)(u - 1);
10476 if (($uvtype)d != (u - 1))
10484 printf("%d\n", ((i == n) ? -n : i));
10490 d_nv_preserves_uv="$undef"
10491 if eval $compile; then
10492 d_nv_preserves_uv_bits="`./try$exe_ext`"
10494 case "$d_nv_preserves_uv_bits" in
10496 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10497 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10498 d_nv_preserves_uv="$define"
10500 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10501 d_nv_preserves_uv="$undef" ;;
10502 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10503 d_nv_preserves_uv_bits="$undef" ;;
10509 : check for off64_t
10511 echo "Checking to see if you have off64_t..." >&4
10513 #$i_features I_FEATURES
10515 #include <features.h>
10517 #include <sys/types.h>
10518 #include <unistd.h>
10519 int main() { off64_t x = 7; }
10522 if eval $compile; then
10524 echo "You have off64_t."
10527 echo "You do not have off64_t."
10528 case "$lseeksize" in
10529 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10536 : see if POSIX threads are available
10537 set pthread.h i_pthread
10543 : how to create joinable pthreads
10544 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10546 echo "Checking what constant to use for creating joinable pthreads..." >&4
10547 $cat >try.c <<'EOCP'
10548 #include <pthread.h>
10550 int detachstate = JOINABLE;
10553 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10554 if eval $compile; then
10555 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10556 val="$undef" # Yes, undef.
10557 set d_old_pthread_create_joinable
10560 set old_pthread_create_joinable
10563 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10564 if eval $compile; then
10565 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10567 set d_old_pthread_create_joinable
10569 val=PTHREAD_CREATE_UNDETACHED
10570 set old_pthread_create_joinable
10573 set try -DJOINABLE=__UNDETACHED
10574 if eval $compile; then
10575 echo "You seem to use __UNDETACHED." >&4
10577 set d_old_pthread_create_joinable
10580 set old_pthread_create_joinable
10583 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10585 set d_old_pthread_create_joinable
10588 set old_pthread_create_joinable
10595 d_old_pthread_create_joinable="$undef"
10596 old_pthread_create_joinable=""
10599 : see if pause exists
10603 : see if pipe exists
10607 : see if poll exists
10612 : see whether the various POSIXish _yields exist
10614 #include <pthread.h>
10620 #ifdef PTHREAD_YIELD
10623 #ifdef PTHREAD_YIELD_NULL
10624 pthread_yield(NULL);
10630 : see if sched_yield exists
10631 set try -DSCHED_YIELD
10632 if eval $compile; then
10634 sched_yield='sched_yield()'
10638 case "$usethreads" in
10641 $define) echo 'sched_yield() found.' >&4 ;;
10642 *) echo 'sched_yield() NOT found.' >&4 ;;
10648 : see if pthread_yield exists
10649 set try -DPTHREAD_YIELD
10650 if eval $compile; then
10652 case "$sched_yield" in
10653 '') sched_yield='pthread_yield()' ;;
10656 set try -DPTHREAD_YIELD_NULL
10657 if eval $compile; then
10659 case "$sched_yield" in
10660 '') sched_yield='pthread_yield(NULL)' ;;
10666 case "$usethreads" in
10669 $define) echo 'pthread_yield() found.' >&4 ;;
10670 *) echo 'pthread_yield() NOT found.' >&4 ;;
10674 set d_pthread_yield
10677 case "$sched_yield" in
10678 '') sched_yield=undef ;;
10683 : see if this is a pwd.h system
10689 xxx=`./findhdr pwd.h`
10690 $cppstdin $cppflags $cppminus < $xxx >$$.h
10692 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10700 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10708 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10716 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10724 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10732 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10740 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10748 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10760 set d_pwquota; eval $setvar
10761 set d_pwage; eval $setvar
10762 set d_pwchange; eval $setvar
10763 set d_pwclass; eval $setvar
10764 set d_pwexpire; eval $setvar
10765 set d_pwcomment; eval $setvar
10766 set d_pwgecos; eval $setvar
10767 set d_pwpasswd; eval $setvar
10771 : see if readdir and friends exist
10772 set readdir d_readdir
10774 set seekdir d_seekdir
10776 set telldir d_telldir
10778 set rewinddir d_rewinddir
10781 : see if readlink exists
10782 set readlink d_readlink
10785 : see if rename exists
10786 set rename d_rename
10789 : see if rmdir exists
10793 : see if memory.h is available.
10798 : See if it conflicts with string.h
10804 $cppstdin $cppflags $cppminus < $strings > mem.h
10805 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10807 echo "We won't be including <memory.h>."
10817 : can bcopy handle overlapping blocks?
10822 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10824 #$i_memory I_MEMORY
10825 #$i_stdlib I_STDLIB
10826 #$i_string I_STRING
10827 #$i_unistd I_UNISTD
10829 $cat >>try.c <<'EOCP'
10832 # include <memory.h>
10835 # include <stdlib.h>
10838 # include <string.h>
10840 # include <strings.h>
10843 # include <unistd.h> /* Needed for NetBSD */
10847 char buf[128], abc[128];
10853 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10855 for (align = 7; align >= 0; align--) {
10856 for (len = 36; len; len--) {
10858 bcopy(abc, b, len);
10859 for (off = 1; off <= len; off++) {
10860 bcopy(b, b+off, len);
10861 bcopy(b+off, b, len);
10862 if (bcmp(b, abc, len))
10871 if eval $compile_ok; then
10872 if ./try 2>/dev/null; then
10873 echo "Yes, it can."
10876 echo "It can't, sorry."
10877 case "$d_memmove" in
10878 "$define") echo "But that's Ok since you have memmove()." ;;
10882 echo "(I can't compile the test program, so we'll assume not...)"
10883 case "$d_memmove" in
10884 "$define") echo "But that's Ok since you have memmove()." ;;
10889 $rm -f try.* try core
10893 : can memcpy handle overlapping blocks?
10895 case "$d_memcpy" in
10898 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10900 #$i_memory I_MEMORY
10901 #$i_stdlib I_STDLIB
10902 #$i_string I_STRING
10903 #$i_unistd I_UNISTD
10905 $cat >>try.c <<'EOCP'
10908 # include <memory.h>
10911 # include <stdlib.h>
10914 # include <string.h>
10916 # include <strings.h>
10919 # include <unistd.h> /* Needed for NetBSD */
10923 char buf[128], abc[128];
10929 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10930 try to store the string in read-only memory. */
10931 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10933 for (align = 7; align >= 0; align--) {
10934 for (len = 36; len; len--) {
10936 memcpy(b, abc, len);
10937 for (off = 1; off <= len; off++) {
10938 memcpy(b+off, b, len);
10939 memcpy(b, b+off, len);
10940 if (memcmp(b, abc, len))
10949 if eval $compile_ok; then
10950 if ./try 2>/dev/null; then
10951 echo "Yes, it can."
10954 echo "It can't, sorry."
10955 case "$d_memmove" in
10956 "$define") echo "But that's Ok since you have memmove()." ;;
10960 echo "(I can't compile the test program, so we'll assume not...)"
10961 case "$d_memmove" in
10962 "$define") echo "But that's Ok since you have memmove()." ;;
10967 $rm -f try.* try core
10971 : can memcmp be trusted to compare relative magnitude?
10973 case "$d_memcmp" in
10976 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10978 #$i_memory I_MEMORY
10979 #$i_stdlib I_STDLIB
10980 #$i_string I_STRING
10981 #$i_unistd I_UNISTD
10983 $cat >>try.c <<'EOCP'
10986 # include <memory.h>
10989 # include <stdlib.h>
10992 # include <string.h>
10994 # include <strings.h>
10997 # include <unistd.h> /* Needed for NetBSD */
11003 if ((a < b) && memcmp(&a, &b, 1) < 0)
11009 if eval $compile_ok; then
11010 if ./try 2>/dev/null; then
11011 echo "Yes, it can."
11014 echo "No, it can't (it uses signed chars)."
11017 echo "(I can't compile the test program, so we'll assume not...)"
11021 $rm -f try.* try core
11025 : see if prototype for sbrk is available
11027 set d_sbrkproto sbrk $i_unistd unistd.h
11030 : see if select exists
11031 set select d_select
11034 : see if semctl exists
11035 set semctl d_semctl
11038 : see if semget exists
11039 set semget d_semget
11042 : see if semop exists
11046 : see how much of the 'sem*(2)' library is present.
11049 case "$d_semctl$d_semget$d_semop" in
11050 *"$undef"*) h_sem=false;;
11054 case "`ipcs 2>&1`" in
11055 "SVID messages"*"not configured"*)
11056 echo "Your $osname does not have the sem*(2) configured." >&4
11059 set semctl d_semctl
11061 set semget d_semget
11069 : we could also check for sys/ipc.h ...
11070 if $h_sem && $test `./findhdr sys/sem.h`; then
11071 echo "You have the full sem*(2) library." >&4
11074 echo "You don't have the full sem*(2) library." >&4
11080 : see whether sys/sem.h defines union semun
11082 $cat > try.c <<'END'
11083 #include <sys/types.h>
11084 #include <sys/ipc.h>
11085 #include <sys/sem.h>
11086 int main () { union semun semun; semun.buf = 0; }
11089 if eval $compile; then
11090 echo "You have union semun in <sys/sem.h>." >&4
11093 echo "You do not have union semun in <sys/sem.h>." >&4
11096 $rm -f try try.c try.h
11100 : see how to do semctl IPC_STAT
11103 : see whether semctl IPC_STAT can use union semun
11108 # define S_IRUSR S_IREAD
11109 # define S_IWUSR S_IWRITE
11110 # define S_IXUSR S_IEXEC
11112 # define S_IRUSR 0400
11113 # define S_IWUSR 0200
11114 # define S_IXUSR 0100
11116 # define S_IRGRP (S_IRUSR>>3)
11117 # define S_IWGRP (S_IWUSR>>3)
11118 # define S_IXGRP (S_IXUSR>>3)
11119 # define S_IROTH (S_IRUSR>>6)
11120 # define S_IWOTH (S_IWUSR>>6)
11121 # define S_IXOTH (S_IXUSR>>6)
11124 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11125 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11126 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11131 #include <sys/types.h>
11132 #include <sys/ipc.h>
11133 #include <sys/sem.h>
11134 #include <sys/stat.h>
11141 #$d_union_semun HAS_UNION_SEMUN
11144 #ifndef HAS_UNION_SEMUN
11147 struct semid_ds *buf;
11148 unsigned short *array;
11154 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11155 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11157 struct semid_ds argbuf;
11160 st = semctl(sem, 0, IPC_STAT, arg);
11164 # endif /* IPC_STAT */
11165 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11167 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11168 # endif /* IPC_RMID */
11169 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11171 #endif /* IPC_PRIVATE && ... */
11172 printf("semget failed: errno = %d\n", errno);
11178 if eval $compile; then
11181 semun) val="$define" ;;
11187 case "$d_semctl_semun" in
11189 echo "You can use union semun for semctl IPC_STAT." >&4
11192 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11197 : see whether semctl IPC_STAT can use struct semid_ds pointer
11198 $cat > try.c <<'END'
11199 #include <sys/types.h>
11200 #include <sys/ipc.h>
11201 #include <sys/sem.h>
11202 #include <sys/stat.h>
11210 struct semid_ds arg;
11213 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11214 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11217 st = semctl(sem, 0, IPC_STAT, &arg);
11219 printf("semid_ds\n");
11221 # endif /* IPC_STAT */
11222 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11224 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11225 # endif /* IPC_RMID */
11226 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11228 #endif /* IPC_PRIVATE && ... */
11229 printf("semget failed: errno = %d\n", errno);
11236 if eval $compile; then
11239 semid_ds) val="$define" ;;
11243 set d_semctl_semid_ds
11245 case "$d_semctl_semid_ds" in
11247 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11249 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11256 # We do not have the full sem*(2) library, so assume we can not
11262 set d_semctl_semid_ds
11267 : see if setegid exists
11268 set setegid d_setegid
11271 : see if seteuid exists
11272 set seteuid d_seteuid
11275 : see if setgrent exists
11276 set setgrent d_setgrent
11279 : see if sethostent exists
11280 set sethostent d_sethent
11283 : see if setlinebuf exists
11284 set setlinebuf d_setlinebuf
11287 : see if setlocale exists
11288 set setlocale d_setlocale
11291 : see if setnetent exists
11292 set setnetent d_setnent
11295 : see if setprotoent exists
11296 set setprotoent d_setpent
11299 : see if setpgid exists
11300 set setpgid d_setpgid
11303 : see if setpgrp2 exists
11304 set setpgrp2 d_setpgrp2
11307 : see if setpriority exists
11308 set setpriority d_setprior
11311 : see if setproctitle exists
11312 set setproctitle d_setproctitle
11315 : see if setpwent exists
11316 set setpwent d_setpwent
11319 : see if setregid exists
11320 set setregid d_setregid
11322 set setresgid d_setresgid
11325 : see if setreuid exists
11326 set setreuid d_setreuid
11328 set setresuid d_setresuid
11331 : see if setrgid exists
11332 set setrgid d_setrgid
11335 : see if setruid exists
11336 set setruid d_setruid
11339 : see if setservent exists
11340 set setservent d_setsent
11343 : see if setsid exists
11344 set setsid d_setsid
11347 : see if setvbuf exists
11348 set setvbuf d_setvbuf
11351 : see if sfio.h is available
11356 : see if sfio library is available
11367 : Ok, but do we want to use it.
11371 true|$define|[yY]*) dflt='y';;
11374 echo "$package can use the sfio library, but it is experimental."
11375 case "$useperlio" in
11377 echo "For sfio also the PerlIO abstraction layer is needed."
11378 echo "Earlier you said you wouldn't want that."
11381 rp="You seem to have sfio available, do you want to try using it?"
11384 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11385 useperlio="$define"
11388 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11390 : Remove sfio from list of libraries to use
11391 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11394 echo "libs = $libs" >&4
11398 *) case "$usesfio" in
11399 true|$define|[yY]*)
11400 echo "Sorry, cannot find sfio on this machine." >&4
11401 echo "Ignoring your setting of usesfio=$usesfio." >&4
11410 $define) usesfio='true';;
11411 *) usesfio='false';;
11414 : see if shmctl exists
11415 set shmctl d_shmctl
11418 : see if shmget exists
11419 set shmget d_shmget
11422 : see if shmat exists
11425 : see what shmat returns
11428 $cat >shmat.c <<'END'
11429 #include <sys/shm.h>
11432 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11437 echo "and it returns ($shmattype)." >&4
11438 : see if a prototype for shmat is available
11439 xxx=`./findhdr sys/shm.h`
11440 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11441 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11452 set d_shmatprototype
11455 : see if shmdt exists
11459 : see how much of the 'shm*(2)' library is present.
11462 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11463 *"$undef"*) h_shm=false;;
11467 case "`ipcs 2>&1`" in
11468 "SVID shared memory"*"not configured"*)
11469 echo "Your $osname does not have the shm*(2) configured." >&4
11472 set shmctl d_shmctl
11474 set shmget d_shmget
11484 : we could also check for sys/ipc.h ...
11485 if $h_shm && $test `./findhdr sys/shm.h`; then
11486 echo "You have the full shm*(2) library." >&4
11489 echo "You don't have the full shm*(2) library." >&4
11496 : see if we have sigaction
11497 if set sigaction val -f d_sigaction; eval $csym; $val; then
11498 echo 'sigaction() found.' >&4
11499 $cat > try.c <<'EOP'
11501 #include <sys/types.h>
11502 #include <signal.h>
11505 struct sigaction act, oact;
11507 oact.sa_handler = 0;
11508 /* so that act and oact are used */
11509 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11513 if eval $compile_ok; then
11516 echo "But you don't seem to have a useable struct sigaction." >&4
11520 echo 'sigaction NOT found.' >&4
11523 set d_sigaction; eval $setvar
11524 $rm -f try try$_o try.c
11526 : see if sigprocmask exists
11527 set sigprocmask d_sigprocmask
11530 : see if sigsetjmp exists
11532 case "$d_sigsetjmp" in
11534 $cat >try.c <<'EOP'
11535 #include <setjmp.h>
11540 if (sigsetjmp(env,1))
11543 siglongjmp(env, 1);
11548 if eval $compile; then
11549 if ./try >/dev/null 2>&1; then
11550 echo "POSIX sigsetjmp found." >&4
11554 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11560 echo "sigsetjmp not found." >&4
11564 *) val="$d_sigsetjmp"
11565 case "$d_sigsetjmp" in
11566 $define) echo "POSIX sigsetjmp found." >&4;;
11567 $undef) echo "sigsetjmp not found." >&4;;
11575 : see if socks5_init exists
11576 set socks5_init d_socks5_init
11579 : see if sys/stat.h is available
11580 set sys/stat.h i_sysstat
11584 : see if stat knows about block sizes
11586 echo "Checking to see if your struct stat has st_blocks field..." >&4
11587 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11591 : see if this is a sys/vfs.h system
11592 set sys/vfs.h i_sysvfs
11596 : see if this is a sys/statfs.h system
11597 set sys/statfs.h i_sysstatfs
11602 echo "Checking to see if your system supports struct statfs..." >&4
11603 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
11605 case "$d_statfs_s" in
11606 "$define") echo "Yes, it does." ;;
11607 *) echo "No, it doesn't." ;;
11612 : see if struct statfs knows about f_flags
11613 case "$d_statfs_s" in
11616 echo "Checking to see if your struct statfs has f_flags field..." >&4
11617 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
11621 set d_statfs_f_flags
11625 case "$d_statfs_f_flags" in
11626 "$define") echo "Yes, it does." ;;
11627 *) echo "No, it doesn't." ;;
11630 : see if _ptr and _cnt from stdio act std
11633 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11634 echo "(Looks like you have stdio.h from BSD.)"
11635 case "$stdio_ptr" in
11636 '') stdio_ptr='((fp)->_p)'
11639 *) ptr_lval=$d_stdio_ptr_lval;;
11641 case "$stdio_cnt" in
11642 '') stdio_cnt='((fp)->_r)'
11645 *) cnt_lval=$d_stdio_cnt_lval;;
11647 case "$stdio_base" in
11648 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11650 case "$stdio_bufsiz" in
11651 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11653 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11654 echo "(Looks like you have stdio.h from Linux.)"
11655 case "$stdio_ptr" in
11656 '') stdio_ptr='((fp)->_IO_read_ptr)'
11659 *) ptr_lval=$d_stdio_ptr_lval;;
11661 case "$stdio_cnt" in
11662 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11665 *) cnt_lval=$d_stdio_cnt_lval;;
11667 case "$stdio_base" in
11668 '') stdio_base='((fp)->_IO_read_base)';;
11670 case "$stdio_bufsiz" in
11671 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11674 case "$stdio_ptr" in
11675 '') stdio_ptr='((fp)->_ptr)'
11678 *) ptr_lval=$d_stdio_ptr_lval;;
11680 case "$stdio_cnt" in
11681 '') stdio_cnt='((fp)->_cnt)'
11684 *) cnt_lval=$d_stdio_cnt_lval;;
11686 case "$stdio_base" in
11687 '') stdio_base='((fp)->_base)';;
11689 case "$stdio_bufsiz" in
11690 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11694 : test whether _ptr and _cnt really work
11695 echo "Checking how std your stdio is..." >&4
11698 #define FILE_ptr(fp) $stdio_ptr
11699 #define FILE_cnt(fp) $stdio_cnt
11701 FILE *fp = fopen("try.c", "r");
11704 18 <= FILE_cnt(fp) &&
11705 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11713 if eval $compile; then
11715 echo "Your stdio acts pretty std."
11718 echo "Your stdio isn't very std."
11721 echo "Your stdio doesn't appear very std."
11727 : Can _ptr be used as an lvalue?
11728 case "$d_stdstdio$ptr_lval" in
11729 $define$define) val=$define ;;
11732 set d_stdio_ptr_lval
11735 : Can _cnt be used as an lvalue?
11736 case "$d_stdstdio$cnt_lval" in
11737 $define$define) val=$define ;;
11740 set d_stdio_cnt_lval
11744 : test whether setting _ptr sets _cnt as a side effect
11745 d_stdio_ptr_lval_sets_cnt="$undef"
11746 d_stdio_ptr_lval_nochange_cnt="$undef"
11747 case "$d_stdio_ptr_lval$d_stdstdio" in
11749 echo "Checking to see what happens if we set the stdio ptr..." >&4
11752 /* Can we scream? */
11753 /* Eat dust sed :-) */
11754 /* In the buffer space, no one can hear you scream. */
11755 #define FILE_ptr(fp) $stdio_ptr
11756 #define FILE_cnt(fp) $stdio_cnt
11757 #include <sys/types.h>
11759 FILE *fp = fopen("try.c", "r");
11764 puts("Fail even to read");
11767 c = getc(fp); /* Read away the first # */
11769 puts("Fail even to read");
11773 18 <= FILE_cnt(fp) &&
11774 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11776 puts("Fail even to read");
11779 ptr = (char*) FILE_ptr(fp);
11780 cnt = (size_t)FILE_cnt(fp);
11782 FILE_ptr(fp) += 42;
11784 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11785 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11788 if (FILE_cnt(fp) <= 20) {
11789 printf ("Fail (<20 chars to test)");
11792 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11793 puts("Fail compare");
11796 if (cnt == FILE_cnt(fp)) {
11797 puts("Pass_unchanged");
11800 if (FILE_cnt(fp) == (cnt - 42)) {
11801 puts("Pass_changed");
11804 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11810 if eval $compile; then
11811 case `./try$exe_ext` in
11813 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11814 d_stdio_ptr_lval_sets_cnt="$define" ;;
11816 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11817 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11819 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11821 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11824 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11830 : see if _base is also standard
11832 case "$d_stdstdio" in
11836 #define FILE_base(fp) $stdio_base
11837 #define FILE_bufsiz(fp) $stdio_bufsiz
11839 FILE *fp = fopen("try.c", "r");
11842 19 <= FILE_bufsiz(fp) &&
11843 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11850 if eval $compile; then
11852 echo "And its _base field acts std."
11855 echo "But its _base field isn't std."
11858 echo "However, it seems to be lacking the _base field."
11867 Checking how to access stdio streams by file descriptor number...
11869 case "$stdio_stream_array" in
11870 '') $cat >try.c <<EOCP
11873 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11877 for s in _iob __iob __sF
11879 set try -DSTDIO_STREAM_ARRAY=$s
11880 if eval $compile; then
11881 case "`./try$exe_ext`" in
11882 yes) stdio_stream_array=$s; break ;;
11886 $rm -f try.* try$exe_ext
11888 case "$stdio_stream_array" in
11890 I can't figure out how to access stdio streams by file descriptor number.
11892 d_stdio_stream_array="$undef"
11895 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11897 d_stdio_stream_array="$define"
11901 : see if strcoll exists
11902 set strcoll d_strcoll
11905 : check for structure copying
11907 echo "Checking to see if your C compiler can copy structs..." >&4
11908 $cat >try.c <<'EOCP'
11918 if $cc -c try.c >/dev/null 2>&1 ; then
11920 echo "Yup, it can."
11923 echo "Nope, it can't."
11929 : see if strerror and/or sys_errlist[] exist
11931 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11932 if set strerror val -f d_strerror; eval $csym; $val; then
11933 echo 'strerror() found.' >&4
11934 d_strerror="$define"
11935 d_strerrm='strerror(e)'
11936 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11937 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11938 d_syserrlst="$define"
11940 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11941 d_syserrlst="$undef"
11943 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11944 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11945 echo 'strerror() found in string header.' >&4
11946 d_strerror="$define"
11947 d_strerrm='strerror(e)'
11948 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11949 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11950 d_syserrlst="$define"
11952 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11953 d_syserrlst="$undef"
11955 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11956 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11957 d_strerror="$undef"
11958 d_syserrlst="$define"
11959 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11961 echo 'strerror() and sys_errlist[] NOT found.' >&4
11962 d_strerror="$undef"
11963 d_syserrlst="$undef"
11964 d_strerrm='"unknown"'
11968 : see if strtod exists
11969 set strtod d_strtod
11972 : see if strtol exists
11973 set strtol d_strtol
11976 : see if strtold exists
11977 set strtold d_strtold
11980 : see if strtoll exists
11981 set strtoll d_strtoll
11984 case "$d_longlong-$d_strtoll" in
11987 Checking whether your strtoll() works okay...
11989 $cat >try.c <<'EOCP'
11992 #define strtoll __strtoll
11995 #define strtoll _strtoll
11998 extern long long int strtoll(char *s, char **, int);
11999 static int bad = 0;
12000 int check(char *s, long long ell, int een) {
12003 gll = strtoll(s, 0, 10);
12004 if (!((gll == ell) && (errno == een)))
12008 check(" 1", 1LL, 0);
12009 check(" 0", 0LL, 0);
12010 check("-1", -1LL, 0);
12011 check("-9223372036854775808", -9223372036854775808LL, 0);
12012 check("-9223372036854775808", -9223372036854775808LL, 0);
12013 check(" 9223372036854775807", 9223372036854775807LL, 0);
12014 check("-9223372036854775808", -9223372036854775808LL, 0);
12015 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12016 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12022 if eval $compile; then
12025 ok) echo "Your strtoll() seems to be working okay." ;;
12027 Your strtoll() doesn't seem to be working okay.
12033 echo "(I can't seem to compile the test program--assuming it doesn't)"
12039 : see if strtoq exists
12040 set strtoq d_strtoq
12043 : see if strtoul exists
12044 set strtoul d_strtoul
12047 case "$d_strtoul" in
12050 Checking whether your strtoul() works okay...
12052 $cat >try.c <<'EOCP'
12055 extern unsigned long int strtoul(char *s, char **, int);
12056 static int bad = 0;
12057 void check(char *s, unsigned long eul, int een) {
12060 gul = strtoul(s, 0, 10);
12061 if (!((gul == eul) && (errno == een)))
12065 check(" 1", 1L, 0);
12066 check(" 0", 0L, 0);
12068 case "$longsize" in
12070 $cat >>try.c <<'EOCP'
12071 check("18446744073709551615", 18446744073709551615UL, 0);
12072 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12073 #if 0 /* strtoul() for /^-/ strings is undefined. */
12074 check("-1", 18446744073709551615UL, 0);
12075 check("-18446744073709551614", 2, 0);
12076 check("-18446744073709551615", 1, 0);
12077 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12078 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12083 $cat >>try.c <<'EOCP'
12084 check("4294967295", 4294967295UL, 0);
12085 check("4294967296", 4294967295UL, ERANGE);
12086 #if 0 /* strtoul() for /^-/ strings is undefined. */
12087 check("-1", 4294967295UL, 0);
12088 check("-4294967294", 2, 0);
12089 check("-4294967295", 1, 0);
12090 check("-4294967296", 4294967295UL, ERANGE);
12091 check("-4294967297", 4294967295UL, ERANGE);
12096 : Should we write these tests to be more portable by sprintf-ing
12097 : ~0 and then manipulating that char string as input for strtol?
12100 $cat >>try.c <<'EOCP'
12107 if eval $compile; then
12109 ok) echo "Your strtoul() seems to be working okay." ;;
12111 Your strtoul() doesn't seem to be working okay.
12120 : see if strtoull exists
12121 set strtoull d_strtoull
12124 case "$d_longlong-$d_strtoull" in
12127 Checking whether your strtoull() works okay...
12129 $cat >try.c <<'EOCP'
12132 #define strtoull __strtoull
12135 extern unsigned long long int strtoull(char *s, char **, int);
12136 static int bad = 0;
12137 int check(char *s, long long eull, int een) {
12140 gull = strtoull(s, 0, 10);
12141 if (!((gull == eull) && (errno == een)))
12145 check(" 1", 1LL, 0);
12146 check(" 0", 0LL, 0);
12147 check("18446744073709551615", 18446744073709551615ULL, 0);
12148 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12149 #if 0 /* strtoull() for /^-/ strings is undefined. */
12150 check("-1", 18446744073709551615ULL, 0);
12151 check("-18446744073709551614", 2LL, 0);
12152 check("-18446744073709551615", 1LL, 0);
12153 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12154 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12161 if eval $compile; then
12163 ok) echo "Your strtoull() seems to be working okay." ;;
12165 Your strtoull() doesn't seem to be working okay.
12167 d_strtoull="$undef"
12174 : see if strtouq exists
12175 set strtouq d_strtouq
12178 case "$d_strtouq" in
12181 Checking whether your strtouq() works okay...
12183 $cat >try.c <<'EOCP'
12186 extern unsigned long long int strtouq(char *s, char **, int);
12187 static int bad = 0;
12188 void check(char *s, unsigned long long eull, int een) {
12189 unsigned long long gull;
12191 gull = strtouq(s, 0, 10);
12192 if (!((gull == eull) && (errno == een)))
12196 check(" 1", 1LL, 0);
12197 check(" 0", 0LL, 0);
12198 check("18446744073709551615", 18446744073709551615ULL, 0);
12199 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12200 #if 0 /* strtouq() for /^-/ strings is undefined. */
12201 check("-1", 18446744073709551615ULL, 0);
12202 check("-18446744073709551614", 2LL, 0);
12203 check("-18446744073709551615", 1LL, 0);
12204 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12205 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12213 if eval $compile; then
12215 ok) echo "Your strtouq() seems to be working okay." ;;
12217 Your strtouq() doesn't seem to be working okay.
12226 : see if strxfrm exists
12227 set strxfrm d_strxfrm
12230 : see if symlink exists
12231 set symlink d_symlink
12234 : see if syscall exists
12235 set syscall d_syscall
12238 : see if sysconf exists
12239 set sysconf d_sysconf
12242 : see if system exists
12243 set system d_system
12246 : see if tcgetpgrp exists
12247 set tcgetpgrp d_tcgetpgrp
12250 : see if tcsetpgrp exists
12251 set tcsetpgrp d_tcsetpgrp
12254 : see if prototype for telldir is available
12256 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12259 : see if this is a sys/times.h system
12260 set sys/times.h i_systimes
12263 : see if times exists
12265 if set times val -f d_times; eval $csym; $val; then
12266 echo 'times() found.' >&4
12269 case "$i_systimes" in
12270 "$define") inc='sys/times.h';;
12272 rp="What is the type returned by times() on this system?"
12273 set clock_t clocktype long stdio.h sys/types.h $inc
12276 echo 'times() NOT found, hope that will do.' >&4
12281 : see if truncate exists
12282 set truncate d_truncate
12285 : see if tzname[] exists
12287 if set tzname val -a d_tzname; eval $csym; $val; then
12289 echo 'tzname[] found.' >&4
12292 echo 'tzname[] NOT found.' >&4
12297 : see if umask exists
12301 : see if ustat exists
12305 : backward compatibility for d_hvfork
12306 if test X$d_hvfork != X; then
12307 d_vfork="$d_hvfork"
12310 : see if there is a vfork
12315 : Ok, but do we want to use it. vfork is reportedly unreliable in
12316 : perl on Solaris 2.x, and probably elsewhere.
12320 case "$usevfork" in
12326 Perl can only use a vfork() that doesn't suffer from strict
12327 restrictions on calling functions or modifying global data in
12328 the child. For example, glibc-2.1 contains such a vfork()
12329 that is unsuitable. If your system provides a proper fork()
12330 call, chances are that you do NOT want perl to use vfork().
12333 rp="Do you still want to use vfork()?"
12338 echo "Ok, we won't use vfork()."
12347 $define) usevfork='true';;
12348 *) usevfork='false';;
12351 : see if this is an sysdir system
12352 set sys/dir.h i_sysdir
12355 : see if this is an sysndir system
12356 set sys/ndir.h i_sysndir
12359 : see if closedir exists
12360 set closedir d_closedir
12363 case "$d_closedir" in
12366 echo "Checking whether closedir() returns a status..." >&4
12367 cat > closedir.c <<EOM
12368 #$i_dirent I_DIRENT /**/
12369 #$i_sysdir I_SYS_DIR /**/
12370 #$i_sysndir I_SYS_NDIR /**/
12371 #$i_systypes I_SYS_TYPES /**/
12373 #if defined(I_SYS_TYPES)
12374 #include <sys/types.h>
12376 #if defined(I_DIRENT)
12377 #include <dirent.h>
12378 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12379 #include <sys/dir.h>
12383 #include <sys/ndir.h>
12387 #include <ndir.h> /* may be wrong in the future */
12389 #include <sys/dir.h>
12394 int main() { return closedir(opendir(".")); }
12397 if eval $compile_ok; then
12398 if ./closedir > /dev/null 2>&1 ; then
12399 echo "Yes, it does."
12402 echo "No, it doesn't."
12406 echo "(I can't seem to compile the test program--assuming it doesn't)"
12414 set d_void_closedir
12417 : see if there is a wait4
12421 : see if waitpid exists
12422 set waitpid d_waitpid
12425 : see if wcstombs exists
12426 set wcstombs d_wcstombs
12429 : see if wctomb exists
12430 set wctomb d_wctomb
12433 : preserve RCS keywords in files with variable substitution, grrr
12438 Revision='$Revision'
12440 case "$crosscompile" in
12441 ''|[nN]*) crosscompile="$undef" ;;
12445 next|rhapsody|darwin) multiarch="$define" ;;
12447 case "$multiarch" in
12448 ''|[nN]*) multiarch="$undef" ;;
12451 : check for alignment requirements
12453 case "$crosscompile$multiarch" in
12456 You seem to be either cross-compiling or doing a multiarchitecture build,
12457 skipping the memory alignment check.
12460 case "$alignbytes" in
12461 '') alignbytes=8 ;;
12465 case "$alignbytes" in
12466 '') echo "Checking alignment constraints..." >&4
12467 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12468 $cat >try.c <<'EOCP'
12469 typedef long double NV;
12472 $cat >try.c <<'EOCP'
12476 $cat >>try.c <<'EOCP'
12484 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12489 if eval $compile_ok; then
12493 echo "(I can't seem to compile the test program...)"
12496 *) dflt="$alignbytes"
12499 rp="Doubles must be aligned on a how-many-byte boundary?"
12507 : set the base revision
12510 : check for ordering of bytes in a long
12512 case "$crosscompile$multiarch" in
12515 You seem to be either cross-compiling or doing a multiarchitecture build,
12516 skipping the byteorder check.
12522 case "$byteorder" in
12525 In the following, larger digits indicate more significance. A big-endian
12526 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12527 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12528 machines may have weird orders like 3412. A Cray will report 87654321,
12529 an Alpha will report 12345678. If the test program works the default is
12531 I'm now running the test program...
12533 $cat >try.c <<'EOCP'
12540 char c[sizeof(long)];
12543 if (sizeof(long) > 4)
12544 u.l = (0x08070605L << 32) | 0x04030201L;
12547 for (i = 0; i < sizeof(long); i++)
12548 printf("%c", u.c[i]+'0');
12555 if eval $compile && ./try > /dev/null; then
12558 [1-4][1-4][1-4][1-4]|12345678|87654321)
12559 echo "(The test program ran ok.)"
12560 echo "byteorder=$dflt"
12563 ????|????????) echo "(The test program ran ok.)" ;;
12564 *) echo "(The test program didn't run right for some reason.)" ;;
12569 (I can't seem to compile the test program. Guessing big-endian...)
12572 case "$xxx_prompt" in
12574 rp="What is the order of bytes in a long?"
12588 : how do we catenate cpp tokens here?
12590 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12591 $cat >cpp_stuff.c <<'EOCP'
12592 #define RCAT(a,b)a/**/b
12593 #define ACAT(a,b)a ## b
12597 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12598 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12599 echo "Oh! Smells like ANSI's been here." >&4
12600 echo "We can catify or stringify, separately or together!"
12602 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12603 echo "Ah, yes! The good old days!" >&4
12604 echo "However, in the good old days we don't know how to stringify and"
12605 echo "catify at the same time."
12609 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12610 to have to edit the values of CAT[2-5] in config.h...
12612 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12616 : see if this is a db.h system
12622 : Check db version.
12624 echo "Checking Berkeley DB version ..." >&4
12630 #include <sys/types.h>
12635 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12636 int Major, Minor, Patch ;
12637 unsigned long Version ;
12638 (void)db_version(&Major, &Minor, &Patch) ;
12639 printf("You have Berkeley DB Version 2 or greater\n");
12641 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12642 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12643 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12644 Major, Minor, Patch) ;
12646 /* check that db.h & libdb are compatible */
12647 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12648 printf("db.h and libdb are incompatible\n") ;
12652 printf("db.h and libdb are compatible\n") ;
12654 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12655 + DB_VERSION_PATCH ;
12657 /* needs to be >= 2.3.4 */
12658 if (Version < 2003004) {
12659 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12660 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12666 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12667 printf("You have Berkeley DB Version 1\n");
12668 exit(0); /* DB version < 2: the coast is clear. */
12670 exit(1); /* <db.h> not Berkeley DB? */
12676 if eval $compile_ok && ./try; then
12677 echo 'Looks OK.' >&4
12679 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12683 : Remove db from list of libraries to use
12684 echo "Removing unusable -ldb from library list" >&4
12685 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12688 echo "libs = $libs" >&4
12698 : Check the return type needed for hash
12700 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12706 #include <sys/types.h>
12709 #ifndef DB_VERSION_MAJOR
12710 u_int32_t hash_cb (ptr, size)
12718 info.hash = hash_cb;
12722 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12723 if $contains warning try.out >>/dev/null 2>&1 ; then
12726 db_hashtype='u_int32_t'
12729 : XXX Maybe we should just give up here.
12730 db_hashtype=u_int32_t
12732 echo "Help: I can't seem to compile the db test program." >&4
12733 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12736 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12738 *) db_hashtype=u_int32_t
12743 : Check the return type needed for prefix
12745 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12751 #include <sys/types.h>
12754 #ifndef DB_VERSION_MAJOR
12755 size_t prefix_cb (key1, key2)
12763 info.prefix = prefix_cb;
12767 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12768 if $contains warning try.out >>/dev/null 2>&1 ; then
12769 db_prefixtype='int'
12771 db_prefixtype='size_t'
12774 db_prefixtype='size_t'
12775 : XXX Maybe we should just give up here.
12777 echo "Help: I can't seem to compile the db test program." >&4
12778 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12781 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12783 *) db_prefixtype='size_t'
12787 : check for void type
12789 echo "Checking to see how well your C compiler groks the void type..." >&4
12790 case "$voidflags" in
12792 $cat >try.c <<'EOCP'
12798 extern void moo(); /* function returning void */
12799 void (*goo)(); /* ptr to func returning void */
12801 void *hue; /* generic ptr */
12814 int main() { sub(); }
12816 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12817 voidflags=$defvoidused
12818 echo "Good. It appears to support void to the level $package wants.">&4
12819 if $contains warning .out >/dev/null 2>&1; then
12820 echo "However, you might get some warnings that look like this:"
12824 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12825 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12826 echo "It supports 1..."
12827 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12828 echo "It also supports 2..."
12829 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12831 echo "And it supports 4 but not 8 definitely."
12833 echo "It doesn't support 4..."
12834 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12836 echo "But it supports 8."
12839 echo "Neither does it support 8."
12843 echo "It does not support 2..."
12844 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12846 echo "But it supports 4 and 8."
12848 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12850 echo "And it supports 4 but has not heard about 8."
12852 echo "However it supports 8 but not 4."
12857 echo "There is no support at all for void."
12862 case "$voidflags" in
12864 *) $cat >&4 <<'EOM'
12865 Support flag bits are:
12866 1: basic void declarations.
12867 2: arrays of pointers to functions returning void.
12868 4: operations between pointers to and addresses of void functions.
12869 8: generic void pointers.
12872 rp="Your void support flags add up to what?"
12880 : How can we generate normalized random numbers ?
12882 echo "Looking for a random number function..." >&4
12883 case "$randfunc" in
12885 if set drand48 val -f; eval $csym; $val; then
12887 echo "Good, found drand48()." >&4
12888 elif set random val -f; eval $csym; $val; then
12890 echo "OK, found random()." >&4
12893 echo "Yick, looks like I have to use rand()." >&4
12904 *-Dmy_rand=*|*-Dmy_srand=*)
12905 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12906 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12907 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12908 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12912 while $test "$cont"; do
12913 rp="Use which function to generate random numbers?"
12915 if $test "$ans" = "$dflt"; then
12921 if set $ans val -f; eval $csym; $val; then
12925 rp="I cannot find function $ans. Use that name anyway?"
12934 case "$randfunc" in
12936 drand01="drand48()"
12942 case "$randbits" in
12944 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12946 #$i_unistd I_UNISTD
12947 #$i_stdlib I_STDLIB
12950 # include <unistd.h>
12953 # include <stdlib.h>
12958 register unsigned long tmp;
12959 register unsigned long max = 0L;
12961 for (i = 1000; i; i--) {
12962 tmp = (unsigned long) $randfunc();
12963 if (tmp > max) max = tmp;
12965 for (i = 0; max; i++)
12971 if eval $compile_ok; then
12975 echo "(I can't seem to compile the test program...)"
12982 rp="How many bits does your $randfunc() function produce?"
12986 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12987 seedfunc="s$randfunc"
12988 randseedtype=unsigned
12992 rp="How many bits does your $randfunc() function produce?"
12995 seedfunc="s$randfunc"
12996 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12997 if set $seedfunc val -f; eval $csym; $val; then
12998 echo "(Using $seedfunc() to seed random generator)"
13000 echo "(Warning: no $seedfunc() to seed random generator)"
13003 randseedtype=unsigned
13011 echo "Determining whether or not we are on an EBCDIC system..." >&4
13012 $cat >tebcdic.c <<'EOM'
13015 if ('M'==0xd4) return 0;
13022 if eval $compile_ok; then
13024 echo "You seem to speak EBCDIC." >&4
13027 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13030 echo "I'm unable to compile the test program." >&4
13031 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13033 $rm -f tebcdic.c tebcdic
13039 Checking how to flush all pending stdio output...
13041 # I only know how to find the first 32 possibly open files on SunOS.
13042 # See also hints/sunos_4_1.sh and util.c --AD
13044 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13046 $cat >>try.c <<EOCP
13048 #$i_unistd I_UNISTD
13050 # include <unistd.h>
13052 #$d_sysconf HAS_SYSCONF
13053 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13054 #ifdef HAS_STDIO_STREAM_ARRAY
13055 # define STDIO_STREAM_ARRAY $stdio_stream_array
13058 FILE* p = fopen("try.out", "w");
13062 # ifdef TRY_FPRINTF
13066 #ifdef TRY_FFLUSH_NULL
13069 #ifdef TRY_FFLUSH_ALL
13071 long open_max = -1;
13072 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13073 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13075 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13076 open_max = sysconf(_SC_OPEN_MAX);
13079 open_max = FOPEN_MAX;
13082 open_max = OPEN_MAX;
13091 # ifdef HAS_STDIO_STREAM_ARRAY
13092 if (open_max > 0) {
13094 for (i = 0; i < open_max; i++)
13095 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13096 STDIO_STREAM_ARRAY[i]._file < open_max &&
13097 STDIO_STREAM_ARRAY[i]._flag)
13098 fflush(&STDIO_STREAM_ARRAY[i]);
13106 : first we have to find out how _not_ to flush
13107 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13109 set try -DTRY_FPUTC
13110 if eval $compile; then
13112 ./try$exe_ext 2>/dev/null
13113 if $test ! -s try.out -a "X$?" = X42; then
13119 set try -DTRY_FPRINTF
13121 if eval $compile; then
13123 ./try$exe_ext 2>/dev/null
13124 if $test ! -s try.out -a "X$?" = X42; then
13125 output=-DTRY_FPRINTF
13131 : check for fflush NULL behaviour
13132 case "$fflushNULL" in
13133 '') set try -DTRY_FFLUSH_NULL $output
13134 if eval $compile; then
13136 ./try$exe_ext 2>/dev/null
13138 if $test -s try.out -a "X$code" = X42; then
13139 fflushNULL="`$cat try.out`"
13141 if $test "X$code" != X42; then
13143 (If this test failed, don't worry, we'll try another method shortly.)
13148 $rm -f core try.core core.try.*
13149 case "$fflushNULL" in
13151 Your fflush(NULL) works okay for output streams.
13152 Let's see if it clobbers input pipes...
13154 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13155 # bug that improperly flushes the input end of pipes. So we avoid the
13156 # autoflush on fork/system/exec support for now. :-(
13157 $cat >tryp.c <<EOCP
13160 main(int argc, char **argv)
13166 while ((i = getc(stdin)) != -1
13167 && (*bp++ = i) != '\n'
13168 && bp < &buf[1024])
13171 fprintf(stdout, "%s", buf);
13179 fflushNULL="$define"
13181 if eval $compile; then
13183 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13184 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13186 fflush(NULL) seems to behave okay with input streams.
13188 fflushNULL="$define"
13191 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13193 fflushNULL="$undef"
13196 $rm -f core tryp.c tryp.core core.tryp.*
13199 Your fflush(NULL) isn't working (contrary to ANSI C).
13201 fflushNULL="$undef"
13204 Cannot figure out whether your fflush(NULL) works or not.
13205 I'm assuming it doesn't (contrary to ANSI C).
13207 fflushNULL="$undef"
13211 $define|true|[yY]*)
13212 fflushNULL="$define"
13215 fflushNULL="$undef"
13218 : check explicit looping only if NULL did not work, and if the pipe
13219 : bug does not show up on an explicit flush too
13220 case "$fflushNULL" in
13222 $cat >tryp.c <<EOCP
13225 main(int argc, char **argv)
13231 while ((i = getc(stdin)) != -1
13232 && (*bp++ = i) != '\n'
13233 && bp < &buf[1024])
13236 fprintf(stdout, "%s", buf);
13245 if eval $compile; then
13247 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13248 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13250 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13252 : now check for fflushall behaviour
13253 case "$fflushall" in
13254 '') set try -DTRY_FFLUSH_ALL $output
13255 if eval $compile; then
13257 (Now testing the other method--but note that this also may fail.)
13260 ./try$exe_ext 2>/dev/null
13261 if $test -s try.out -a "X$?" = X42; then
13262 fflushall="`$cat try.out`"
13265 $rm -f core try.core core.try.*
13266 case "$fflushall" in
13268 Whew. Flushing explicitly all the stdio streams works.
13270 fflushall="$define"
13273 Sigh. Flushing explicitly all the stdio streams doesn't work.
13278 Cannot figure out whether flushing stdio streams explicitly works or not.
13279 I'm assuming it doesn't.
13285 "$define"|true|[yY]*)
13286 fflushall="$define"
13294 All is futile. Even fflush(stdin) clobbers input pipes!
13301 $rm -f core tryp.c tryp.core core.tryp.*
13303 *) fflushall="$undef"
13307 case "$fflushNULL$fflushall" in
13310 OK, I give up. I cannot figure out how to flush pending stdio output.
13311 We won't be flushing handles at all before fork/exec/popen.
13315 $rm -f try.* try$exe_ext
13317 : Store the full pathname to the ar program for use in the C program
13318 : Respect a hint or command line value for full_ar.
13323 : Store the full pathname to the sed program for use in the C program
13326 : see what type gids are declared as in the kernel
13328 echo "Looking for the type for group ids returned by getgid()."
13329 set gid_t gidtype xxx stdio.h sys/types.h
13333 xxx=`./findhdr sys/user.h`
13334 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13336 unsigned) dflt="$1 $2" ;;
13340 *) dflt="$gidtype";;
13343 gid_t) echo "gid_t found." ;;
13344 *) rp="What is the type for group ids returned by getgid()?"
13352 *_t) zzz="$gidtype" ;;
13355 echo "Checking the size of $zzz..." >&4
13357 #include <sys/types.h>
13360 printf("%d\n", (int)sizeof($gidtype));
13365 if eval $compile_ok; then
13369 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13372 echo "Your $zzz is $gidsize bytes long."
13377 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13383 *_t) zzz="$gidtype" ;;
13386 echo "Checking the sign of $zzz..." >&4
13388 #include <sys/types.h>
13399 if eval $compile; then
13403 echo "(I can't execute the test program--guessing unsigned.)" >&4
13407 1) echo "Your $zzz is unsigned." ;;
13408 -1) echo "Your $zzz is signed." ;;
13414 echo "(I can't compile the test program--guessing unsigned.)" >&4
13420 if $test X"$quadtype" != X; then
13422 echo "Checking how to print 64-bit integers..." >&4
13424 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13425 $cat >try.c <<'EOCP'
13426 #include <sys/types.h>
13429 int q = 12345678901;
13430 printf("%ld\n", q);
13434 if eval $compile; then
13435 yyy=`./try$exe_ext`
13438 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13439 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13440 echo "We will use %d."
13446 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13447 $cat >try.c <<'EOCP'
13448 #include <sys/types.h>
13451 long q = 12345678901;
13452 printf("%ld\n", q);
13456 if eval $compile; then
13457 yyy=`./try$exe_ext`
13460 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13461 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13462 echo "We will use %ld."
13468 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13469 $cat >try.c <<'EOCP'
13470 #include <sys/types.h>
13471 #include <inttypes.h>
13474 int64_t q = 12345678901;
13475 printf("%" PRId64 "\n", q);
13479 if eval $compile; then
13480 yyy=`./try$exe_ext`
13483 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13484 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13485 echo "We will use the C9X style."
13491 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13492 $cat >try.c <<'EOCP'
13493 #include <sys/types.h>
13496 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13497 printf("%lld\n", q);
13501 if eval $compile; then
13502 yyy=`./try$exe_ext`
13505 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13506 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13507 echo "We will use the %lld style."
13513 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13515 #include <sys/types.h>
13518 $quadtype q = 12345678901;
13519 printf("%Ld\n", q);
13523 if eval $compile; then
13524 yyy=`./try$exe_ext`
13527 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13528 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13529 echo "We will use %Ld."
13535 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13537 #include <sys/types.h>
13540 $quadtype q = 12345678901;
13541 printf("%qd\n", q);
13545 if eval $compile; then
13546 yyy=`./try$exe_ext`
13549 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13550 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13551 echo "We will use %qd."
13557 if $test X"$sPRId64" = X; then
13558 echo "Cannot figure out how to print 64-bit integers." >&4
13566 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13567 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13569 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13570 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13576 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13578 if $test X"$ivsize" = X8; then
13579 ivdformat="$sPRId64"
13580 uvuformat="$sPRIu64"
13581 uvoformat="$sPRIo64"
13582 uvxformat="$sPRIx64"
13583 uvXUformat="$sPRIXU64"
13585 if $test X"$ivsize" = X"$longsize"; then
13592 if $test X"$ivsize" = X"$intsize"; then
13600 if $test X"$ivsize" = X"$shortsize"; then
13611 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13612 nveformat="$sPRIeldbl"
13613 nvfformat="$sPRIfldbl"
13614 nvgformat="$sPRIgldbl"
13615 nvEUformat="$sPRIEUldbl"
13616 nvFUformat="$sPRIFUldbl"
13617 nvGUformat="$sPRIGUldbl"
13627 case "$ivdformat" in
13628 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13635 $echo "Checking the format string to be used for gids..." >&4
13638 -1) if $test X"$gidsize" = X"$ivsize"; then
13639 gidformat="$ivdformat"
13641 if $test X"$gidsize" = X"$longsize"; then
13644 if $test X"$gidsize" = X"$intsize"; then
13647 if $test X"$gidsize" = X"$shortsize"; then
13654 *) if $test X"$gidsize" = X"$uvsize"; then
13655 gidformat="$uvuformat"
13657 if $test X"$gidsize" = X"$longsize"; then
13660 if $test X"$gidsize" = X"$intsize"; then
13663 if $test X"$gidsize" = X"$shortsize"; then
13672 : see if getgroups exists
13673 set getgroups d_getgrps
13676 : see if setgroups exists
13677 set setgroups d_setgrps
13681 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13683 case "$d_getgrps$d_setgrps" in
13685 case "$groupstype" in
13686 '') dflt="$gidtype" ;;
13687 *) dflt="$groupstype" ;;
13690 What type of pointer is the second argument to getgroups() and setgroups()?
13691 Usually this is the same as group ids, $gidtype, but not always.
13694 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13698 *) groupstype="$gidtype";;
13702 echo "Checking if your $make program sets \$(MAKE)..." >&4
13703 case "$make_set_make" in
13705 $sed 's/^X //' > testmake.mak << 'EOF'
13707 X @echo 'maketemp="$(MAKE)"'
13709 case "`$make -f testmake.mak 2>/dev/null`" in
13710 *maketemp=*) make_set_make='#' ;;
13711 *) make_set_make="MAKE=$make" ;;
13713 $rm -f testmake.mak
13716 case "$make_set_make" in
13717 '#') echo "Yup, it does.";;
13718 *) echo "Nope, it doesn't.";;
13721 : see what type is used for mode_t
13722 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13723 set mode_t modetype int stdio.h sys/types.h
13726 : see if stdarg is available
13728 if $test `./findhdr stdarg.h`; then
13729 echo "<stdarg.h> found." >&4
13732 echo "<stdarg.h> NOT found." >&4
13736 : see if varags is available
13738 if $test `./findhdr varargs.h`; then
13739 echo "<varargs.h> found." >&4
13741 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13744 : set up the varargs testing programs
13745 $cat > varargs.c <<EOP
13747 #include <stdarg.h>
13750 #include <varargs.h>
13754 int f(char *p, ...)
13768 p = va_arg(ap, char *);
13773 $cat > varargs <<EOP
13775 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13784 : now check which varargs header should be included
13789 if `./varargs I_STDARG`; then
13791 elif `./varargs I_VARARGS`; then
13796 if `./varargs I_VARARGS`; then
13803 echo "I could not find the definition for va_dcl... You have problems..." >&4
13804 val="$undef"; set i_stdarg; eval $setvar
13805 val="$undef"; set i_varargs; eval $setvar
13810 case "$i_varhdr" in
13812 val="$define"; set i_stdarg; eval $setvar
13813 val="$undef"; set i_varargs; eval $setvar
13816 val="$undef"; set i_stdarg; eval $setvar
13817 val="$define"; set i_varargs; eval $setvar
13820 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13824 : see if we need va_copy
13826 case "$i_stdarg" in
13829 #include <stdarg.h>
13831 #$i_stdlib I_STDLIB
13833 #include <stdlib.h>
13835 #include <signal.h>
13838 ivfprintf(FILE *f, const char *fmt, va_list *valp)
13840 return vfprintf(f, fmt, *valp);
13844 myvfprintf(FILE *f, const char *fmt, va_list val)
13846 return ivfprintf(f, fmt, &val);
13850 myprintf(char *fmt, ...)
13853 va_start(val, fmt);
13854 return myvfprintf(stdout, fmt, val);
13858 main(int ac, char **av)
13860 signal(SIGSEGV, exit);
13862 myprintf("%s%cs all right, then\n", "that", '\'');
13867 if eval $compile && ./try 2>&1 >/dev/null; then
13869 "that's all right, then")
13875 yes) echo "It seems that you don't need va_copy()." >&4
13876 need_va_copy="$undef"
13878 *) echo "It seems that va_copy() or similar will be needed." >&4
13879 need_va_copy="$define"
13882 $rm -f try.* core core.* *.core *.core.*
13884 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13888 : define a fucntion to check prototypes
13889 $cat > protochk <<EOSH
13892 optimize="$optimize"
13894 prototype="$prototype"
13899 $cat >> protochk <<'EOSH'
13904 while test $# -ge 2; do
13906 $define) echo "#include <$2>" >> try.c ;;
13907 literal) echo "$2" >> try.c ;;
13911 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13912 cat >> try.c <<'EOCP'
13913 #ifdef CAN_PROTOTYPE
13914 #define _(args) args
13919 echo "$foo" >> try.c
13920 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13921 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13927 $eunicefix protochk
13929 : see what type is used for size_t
13930 rp="What is the type used for the length parameter for string functions?"
13931 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13934 : check for type of arguments to gethostbyaddr.
13935 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13936 case "$d_gethbyaddr" in
13940 Checking to see what type of arguments are accepted by gethostbyaddr().
13942 hdrs="$define sys/types.h
13943 $d_socket sys/socket.h
13944 $i_niin netinet/in.h
13946 $i_unistd unistd.h"
13947 : The first arg can 'char *' or 'void *'
13948 : The second arg is some of integral type
13949 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13950 for yyy in size_t long int; do
13951 case "$netdb_host_type" in
13952 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13953 if ./protochk "$try" $hdrs; then
13954 echo "Your system accepts $xxx for the first arg."
13955 echo "...and $yyy for the second arg."
13956 netdb_host_type="$xxx"
13957 netdb_hlen_type="$yyy"
13963 : In case none of those worked, prompt the user.
13964 case "$netdb_host_type" in
13965 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13968 netdb_host_type=$ans
13969 rp='What is the type for the 2nd argument to gethostbyaddr?'
13972 netdb_hlen_type=$ans
13976 *) : no gethostbyaddr, so pick harmless defaults
13977 netdb_host_type='char *'
13978 netdb_hlen_type="$sizetype"
13981 # Remove the "const" if needed. -- but then we'll have a
13983 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13986 : check for type of argument to gethostbyname.
13987 if test "X$netdb_name_type" = X ; then
13988 case "$d_gethbyname" in
13992 Checking to see what type of argument is accepted by gethostbyname().
13994 hdrs="$define sys/types.h
13995 $d_socket sys/socket.h
13996 $i_niin netinet/in.h
13998 $i_unistd unistd.h"
13999 for xxx in "const char *" "char *"; do
14000 case "$netdb_name_type" in
14001 '') try="extern struct hostent *gethostbyname($xxx);"
14002 if ./protochk "$try" $hdrs; then
14003 echo "Your system accepts $xxx."
14004 netdb_name_type="$xxx"
14009 : In case none of those worked, prompt the user.
14010 case "$netdb_name_type" in
14011 '') rp='What is the type for the 1st argument to gethostbyname?'
14014 netdb_name_type=$ans
14018 *) : no gethostbyname, so pick harmless default
14019 netdb_name_type='char *'
14024 : check for type of 1st argument to getnetbyaddr.
14025 if test "X$netdb_net_type" = X ; then
14026 case "$d_getnbyaddr" in
14030 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14032 hdrs="$define sys/types.h
14033 $d_socket sys/socket.h
14034 $i_niin netinet/in.h
14036 $i_unistd unistd.h"
14037 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14038 case "$netdb_net_type" in
14039 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14040 if ./protochk "$try" $hdrs; then
14041 echo "Your system accepts $xxx."
14042 netdb_net_type="$xxx"
14047 : In case none of those worked, prompt the user.
14048 case "$netdb_net_type" in
14049 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14052 netdb_net_type=$ans
14056 *) : no getnetbyaddr, so pick harmless default
14057 netdb_net_type='long'
14061 : locate the preferred pager for this system
14067 [a-zA-Z]:/*) dflt=$pg;;
14071 [a-zA-Z]:/*) dflt=$more;;
14075 [a-zA-Z]:/*) dflt=$less;;
14078 '') dflt=/usr/ucb/more;;
14085 rp='What pager is used on your system?'
14089 : see what type pids are declared as in the kernel
14090 rp="What is the type of process ids on this system?"
14091 set pid_t pidtype int stdio.h sys/types.h
14094 : Find earliest binary compatible site_perl subdirectory perl can use.
14095 case "$bincompat5005" in
14096 "$define") xs_apiversion='5.005' ;;
14097 *) xs_apiversion=$version ;; # The current site_perl version.
14099 : Find earliest pure perl site_perl subdirectory perl can use.
14100 : The versioned directories started at 5.005.
14101 pm_apiversion='5.005'
14103 : check for length of pointer
14107 echo "Checking to see how big your pointers are..." >&4
14108 if test "$voidflags" -gt 7; then
14109 echo '#define VOID_PTR char *' > try.c
14111 echo '#define VOID_PTR void *' > try.c
14113 $cat >>try.c <<'EOCP'
14117 printf("%d\n", (int)sizeof(VOID_PTR));
14122 if eval $compile_ok; then
14124 echo "Your pointers are $ptrsize bytes long."
14127 echo "(I can't seem to compile the test program. Guessing...)" >&4
14128 rp="What is the size of a pointer (in bytes)?"
14136 : see if ar generates random libraries by itself
14138 echo "Checking how to generate random libraries on your machine..." >&4
14139 echo 'int bar1() { return bar2(); }' > bar1.c
14140 echo 'int bar2() { return 2; }' > bar2.c
14141 $cat > foo.c <<'EOP'
14142 int main() { printf("%d\n", bar1()); exit(0); }
14144 $cc $ccflags -c bar1.c >/dev/null 2>&1
14145 $cc $ccflags -c bar2.c >/dev/null 2>&1
14146 $cc $ccflags -c foo.c >/dev/null 2>&1
14147 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14148 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14149 ./foobar >/dev/null 2>&1; then
14150 echo "$ar appears to generate random libraries itself."
14153 elif $ar ts bar$_a >/dev/null 2>&1 &&
14154 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14155 ./foobar >/dev/null 2>&1; then
14156 echo "a table of contents needs to be added with '$ar ts'."
14163 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14164 $test -f $ranlib || ranlib=''
14167 if $test -n "$ranlib"; then
14168 echo "your system has '$ranlib'; we'll use that."
14171 echo "your system doesn't seem to support random libraries"
14172 echo "so we'll use lorder and tsort to order the libraries."
14179 : check for type of arguments to select.
14180 case "$selecttype" in
14181 '') case "$d_select" in
14185 Checking to see what type of arguments are accepted by select().
14187 hdrs="$define sys/types.h
14188 $i_systime sys/time.h
14189 $i_sysselct sys/select.h
14190 $d_socket sys/socket.h"
14191 : The first arg can be int, unsigned, or size_t
14192 : The last arg may or may not be 'const'
14194 : void pointer has been seen but using that
14195 : breaks the selectminbits test
14196 for xxx in 'fd_set *' 'int *'; do
14197 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14198 for tmo in 'struct timeval *' 'const struct timeval *'; do
14200 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14201 if ./protochk "$try" $hdrs; then
14202 echo "Your system accepts $xxx."
14211 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14212 case "$d_fd_set" in
14213 $define) dflt="fd_set *" ;;
14222 *) : no select, so pick a harmless default
14229 : check for the select 'width'
14230 case "$selectminbits" in
14231 '') case "$d_select" in
14235 Checking to see on how many bits at a time your select() operates...
14238 #include <sys/types.h>
14240 #$i_systime I_SYS_TIME
14241 #$i_systimek I_SYS_TIME_KERNEL
14246 # ifdef I_SYS_TIME_KERNEL
14249 # include <sys/time.h>
14250 # ifdef I_SYS_TIME_KERNEL
14254 #$i_sysselct I_SYS_SELECT
14255 #ifdef I_SYS_SELECT
14256 #include <sys/select.h>
14258 #$d_socket HAS_SOCKET
14260 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14264 #define S sizeof(*(b))
14266 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14267 #define NBITS (NBYTES * 8)
14276 fp = fopen("try.c", "r");
14282 b = ($selecttype)s;
14283 for (i = 0; i < NBITS; i++)
14287 select(fd + 1, b, 0, 0, &t);
14288 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14289 printf("%d\n", i + 1);
14294 if eval $compile_ok; then
14295 selectminbits=`./try`
14296 case "$selectminbits" in
14298 Cannot figure out on how many bits at a time your select() operates.
14299 I'll play safe and guess it is 32 bits.
14305 *) bits="$selectminbits bits" ;;
14307 echo "Your select() operates on $bits at a time." >&4
14309 rp='What is the minimum number of bits your select() operates on?'
14310 case "$byteorder" in
14311 1234|12345678) dflt=32 ;;
14316 selectminbits="$val"
14320 *) : no select, so pick a harmless default
14327 : Trace out the files included by signal.h, then look for SIGxxx names.
14328 : Remove SIGARRAYSIZE used by HPUX.
14329 : Remove SIGSTKSIZE used by Linux.
14330 : Remove SIGSTKSZ used by Posix.
14331 : Remove SIGTYP void lines used by OS2.
14332 : Some cpps, like os390, dont give the file name anywhere
14333 if [ "X$fieldn" = X ]; then
14334 : Just make some guesses. We check them later.
14335 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14337 xxx=`echo '#include <signal.h>' |
14338 $cppstdin $cppminus $cppflags 2>/dev/null |
14339 $grep '^[ ]*#.*include' |
14340 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14342 : Check this list of files to be sure we have parsed the cpp output ok.
14343 : This will also avoid potentially non-existent files, such
14346 for xx in $xxx /dev/null ; do
14347 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14349 : If we have found no files, at least try signal.h
14350 case "$xxxfiles" in
14351 '') xxxfiles=`./findhdr signal.h` ;;
14354 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14355 print substr($2, 4, 20)
14357 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14358 print substr($3, 4, 20)
14360 : Append some common names just in case the awk scan failed.
14361 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14362 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14363 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14364 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14365 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14367 : generate a few handy files for later
14368 $cat > signal.c <<'EOCP'
14369 #include <sys/types.h>
14370 #include <signal.h>
14374 /* Strange style to avoid deeply-nested #if/#else/#endif */
14377 # define NSIG (_NSIG)
14383 # define NSIG (SIGMAX+1)
14389 # define NSIG (SIG_MAX+1)
14395 # define NSIG (MAXSIG+1)
14401 # define NSIG (MAX_SIG+1)
14406 # ifdef SIGARRAYSIZE
14407 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14413 # define NSIG (_sys_nsig) /* Solaris 2.5 */
14417 /* Default to some arbitrary number that's big enough to get most
14418 of the common signals.
14424 printf("NSIG %d\n", NSIG);
14430 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14432 printf "#ifdef SIG"; printf $1; printf "\n"
14433 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14434 printf $1; printf ");\n"
14438 printf "#endif /* JUST_NSIG */\n";
14439 printf "exit(0);\n}\n";
14442 $cat >signal.awk <<'EOP'
14443 BEGIN { ndups = 0 }
14444 $1 ~ /^NSIG$/ { nsig = $2 }
14445 ($1 !~ /^NSIG$/) && (NF == 2) {
14446 if ($2 > maxsig) { maxsig = $2 }
14447 if (sig_name[$2]) {
14448 dup_name[ndups] = $1
14449 dup_num[ndups] = $2
14461 printf("NSIG %d\n", nsig);
14462 for (n = 1; n < nsig; n++) {
14464 printf("%s %d\n", sig_name[n], sig_num[n])
14467 printf("NUM%d %d\n", n, n)
14470 for (n = 0; n < ndups; n++) {
14471 printf("%s %d\n", dup_name[n], dup_num[n])
14475 $cat >signal_cmd <<EOS
14477 if $test -s signal.lst; then
14478 echo "Using your existing signal.lst file"
14483 $cat >>signal_cmd <<'EOS'
14486 if eval $compile_ok; then
14487 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14489 echo "(I can't seem be able to compile the whole test program)" >&4
14490 echo "(I'll try it in little pieces.)" >&4
14491 set signal -DJUST_NSIG
14492 if eval $compile_ok; then
14493 ./signal$_exe > signal.nsg
14496 echo "I can't seem to figure out how many signals you have." >&4
14497 echo "Guessing 50." >&4
14498 echo 'NSIG 50' > signal.nsg
14500 : Now look at all the signal names, one at a time.
14501 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14502 $cat > signal.c <<EOCP
14503 #include <sys/types.h>
14504 #include <signal.h>
14507 printf("$xx %d\n", SIG${xx});
14512 if eval $compile; then
14513 echo "SIG${xx} found."
14514 ./signal$_exe >> signal.ls1
14516 echo "SIG${xx} NOT found."
14519 if $test -s signal.ls1; then
14520 $cat signal.nsg signal.ls1 |
14521 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14525 if $test -s signal.lst; then
14528 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14529 echo 'kill -l' >signal
14530 set X `csh -f <signal`
14534 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14536 echo $@ | $tr ' ' $trnl | \
14537 $awk '{ printf "%s %d\n", $1, ++s; }
14538 END { printf "NSIG %d\n", ++s }' >signal.lst
14540 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14542 chmod a+x signal_cmd
14543 $eunicefix signal_cmd
14545 : generate list of signal names
14547 case "$sig_name_init" in
14549 *) case "$sig_num_init" in
14550 ''|*,*) doinit=yes ;;
14555 echo "Generating a list of signal names and numbers..." >&4
14557 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14558 sig_name=`$awk 'BEGIN { printf "ZERO " }
14559 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14560 sig_num=`$awk 'BEGIN { printf "0 " }
14561 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14562 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14563 !/^NSIG/ { printf "\"%s\", ", $1 }
14564 END { printf "0\n" }' signal.lst`
14565 sig_num_init=`$awk 'BEGIN { printf "0, " }
14566 !/^NSIG/ { printf "%d, ", $2}
14567 END { printf "0\n"}' signal.lst`
14570 echo "The following $sig_count signals are available:"
14572 echo $sig_name | $awk \
14573 'BEGIN { linelen = 0 }
14575 for (i = 1; i <= NF; i++) {
14576 name = "SIG" $i " "
14577 linelen = linelen + length(name)
14578 if (linelen > 70) {
14580 linelen = length(name)
14586 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14589 case "$sizetype" in
14590 *_t) zzz="$sizetype" ;;
14591 *) zzz="filesize" ;;
14593 echo "Checking the size of $zzz..." >&4
14595 #include <sys/types.h>
14598 printf("%d\n", (int)sizeof($sizetype));
14603 if eval $compile_ok; then
14607 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14610 echo "Your $zzz size is $sizesize bytes."
14615 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14619 : check for socklen_t
14621 echo "Checking to see if you have socklen_t..." >&4
14623 #include <sys/types.h>
14624 #$d_socket HAS_SOCKET
14626 #include <sys/socket.h>
14628 int main() { socklen_t x = 16; }
14631 if eval $compile; then
14633 echo "You have socklen_t."
14636 echo "You do not have socklen_t."
14637 case "$sizetype" in
14638 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14645 : see if this is a socks.h system
14646 set socks.h i_socks
14649 : check for type of the size argument to socket calls
14650 case "$d_socket" in
14654 Checking to see what type is the last argument of accept().
14657 case "$d_socklen_t" in
14658 "$define") yyy="$yyy socklen_t"
14660 yyy="$yyy $sizetype int long unsigned"
14661 for xxx in $yyy; do
14662 case "$socksizetype" in
14663 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14664 case "$usesocks" in
14666 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14667 echo "Your system accepts '$xxx *' for the last argument of accept()."
14668 socksizetype="$xxx"
14671 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
14672 echo "Your system accepts '$xxx *' for the last argument of accept()."
14673 socksizetype="$xxx"
14680 : In case none of those worked, prompt the user.
14681 case "$socksizetype" in
14682 '') rp='What is the type for socket address structure sizes?'
14689 *) : no sockets, so pick relatively harmless default
14694 : see what type is used for signed size_t
14695 set ssize_t ssizetype int stdio.h sys/types.h
14698 $cat > ssize.c <<EOM
14700 #include <sys/types.h>
14701 #define Size_t $sizetype
14702 #define SSize_t $dflt
14705 if (sizeof(Size_t) == sizeof(SSize_t))
14707 else if (sizeof(Size_t) == sizeof(int))
14716 if eval $compile_ok && ./ssize > /dev/null; then
14717 ssizetype=`./ssize`
14718 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14721 Help! I can't compile and run the ssize_t test program: please enlighten me!
14722 (This is probably a misconfiguration in your system or libraries, and
14723 you really ought to fix it. Still, I'll try anyway.)
14725 I need a type that is the same size as $sizetype, but is guaranteed to
14726 be signed. Common values are ssize_t, int and long.
14729 rp="What signed type is the same size as $sizetype?"
14733 $rm -f ssize ssize.*
14735 : see what type of char stdio uses.
14737 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14738 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
14739 echo "Your stdio uses unsigned chars." >&4
14740 stdchar="unsigned char"
14742 echo "Your stdio uses signed chars." >&4
14749 : see if time exists
14751 if test "X$d_time" = X -o X"$timetype" = X; then
14752 if set time val -f d_time; eval $csym; $val; then
14753 echo 'time() found.' >&4
14755 rp="What is the type returned by time() on this system?"
14756 set time_t timetype long stdio.h sys/types.h
14759 echo 'time() not found, hope that will do.' >&4
14767 : see what type uids are declared as in the kernel
14769 echo "Looking for the type for user ids returned by getuid()."
14770 set uid_t uidtype xxx stdio.h sys/types.h
14774 xxx=`./findhdr sys/user.h`
14775 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14777 unsigned) dflt="$1 $2" ;;
14781 *) dflt="$uidtype";;
14784 uid_t) echo "uid_t found." ;;
14785 *) rp="What is the type for user ids returned by getuid()?"
14793 *_t) zzz="$uidtype" ;;
14796 echo "Checking the size of $zzz..." >&4
14798 #include <sys/types.h>
14801 printf("%d\n", (int)sizeof($uidtype));
14806 if eval $compile_ok; then
14810 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14813 echo "Your $zzz is $uidsize bytes long."
14818 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14823 *_t) zzz="$uidtype" ;;
14826 echo "Checking the sign of $zzz..." >&4
14828 #include <sys/types.h>
14839 if eval $compile; then
14843 echo "(I can't execute the test program--guessing unsigned.)" >&4
14847 1) echo "Your $zzz is unsigned." ;;
14848 -1) echo "Your $zzz is signed." ;;
14854 echo "(I can't compile the test program--guessing unsigned.)" >&4
14860 $echo "Checking the format string to be used for uids..." >&4
14863 -1) if $test X"$uidsize" = X"$ivsize"; then
14864 uidformat="$ivdformat"
14866 if $test X"$uidsize" = X"$longsize"; then
14869 if $test X"$uidsize" = X"$intsize"; then
14872 if $test X"$uidsize" = X"$shortsize"; then
14879 *) if $test X"$uidsize" = X"$uvsize"; then
14880 uidformat="$uvuformat"
14882 if $test X"$uidsize" = X"$longsize"; then
14885 if $test X"$uidsize" = X"$intsize"; then
14888 if $test X"$uidsize" = X"$shortsize"; then
14897 : see if dbm.h is available
14898 : see if dbmclose exists
14899 set dbmclose d_dbmclose
14902 case "$d_dbmclose" in
14912 *) set rpcsvc/dbm.h i_rpcsvcdbm
14917 *) echo "We won't be including <dbm.h>"
14927 : see if this is a sys/file.h system
14932 : do we need to include sys/file.h ?
14936 if $h_sysfile; then
14938 echo "We'll be including <sys/file.h>." >&4
14941 echo "We won't be including <sys/file.h>." >&4
14951 : see if fcntl.h is there
14956 : see if we can include fcntl.h
14962 echo "We'll be including <fcntl.h>." >&4
14965 if $h_sysfile; then
14966 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14968 echo "We won't be including <fcntl.h>." >&4
14980 : see if this is a iconv.h system
14981 set iconv.h i_iconv
14984 : see if this is a ieeefp.h system
14985 set ieeefp.h i_ieeefp
14988 : see if this is a libutil.h system
14989 set libutil.h i_libutil
14992 : see if locale.h is available
14993 set locale.h i_locale
14996 : see if mach cthreads are available
14997 if test "X$usethreads" = "X$define"; then
14998 set mach/cthreads.h i_machcthr
15001 i_machcthr="$undef"
15006 : see if this is a math.h system
15010 : see if this is a mntent.h system
15011 set mntent.h i_mntent
15014 : see if ndbm.h is available
15019 : see if dbm_open exists
15020 set dbm_open d_dbm_open
15022 case "$d_dbm_open" in
15025 echo "We won't be including <ndbm.h>"
15034 : see if net/errno.h is available
15036 set net/errno.h val
15039 : Unfortunately, it causes problems on some systems. Arrgh.
15042 cat > try.c <<'EOM'
15045 #include <net/errno.h>
15051 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15052 echo "We'll be including <net/errno.h>." >&4
15054 echo "We won't be including <net/errno.h>." >&4
15063 : see if netinet/tcp.h is available
15064 set netinet/tcp.h i_netinettcp
15067 : see if this is a poll.h system
15071 : see if this is a prot.h system
15076 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15077 $cat <<'EOSH' > Cppsym.know
15078 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15079 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15080 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
15081 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
15082 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15083 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15084 bull c cadmus clipper CMU COFF COMPILER_VERSION
15085 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15086 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15087 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15088 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15089 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15090 H3050R H3050RX hbullx20 hcx host_mips
15091 hp200 hp300 hp700 HP700 hp800 hp9000
15092 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15093 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15094 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15095 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15096 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15097 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15098 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15099 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15100 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15101 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15102 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15103 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15104 MATH_HAS_NO_SIDE_EFFECTS
15105 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15106 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15107 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15108 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15109 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15110 NetBSD news1500 news1700 news1800 news1900 news3700
15111 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15112 ns32016 ns32332 ns32k nsc32000
15113 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15114 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15115 pc532 pdp11 PGC PIC plexus PORTAR posix
15116 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15117 POSIX_C_SOURCE POSIX_SOURCE POWER
15118 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15119 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
15120 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15121 sony sony_news sonyrisc sparc sparclite spectrum
15122 stardent stdc STDC_EXT stratos sun sun3 sun386
15123 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15124 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15125 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15126 sysV68 sysV88 Tek4132 Tek4300 titan
15127 tower tower32 tower32_200 tower32_600 tower32_700
15128 tower32_800 tower32_850 tss
15129 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15130 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15131 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15132 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15133 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15134 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15137 # Maybe put other stuff here too.
15138 cat <<EOSH >>Cppsym.know
15141 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15142 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15143 $cat Cppsym.know > Cppsym.c
15144 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15145 $rm -f Cppsym.a Cppsym.b Cppsym.c
15146 cat <<EOSH > Cppsym
15148 if $test \$# -gt 0; then
15149 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15150 if $test -s Cppsym.got; then
15157 $tr " " "$trnl" | ./Cppsym.try
15163 cat <<EOSH > Cppsym.try
15165 cat <<'EOCP' > try.c
15171 cat <<'EOSH' >> Cppsym.try
15173 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
15174 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
15175 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
15176 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
15180 cat <<EOSH >> Cppsym.try
15182 case "$osname-$gccversion" in
15183 irix-) ccflags="\$ccflags -woff 1178" ;;
15184 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15186 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15188 chmod +x Cppsym.try
15189 $eunicefix Cppsym.try
15190 ./Cppsym < Cppsym.know > Cppsym.true
15191 : now check the C compiler for additional symbols
15192 postprocess_cc_v=''
15194 aix) postprocess_cc_v="|$tr , ' '" ;;
15201 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15204 -D*) echo "\$i" | $sed 's/^-D//';;
15205 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15210 postprocess_cc_v=''
15213 ./ccsym > ccsym1.raw
15214 if $test -s ccsym1.raw; then
15215 $sort ccsym1.raw | $uniq >ccsym.raw
15217 mv ccsym1.raw ccsym.raw
15220 $awk '/\=/ { print $0; next }
15221 { print $0"=1" }' ccsym.raw >ccsym.list
15222 $awk '/\=/ { print $0; next }
15223 { print $0"=1" }' Cppsym.true >ccsym.true
15224 $comm -13 ccsym.true ccsym.list >ccsym.own
15225 $comm -12 ccsym.true ccsym.list >ccsym.com
15226 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15228 if $test -z ccsym.raw; then
15229 echo "Your C compiler doesn't seem to define any symbols!" >&4
15231 echo "However, your C preprocessor defines the following symbols:"
15234 cppsymbols=`$cat Cppsym.true`
15235 cppsymbols=`echo $cppsymbols`
15236 cppccsymbols="$cppsymbols"
15238 if $test -s ccsym.com; then
15239 echo "Your C compiler and pre-processor define these symbols:"
15240 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15243 cppccsymbols=`$cat ccsym.com`
15244 cppccsymbols=`echo $cppccsymbols`
15245 $test "$silent" || sleep 1
15247 if $test -s ccsym.cpp; then
15248 $test "$also" && echo " "
15249 echo "Your C pre-processor ${also}defines the following symbols:"
15250 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15252 cppsymbols=`$cat ccsym.cpp`
15253 cppsymbols=`echo $cppsymbols`
15254 $test "$silent" || sleep 1
15256 if $test -s ccsym.own; then
15257 $test "$also" && echo " "
15258 echo "Your C compiler ${also}defines the following cpp symbols:"
15259 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15260 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15261 ccsymbols=`$cat ccsym.own`
15262 ccsymbols=`echo $ccsymbols`
15263 $test "$silent" || sleep 1
15266 $rm -f ccsym* Cppsym.*
15268 : see if this is a termio system
15272 if $test `./findhdr termios.h`; then
15273 set tcsetattr i_termios
15279 "$define") echo "You have POSIX termios.h... good!" >&4;;
15280 *) if ./Cppsym pyr; then
15281 case "`/bin/universe`" in
15282 ucb) if $test `./findhdr sgtty.h`; then
15284 echo "<sgtty.h> found." >&4
15286 echo "System is pyramid with BSD universe."
15287 echo "<sgtty.h> not found--you could have problems." >&4
15289 *) if $test `./findhdr termio.h`; then
15291 echo "<termio.h> found." >&4
15293 echo "System is pyramid with USG universe."
15294 echo "<termio.h> not found--you could have problems." >&4
15298 if $test `./findhdr termio.h`; then
15299 echo "<termio.h> found." >&4
15301 elif $test `./findhdr sgtty.h`; then
15302 echo "<sgtty.h> found." >&4
15305 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15308 if $test `./findhdr sgtty.h`; then
15309 echo "<sgtty.h> found." >&4
15311 elif $test `./findhdr termio.h`; then
15312 echo "<termio.h> found." >&4
15315 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15319 set i_termio; eval $setvar
15320 val=$val2; set i_sgtty; eval $setvar
15321 val=$val3; set i_termios; eval $setvar
15323 : see if this is a shadow.h system
15324 set shadow.h i_shadow
15327 : see if stddef is available
15328 set stddef.h i_stddef
15331 : see if this is a sunmath.h system
15332 set sunmath.h i_sunmath
15335 : see if sys/access.h is available
15336 set sys/access.h i_sysaccess
15339 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15340 set sys/filio.h i_sysfilio
15343 if $test `./findhdr sys/ioctl.h`; then
15345 echo '<sys/ioctl.h> found.' >&4
15348 if $test $i_sysfilio = "$define"; then
15349 echo '<sys/ioctl.h> NOT found.' >&4
15351 $test $i_sgtty = "$define" && xxx="sgtty.h"
15352 $test $i_termio = "$define" && xxx="termio.h"
15353 $test $i_termios = "$define" && xxx="termios.h"
15354 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15361 : see if this is a syslog.h system
15362 set syslog.h i_syslog
15366 : see if this is a sys/mode.h system
15367 set sys/mode.h i_sysmode
15370 : see if sys/resource.h has to be included
15371 set sys/resource.h i_sysresrc
15374 : see if sys/security.h is available
15375 set sys/security.h i_syssecrt
15378 : see if this is a sys/statvfs.h system
15379 set sys/statvfs.h i_sysstatvfs
15382 : see if this is a sys/uio.h system
15383 set sys/uio.h i_sysuio
15386 : see if this is a sys/un.h system
15387 set sys/un.h i_sysun
15391 : see if this is a sys/utsname.h system
15392 set sys/utsname.h i_sysutsname
15395 : see if this is a syswait system
15396 set sys/wait.h i_syswait
15399 : see if this is a ustat.h system
15400 set ustat.h i_ustat
15403 : see if this is an utime system
15404 set utime.h i_utime
15407 : see if this is a values.h system
15408 set values.h i_values
15411 : see if this is a vfork system
15414 set vfork.h i_vfork
15422 : see if gdbm.h is available
15427 : see if gdbm_open exists
15428 set gdbm_open d_gdbm_open
15430 case "$d_gdbm_open" in
15433 echo "We won't be including <gdbm.h>"
15443 echo "Looking for extensions..." >&4
15444 : If we are using the old config.sh, known_extensions may contain
15445 : old or inaccurate or duplicate values.
15446 known_extensions=''
15447 nonxs_extensions=''
15448 : We do not use find because it might not be available.
15449 : We do not just use MANIFEST because the user may have dropped
15450 : some additional extensions into the source tree and expect them
15453 : Function to recursively find available extensions, ignoring DynaLoader
15454 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15458 DynaLoader|dynaload) ;;
15460 if $test -f $xxx/$xxx.xs; then
15461 known_extensions="$known_extensions $1$xxx";
15462 elif $test -f $xxx/Makefile.PL; then
15463 nonxs_extensions="$nonxs_extensions $1$xxx";
15465 if $test -d $xxx -a $# -lt 10; then
15468 eval $find_extensions;
15480 eval $find_extensions
15481 set X $nonxs_extensions
15483 nonxs_extensions="$*"
15484 set X $known_extensions
15486 known_extensions="$*"
15489 : Now see which are supported on this system.
15491 for xxx in $known_extensions ; do
15495 $define) avail_ext="$avail_ext $xxx" ;;
15498 GDBM_File|gdbm_fil)
15500 $define) avail_ext="$avail_ext $xxx" ;;
15503 NDBM_File|ndbm_fil)
15506 case "$osname-$use64bitint" in
15509 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15512 *) avail_ext="$avail_ext $xxx" ;;
15517 ODBM_File|odbm_fil)
15518 case "${i_dbm}${i_rpcsvcdbm}" in
15520 case "$osname-$use64bitint" in
15523 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15526 *) avail_ext="$avail_ext $xxx" ;;
15532 case "$useposix" in
15533 true|define|y) avail_ext="$avail_ext $xxx" ;;
15537 case "$useopcode" in
15538 true|define|y) avail_ext="$avail_ext $xxx" ;;
15542 case "$d_socket" in
15543 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15546 Sys/Syslog|sys/syslog)
15547 : XXX syslog requires socket
15548 case "$d_socket" in
15549 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15553 case "$usethreads" in
15554 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15558 : XXX Do we need a useipcsysv variable here
15559 case "${d_msg}${d_sem}${d_shm}" in
15560 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15563 *) avail_ext="$avail_ext $xxx"
15572 : Now see which nonxs extensions are supported on this system.
15573 : For now assume all are.
15575 for xxx in $nonxs_extensions ; do
15577 *) nonxs_ext="$nonxs_ext $xxx"
15589 A number of extensions are supplied with $package. You may choose to
15590 compile these extensions for dynamic loading (the default), compile
15591 them into the $package executable (static loading), or not include
15592 them at all. Answer "none" to include no extensions.
15593 Note that DynaLoader is always built and need not be mentioned here.
15596 case "$dynamic_ext" in
15597 '') dflt="$avail_ext" ;;
15598 *) dflt="$dynamic_ext"
15599 # Perhaps we are reusing an old out-of-date config.sh.
15602 if test X"$dynamic_ext" != X"$avail_ext"; then
15604 NOTICE: Your previous config.sh list may be incorrect.
15605 The extensions now available to you are
15607 but the default list from your previous config.sh is
15619 rp="What extensions do you wish to load dynamically?"
15622 none) dynamic_ext=' ' ;;
15623 *) dynamic_ext="$ans" ;;
15626 case "$static_ext" in
15628 : Exclude those already listed in dynamic linking
15630 for xxx in $avail_ext; do
15631 case " $dynamic_ext " in
15633 *) dflt="$dflt $xxx" ;;
15640 *) dflt="$static_ext"
15647 rp="What extensions do you wish to load statically?"
15650 none) static_ext=' ' ;;
15651 *) static_ext="$ans" ;;
15656 A number of extensions are supplied with $package. Answer "none"
15657 to include no extensions.
15658 Note that DynaLoader is always built and need not be mentioned here.
15661 case "$static_ext" in
15662 '') dflt="$avail_ext" ;;
15663 *) dflt="$static_ext"
15664 # Perhaps we are reusing an old out-of-date config.sh.
15667 if test X"$static_ext" != X"$avail_ext"; then
15669 NOTICE: Your previous config.sh list may be incorrect.
15670 The extensions now available to you are
15672 but the default list from your previous config.sh is
15681 : Exclude those that are not xs extensions
15685 rp="What extensions do you wish to include?"
15688 none) static_ext=' ' ;;
15689 *) static_ext="$ans" ;;
15694 set X $dynamic_ext $static_ext $nonxs_ext
15698 : Remove libraries needed only for extensions
15699 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15700 : The exception is SunOS 4.x, which needs them.
15701 case "${osname}X${osvers}" in
15705 *) case "$usedl" in
15706 $define|true|[yY]*)
15707 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15711 *) perllibs="$libs"
15717 : Remove build directory name from cppstdin so it can be used from
15718 : either the present location or the final installed location.
15720 : Get out of the UU directory to get correct path name.
15722 case "$cppstdin" in
15724 echo "Stripping down cppstdin path name"
15730 : end of configuration questions
15732 echo "End of configuration questions."
15735 : back to where it started
15736 if test -d ../UU; then
15740 : configuration may be patched via a 'config.over' file
15741 if $test -f config.over; then
15744 rp='I see a config.over file. Do you wish to load it?'
15747 n*) echo "OK, I'll ignore it.";;
15749 echo "Configuration override changes have been loaded."
15754 : in case they want portability, strip down executable paths
15755 case "$d_portable" in
15758 echo "Stripping down executable paths..." >&4
15759 for file in $loclist $trylist; do
15761 eval $file=`basename $temp`
15766 : create config.sh file
15768 echo "Creating config.sh..." >&4
15769 $spitshell <<EOT >config.sh
15772 # This file was produced by running the Configure script. It holds all the
15773 # definitions figured out by Configure. Should you modify one of these values,
15774 # do not forget to propagate your changes by running "Configure -der". You may
15775 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15778 # Package name : $package
15779 # Source directory : $src
15780 # Configuration time: $cf_time
15781 # Configured by : $cf_by
15782 # Target system : $myuname
15792 Revision='$Revision'
15799 alignbytes='$alignbytes'
15800 ansi2knr='$ansi2knr'
15801 aphostname='$aphostname'
15802 api_revision='$api_revision'
15803 api_subversion='$api_subversion'
15804 api_version='$api_version'
15805 api_versionstring='$api_versionstring'
15808 archlibexp='$archlibexp'
15809 archname64='$archname64'
15810 archname='$archname'
15811 archobjs='$archobjs'
15816 bincompat5005='$bincompat5005'
15820 byteorder='$byteorder'
15822 castflags='$castflags'
15825 cccdlflags='$cccdlflags'
15826 ccdlflags='$ccdlflags'
15828 ccflags_uselargefiles='$ccflags_uselargefiles'
15830 ccsymbols='$ccsymbols'
15831 ccversion='$ccversion'
15833 cf_email='$cf_email'
15835 charsize='$charsize'
15839 clocktype='$clocktype'
15841 compress='$compress'
15842 contains='$contains'
15846 cpp_stuff='$cpp_stuff'
15847 cppccsymbols='$cppccsymbols'
15848 cppflags='$cppflags'
15850 cppminus='$cppminus'
15852 cppstdin='$cppstdin'
15853 cppsymbols='$cppsymbols'
15854 crosscompile='$crosscompile'
15855 cryptlib='$cryptlib'
15857 d_Gconvert='$d_Gconvert'
15858 d_PRIEUldbl='$d_PRIEUldbl'
15859 d_PRIFUldbl='$d_PRIFUldbl'
15860 d_PRIGUldbl='$d_PRIGUldbl'
15861 d_PRIXU64='$d_PRIXU64'
15862 d_PRId64='$d_PRId64'
15863 d_PRIeldbl='$d_PRIeldbl'
15864 d_PRIfldbl='$d_PRIfldbl'
15865 d_PRIgldbl='$d_PRIgldbl'
15866 d_PRIi64='$d_PRIi64'
15867 d_PRIo64='$d_PRIo64'
15868 d_PRIu64='$d_PRIu64'
15869 d_PRIx64='$d_PRIx64'
15870 d_SCNfldbl='$d_SCNfldbl'
15871 d__fwalk='$d__fwalk'
15872 d_access='$d_access'
15873 d_accessx='$d_accessx'
15875 d_archlib='$d_archlib'
15878 d_attribut='$d_attribut'
15881 d_bincompat5005='$d_bincompat5005'
15883 d_bsdgetpgrp='$d_bsdgetpgrp'
15884 d_bsdsetpgrp='$d_bsdsetpgrp'
15886 d_casti32='$d_casti32'
15887 d_castneg='$d_castneg'
15888 d_charvspr='$d_charvspr'
15890 d_chroot='$d_chroot'
15891 d_chsize='$d_chsize'
15892 d_closedir='$d_closedir'
15896 d_cuserid='$d_cuserid'
15897 d_dbl_dig='$d_dbl_dig'
15898 d_difftime='$d_difftime'
15899 d_dirnamlen='$d_dirnamlen'
15900 d_dlerror='$d_dlerror'
15901 d_dlopen='$d_dlopen'
15902 d_dlsymun='$d_dlsymun'
15903 d_dosuid='$d_dosuid'
15904 d_drand48proto='$d_drand48proto'
15906 d_eaccess='$d_eaccess'
15907 d_endgrent='$d_endgrent'
15908 d_endhent='$d_endhent'
15909 d_endnent='$d_endnent'
15910 d_endpent='$d_endpent'
15911 d_endpwent='$d_endpwent'
15912 d_endsent='$d_endsent'
15913 d_eofnblk='$d_eofnblk'
15914 d_eunice='$d_eunice'
15915 d_fchmod='$d_fchmod'
15916 d_fchown='$d_fchown'
15918 d_fcntl_can_lock='$d_fcntl_can_lock'
15919 d_fd_macros='$d_fd_macros'
15920 d_fd_set='$d_fd_set'
15921 d_fds_bits='$d_fds_bits'
15922 d_fgetpos='$d_fgetpos'
15923 d_flexfnam='$d_flexfnam'
15926 d_fpathconf='$d_fpathconf'
15927 d_fpos64_t='$d_fpos64_t'
15928 d_frexpl='$d_frexpl'
15929 d_fs_data_s='$d_fs_data_s'
15930 d_fseeko='$d_fseeko'
15931 d_fsetpos='$d_fsetpos'
15932 d_fstatfs='$d_fstatfs'
15933 d_fstatvfs='$d_fstatvfs'
15935 d_ftello='$d_ftello'
15937 d_getcwd='$d_getcwd'
15938 d_getespwnam='$d_getespwnam'
15939 d_getfsstat='$d_getfsstat'
15940 d_getgrent='$d_getgrent'
15941 d_getgrps='$d_getgrps'
15942 d_gethbyaddr='$d_gethbyaddr'
15943 d_gethbyname='$d_gethbyname'
15944 d_gethent='$d_gethent'
15945 d_gethname='$d_gethname'
15946 d_gethostprotos='$d_gethostprotos'
15947 d_getlogin='$d_getlogin'
15948 d_getmnt='$d_getmnt'
15949 d_getmntent='$d_getmntent'
15950 d_getnbyaddr='$d_getnbyaddr'
15951 d_getnbyname='$d_getnbyname'
15952 d_getnent='$d_getnent'
15953 d_getnetprotos='$d_getnetprotos'
15954 d_getpagsz='$d_getpagsz'
15955 d_getpbyname='$d_getpbyname'
15956 d_getpbynumber='$d_getpbynumber'
15957 d_getpent='$d_getpent'
15958 d_getpgid='$d_getpgid'
15959 d_getpgrp2='$d_getpgrp2'
15960 d_getpgrp='$d_getpgrp'
15961 d_getppid='$d_getppid'
15962 d_getprior='$d_getprior'
15963 d_getprotoprotos='$d_getprotoprotos'
15964 d_getprpwnam='$d_getprpwnam'
15965 d_getpwent='$d_getpwent'
15966 d_getsbyname='$d_getsbyname'
15967 d_getsbyport='$d_getsbyport'
15968 d_getsent='$d_getsent'
15969 d_getservprotos='$d_getservprotos'
15970 d_getspnam='$d_getspnam'
15971 d_gettimeod='$d_gettimeod'
15972 d_gnulibc='$d_gnulibc'
15973 d_grpasswd='$d_grpasswd'
15974 d_hasmntopt='$d_hasmntopt'
15978 d_inetaton='$d_inetaton'
15979 d_int64_t='$d_int64_t'
15980 d_isascii='$d_isascii'
15982 d_isnanl='$d_isnanl'
15983 d_killpg='$d_killpg'
15984 d_lchown='$d_lchown'
15985 d_ldbl_dig='$d_ldbl_dig'
15987 d_locconv='$d_locconv'
15989 d_longdbl='$d_longdbl'
15990 d_longlong='$d_longlong'
15991 d_lseekproto='$d_lseekproto'
15993 d_madvise='$d_madvise'
15995 d_mbstowcs='$d_mbstowcs'
15996 d_mbtowc='$d_mbtowc'
15997 d_memchr='$d_memchr'
15998 d_memcmp='$d_memcmp'
15999 d_memcpy='$d_memcpy'
16000 d_memmove='$d_memmove'
16001 d_memset='$d_memset'
16003 d_mkdtemp='$d_mkdtemp'
16004 d_mkfifo='$d_mkfifo'
16005 d_mkstemp='$d_mkstemp'
16006 d_mkstemps='$d_mkstemps'
16007 d_mktime='$d_mktime'
16010 d_mprotect='$d_mprotect'
16012 d_msg_ctrunc='$d_msg_ctrunc'
16013 d_msg_dontroute='$d_msg_dontroute'
16014 d_msg_oob='$d_msg_oob'
16015 d_msg_peek='$d_msg_peek'
16016 d_msg_proxy='$d_msg_proxy'
16017 d_msgctl='$d_msgctl'
16018 d_msgget='$d_msgget'
16019 d_msgrcv='$d_msgrcv'
16020 d_msgsnd='$d_msgsnd'
16022 d_munmap='$d_munmap'
16023 d_mymalloc='$d_mymalloc'
16025 d_nv_preserves_uv='$d_nv_preserves_uv'
16026 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16027 d_off64_t='$d_off64_t'
16028 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16029 d_oldpthreads='$d_oldpthreads'
16030 d_oldsock='$d_oldsock'
16032 d_pathconf='$d_pathconf'
16034 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16035 d_phostname='$d_phostname'
16038 d_portable='$d_portable'
16039 d_pthread_yield='$d_pthread_yield'
16041 d_pwchange='$d_pwchange'
16042 d_pwclass='$d_pwclass'
16043 d_pwcomment='$d_pwcomment'
16044 d_pwexpire='$d_pwexpire'
16045 d_pwgecos='$d_pwgecos'
16046 d_pwpasswd='$d_pwpasswd'
16047 d_pwquota='$d_pwquota'
16050 d_readdir='$d_readdir'
16051 d_readlink='$d_readlink'
16052 d_rename='$d_rename'
16053 d_rewinddir='$d_rewinddir'
16055 d_safebcpy='$d_safebcpy'
16056 d_safemcpy='$d_safemcpy'
16057 d_sanemcmp='$d_sanemcmp'
16058 d_sbrkproto='$d_sbrkproto'
16059 d_sched_yield='$d_sched_yield'
16060 d_scm_rights='$d_scm_rights'
16061 d_seekdir='$d_seekdir'
16062 d_select='$d_select'
16064 d_semctl='$d_semctl'
16065 d_semctl_semid_ds='$d_semctl_semid_ds'
16066 d_semctl_semun='$d_semctl_semun'
16067 d_semget='$d_semget'
16069 d_setegid='$d_setegid'
16070 d_seteuid='$d_seteuid'
16071 d_setgrent='$d_setgrent'
16072 d_setgrps='$d_setgrps'
16073 d_sethent='$d_sethent'
16074 d_setlinebuf='$d_setlinebuf'
16075 d_setlocale='$d_setlocale'
16076 d_setnent='$d_setnent'
16077 d_setpent='$d_setpent'
16078 d_setpgid='$d_setpgid'
16079 d_setpgrp2='$d_setpgrp2'
16080 d_setpgrp='$d_setpgrp'
16081 d_setprior='$d_setprior'
16082 d_setproctitle='$d_setproctitle'
16083 d_setpwent='$d_setpwent'
16084 d_setregid='$d_setregid'
16085 d_setresgid='$d_setresgid'
16086 d_setresuid='$d_setresuid'
16087 d_setreuid='$d_setreuid'
16088 d_setrgid='$d_setrgid'
16089 d_setruid='$d_setruid'
16090 d_setsent='$d_setsent'
16091 d_setsid='$d_setsid'
16092 d_setvbuf='$d_setvbuf'
16096 d_shmatprototype='$d_shmatprototype'
16097 d_shmctl='$d_shmctl'
16099 d_shmget='$d_shmget'
16100 d_sigaction='$d_sigaction'
16101 d_sigprocmask='$d_sigprocmask'
16102 d_sigsetjmp='$d_sigsetjmp'
16103 d_socket='$d_socket'
16104 d_socklen_t='$d_socklen_t'
16105 d_sockpair='$d_sockpair'
16106 d_socks5_init='$d_socks5_init'
16108 d_statblks='$d_statblks'
16109 d_statfs_f_flags='$d_statfs_f_flags'
16110 d_statfs_s='$d_statfs_s'
16111 d_statvfs='$d_statvfs'
16112 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16113 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16114 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16115 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16116 d_stdio_stream_array='$d_stdio_stream_array'
16117 d_stdiobase='$d_stdiobase'
16118 d_stdstdio='$d_stdstdio'
16119 d_strchr='$d_strchr'
16120 d_strcoll='$d_strcoll'
16121 d_strctcpy='$d_strctcpy'
16122 d_strerrm='$d_strerrm'
16123 d_strerror='$d_strerror'
16124 d_strtod='$d_strtod'
16125 d_strtol='$d_strtol'
16126 d_strtold='$d_strtold'
16127 d_strtoll='$d_strtoll'
16128 d_strtoq='$d_strtoq'
16129 d_strtoul='$d_strtoul'
16130 d_strtoull='$d_strtoull'
16131 d_strtouq='$d_strtouq'
16132 d_strxfrm='$d_strxfrm'
16133 d_suidsafe='$d_suidsafe'
16134 d_symlink='$d_symlink'
16135 d_syscall='$d_syscall'
16136 d_sysconf='$d_sysconf'
16137 d_sysernlst='$d_sysernlst'
16138 d_syserrlst='$d_syserrlst'
16139 d_system='$d_system'
16140 d_tcgetpgrp='$d_tcgetpgrp'
16141 d_tcsetpgrp='$d_tcsetpgrp'
16142 d_telldir='$d_telldir'
16143 d_telldirproto='$d_telldirproto'
16146 d_truncate='$d_truncate'
16147 d_tzname='$d_tzname'
16150 d_union_semun='$d_union_semun'
16152 d_vendorarch='$d_vendorarch'
16153 d_vendorbin='$d_vendorbin'
16154 d_vendorlib='$d_vendorlib'
16156 d_void_closedir='$d_void_closedir'
16157 d_voidsig='$d_voidsig'
16158 d_voidtty='$d_voidtty'
16159 d_volatile='$d_volatile'
16160 d_vprintf='$d_vprintf'
16162 d_waitpid='$d_waitpid'
16163 d_wcstombs='$d_wcstombs'
16164 d_wctomb='$d_wctomb'
16167 db_hashtype='$db_hashtype'
16168 db_prefixtype='$db_prefixtype'
16169 defvoidused='$defvoidused'
16170 direntrytype='$direntrytype'
16173 doublesize='$doublesize'
16175 dynamic_ext='$dynamic_ext'
16181 eunicefix='$eunicefix'
16184 extensions='$extensions'
16185 fflushNULL='$fflushNULL'
16186 fflushall='$fflushall'
16188 firstmakefile='$firstmakefile'
16190 fpossize='$fpossize'
16191 fpostype='$fpostype'
16192 freetype='$freetype'
16194 full_csh='$full_csh'
16195 full_sed='$full_sed'
16196 gccosandvers='$gccosandvers'
16197 gccversion='$gccversion'
16198 gidformat='$gidformat'
16204 groupcat='$groupcat'
16205 groupstype='$groupstype'
16208 h_sysfile='$h_sysfile'
16219 i_arpainet='$i_arpainet'
16220 i_bsdioctl='$i_bsdioctl'
16223 i_dirent='$i_dirent'
16227 i_features='$i_features'
16232 i_ieeefp='$i_ieeefp'
16233 i_inttypes='$i_inttypes'
16234 i_libutil='$i_libutil'
16235 i_limits='$i_limits'
16236 i_locale='$i_locale'
16237 i_machcthr='$i_machcthr'
16238 i_malloc='$i_malloc'
16240 i_memory='$i_memory'
16241 i_mntent='$i_mntent'
16244 i_neterrno='$i_neterrno'
16245 i_netinettcp='$i_netinettcp'
16249 i_pthread='$i_pthread'
16251 i_rpcsvcdbm='$i_rpcsvcdbm'
16254 i_shadow='$i_shadow'
16256 i_stdarg='$i_stdarg'
16257 i_stddef='$i_stddef'
16258 i_stdlib='$i_stdlib'
16259 i_string='$i_string'
16260 i_sunmath='$i_sunmath'
16261 i_sysaccess='$i_sysaccess'
16262 i_sysdir='$i_sysdir'
16263 i_sysfile='$i_sysfile'
16264 i_sysfilio='$i_sysfilio'
16266 i_sysioctl='$i_sysioctl'
16267 i_syslog='$i_syslog'
16268 i_sysmman='$i_sysmman'
16269 i_sysmode='$i_sysmode'
16270 i_sysmount='$i_sysmount'
16271 i_sysndir='$i_sysndir'
16272 i_sysparam='$i_sysparam'
16273 i_sysresrc='$i_sysresrc'
16274 i_syssecrt='$i_syssecrt'
16275 i_sysselct='$i_sysselct'
16276 i_syssockio='$i_syssockio'
16277 i_sysstat='$i_sysstat'
16278 i_sysstatfs='$i_sysstatfs'
16279 i_sysstatvfs='$i_sysstatvfs'
16280 i_systime='$i_systime'
16281 i_systimek='$i_systimek'
16282 i_systimes='$i_systimes'
16283 i_systypes='$i_systypes'
16284 i_sysuio='$i_sysuio'
16286 i_sysutsname='$i_sysutsname'
16287 i_sysvfs='$i_sysvfs'
16288 i_syswait='$i_syswait'
16289 i_termio='$i_termio'
16290 i_termios='$i_termios'
16292 i_unistd='$i_unistd'
16295 i_values='$i_values'
16296 i_varargs='$i_varargs'
16297 i_varhdr='$i_varhdr'
16299 ignore_versioned_solibs='$ignore_versioned_solibs'
16300 inc_version_list='$inc_version_list'
16301 inc_version_list_init='$inc_version_list_init'
16304 installarchlib='$installarchlib'
16305 installbin='$installbin'
16306 installman1dir='$installman1dir'
16307 installman3dir='$installman3dir'
16308 installprefix='$installprefix'
16309 installprefixexp='$installprefixexp'
16310 installprivlib='$installprivlib'
16311 installscript='$installscript'
16312 installsitearch='$installsitearch'
16313 installsitebin='$installsitebin'
16314 installsitelib='$installsitelib'
16315 installstyle='$installstyle'
16316 installusrbinperl='$installusrbinperl'
16317 installvendorarch='$installvendorarch'
16318 installvendorbin='$installvendorbin'
16319 installvendorlib='$installvendorlib'
16321 issymlink='$issymlink'
16322 ivdformat='$ivdformat'
16325 known_extensions='$known_extensions'
16328 lddlflags='$lddlflags'
16330 ldflags_uselargefiles='$ldflags_uselargefiles'
16331 ldlibpthname='$ldlibpthname'
16338 libsdirs='$libsdirs'
16339 libsfiles='$libsfiles'
16340 libsfound='$libsfound'
16341 libspath='$libspath'
16342 libswanted='$libswanted'
16343 libswanted_uselargefiles='$libswanted_uselargefiles'
16349 locincpth='$locincpth'
16350 loclibpth='$loclibpth'
16351 longdblsize='$longdblsize'
16352 longlongsize='$longlongsize'
16353 longsize='$longsize'
16357 lseeksize='$lseeksize'
16358 lseektype='$lseektype'
16362 make_set_make='$make_set_make'
16363 mallocobj='$mallocobj'
16364 mallocsrc='$mallocsrc'
16365 malloctype='$malloctype'
16367 man1direxp='$man1direxp'
16370 man3direxp='$man3direxp'
16372 mips_type='$mips_type'
16374 mmaptype='$mmaptype'
16375 modetype='$modetype'
16377 multiarch='$multiarch'
16379 myarchname='$myarchname'
16380 mydomain='$mydomain'
16381 myhostname='$myhostname'
16384 need_va_copy='$need_va_copy'
16385 netdb_hlen_type='$netdb_hlen_type'
16386 netdb_host_type='$netdb_host_type'
16387 netdb_name_type='$netdb_name_type'
16388 netdb_net_type='$netdb_net_type'
16391 nm_so_opt='$nm_so_opt'
16392 nonxs_ext='$nonxs_ext'
16394 nvEUformat='$nvEUformat'
16395 nvFUformat='$nvFUformat'
16396 nvGUformat='$nvGUformat'
16397 nveformat='$nveformat'
16398 nvfformat='$nvfformat'
16399 nvgformat='$nvgformat'
16402 o_nonblock='$o_nonblock'
16404 old_pthread_create_joinable='$old_pthread_create_joinable'
16405 optimize='$optimize'
16406 orderlib='$orderlib'
16409 otherlibdirs='$otherlibdirs'
16413 patchlevel='$patchlevel'
16414 path_sep='$path_sep'
16417 perladmin='$perladmin'
16418 perllibs='$perllibs'
16419 perlpath='$perlpath'
16421 phostname='$phostname'
16424 pm_apiversion='$pm_apiversion'
16428 prefixexp='$prefixexp'
16430 privlibexp='$privlibexp'
16431 prototype='$prototype'
16433 quadkind='$quadkind'
16434 quadtype='$quadtype'
16435 randbits='$randbits'
16436 randfunc='$randfunc'
16437 randseedtype='$randseedtype'
16439 rd_nodata='$rd_nodata'
16440 revision='$revision'
16444 sPRIEUldbl='$sPRIEUldbl'
16445 sPRIFUldbl='$sPRIFUldbl'
16446 sPRIGUldbl='$sPRIGUldbl'
16447 sPRIXU64='$sPRIXU64'
16449 sPRIeldbl='$sPRIeldbl'
16450 sPRIfldbl='$sPRIfldbl'
16451 sPRIgldbl='$sPRIgldbl'
16456 sSCNfldbl='$sSCNfldbl'
16457 sched_yield='$sched_yield'
16458 scriptdir='$scriptdir'
16459 scriptdirexp='$scriptdirexp'
16461 seedfunc='$seedfunc'
16462 selectminbits='$selectminbits'
16463 selecttype='$selecttype'
16464 sendmail='$sendmail'
16467 sharpbang='$sharpbang'
16468 shmattype='$shmattype'
16469 shortsize='$shortsize'
16472 sig_count='$sig_count'
16473 sig_name='$sig_name'
16474 sig_name_init='$sig_name_init'
16476 sig_num_init='$sig_num_init'
16477 signal_t='$signal_t'
16478 sitearch='$sitearch'
16479 sitearchexp='$sitearchexp'
16481 sitebinexp='$sitebinexp'
16483 sitelib_stem='$sitelib_stem'
16484 sitelibexp='$sitelibexp'
16485 siteprefix='$siteprefix'
16486 siteprefixexp='$siteprefixexp'
16487 sizesize='$sizesize'
16488 sizetype='$sizetype'
16492 sockethdr='$sockethdr'
16493 socketlib='$socketlib'
16494 socksizetype='$socksizetype'
16496 spackage='$spackage'
16497 spitshell='$spitshell'
16499 ssizetype='$ssizetype'
16500 startperl='$startperl'
16502 static_ext='$static_ext'
16504 stdio_base='$stdio_base'
16505 stdio_bufsiz='$stdio_bufsiz'
16506 stdio_cnt='$stdio_cnt'
16507 stdio_filbuf='$stdio_filbuf'
16508 stdio_ptr='$stdio_ptr'
16509 stdio_stream_array='$stdio_stream_array'
16512 subversion='$subversion'
16519 timeincl='$timeincl'
16520 timetype='$timetype'
16533 uidformat='$uidformat'
16539 uquadtype='$uquadtype'
16540 use5005threads='$use5005threads'
16541 use64bitall='$use64bitall'
16542 use64bitint='$use64bitint'
16544 useithreads='$useithreads'
16545 uselargefiles='$uselargefiles'
16546 uselongdouble='$uselongdouble'
16547 usemorebits='$usemorebits'
16548 usemultiplicity='$usemultiplicity'
16549 usemymalloc='$usemymalloc'
16551 useopcode='$useopcode'
16552 useperlio='$useperlio'
16553 useposix='$useposix'
16555 useshrplib='$useshrplib'
16556 usesocks='$usesocks'
16557 usethreads='$usethreads'
16558 usevendorprefix='$usevendorprefix'
16559 usevfork='$usevfork'
16562 uvXUformat='$uvXUformat'
16563 uvoformat='$uvoformat'
16566 uvuformat='$uvuformat'
16567 uvxformat='$uvxformat'
16568 vendorarch='$vendorarch'
16569 vendorarchexp='$vendorarchexp'
16570 vendorbin='$vendorbin'
16571 vendorbinexp='$vendorbinexp'
16572 vendorlib='$vendorlib'
16573 vendorlib_stem='$vendorlib_stem'
16574 vendorlibexp='$vendorlibexp'
16575 vendorprefix='$vendorprefix'
16576 vendorprefixexp='$vendorprefixexp'
16578 versiononly='$versiononly'
16580 voidflags='$voidflags'
16582 xs_apiversion='$xs_apiversion'
16587 : Add in command line options if available
16588 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16590 : add special variables
16591 $test -f $src/patchlevel.h && \
16592 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16593 echo "CONFIGDOTSH=true" >>config.sh
16595 : propagate old symbols
16596 if $test -f UU/config.sh; then
16597 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16598 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16599 $sort | $uniq -u >UU/oldsyms
16600 set X `cat UU/oldsyms`
16606 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16608 echo "# Variables propagated from previous config.sh file." >>config.sh
16609 for sym in `cat UU/oldsyms`; do
16610 echo " Propagating $hint variable "'$'"$sym..."
16611 eval 'tmp="$'"${sym}"'"'
16613 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16619 : Finish up by extracting the .SH files
16633 If you'd like to make any changes to the config.sh file before I begin
16634 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16637 rp="Press return or use a shell escape to edit config.sh:"
16642 *) : in case they cannot read
16643 sh 1>&4 -c "$ans";;
16648 : if this fails, just run all the .SH files by hand
16655 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16662 Now you need to generate make dependencies by running "$make depend".
16663 You might prefer to run it in background: "$make depend > makedepend.out &"
16664 It can take a while, so you might not want to run it right now.
16669 rp="Run $make depend now?"
16673 $make depend && echo "Now you must run '$make'."
16676 echo "You must run '$make depend' then '$make'."
16679 elif test -f [Mm]akefile; then
16681 echo "Now you must run a $make."
16686 if $test -f Policy.sh; then
16689 If you compile $package on a different machine or from a different object
16690 directory, copy the Policy.sh file from this object directory to the
16691 new one before you run Configure -- this will help you with most of
16692 the policy defaults.
16696 if $test -f config.msg; then
16697 echo "Hmm. I also noted the following information while running:"
16699 $cat config.msg >&4
16702 $rm -f kit*isdone ark*isdone