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 Fri Jan 5 20:11:52 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=''
544 d_stdio_ptr_lval_nochange_cnt=''
545 d_stdio_ptr_lval_sets_cnt=''
717 inc_version_list_init=''
736 ignore_versioned_solibs=''
795 d_perl_otherlibdirs=''
812 d_nv_preserves_uv_bits=''
910 d_stdio_stream_array=''
911 stdio_stream_array=''
921 ccflags_uselargefiles=''
922 ldflags_uselargefiles=''
923 libswanted_uselargefiles=''
966 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
969 : We must find out about Eunice early
971 if test -f /etc/unixtovms; then
972 eunicefix=/etc/unixtovms
974 if test -f /etc/unixtovms.exe; then
975 eunicefix=/etc/unixtovms.exe
982 : set useposix=false in your hint file to disable the POSIX extension.
984 : set useopcode=false in your hint file to disable the Opcode extension.
986 : Trailing extension. Override this in a hint file, if needed.
988 : Extra object files, if any, needed on this platform.
991 : Possible local include directories to search.
992 : Set locincpth to "" in a hint file to defeat local include searches.
993 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
994 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
996 : no include file wanted by default
1000 : change the next line if compiling for Xenix/286 on Xenix/386
1001 xlibpth='/usr/lib/386 /lib/386'
1002 : Possible local library directories to search.
1003 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1004 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1006 : general looking path for locating libraries
1007 glibpth="/lib /usr/lib $xlibpth"
1008 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1009 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1010 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1012 : Private path used by Configure to find libraries. Its value
1013 : is prepended to libpth. This variable takes care of special
1014 : machines, like the mips. Usually, it should be empty.
1017 : default library list
1019 : some systems want to use only the non-versioned libso:s
1020 ignore_versioned_solibs=''
1022 ccflags_uselargefiles=''
1023 ldflags_uselargefiles=''
1024 libswanted_uselargefiles=''
1025 : set usemultiplicity on the Configure command line to enable multiplicity.
1026 : set usesocks on the Configure command line to enable socks.
1027 : set usethreads on the Configure command line to enable threads.
1028 : full support for void wanted by default
1031 : List of libraries we want.
1032 : If anyone needs -lnet, put it in a hint file.
1033 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1034 libswanted="$libswanted dld ld sun m c cposix posix"
1035 libswanted="$libswanted ndir dir crypt sec"
1036 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1037 : We probably want to search /usr/shlib before most other libraries.
1038 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1039 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1040 glibpth="/usr/shlib $glibpth"
1041 : Do not use vfork unless overridden by a hint file.
1044 : Find the basic shell for Bourne shell scripts
1048 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1051 if test -f "$xxx"; then
1054 : Build up a list and do a single loop so we can 'break' out.
1055 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1056 for xxx in sh bash ksh pdksh ash; do
1058 try="$try ${p}/${xxx}"
1062 if test -f "$xxx"; then
1065 elif test -f "$xxx.exe"; then
1076 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1078 Usually it's in /bin/sh. How did you even get this far?
1079 Please contact me (Perl Maintainers) at perlbug@perl.org and
1080 we'll try to straighten this all out.
1086 : see if sh knows # comments
1087 if `$sh -c '#' >/dev/null 2>&1`; then
1091 test -f $xcat || xcat=/usr/bin/cat
1096 if test -s today; then
1099 echo "#! $xcat" > try
1103 if test -s today; then
1111 echo "Your $sh doesn't grok # comments--I will strip them later on."
1114 echo "exec grep -v '^[ ]*#'" >spitshell
1116 $eunicefix spitshell
1117 spitshell=`pwd`/spitshell
1119 echo "I presume that if # doesn't work, #! won't work either!"
1124 : figure out how to guarantee sh startup
1126 '') startsh=${sharpbang}${sh} ;;
1138 : echo "Yup, it does."
1140 echo "Hmm... '$startsh' does not guarantee sh startup..."
1141 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1146 : Save command line options in file UU/cmdline.opt for later use in
1147 : generating config.sh.
1148 cat > cmdline.opt <<EOSH
1149 # Configure command line arguments.
1156 cat >>cmdline.opt <<EOSH
1157 config_arg$argn='$arg'
1159 argn=`expr $argn + 1`
1162 : produce awk script to parse command line options
1163 cat >options.awk <<'EOF'
1165 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1167 len = length(optstr);
1168 for (i = 1; i <= len; i++) {
1169 c = substr(optstr, i, 1);
1170 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1181 if (substr(str, 1, 1) != "-") {
1182 printf("'%s'\n", str);
1186 for (i = 2; i <= len; i++) {
1187 c = substr(str, i, 1);
1189 printf("-%s\n", substr(str, i));
1195 printf("'%s'\n", substr(str, i + 1));
1208 : process the command line options
1209 set X `for arg in "$@"; do echo "X$arg"; done |
1210 sed -e s/X// | awk -f options.awk`
1215 : set up default values
1225 rm -f optdef.sh posthint.sh
1226 cat >optdef.sh <<EOS
1232 while test $# -gt 0; do
1234 -d) shift; fastread=yes;;
1235 -e) shift; alldone=cont;;
1239 if test -r "$1"; then
1242 echo "$me: cannot read config file $1." >&2
1247 -h) shift; error=true;;
1248 -r) shift; reuseval=true;;
1249 -s) shift; silent=true; realsilent=true;;
1250 -E) shift; alldone=exit;;
1251 -K) shift; knowitall=true;;
1252 -O) shift; override=true;;
1253 -S) shift; silent=true; extractsh=true;;
1258 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1259 echo "$me: ignoring -D $1" >&2
1262 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1263 *) echo "$1='define'" >> optdef.sh;;
1270 *=) echo "$1" >> optdef.sh;;
1272 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1273 echo "$me: ignoring -U $1" >&2
1275 *) echo "$1='undef'" >> optdef.sh;;
1286 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1290 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1291 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1297 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1298 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1299 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1300 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1301 *) xxx=`echo $yyy|sed 's!:.*!!'`
1302 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1308 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1310 echo "$yyy=''" >> posthint.sh ;;
1315 echo "$yyy='$zzz'" >> posthint.sh ;;
1317 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1319 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1324 echo "$yyy=$zzz" >> posthint.sh ;;
1325 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1329 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1332 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1340 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1341 [-U symbol] [-U symbol=] [-A command:symbol...]
1342 -d : use defaults for all answers.
1343 -e : go on without questioning past the production of config.sh.
1344 -f : specify an alternate default configuration file.
1345 -h : print this help message and exit (with an error status).
1346 -r : reuse C symbols value if possible (skips costly nm extraction).
1347 -s : silent mode, only echoes questions and essential information.
1348 -D : define symbol to have some value:
1349 -D symbol symbol gets the value 'define'
1350 -D symbol=value symbol gets the value 'value'
1351 -E : stop at the end of questions, after having produced config.sh.
1352 -K : do not use unless you know what you are doing.
1353 -O : let -D and -U override definitions from loaded configuration file.
1354 -S : perform variable substitutions on all .SH files (can mix with -f)
1355 -U : undefine symbol:
1356 -U symbol symbol gets the value 'undef'
1357 -U symbol= symbol gets completely empty
1358 -A : manipulate symbol after the platform specific hints have been applied:
1359 -A symbol=value append " "value to symbol
1360 -A append:symbol=value append value to symbol
1361 -A define:symbol=value define symbol to have value
1362 -A clear:symbol define symbol to be ''
1363 -A define:symbol define symbol to be 'define'
1364 -A eval:symbol=value define symbol to be eval of value
1365 -A prepend:symbol=value prepend value to symbol
1366 -A undef:symbol define symbol to be 'undef'
1367 -A undef:symbol= define symbol to be ''
1368 -V : print version number and exit (with a zero status).
1375 case "$fastread$alldone" in
1378 case "$extractsh" in
1381 if test ! -t 0; then
1382 echo "Say 'sh Configure', not 'sh <Configure'"
1392 true) exec 1>/dev/null;;
1395 : run the defines and the undefines, if any, but leave the file out there...
1398 : create the posthint manipulation script and leave the file out there...
1403 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1404 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1405 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1406 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1407 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1410 : Some greps do not return status, grrr.
1411 echo "grimblepritz" >grimble
1412 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1414 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1420 : the following should work in any shell
1424 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1425 cat >contains <<'EOSS'
1426 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1431 : Find the path to the source tree
1434 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1438 *) src=`cd ../$src && pwd` ;;
1451 if test -f $rsrc/Configure && \
1452 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1454 : found it, so we are ok.
1457 for src in . .. ../.. ../../.. ../../../..; do
1458 if test -f ../$src/Configure && \
1459 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1470 Sorry, I can't seem to locate the source dir for $package. Please start
1471 Configure with an explicit path -- i.e. /some/path/Configure.
1479 echo "Sources for $package found in \"$src\"." >&4
1483 : script used to extract .SH files with variable substitutions
1484 cat >extract <<'EOS'
1486 echo "Doing variable substitutions on .SH files..."
1487 if test -f $src/MANIFEST; then
1488 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1490 echo "(Looking for .SH files under the source directory.)"
1491 set x `(cd $src; find . -name "*.SH" -print)`
1495 0) set x `(cd $src; echo *.SH)`; shift;;
1497 if test ! -f $src/$1; then
1503 while test $name; do
1504 if test ! -d "$name"; then
1505 create="$name $create";
1506 name=`echo $name | sed -e "s|^[^/]*$||"`;
1507 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1512 for file in $create; do
1521 dir=`expr X$file : 'X\(.*\)/'`
1522 file=`expr X$file : 'X.*/\(.*\)'`
1523 (cd $dir && . ./$file)
1533 dir=`expr X$file : 'X\(.*\)/'`
1534 file=`expr X$file : 'X.*/\(.*\)'`
1535 (set x $dir; shift; eval $mkdir_p)
1545 if test -f $src/config_h.SH; then
1546 if test ! -f config.h; then
1547 : oops, they left it out of MANIFEST, probably, so do it anyway.
1553 : extract files and exit if asked to do so
1554 case "$extractsh" in
1556 case "$realsilent" in
1560 case "$config_sh" in
1561 '') config_sh='config.sh';;
1564 echo "Fetching answers from $config_sh..."
1567 test "$override" && . ./optdef.sh
1576 : Eunice requires " " instead of "", can you believe it
1579 echo "Beginning of configuration questions for $package."
1581 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1583 : first determine how to suppress newline on echo command
1585 echo "Checking echo to see how to suppress newlines..."
1586 (echo "hi there\c" ; echo " ") >.echotmp
1587 if $contains c .echotmp >/dev/null 2>&1 ; then
1598 echo $n "The star should be here-->$c"
1602 : Now test for existence of everything in MANIFEST
1604 if test -f $rsrc/MANIFEST; then
1605 echo "First let's make sure your kit is complete. Checking..." >&4
1606 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1609 for filelist in x??; do
1610 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1612 if test -s missing; then
1616 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1618 You have the option of continuing the configuration process, despite the
1619 distinct possibility that your kit is damaged, by typing 'y'es. If you
1620 do, don't blame me if something goes wrong. I advise you to type 'n'o
1621 and contact the author (perlbug@perl.org).
1624 echo $n "Continue? [n] $c" >&4
1628 echo "Continuing..." >&4
1632 echo "ABORTING..." >&4
1637 echo "Looks good..."
1640 echo "There is no MANIFEST file. I hope your kit is complete !"
1645 : Find the appropriate value for a newline for tr
1646 if test -n "$DJGPP"; then
1649 if test X"$trnl" = X; then
1650 case "`echo foo|tr '\n' x 2>/dev/null`" in
1654 if test X"$trnl" = X; then
1655 case "`echo foo|tr '\012' x 2>/dev/null`" in
1656 foox) trnl='\012' ;;
1659 if test X"$trnl" = X; then
1662 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1668 : compute the number of columns on the terminal for proper question formatting
1673 : set up the echo used in my read
1674 myecho="case \"\$xxxm\" in
1675 '') echo $n \"\$rp $c\" >&4;;
1677 '') echo $n \"[\$xxxm] $c\";;
1679 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1681 echo $n \"[\$xxxm] $c\" >&4
1683 echo $n \"\$rp [\$xxxm] $c\" >&4
1689 : now set up to do reads with possible shell escape and default assignment
1695 case "\$fastread" in
1696 yes) case "\$dflt" in
1699 case "\$silent-\$rp" in
1704 *) case "\$silent" in
1705 true) case "\$rp" in
1710 while expr "X\$ans" : "X!" >/dev/null; do
1714 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1722 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1731 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1736 echo "(OK, I'll run with -d after this question.)" >&4
1739 echo "*** Sorry, \$1 not supported yet." >&4
1749 echo "*** Substitution done -- please confirm."
1751 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1756 echo "*** Error -- try again."
1763 case "\$ans\$xxxm\$nostick" in
1775 : create .config dir to save info across Configure sessions
1776 test -d ../.config || mkdir ../.config
1777 cat >../.config/README <<EOF
1778 This directory created by Configure to save information that should
1779 persist across sessions for $package.
1781 You may safely delete it if you wish.
1784 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1786 $define|true|[yY]*) ;;
1787 *) case "$xversion" in
1790 *** WHOA THERE!!! ***
1792 This is an UNSTABLE DEVELOPMENT release.
1793 The version of this $package distribution is $xversion, that is, odd,
1794 (as opposed to even) and that signifies a development release.
1795 If you want a maintenance release, you want an even-numbered version.
1797 Do ***NOT*** install this into production use.
1798 Data corruption and crashes are possible.
1800 It is most seriously suggested that you do not continue any further
1801 unless you want to help in developing and debugging Perl.
1804 rp='Do you really want to continue?'
1808 [yY]) echo >&4 "Okay, continuing." ;;
1809 *) echo >&4 "Okay, bye."
1818 : general instructions
1821 user=`(logname) 2>/dev/null`
1823 '') user=`whoami 2>&1`;;
1825 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1828 rp='Would you like to see the instructions?'
1839 This installation shell script will examine your system and ask you questions
1840 to determine how the perl5 package should be installed. If you get
1841 stuck on a question, you may use a ! shell escape to start a subshell or
1842 execute a command. Many of the questions will have default answers in square
1843 brackets; typing carriage return will give you the default.
1845 On some of the questions which ask for file or directory names you are allowed
1846 to use the ~name construct to specify the login directory belonging to "name",
1847 even if you don't have a shell which knows about that. Questions where this is
1848 allowed will be marked "(~name ok)".
1852 dflt='Type carriage return to continue'
1856 The prompter used in this script allows you to use shell variables and
1857 backticks in your answers. You may use $1, $2, etc... to refer to the words
1858 in the default answer, as if the default line was a set of arguments given to a
1859 script shell. This means you may also use $* to repeat the whole default line,
1860 so you do not have to re-type everything to add something to the default.
1862 Everytime there is a substitution, you will have to confirm. If there is an
1863 error (e.g. an unmatched backtick), the default answer will remain unchanged
1864 and you will be prompted again.
1866 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1867 the questions and use the computed defaults (or the previous answers if there
1868 was already a config.sh file). Type 'Configure -h' for a list of options.
1869 You may also start interactively and then answer '& -d' at any prompt to turn
1870 on the non-interactive behaviour for the remainder of the execution.
1876 Much effort has been expended to ensure that this shell script will run on any
1877 Unix system. If despite that it blows up on yours, your best bet is to edit
1878 Configure and run it again. If you can't run Configure for some reason,
1879 you'll have to generate a config.sh file by hand. Whatever problems you
1880 have, let me (perlbug@perl.org) know how I blew it.
1882 This installation script affects things in two ways:
1884 1) it may do direct variable substitutions on some of the files included
1886 2) it builds a config.h file for inclusion in C programs. You may edit
1887 any of these files as the need arises after running this script.
1889 If you make a mistake on a question, there is no easy way to back up to it
1890 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1891 files. Configure will offer to let you do this before it runs the SH files.
1894 dflt='Type carriage return to continue'
1896 case "$firsttime" in
1897 true) echo $user >>../.config/instruct;;
1901 : find out where common programs are
1903 echo "Locating common programs..." >&4
1916 if test -d \$dir/\$thing; then
1922 for thisthing in \$dir/\$thing; do
1923 : just loop through to pick last item
1925 if test -f \$thisthing; then
1928 elif test -f \$dir/\$thing.exe; then
1929 if test -n "$DJGPP"; then
1930 echo \$dir/\$thing.exe
1932 : on Eunice apparently
1982 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1983 pth="$pth /lib /usr/lib"
1984 for file in $loclist; do
1988 if test -f "$xxx"; then
1991 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1992 xxx=`./loc $file $file $pth`
1995 '') xxx=`./loc $file $file $pth`;;
1996 *) xxx=`./loc $xxx $xxx $pth`;;
2002 echo $file is in $xxx.
2005 echo $file is in $xxx.
2008 echo "I don't know where '$file' is, and my life depends on it." >&4
2009 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2015 echo "Don't worry if any of the following aren't found..."
2017 for file in $trylist; do
2021 if test -f "$xxx"; then
2024 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2025 xxx=`./loc $file $file $pth`
2028 '') xxx=`./loc $file $file $pth`;;
2029 *) xxx=`./loc $xxx $xxx $pth`;;
2035 echo $file is in $xxx.
2038 echo $file is in $xxx.
2041 echo "I don't see $file out there, $say."
2048 echo "Substituting grep for egrep."
2054 echo "Substituting cp for ln."
2060 echo "Hopefully test is built into your sh."
2063 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2064 echo "Using the test built into your sh."
2065 echo "Using the test built into your sh."
2073 echo "Hopefully echo is built into your sh."
2078 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2079 $echo $n "hi there$c" >foo1
2080 echo $n "hi there$c" >foo2
2081 if cmp foo1 foo2 >/dev/null 2>&1; then
2082 echo "They are compatible. In fact, they may be identical."
2089 They are not compatible! You are probably running ksh on a non-USG system.
2090 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2091 have echo built in and we may have to run some Bourne shell scripts. That
2092 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2095 $echo $n "The star should be here-->$c"
2105 cat <<'EOSC' >>checkcc
2110 int main(int argc, char *argv[]) {
2114 if $cc -o try $ccflags try.c; then
2117 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2123 case "`$cc -v -c try.c 2>&1`" in
2126 if $test X"$trygcc" = Xyes; then
2127 if gcc -o try -c try.c; then
2129 echo "You seem to have a working gcc, though." >&4
2130 rp="Would you like to use it?"
2132 if $test -f myread; then
2135 if $test -f UU/myread; then
2138 echo "Cannot find myread, sorry. Aborting." >&2
2143 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2147 if $test X"$despair" = Xyes; then
2149 You need to find a working C compiler.
2150 Either (purchase and) install the C compiler supplied by your OS vendor,
2151 or for a free C compiler try http://gcc.gnu.org/
2152 I cannot continue any further, aborting.
2162 : determine whether symbolic links are supported
2165 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2166 echo "Symbolic links are supported." >&4
2169 echo "Symbolic links are NOT supported." >&4
2174 : determine whether symbolic links are supported
2178 echo "Checking how to test for symbolic links..." >&4
2180 if $test "X$issymlink" = X; then
2181 sh -c "PATH= test -h sym" >/dev/null 2>&1
2182 if test $? = 0; then
2186 if $test "X$issymlink" = X; then
2187 if $test -h >/dev/null 2>&1; then
2188 issymlink="$test -h"
2189 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2192 if $test "X$issymlink" = X; then
2193 if $test -L sym 2>/dev/null; then
2194 issymlink="$test -L"
2197 if $test "X$issymlink" != X; then
2198 echo "You can test for symbolic links with '$issymlink'." >&4
2200 echo "I do not know how you can test for symbolic links." >&4
2204 *) echo "No symbolic links, so not testing for their testing..." >&4
2210 case "$mksymlinks" in
2213 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2216 *) case "$lns:$issymlink" in
2217 *"ln -s:"*"test -"?)
2218 echo "Creating the symbolic links..." >&4
2219 echo "(First creating the subdirectories...)" >&4
2221 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2223 test -z "$directory" && break
2227 if test ! -d t/base; then
2228 echo "Failed to create the subdirectories. Aborting." >&4
2231 echo "(Then creating the symlinks...)" >&4
2232 awk '{print $1}' $src/MANIFEST | while true; do
2234 test -z "$filename" && break
2235 if test -f $filename; then
2236 if $issymlink $filename; then
2240 if test -f $filename; then
2241 echo "$filename already exists, not symlinking."
2243 ln -s $src/$filename $filename
2247 if test ! -f t/base/commonsense.t; then
2248 echo "Failed to create the symlinks. Aborting." >&4
2253 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2261 : see whether [:lower:] and [:upper:] are supported character classes
2263 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2265 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2269 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2270 # (0xc9 and 0xd1), therefore that is a nice testing point.
2271 if test "X$up" = X -o "X$low" = X; then
2272 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2278 if test "X$up" = X -o "X$low" = X; then
2279 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2285 if test "X$up" = X -o "X$low" = X; then
2286 case "`echo IJ | od -x 2>/dev/null`" in
2288 echo "Hey, this might be EBCDIC." >&4
2289 if test "X$up" = X -o "X$low" = X; then
2290 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2291 ij) up='[A-IJ-RS-Z]'
2296 if test "X$up" = X -o "X$low" = X; then
2297 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2307 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2309 echo "Using $up and $low to convert case." >&4
2312 echo "I don't know how to translate letters from upper to lower case." >&4
2313 echo "Your tr is not acting any way I know of." >&4
2317 : set up the translation script tr, must be called with ./tr of course
2321 '[A-Z][a-z]') exec $tr '$up' '$low';;
2322 '[a-z][A-Z]') exec $tr '$low' '$up';;
2329 : Try to determine whether config.sh was made on this system
2330 case "$config_sh" in
2332 myuname=`$uname -a 2>/dev/null`
2333 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2334 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2335 # because the A-Z/a-z are not consecutive.
2336 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2337 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2338 newmyuname="$myuname"
2340 case "$knowitall" in
2342 if test -f ../config.sh; then
2343 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2344 eval "`grep myuname= ../config.sh`"
2346 if test "X$myuname" = "X$newmyuname"; then
2354 : Get old answers from old config file if Configure was run on the
2355 : same system, otherwise use the hints.
2358 if test -f config.sh; then
2360 rp="I see a config.sh file. Shall I use it to set the defaults?"
2363 n*|N*) echo "OK, I'll ignore it."
2364 mv config.sh config.sh.old
2365 myuname="$newmyuname"
2367 *) echo "Fetching default answers from your old config.sh file..." >&4
2375 : Older versions did not always set $sh. Catch re-use of such
2385 if test ! -f config.sh; then
2388 First time through, eh? I have some defaults handy for some systems
2389 that need some extra help getting the Configure answers right:
2392 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2394 : Half the following guesses are probably wrong... If you have better
2395 : tests or hints, please send them to perlbug@perl.org
2396 : The metaconfig authors would also appreciate a copy...
2397 $test -f /irix && osname=irix
2398 $test -f /xenix && osname=sco_xenix
2399 $test -f /dynix && osname=dynix
2400 $test -f /dnix && osname=dnix
2401 $test -f /lynx.os && osname=lynxos
2402 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2403 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2404 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2405 $test -f /bin/mips && /bin/mips && osname=mips
2406 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2407 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2408 $test -d /usr/apollo/bin && osname=apollo
2409 $test -f /etc/saf/_sactab && osname=svr4
2410 $test -d /usr/include/minix && osname=minix
2411 if $test -d /MachTen -o -d /MachTen_Folder; then
2413 if $test -x /sbin/version; then
2414 osvers=`/sbin/version | $awk '{print $2}' |
2415 $sed -e 's/[A-Za-z]$//'`
2416 elif $test -x /usr/etc/version; then
2417 osvers=`/usr/etc/version | $awk '{print $2}' |
2418 $sed -e 's/[A-Za-z]$//'`
2424 $test -f /sys/posix.dll &&
2425 $test -f /usr/bin/what &&
2426 set X `/usr/bin/what /sys/posix.dll` &&
2427 $test "$3" = UWIN &&
2431 if $test -f $uname; then
2439 umips) osname=umips ;;
2442 [23]100) osname=mips ;;
2443 next*) osname=next ;;
2445 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2446 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2449 elif $test -f /etc/kconfig; then
2451 if test "$lns" = "$ln -s"; then
2453 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2455 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2462 if test -n "$DJGPP"; then
2471 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2473 'not found') osvers="$4"."$3" ;;
2474 '<3240'|'<>3240') osvers=3.2.0 ;;
2475 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2476 '=3250'|'>3250') osvers=3.2.5 ;;
2480 bsd386) osname=bsd386
2483 cygwin*) osname=cygwin
2486 *dc.osx) osname=dcosx
2492 domainos) osname=apollo
2498 dynixptx*) osname=dynixptx
2499 osvers=`echo "$4"|sed 's/^v//'`
2501 freebsd) osname=freebsd
2503 genix) osname=genix ;;
2505 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2521 netbsd*) osname=netbsd
2524 news-os) osvers="$3"
2526 4*) osname=newsos4 ;;
2530 next*) osname=next ;;
2531 nonstop-ux) osname=nonstopux ;;
2532 POSIX-BC | posix-bc ) osname=posix-bc
2535 powerux | power_ux | powermax_os | powermaxos | \
2536 powerunix | power_unix) osname=powerux
2542 solaris) osname=solaris
2544 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2551 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2555 titanos) osname=titanos
2564 ultrix) osname=ultrix
2567 osf1|mls+) case "$5" in
2570 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2573 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2576 hp*) osname=hp_osf1 ;;
2577 mips) osname=mips_osf1 ;;
2580 unixware) osname=svr5
2586 $2) case "$osname" in
2590 : svr4.x or possibly later
2600 if test -f /stand/boot ; then
2601 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2602 if test -n "$INITPROG" -a -f "$INITPROG"; then
2603 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2604 if test -n "$isesix"; then
2612 *) if test -f /etc/systemid; then
2614 set `echo $3 | $sed 's/\./ /g'` $4
2615 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2617 elif $test -f $src/hints/sco_$1_$2.sh; then
2619 elif $test -f $src/hints/sco_$1.sh; then
2624 '') : Still unknown. Probably a generic Sys V.
2633 *) case "$osname" in
2634 '') : Still unknown. Probably a generic BSD.
2642 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2643 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2644 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2647 $rm -f UU/kernel.what
2648 elif test -d c:/.; then
2655 : Now look for a hint file osname_osvers, unless one has been
2656 : specified already.
2659 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2660 : Also try without trailing minor version numbers.
2661 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2662 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2663 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2664 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2667 *) case "$osvers" in
2670 *) if $test -f $src/hints/$file.sh ; then
2672 elif $test -f $src/hints/$xfile.sh ; then
2674 elif $test -f $src/hints/$xxfile.sh ; then
2676 elif $test -f $src/hints/$xxxfile.sh ; then
2678 elif $test -f $src/hints/$xxxxfile.sh ; then
2680 elif $test -f "$src/hints/${osname}.sh" ; then
2689 if $test -f Policy.sh ; then
2692 none) dflt="Policy" ;;
2693 *) dflt="Policy $dflt" ;;
2698 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2702 if $test -f Policy.sh ; then
2705 There's also a Policy hint file available, which should make the
2706 site-specific (policy) questions easier to answer.
2713 You may give one or more space-separated answers, or "none" if appropriate.
2714 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2715 is a good thing. DO NOT give a wrong version or a wrong OS.
2719 rp="Which of these apply, if any?"
2722 for file in $tans; do
2723 if $test X$file = XPolicy -a -f Policy.sh; then
2725 $cat Policy.sh >> UU/config.sh
2726 elif $test -f $src/hints/$file.sh; then
2727 . $src/hints/$file.sh
2728 $cat $src/hints/$file.sh >> UU/config.sh
2729 elif $test X$tans = X -o X$tans = Xnone ; then
2732 : Give one chance to correct a possible typo.
2733 echo "$file.sh does not exist"
2735 rp="hint to use instead?"
2737 for file in $ans; do
2738 if $test -f "$src/hints/$file.sh"; then
2739 . $src/hints/$file.sh
2740 $cat $src/hints/$file.sh >> UU/config.sh
2741 elif $test X$ans = X -o X$ans = Xnone ; then
2744 echo "$file.sh does not exist -- ignored."
2751 : Remember our hint file for later.
2752 if $test -f "$src/hints/$file.sh" ; then
2762 echo "Fetching default answers from $config_sh..." >&4
2766 cp $config_sh config.sh 2>/dev/null
2776 test "$override" && . ./optdef.sh
2778 : Restore computed paths
2779 for file in $loclist $trylist; do
2780 eval $file="\$_$file"
2785 Configure uses the operating system name and version to set some defaults.
2786 The default value is probably right if the name rings a bell. Otherwise,
2787 since spelling matters for me, either accept the default or answer "none"
2794 ''|' '|none) dflt=none ;;
2795 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2798 *) dflt="$osname" ;;
2800 rp="Operating system name?"
2804 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2810 ''|' '|none) dflt=none ;;
2811 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2812 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2814 ''|' ') dflt=none ;;
2819 *) dflt="$osvers" ;;
2821 rp="Operating system version?"
2831 : who configured the system
2832 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2833 cf_by=`(logname) 2>/dev/null`
2836 cf_by=`(whoami) 2>/dev/null`
2838 "") cf_by=unknown ;;
2842 : set up the script used to warn in case of inconsistency
2849 echo "*** WHOA THERE!!! ***" >&4
2850 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2851 rp=" Keep the $hint value?"
2854 y) td=$was; tu=$was;;
2858 : function used to set $1 to $val
2859 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2861 $define$undef) . ./whoa; eval "$var=\$td";;
2862 $undef$define) . ./whoa; eval "$var=\$tu";;
2863 *) eval "$var=$val";;
2866 case "$usethreads" in
2867 $define|true|[yY]*) dflt='y';;
2872 Perl can be built to take advantage of threads on some systems.
2873 To do so, Configure can be run with -Dusethreads.
2875 Note that threading is a highly experimental feature, and
2876 some known race conditions still remain. If you choose to try
2877 it, be very sure to not actually deploy it for production
2878 purposes. README.threads has more details, and is required
2879 reading if you enable threads.
2881 If this doesn't make any sense to you, just accept the default '$dflt'.
2883 rp='Build a threading Perl?'
2886 y|Y) val="$define" ;;
2892 case "$usethreads" in
2896 As of 5.5.640, Perl has two different internal threading implementations,
2897 the 5.005 version (5005threads) and an interpreter-based version
2898 (ithreads) that has one interpreter per thread. Both are very
2899 experimental. This arrangement exists to help developers work out
2900 which one is better.
2902 If you're a casual user, you probably don't want interpreter-threads
2903 at this time. There doesn't yet exist a way to create threads from
2904 within Perl in this model, i.e., "use Thread;" will NOT work.
2906 : Default to ithreads unless overridden on command line or with
2909 case "$use5005threads" in
2910 $define|true|[yY]*) dflt='n';;
2912 case "$useithreads" in
2913 $undef|false|[nN]*) dflt='n';;
2915 rp='Use interpreter-based ithreads?'
2918 y|Y) val="$define" ;;
2923 : Now set use5005threads to the opposite value.
2924 case "$useithreads" in
2925 $define) val="$undef" ;;
2932 useithreads="$undef"
2933 use5005threads="$undef"
2937 case "$d_oldpthreads" in
2938 '') : Configure tests would be welcome here. For now, assume undef.
2940 *) val="$d_oldpthreads" ;;
2946 case "$usethreads" in
2947 "$define"|true|[yY]*)
2948 : Look for a hint-file generated 'call-back-unit'. If the
2949 : user has specified that a threading perl is to be built,
2950 : we may need to set or change some other defaults.
2951 if $test -f usethreads.cbu; then
2952 echo "Your platform has some specific hints for threaded builds, using them..."
2956 (Your platform doesn't have any specific hints for threaded builds.
2957 Assuming POSIX threads, then.)
2965 Perl can be built so that multiple Perl interpreters can coexist
2966 within the same Perl executable.
2969 case "$useithreads" in
2972 This multiple interpreter support is required for interpreter-based threads.
2976 *) case "$usemultiplicity" in
2977 $define|true|[yY]*) dflt='y';;
2981 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2982 rp='Build Perl for multiplicity?'
2985 y|Y) val="$define" ;;
2993 : make some quick guesses about what we are up against
2995 $echo $n "Hmm... $c"
3005 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3006 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3008 echo "Looks kind of like an OSF/1 system, but we'll see..."
3010 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3011 xxx=`./loc addbib blurfl $pth`
3012 if $test -f $xxx; then
3013 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3017 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3018 echo "Looks kind of like an extended USG system, but we'll see..."
3020 echo "Looks kind of like a USG system, but we'll see..."
3024 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3025 echo "Looks kind of like a BSD system, but we'll see..."
3029 echo "Looks kind of like a Version 7 system, but we'll see..."
3032 case "$eunicefix" in
3035 There is, however, a strange, musty smell in the air that reminds me of
3036 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3040 : it so happens the Eunice I know will not run shell scripts in Unix format
3044 echo "Congratulations. You aren't running Eunice."
3048 : Detect OS2. The p_ variable is set above in the Head.U unit.
3049 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3050 : semicolon as a patch separator
3055 I have the feeling something is not exactly right, however...don't tell me...
3056 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3057 (Or you may be running DOS with DJGPP.)
3062 if test -f /xenix; then
3063 echo "Actually, this looks more like a XENIX system..."
3068 echo "It's not Xenix..."
3073 if test -f /venix; then
3074 echo "Actually, this looks more like a VENIX system..."
3081 echo "Nor is it Venix..."
3084 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3085 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3092 rp="Use which C compiler?"
3095 : Look for a hint-file generated 'call-back-unit'. Now that the
3096 : user has specified the compiler, we may need to set or change some
3098 if $test -f cc.cbu; then
3104 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3105 $cat >gccvers.c <<EOM
3110 printf("%s\n", __VERSION__);
3112 printf("%s\n", "1");
3118 if $cc -o gccvers $ldflags gccvers.c; then
3119 gccversion=`./gccvers`
3120 case "$gccversion" in
3121 '') echo "You are not using GNU cc." ;;
3122 *) echo "You are using GNU cc $gccversion."
3128 echo "*** WHOA THERE!!! ***" >&4
3129 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3130 case "$knowitall" in
3132 echo " You'd better start hunting for one and let me know about it." >&4
3138 case "$gccversion" in
3139 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3141 case "$gccversion" in
3142 '') gccosandvers='' ;;
3143 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3144 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3146 case "$gccosandvers" in
3147 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3148 $osname$osvers) ;; # looking good
3149 $osname*) cat <<EOM >&4
3151 *** WHOA THERE!!! ***
3153 Your gcc has not been compiled for the exact release of
3154 your operating system ($gccosandvers versus $osname$osvers).
3156 In general it is a good idea to keep gcc synchronized with
3157 the operating system because otherwise serious problems
3158 may ensue when trying to compile software, like Perl.
3160 I'm trying to be optimistic here, though, and will continue.
3161 If later during the configuration and build icky compilation
3162 problems appear (headerfile conflicts being the most common
3163 manifestation), I suggest reinstalling the gcc to match
3164 your operating system release.
3168 *) gccosandvers='' ;; # failed to parse, better be silent
3176 : see how we invoke the C preprocessor
3178 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3179 cat <<'EOT' >testcpp.c
3185 if test ! -f cppstdin; then
3186 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3187 # AIX cc -E doesn't show the absolute headerfile
3188 # locations but we'll cheat by using the -M flag.
3189 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
3191 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3194 echo "Keeping your $hint cppstdin wrapper."
3197 wrapper=`pwd`/cppstdin
3201 if $test "X$cppstdin" != "X" && \
3202 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3203 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3205 echo "You used to use $cppstdin $cppminus so we'll use that again."
3207 '') echo "But let's see if we can live without a wrapper..." ;;
3209 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3210 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3212 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3215 echo "(However, $cpprun $cpplast does not work, let's see...)"
3223 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3230 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3231 $cc -E <testcpp.c >testcpp.out 2>&1; \
3232 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3233 echo "Yup, it does."
3236 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3237 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3238 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3239 echo "Yup, it does."
3242 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3243 $cc -P <testcpp.c >testcpp.out 2>&1; \
3244 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3245 echo "Yipee, that works!"
3248 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3249 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3250 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3251 echo "At long last!"
3254 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3255 $cpp <testcpp.c >testcpp.out 2>&1; \
3256 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3260 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3261 $cpp - <testcpp.c >testcpp.out 2>&1; \
3262 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3263 echo "Hooray, it works! I was beginning to wonder."
3266 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3267 $wrapper <testcpp.c >testcpp.out 2>&1; \
3268 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3274 rp="No dice. I can't find a C preprocessor. Name one:"
3278 $x_cpp <testcpp.c >testcpp.out 2>&1
3279 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3280 echo "OK, that will do." >&4
3282 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3297 echo "Perhaps can we force $cc -E using a wrapper..."
3298 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3299 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3305 echo "Nope, we'll have to live without it..."
3319 "$wrapper"|'cppstdin') ;;
3320 *) $rm -f $wrapper;;
3322 $rm -f testcpp.c testcpp.out
3324 : decide how portable to be. Allow command line overrides.
3325 case "$d_portable" in
3327 *) d_portable="$define" ;;
3330 : set up shell script to do ~ expansion
3336 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3339 if $test -f /bin/csh; then
3340 /bin/csh -f -c "glob \$1"
3345 name=\`$expr x\$1 : '..\([^/]*\)'\`
3346 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3347 if $test ! -d "\$dir"; then
3349 echo "\$me: can't locate home directory for: \$name" >&2
3354 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3370 : now set up to get a file name
3374 cat <<'EOSC' >>getfile
3390 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3391 fn=`echo $fn | sed 's/(.*)//'`
3397 loc_file=`expr $fn : '.*:\(.*\)'`
3398 fn=`expr $fn : '\(.*\):.*'`
3406 */*) fullpath=true;;
3415 *e*) exp_file=true;;
3418 *p*) nopath_ok=true;;
3423 *d*) type='Directory';;
3424 *l*) type='Locate';;
3429 Locate) what='File';;
3434 case "$d_portable" in
3442 while test "$type"; do
3447 true) rp="$rp (~name ok)";;
3450 if test -f UU/getfile.ok && \
3451 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3470 value=`UU/filexp $ans`
3473 if test "$ans" != "$value"; then
3474 echo "(That expands to $value on this system.)"
3488 /*) value="$ansexp" ;;
3489 [a-zA-Z]:/*) value="$ansexp" ;;
3494 echo "I shall only accept a full path name, as in /bin/ls." >&4
3495 echo "Use a ! shell escape if you wish to check pathnames." >&4
3498 echo "Please give a full path name, starting with slash." >&4
3501 echo "Note that using ~name is ok provided it expands well." >&4
3514 for fp in $gfpth; do
3515 if test "X$fp" = X.; then
3520 if test -f "$pf"; then
3522 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3524 echo "($value is not a plain file, but that's ok.)"
3527 if test X"$type" = X; then
3534 for fp in $gfpth; do
3535 if test "X$fp" = X.; then
3540 direxp="$fp/$ansexp"
3542 if test -d "$direxp"; then
3550 if test -d "$ansexp"; then
3551 echo "(Looking for $loc_file in directory $value.)"
3552 value="$value/$loc_file"
3553 ansexp="$ansexp/$loc_file"
3555 if test -f "$ansexp"; then
3558 case "$nopath_ok" in
3559 true) case "$value" in
3561 *) echo "Assuming $value will be in people's path."
3577 if test "$fastread" = yes; then
3582 rp="$what $value doesn't exist. Use that name anyway?"
3601 test "X$gfpthkeep" != Xy && gfpth=""
3604 : What should the include directory be ?
3606 $echo $n "Hmm... $c"
3610 if $test -f /bin/mips && /bin/mips; then
3611 echo "Looks like a MIPS system..."
3612 $cat >usr.c <<'EOCP'
3613 #ifdef SYSTYPE_BSD43
3617 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3618 dflt='/bsd43/usr/include'
3622 mips_type='System V'
3624 $rm -f usr.c usr.out
3625 echo "and you're compiling with the $mips_type compiler and libraries."
3629 echo "Doesn't look like a MIPS system."
3639 case "$xxx_prompt" in
3642 rp='Where are the include files you want to use?'
3650 : Set private lib path
3653 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3658 '') dlist="$loclibpth $plibpth $glibpth";;
3659 *) dlist="$libpth";;
3662 : Now check and see which directories actually exist, avoiding duplicates
3666 if $test -d $xxx; then
3669 *) libpth="$libpth $xxx";;
3675 Some systems have incompatible or broken versions of libraries. Among
3676 the directories listed in the question below, please remove any you
3677 know not to be holding relevant libraries, and add any that are needed.
3678 Say "none" for none.
3689 rp="Directories to use for library searches?"
3696 : compute shared library extension
3699 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3709 On some systems, shared libraries may be available. Answer 'none' if
3710 you want to suppress searching of shared libraries for the remainder
3711 of this configuration.
3714 rp='What is the file extension used for shared libraries?'
3718 : Define several unixisms.
3719 : Hints files or command line option can be used to override them.
3720 : The convoluted testing is in case hints files set either the old
3723 '') case "$exe_ext" in
3725 *) _exe="$exe_ext" ;;
3730 '') case "$lib_ext" in
3737 '') case "$obj_ext" in
3744 '') case "$path_sep" in
3755 : Which makefile gets called first. This is used by make depend.
3756 case "$firstmakefile" in
3757 '') firstmakefile='makefile';;
3761 $define|true|[yY]*) dflt='y';;
3766 Perl can be built to use the SOCKS proxy protocol library. To do so,
3767 Configure must be run with -Dusesocks. If you use SOCKS you also need
3768 to use the PerlIO abstraction layer, this will be implicitly selected.
3770 If this doesn't make any sense to you, just accept the default '$dflt'.
3772 rp='Build Perl for SOCKS?'
3775 y|Y) val="$define" ;;
3782 $define|true|[yY]*) useperlio="$define";;
3785 : Looking for optional libraries
3787 echo "Checking for optional libraries..." >&4
3792 case "$libswanted" in
3793 '') libswanted='c_s';;
3796 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3802 for thisdir in $libpth $xlibpth; do
3803 test -d $thisdir && libspath="$libspath $thisdir"
3805 for thislib in $libswanted; do
3806 for thisdir in $libspath; do
3808 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3809 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3810 $test -f "$xxx" && eval $libscheck
3811 $test -f "$xxx" && libstyle=shared
3813 if test ! -f "$xxx"; then
3814 xxx=$thisdir/lib$thislib.$so
3815 $test -f "$xxx" && eval $libscheck
3816 $test -f "$xxx" && libstyle=shared
3818 if test ! -f "$xxx"; then
3819 xxx=$thisdir/lib$thislib$_a
3820 $test -f "$xxx" && eval $libscheck
3821 $test -f "$xxx" && libstyle=static
3823 if test ! -f "$xxx"; then
3824 xxx=$thisdir/$thislib$_a
3825 $test -f "$xxx" && eval $libscheck
3826 $test -f "$xxx" && libstyle=static
3828 if test ! -f "$xxx"; then
3829 xxx=$thisdir/lib${thislib}_s$_a
3830 $test -f "$xxx" && eval $libscheck
3831 $test -f "$xxx" && libstyle=static
3832 $test -f "$xxx" && thislib=${thislib}_s
3834 if test ! -f "$xxx"; then
3835 xxx=$thisdir/Slib$thislib$_a
3836 $test -f "$xxx" && eval $libscheck
3837 $test -f "$xxx" && libstyle=static
3839 if $test -f "$xxx"; then
3841 shared) echo "Found -l$thislib (shared)." ;;
3842 static) echo "Found -l$thislib." ;;
3843 *) echo "Found -l$thislib ($libstyle)." ;;
3847 *) dflt="$dflt -l$thislib"
3848 libsfound="$libsfound $xxx"
3850 libsfiles="$libsfiles $yyy"
3851 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3852 case " $libsdirs " in
3854 *) libsdirs="$libsdirs $yyy" ;;
3861 if $test ! -f "$xxx"; then
3862 echo "No -l$thislib."
3873 ' '|'') dflt='none';;
3878 In order to compile $package on your machine, a number of libraries
3879 are usually needed. Include any other special libraries here as well.
3880 Say "none" for none. The default list is almost always right.
3884 rp="What libraries to use?"
3891 : determine optimization, if desired, or use for debug flag also
3893 ' '|$undef) dflt='none';;
3895 *) dflt="$optimize";;
3899 By default, $package compiles with the -O flag to use the optimizer.
3900 Alternately, you might want to use the symbolic debugger, which uses
3901 the -g flag (on traditional Unix systems). Either flag can be
3902 specified here. To use neither flag, specify the word "none".
3905 rp="What optimizer/debugger flag should be used?"
3909 'none') optimize=" ";;
3913 : We will not override a previous value, but we might want to
3914 : augment a hint file
3916 default|recommended)
3917 case "$gccversion" in
3918 1*) dflt='-fpcc-struct-return' ;;
3921 *-g*) dflt="$dflt -DDEBUGGING";;
3923 case "$gccversion" in
3924 2*) if test -d /etc/conf/kconfig.d &&
3925 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3931 case "$gccversion" in
3935 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3936 echo 'int main(void) { return 0; }' > gcctest.c
3937 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3938 echo "Yes, it does." 2>&1
3941 echo "Leaving current flags $ccflags alone." 2>&1
3943 *) dflt="$dflt -fno-strict-aliasing" ;;
3946 echo "Nope, it doesn't, but that's ok." 2>&1
3953 case "$mips_type" in
3954 *BSD*|'') inclwanted="$locincpth $usrinc";;
3955 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3957 for thisincl in $inclwanted; do
3958 if $test -d $thisincl; then
3959 if $test x$thisincl != x$usrinc; then
3961 *" -I$thisincl "*);;
3962 *) dflt="$dflt -I$thisincl ";;
3968 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3970 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3978 *) dflt="$dflt -D$2";;
3982 set signal.h LANGUAGE_C; eval $inctest
3986 ccflags="$ccflags -DSOCKS"
3991 default|recommended) dflt="$ccflags $dflt" ;;
3992 *) dflt="$ccflags";;
4001 Your C compiler may want other flags. For this question you should include
4002 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4003 but you should NOT include libraries or ld flags like -lwhatever. If you
4004 want $package to honor its debug switch, you should include -DDEBUGGING here.
4005 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4007 To use no flags, specify the word "none".
4013 rp="Any additional cc flags?"
4020 : the following weeds options from ccflags that are of no interest to cpp
4022 case "$gccversion" in
4023 1*) cppflags="$cppflags -D__GNUC__"
4025 case "$mips_type" in
4027 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4033 echo "Let me guess what the preprocessor flags are..." >&4
4047 *) ftry="$previous $flag";;
4049 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4050 >cpp1.out 2>/dev/null && \
4051 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4052 >cpp2.out 2>/dev/null && \
4053 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4054 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4056 cppflags="$cppflags $ftry"
4066 *-*) echo "They appear to be: $cppflags";;
4068 $rm -f cpp.c cpp?.out
4072 : flags used in final linking phase
4074 '') if ./venix; then
4080 *-posix*) dflt="$dflt -posix" ;;
4083 *) dflt="$ldflags";;
4086 : Try to guess additional flags to pick up local libraries.
4087 for thislibdir in $libpth; do
4088 case " $loclibpth " in
4091 *"-L$thislibdir "*) ;;
4092 *) dflt="$dflt -L$thislibdir" ;;
4104 Your C linker may need flags. For this question you should
4105 include -L/whatever and any other flags used by the C linker, but you
4106 should NOT include libraries like -lwhatever.
4108 Make sure you include the appropriate -L/path flags if your C linker
4109 does not normally search all of the directories you specified above,
4112 To use no flags, specify the word "none".
4116 rp="Any additional ld flags (NOT including libraries)?"
4122 rmlist="$rmlist pdp11"
4126 echo "Checking your choice of C compiler and flags for coherency..." >&4
4127 $cat > try.c <<'EOF'
4129 int main() { printf("Ok\n"); exit(0); }
4131 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4133 $cat >try.msg <<'EOM'
4134 I've tried to compile and run the following simple program:
4137 $cat try.c >> try.msg
4139 $cat >> try.msg <<EOM
4146 and I got the following output:
4150 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4151 if $sh -c './try' >>try.msg 2>&1; then
4155 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4158 cat >> try.msg <<'EOQS'
4159 If $libs contains -lsfio, and sfio is mis-configured, then it
4160 sometimes (apparently) runs and exits with a 0 status, but with no
4161 output! It may have to do with sfio's use of _exit vs. exit.
4164 rp="You have a big problem. Shall I abort Configure"
4171 echo "The program compiled OK, but exited with status $?." >>try.msg
4172 rp="You have a problem. Shall I abort Configure"
4176 echo "I can't compile the test program." >>try.msg
4177 rp="You have a BIG problem. Shall I abort Configure"
4183 case "$knowitall" in
4185 echo "(The supplied flags or libraries might be incorrect.)"
4193 *) echo "Ok. Stopping Configure." >&4
4198 n) echo "OK, that should do.";;
4200 $rm -f try try.* core
4202 : define an is-a-typedef? function
4203 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4205 "") inclist="sys/types.h";;
4207 eval "varval=\$$var";
4211 for inc in $inclist; do
4212 echo "#include <$inc>" >>temp.c;
4214 echo "#ifdef $type" >> temp.c;
4215 echo "printf(\"We have $type\");" >> temp.c;
4216 echo "#endif" >> temp.c;
4217 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4218 if $contains $type temp.E >/dev/null 2>&1; then
4224 *) eval "$var=\$varval";;
4227 : define an is-a-typedef? function that prompts if the type is not available.
4228 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4230 "") inclist="sys/types.h";;
4232 eval "varval=\$$var";
4236 for inc in $inclist; do
4237 echo "#include <$inc>" >>temp.c;
4239 echo "#ifdef $type" >> temp.c;
4240 echo "printf(\"We have $type\");" >> temp.c;
4241 echo "#endif" >> temp.c;
4242 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4244 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4245 if $contains $type temp.E >/dev/null 2>&1; then
4246 echo "$type found." >&4;
4249 echo "$type NOT found." >&4;
4255 *) eval "$var=\$varval";;
4258 : define a shorthand compile call
4262 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4263 : define a shorthand compile call for compilations that should be ok.
4267 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4269 : check for lengths of integral types
4273 echo "Checking to see how big your integers are..." >&4
4274 $cat >intsize.c <<'EOCP'
4278 printf("intsize=%d;\n", (int)sizeof(int));
4279 printf("longsize=%d;\n", (int)sizeof(long));
4280 printf("shortsize=%d;\n", (int)sizeof(short));
4285 if eval $compile_ok && ./intsize > /dev/null; then
4287 echo "Your integers are $intsize bytes long."
4288 echo "Your long integers are $longsize bytes long."
4289 echo "Your short integers are $shortsize bytes long."
4293 Help! I can't compile and run the intsize test program: please enlighten me!
4294 (This is probably a misconfiguration in your system or libraries, and
4295 you really ought to fix it. Still, I'll try anyway.)
4299 rp="What is the size of an integer (in bytes)?"
4303 rp="What is the size of a long integer (in bytes)?"
4307 rp="What is the size of a short integer (in bytes)?"
4313 $rm -f intsize intsize.*
4315 : see what type lseek is declared as in the kernel
4316 rp="What is the type used for lseek's offset on this system?"
4317 set off_t lseektype long stdio.h sys/types.h
4321 echo "Checking to see how big your file offsets are..." >&4
4323 #include <sys/types.h>
4327 printf("%d\n", (int)sizeof($lseektype));
4332 if eval $compile_ok; then
4334 echo "Your file offsets are $lseeksize bytes long."
4338 echo "(I can't seem to compile the test program. Guessing...)"
4339 rp="What is the size of your file offsets (in bytes)?"
4345 : see what type file positions are declared as in the library
4346 rp="What is the type for file position used by fsetpos()?"
4347 set fpos_t fpostype long stdio.h sys/types.h
4352 *_t) zzz="$fpostype" ;;
4355 echo "Checking the size of $zzz..." >&4
4357 #include <sys/types.h>
4360 printf("%d\n", (int)sizeof($fpostype));
4365 if eval $compile_ok; then
4369 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4372 echo "Your $zzz is $fpossize bytes long."
4378 echo "(I can't compile the test program. Guessing...)" >&4
4379 rp="What is the size of your file positions (in bytes)?"
4386 # Backward compatibility (uselfs is deprecated).
4388 "$define"|true|[yY]*)
4391 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4393 uselargefiles="$define"
4397 case "$lseeksize:$fpossize" in
4400 You can have files larger than 2 gigabytes.
4403 *) case "$uselargefiles" in
4404 "$undef"|false|[nN]*) dflt='n' ;;
4409 Perl can be built to understand large files (files larger than 2 gigabytes)
4410 on some systems. To do so, Configure can be run with -Duselargefiles.
4412 If this doesn't make any sense to you, just accept the default '$dflt'.
4414 rp='Try to understand large files, if available?'
4417 y|Y) val="$define" ;;
4424 case "$uselargefiles" in
4426 : Look for a hint-file generated 'call-back-unit'. If the
4427 : user has specified that a large files perl is to be built,
4428 : we may need to set or change some other defaults.
4429 if $test -f uselargefiles.cbu; then
4430 echo "Your platform has some specific hints for large file builds, using them..."
4431 . ./uselargefiles.cbu
4433 echo "Rechecking to see how big your file offsets are..." >&4
4435 #include <sys/types.h>
4439 printf("%d\n", (int)sizeof($lseektype));
4444 if eval $compile_ok; then
4446 $echo "Your file offsets are now $lseeksize bytes long."
4450 echo "(I can't seem to compile the test program. Guessing...)"
4451 rp="What is the size of your file offsets (in bytes)?"
4456 *_t) zzz="$fpostype" ;;
4459 $echo $n "Rechecking the size of $zzz...$c" >&4
4461 #include <sys/types.h>
4464 printf("%d\n", (int)sizeof($fpostype));
4469 if eval $compile_ok; then
4474 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4477 echo " $fpossize bytes." >&4
4483 echo "(I can't compile the test program. Guessing...)" >&4
4484 rp="What is the size of your file positions (in bytes)?"
4494 case "$usemorebits" in
4495 "$define"|true|[yY]*)
4496 use64bitint="$define"
4497 uselongdouble="$define"
4498 usemorebits="$define"
4500 *) usemorebits="$undef"
4505 case "$uselonglong" in
4506 "$define"|true|[yY]*)
4509 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4511 use64bitint="$define"
4514 case "$use64bits" in
4515 "$define"|true|[yY]*)
4518 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4520 use64bitint="$define"
4523 case "$use64bitints" in
4524 "$define"|true|[yY]*)
4527 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4529 use64bitint="$define"
4532 case "$use64bitsint" in
4533 "$define"|true|[yY]*)
4536 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4538 use64bitint="$define"
4541 case "$uselonglongs" in
4542 "$define"|true|[yY]*)
4545 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4547 use64bitint="$define"
4550 case "$use64bitsall" in
4551 "$define"|true|[yY]*)
4554 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4556 use64bitall="$define"
4561 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4563 case "$use64bitall" in
4564 "$define"|true|[yY]*) use64bitint="$define" ;;
4570 You have natively 64-bit long integers.
4574 *) case "$use64bitint" in
4575 "$define"|true|[yY]*) dflt='y';;
4580 Perl can be built to take advantage of 64-bit integer types
4581 on some systems. To do so, Configure can be run with -Duse64bitint.
4582 Choosing this option will most probably introduce binary incompatibilities.
4584 If this doesn't make any sense to you, just accept the default '$dflt'.
4586 rp='Try to use 64-bit integers, if available?'
4589 [yY]*) val="$define" ;;
4597 case "$use64bitall" in
4598 "$define"|true|[yY]*) dflt='y' ;;
4599 *) case "$longsize" in
4607 You may also choose to try maximal 64-bitness. It means using as much
4608 64-bitness as possible on the platform. This in turn means even more
4609 binary incompatibilities. On the other hand, your platform may not
4610 have any more 64-bitness available than what you already have chosen.
4612 If this doesn't make any sense to you, just accept the default '$dflt'.
4614 rp='Try to use maximal 64-bit support, if available?'
4617 [yY]*) val="$define" ;;
4622 case "$use64bitall" in
4624 case "$use64bitint" in
4628 Since you have chosen a maximally 64-bit build, I'm also turning on
4629 the use of 64-bit integers.
4631 use64bitint="$define" ;;
4636 case "$use64bitint" in
4637 "$define"|true|[yY]*)
4638 : Look for a hint-file generated 'call-back-unit'. If the
4639 : user has specified that a 64-bit perl is to be built,
4640 : we may need to set or change some other defaults.
4641 if $test -f use64bitint.cbu; then
4642 echo "Your platform has some specific hints for 64-bit integers, using them..."
4646 4) case "$archname64" in
4647 '') archname64=64int ;;
4654 case "$use64bitall" in
4655 "$define"|true|[yY]*)
4656 : Look for a hint-file generated 'call-back-unit'. If the
4657 : user has specified that a maximally 64-bit perl is to be built,
4658 : we may need to set or change some other defaults.
4659 if $test -f use64bitall.cbu; then
4660 echo "Your platform has some specific hints for 64-bit builds, using them..."
4664 4) case "$archname64" in
4665 ''|64int) archname64=64all ;;
4673 echo "Checking for GNU C Library..." >&4
4674 cat >gnulibc.c <<EOM
4686 if eval $compile_ok && ./gnulibc; then
4688 echo "You are using the GNU C Library"
4691 echo "You are not using the GNU C Library"
4697 : see if nm is to be used to determine whether a symbol is defined or not
4701 case "$d_gnulibc" in
4704 echo "nm probably won't work on the GNU C Library." >&4
4710 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4712 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4713 echo "'nm' won't be sufficient on this sytem." >&4
4719 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4720 if $test $dflt -gt 20; then
4730 true|$define) dflt=y;;
4737 I can use $nm to extract the symbols from your C libraries. This
4738 is a time consuming task which may generate huge output on the disk (up
4739 to 3 megabytes) but that should make the symbols extraction faster. The
4740 alternative is to skip the 'nm' extraction part and to compile a small
4741 test program instead to determine whether each symbol is present. If
4742 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4743 this may be the best solution.
4745 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4748 rp="Shall I use $nm to extract C symbols from the libraries?"
4751 [Nn]*) usenm=false;;
4760 : nm options which may be necessary
4762 '') if $test -f /mach_boot; then
4764 elif $test -d /usr/ccs/lib; then
4765 nm_opt='-p' # Solaris (and SunOS?)
4766 elif $test -f /dgux; then
4768 elif $test -f /lib64/rld; then
4769 nm_opt='-p' # 64-bit Irix
4775 : nm options which may be necessary for shared libraries but illegal
4776 : for archive libraries. Thank you, Linux.
4777 case "$nm_so_opt" in
4778 '') case "$myuname" in
4780 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4781 nm_so_opt='--dynamic'
4790 : get list of predefined functions in a handy place
4795 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4802 *) for thislib in $libs; do
4805 : Handle C library specially below.
4808 thislib=`echo $thislib | $sed -e 's/^-l//'`
4809 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4811 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4813 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4815 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4817 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4819 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4821 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4826 libnames="$libnames $try"
4828 *) libnames="$libnames $thislib" ;;
4837 for xxx in $libpth; do
4838 $test -r $1 || set $xxx/libc.$so
4839 : The messy sed command sorts on library version numbers.
4841 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4842 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4844 s/[0-9][0-9]*/0000&/g
4845 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4848 $sort | $sed -e 's/^.* //'`
4851 $test -r $1 || set /usr/ccs/lib/libc.$so
4852 $test -r $1 || set /lib/libsys_s$_a
4858 if $test -r "$1"; then
4859 echo "Your (shared) C library seems to be in $1."
4861 elif $test -r /lib/libc && $test -r /lib/clib; then
4862 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4864 libc='/lib/clib /lib/libc'
4865 if $test -r /lib/syslib; then
4866 echo "(Your math library is in /lib/syslib.)"
4867 libc="$libc /lib/syslib"
4869 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4870 echo "Your C library seems to be in $libc, as you said before."
4871 elif $test -r $incpath/usr/lib/libc$_a; then
4872 libc=$incpath/usr/lib/libc$_a;
4873 echo "Your C library seems to be in $libc. That's fine."
4874 elif $test -r /lib/libc$_a; then
4876 echo "Your C library seems to be in $libc. You're normal."
4878 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4880 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4881 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4882 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4884 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4886 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4889 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4891 if $test -r "$tans"; then
4892 echo "Your C library seems to be in $tans, of all places."
4898 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4902 If the guess above is wrong (which it might be if you're using a strange
4903 compiler, or your machine supports multiple models), you can override it here.
4908 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4910 I can't seem to find your C library. I've looked in the following places:
4913 $sed 's/^/ /' libpath
4916 None of these seems to contain your C library. I need to get its name...
4921 rp='Where is your C library?'
4926 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4927 set X `cat libnames`
4930 case $# in 1) xxx=file; esac
4931 echo "Extracting names from the following $xxx for later perusal:" >&4
4933 $sed 's/^/ /' libnames >&4
4935 $echo $n "This may take a while...$c" >&4
4939 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4940 *) $nm $nm_opt $file 2>/dev/null;;
4945 $grep fprintf libc.tmp > libc.ptf
4946 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4947 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4949 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4951 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4953 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4955 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4957 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4959 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4961 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4963 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4965 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4967 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4969 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4971 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4973 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4974 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4976 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4978 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4980 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4982 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4984 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4986 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4988 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4990 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4992 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4994 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4996 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4998 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5000 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5002 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5004 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5007 $nm -p $* 2>/dev/null >libc.tmp
5008 $grep fprintf libc.tmp > libc.ptf
5009 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5010 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5016 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5018 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5019 for thisname in $libnames $libc; do
5020 $ar t $thisname >>libc.tmp
5022 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5024 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5025 # Repeat libc to extract forwarders to DLL entries too
5026 for thisname in $libnames $libc; do
5027 $ar tv $thisname >>libc.tmp
5028 # Revision 50 of EMX has bug in $ar.
5029 # it will not extract forwarders to DLL entries
5030 # Use emximp which will extract exactly them.
5031 emximp -o tmp.imp $thisname \
5033 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5034 < tmp.imp >>libc.tmp
5037 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5040 echo "$ar didn't seem to work right." >&4
5041 echo "Maybe this is a Cray...trying bld instead..." >&4
5042 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5044 for thisname in $libnames; do
5046 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5047 $ar t $thisname >>libc.tmp
5051 echo "That didn't work either. Giving up." >&4
5058 if $test -f /lib/syscalls.exp; then
5060 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5061 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5065 $rm -f libnames libpath
5067 : is a C symbol defined?
5070 -v) tf=libc.tmp; tc=""; tdc="";;
5071 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5072 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5075 case "$reuseval-$4" in
5077 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5083 if $contains $tlook $tf >/dev/null 2>&1;
5088 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5089 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5097 $define) tval=true;;
5103 : define an is-in-libc? function
5104 inlibc='echo " "; td=$define; tu=$undef;
5105 sym=$1; var=$2; eval "was=\$$2";
5107 case "$reuseval$was" in
5117 echo "$sym() found." >&4;
5118 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5120 echo "$sym() NOT found." >&4;
5121 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5125 $define) echo "$sym() found." >&4;;
5126 *) echo "$sym() NOT found." >&4;;
5130 : see if sqrtl exists
5135 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5138 case "$uselongdouble" in
5139 $define|true|[yY]*) dflt='y';;
5144 Perl can be built to take advantage of long doubles which
5145 (if available) may give more accuracy and range for floating point numbers.
5147 If this doesn't make any sense to you, just accept the default '$dflt'.
5149 rp='Try to use long doubles if available?'
5152 y|Y) val="$define" ;;
5158 case "$uselongdouble" in
5159 true|[yY]*) uselongdouble="$define" ;;
5162 case "$uselongdouble" in
5164 : Look for a hint-file generated 'call-back-unit'. If the
5165 : user has specified that long doubles should be used,
5166 : we may need to set or change some other defaults.
5167 if $test -f uselongdouble.cbu; then
5168 echo "Your platform has some specific hints for long doubles, using them..."
5169 . ./uselongdouble.cbu
5172 (Your platform doesn't have any specific hints for long doubles.)
5178 case "$uselongdouble:$d_sqrtl" in
5182 *** You requested the use of long doubles but you do not seem to have
5183 *** the mathematic functions for long doubles. I'm disabling the use
5184 *** of long doubles.
5187 uselongdouble=$undef
5191 : check for length of double
5193 case "$doublesize" in
5195 echo "Checking to see how big your double precision numbers are..." >&4
5196 $cat >try.c <<'EOCP'
5200 printf("%d\n", (int)sizeof(double));
5205 if eval $compile_ok; then
5207 echo "Your double is $doublesize bytes long."
5210 echo "(I can't seem to compile the test program. Guessing...)"
5211 rp="What is the size of a double precision number (in bytes)?"
5219 : check for long doubles
5221 echo "Checking to see if you have long double..." >&4
5222 echo 'int main() { long double x = 7.0; }' > try.c
5224 if eval $compile; then
5226 echo "You have long double."
5229 echo "You do not have long double."
5235 : check for length of long double
5236 case "${d_longdbl}${longdblsize}" in
5239 echo "Checking to see how big your long doubles are..." >&4
5240 $cat >try.c <<'EOCP'
5244 printf("%d\n", sizeof(long double));
5249 if eval $compile; then
5250 longdblsize=`./try$exe_ext`
5251 echo "Your long doubles are $longdblsize bytes long."
5255 echo "(I can't seem to compile the test program. Guessing...)" >&4
5256 rp="What is the size of a long double (in bytes)?"
5260 if $test "X$doublesize" = "X$longdblsize"; then
5261 echo "(That isn't any different from an ordinary double.)"
5267 : determine the architecture name
5269 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5270 tarch=`arch`"-$osname"
5271 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5272 if uname -m > tmparch 2>&1 ; then
5273 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5274 -e 's/$/'"-$osname/" tmparch`
5282 case "$myarchname" in
5285 echo "(Your architecture name used to be $myarchname.)"
5292 *) dflt="$archname";;
5294 rp='What is your architecture name'
5297 case "$usethreads" in
5299 echo "Threads selected." >&4
5301 *-thread*) echo "...and architecture name already has -thread." >&4
5303 *) archname="$archname-thread"
5304 echo "...setting architecture name to $archname." >&4
5309 case "$usemultiplicity" in
5311 echo "Multiplicity selected." >&4
5313 *-multi*) echo "...and architecture name already has -multi." >&4
5315 *) archname="$archname-multi"
5316 echo "...setting architecture name to $archname." >&4
5321 case "$use64bitint$use64bitall" in
5323 case "$archname64" in
5325 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5328 case "$use64bitint" in
5329 "$define") echo "64 bit integers selected." >&4 ;;
5331 case "$use64bitall" in
5332 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5335 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5337 *) archname="$archname-$archname64"
5338 echo "...setting architecture name to $archname." >&4
5344 case "$uselongdouble" in
5346 echo "Long doubles selected." >&4
5347 case "$longdblsize" in
5349 "...but long doubles are equal to doubles, not changing architecture name." >&4
5353 *-ld*) echo "...and architecture name already has -ld." >&4
5355 *) archname="$archname-ld"
5356 echo "...setting architecture name to $archname." >&4
5364 : determine root of directory hierarchy where package will be installed.
5367 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5375 By default, $package will be installed in $dflt/bin, manual pages
5376 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5377 installation directories. Typically this is something like /usr/local.
5378 If you wish to have binaries under /usr/bin but other parts of the
5379 installation under /usr/local, that's ok: you will be prompted
5380 separately for each of the installation directories, the prefix being
5381 only used to set the defaults.
5385 rp='Installation prefix to use?'
5393 *) oldprefix="$prefix";;
5403 $define|true) afs=true ;;
5404 $undef|false) afs=false ;;
5405 *) if test -d /afs; then
5413 echo "AFS may be running... I'll be extra cautious then..." >&4
5415 echo "AFS does not seem to be running..." >&4
5418 : determine installation prefix for where package is to be installed.
5422 Since you are running AFS, I need to distinguish the directory in which
5423 files will reside from the directory in which they are installed (and from
5424 which they are presumably copied to the former directory by occult means).
5427 case "$installprefix" in
5428 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5429 *) dflt="$installprefix";;
5434 In some special cases, particularly when building $package for distribution,
5435 it is convenient to distinguish between the directory in which files should
5436 be installed from the directory ($prefix) in which they
5437 will eventually reside. For most users, these two directories are the same.
5440 case "$installprefix" in
5442 *) dflt=$installprefix;;
5446 rp='What installation prefix should I use for installing files?'
5448 installprefix="$ans"
5449 installprefixexp="$ansexp"
5451 : set the prefixit variable, to compute a suitable default value
5452 prefixit='case "$3" in
5454 case "$oldprefix" in
5455 "") eval "$1=\"\$$2\"";;
5462 ""|" ") eval "$1=\"\$$2\"";;
5468 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5470 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5471 /*-$oldprefix/*|\~*-$oldprefix/*)
5472 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5473 *) eval "$1=\"\$$2\"";;
5478 : get the patchlevel
5480 echo "Getting the current patchlevel..." >&4
5481 if $test -r $rsrc/patchlevel.h;then
5482 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5483 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5484 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5485 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5486 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5487 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5496 $echo "(You have $package version $patchlevel subversion $subversion.)"
5499 : XXX Should be a Configure test for double-dots in filenames.
5500 version=`echo $revision $patchlevel $subversion | \
5501 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5502 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5503 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5506 version=`echo $revision $patchlevel $subversion | \
5507 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5508 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5509 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5512 : Special case the 5.005_xx maintenance series, which used 5.005
5513 : without any subversion label as a subdirectory in $sitelib
5514 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5515 api_versionstring='5.005'
5518 : determine installation style
5519 : For now, try to deduce it from prefix unless it is already set.
5520 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5521 case "$installstyle" in
5522 '') case "$prefix" in
5523 *perl*) dflt='lib';;
5524 *) dflt='lib/perl5' ;;
5527 *) dflt="$installstyle" ;;
5529 : Probably not worth prompting for this since we prompt for all
5530 : the directories individually, and the prompt would be too long and
5534 : determine where private library files go
5535 : Usual default is /usr/local/lib/perl5/$version.
5536 : Also allow things like /opt/perl/lib/$version, since
5537 : /opt/perl/lib/perl5... would be redundant.
5538 : The default "style" setting is made in installstyle.U
5539 case "$installstyle" in
5540 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5541 *) set dflt privlib lib/$version ;;
5546 There are some auxiliary files for $package that need to be put into a
5547 private library directory that is accessible by everyone.
5551 rp='Pathname where the private library files will reside?'
5554 privlibexp="$ansexp"
5555 : Change installation prefix, if necessary.
5556 if $test X"$prefix" != X"$installprefix"; then
5557 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5559 installprivlib="$privlibexp"
5562 : set the prefixup variable, to restore leading tilda escape
5563 prefixup='case "$prefixexp" in
5565 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5568 : determine where public architecture dependent libraries go
5571 : privlib default is /usr/local/lib/$package/$version
5572 : archlib default is /usr/local/lib/$package/$version/$archname
5573 : privlib may have an optional trailing /share.
5574 tdflt=`echo $privlib | $sed 's,/share$,,'`
5575 tdflt=$tdflt/$archname
5584 $spackage contains architecture-dependent library files. If you are
5585 sharing libraries in a heterogeneous environment, you might store
5586 these files in a separate location. Otherwise, you can just include
5587 them with the rest of the public library files.
5591 rp='Where do you want to put the public architecture-dependent libraries?'
5594 archlibexp="$ansexp"
5595 if $test X"$archlib" = X"$privlib"; then
5600 : Change installation prefix, if necessary.
5601 if $test X"$prefix" != X"$installprefix"; then
5602 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5604 installarchlib="$archlibexp"
5608 : Binary compatibility with 5.005 is not possible for builds
5609 : with advanced features
5610 case "$usethreads$usemultiplicity" in
5612 bincompat5005="$undef"
5613 d_bincompat5005="$undef"
5617 This version of Perl can be compiled for binary compatibility with 5.005.
5618 If you decide to do so, you will be able to continue using most of the
5619 extensions that were compiled for Perl 5.005.
5622 case "$bincompat5005$d_bincompat5005" in
5623 *"$undef"*) dflt=n ;;
5626 rp='Binary compatibility with Perl 5.005?'
5629 y*) val="$define" ;;
5634 case "$d_bincompat5005" in
5636 bincompat5005="$define"
5638 *) bincompat5005="$undef"
5639 d_bincompat5005="$undef"
5646 : see if setuid scripts can be secure
5649 Some kernels have a bug that prevents setuid #! scripts from being
5650 secure. Some sites have disabled setuid #! scripts because of this.
5652 First let's decide if your kernel supports secure setuid #! scripts.
5653 (If setuid #! scripts would be secure but have been disabled anyway,
5654 don't say that they are secure if asked.)
5659 if $test -d /dev/fd; then
5660 echo "#!$ls" >reflect
5661 chmod +x,u+s reflect
5662 ./reflect >flect 2>&1
5663 if $contains "/dev/fd" flect >/dev/null; then
5664 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5668 If you are not sure if they are secure, I can check but I'll need a
5669 username and password different from the one you are using right now.
5670 If you don't have such a username or don't want me to test, simply
5674 rp='Other username to test security of setuid scripts with?'
5679 case "$d_suidsafe" in
5680 '') echo "I'll assume setuid scripts are *not* secure." >&4
5683 echo "Well, the $hint value is *not* secure." >&4
5685 *) echo "Well, the $hint value *is* secure." >&4
5690 $rm -f reflect flect
5691 echo "#!$ls" >reflect
5692 chmod +x,u+s reflect
5695 echo '"su" will (probably) prompt you for '"$ans's password."
5696 su $ans -c './reflect >flect'
5697 if $contains "/dev/fd" flect >/dev/null; then
5698 echo "Okay, it looks like setuid scripts are secure." >&4
5701 echo "I don't think setuid scripts are secure." >&4
5706 rp='Does your kernel have *secure* setuid scripts?'
5709 [yY]*) val="$define";;
5714 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5715 echo "(That's for file descriptors, not floppy disks.)"
5721 $rm -f reflect flect
5723 : now see if they want to do setuid emulation
5726 case "$d_suidsafe" in
5729 echo "No need to emulate SUID scripts since they are secure here." >& 4
5733 Some systems have disabled setuid scripts, especially systems where
5734 setuid scripts cannot be secure. On systems where setuid scripts have
5735 been disabled, the setuid/setgid bits on scripts are currently
5736 useless. It is possible for $package to detect those bits and emulate
5737 setuid/setgid in a secure fashion. This emulation will only work if
5738 setuid scripts have been disabled in your kernel.
5742 "$define") dflt=y ;;
5745 rp="Do you want to do setuid/setgid emulation?"
5748 [yY]*) val="$define";;
5756 : determine filename position in cpp output
5758 echo "Computing filename position in cpp output for #include directives..." >&4
5759 echo '#include <stdio.h>' > foo.c
5762 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5763 $grep '^[ ]*#.*stdio\.h' | \
5764 while read cline; do
5767 while $test \$# -gt 0; do
5768 if $test -r \`echo \$1 | $tr -d '"'\`; then
5773 pos=\`expr \$pos + 1\`
5785 *) pos="${fieldn}th";;
5787 echo "Your cpp writes the filename in the $pos field of the line."
5789 : locate header file
5794 for usrincdir in $usrinc
5796 if test -f \$usrincdir/\$wanted; then
5797 echo "\$usrincdir/\$wanted"
5801 awkprg='{ print \$$fieldn }'
5802 echo "#include <\$wanted>" > foo\$\$.c
5803 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5804 $grep "^[ ]*#.*\$wanted" | \
5805 while read cline; do
5806 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5808 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5809 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5814 # status = 0: grep returned 0 lines, case statement not executed
5815 # status = 1: headerfile found
5816 # status = 2: while loop executed, no headerfile found
5820 if test \$status -eq 1; then
5827 : define an alternate in-header-list? function
5828 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5829 cont=true; xxf="echo \"<\$1> found.\" >&4";
5830 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5831 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5833 case $# in 4) instead=instead;; *) instead="at last";; esac;
5834 while $test "$cont"; do
5836 var=$2; eval "was=\$$2";
5837 if $test "$xxx" && $test -r "$xxx";
5839 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5842 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5843 set $yyy; shift; shift; yyy=$@;
5844 case $# in 0) cont="";;
5845 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5846 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5847 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5848 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5852 do set $yyy; var=$2; eval "was=\$$2";
5853 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5854 set $yyy; shift; shift; yyy=$@;
5857 : see if this is a malloc.h system
5858 set malloc.h i_malloc
5861 : see if stdlib is available
5862 set stdlib.h i_stdlib
5865 : determine which malloc to compile in
5867 case "$usemymalloc" in
5868 ''|[yY]*|true|$define) dflt='y' ;;
5871 rp="Do you wish to attempt to use the malloc that comes with $package?"
5877 mallocsrc='malloc.c'
5878 mallocobj="malloc$_o"
5879 d_mymalloc="$define"
5882 : Remove malloc from list of libraries to use
5883 echo "Removing unneeded -lmalloc from library list" >&4
5884 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5887 echo "libs = $libs" >&4
5899 : compute the return types of malloc and free
5901 $cat >malloc.c <<END
5905 #include <sys/types.h>
5919 case "$malloctype" in
5921 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5928 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5932 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5939 echo "Your system uses $freetype free(), it would seem." >&4
5943 After $package is installed, you may wish to install various
5944 add-on modules and utilities. Typically, these add-ons will
5945 be installed under $prefix with the rest
5946 of this package. However, you may wish to install such add-ons
5947 elsewhere under a different prefix.
5949 If you do not wish to put everything under a single prefix, that's
5950 ok. You will be prompted for the individual locations; this siteprefix
5951 is only used to suggest the defaults.
5953 The default should be fine for most people.
5957 rp='Installation prefix to use for add-on modules and utilities?'
5958 : XXX Here might be another good place for an installstyle setting.
5959 case "$siteprefix" in
5961 *) dflt=$siteprefix ;;
5964 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5966 case "$siteprefix" in
5970 *) oldsiteprefix="$prefix";;
5975 siteprefixexp="$ansexp"
5977 : determine where site specific libraries go.
5978 : Usual default is /usr/local/lib/perl5/site_perl/$version
5979 : The default "style" setting is made in installstyle.U
5980 : XXX No longer works with Prefixit stuff.
5981 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5983 '') case "$installstyle" in
5984 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5985 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5993 The installation process will create a directory for
5994 site-specific extensions and modules. Most users find it convenient
5995 to place all site-specific files in this directory rather than in the
5996 main distribution directory.
6000 rp='Pathname for the site-specific library files?'
6003 sitelibexp="$ansexp"
6004 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6005 : Change installation prefix, if necessary.
6006 if $test X"$prefix" != X"$installprefix"; then
6007 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6009 installsitelib="$sitelibexp"
6012 : determine where site specific architecture-dependent libraries go.
6013 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6014 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6015 : sitelib may have an optional trailing /share.
6017 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6018 dflt="$dflt/$archname"
6023 set sitearch sitearch none
6027 The installation process will also create a directory for
6028 architecture-dependent site-specific extensions and modules.
6032 rp='Pathname for the site-specific architecture-dependent library files?'
6035 sitearchexp="$ansexp"
6036 : Change installation prefix, if necessary.
6037 if $test X"$prefix" != X"$installprefix"; then
6038 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6040 installsitearch="$sitearchexp"
6045 The installation process will also create a directory for
6046 vendor-supplied add-ons. Vendors who supply perl with their system
6047 may find it convenient to place all vendor-supplied files in this
6048 directory rather than in the main distribution directory. This will
6049 ease upgrades between binary-compatible maintenance versions of perl.
6051 Of course you may also use these directories in whatever way you see
6052 fit. For example, you might use them to access modules shared over a
6053 company-wide network.
6055 The default answer should be fine for most people.
6056 This causes further questions about vendor add-ons to be skipped
6057 and no vendor-specific directories will be configured for perl.
6060 rp='Do you want to configure vendor-specific add-on directories?'
6061 case "$usevendorprefix" in
6062 define|true|[yY]*) dflt=y ;;
6063 *) : User may have set vendorprefix directly on Configure command line.
6064 case "$vendorprefix" in
6073 rp='Installation prefix to use for vendor-supplied add-ons?'
6074 case "$vendorprefix" in
6076 *) dflt=$vendorprefix ;;
6079 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6081 case "$vendorprefix" in
6085 *) oldvendorprefix="$prefix";;
6089 usevendorprefix="$define"
6091 vendorprefixexp="$ansexp"
6093 *) usevendorprefix="$undef"
6099 case "$vendorprefix" in
6100 '') d_vendorlib="$undef"
6104 *) d_vendorlib="$define"
6105 : determine where vendor-supplied modules go.
6106 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6107 case "$vendorlib" in
6109 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6110 case "$installstyle" in
6111 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6112 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6115 *) dflt="$vendorlib"
6119 rp='Pathname for the vendor-supplied library files?'
6122 vendorlibexp="$ansexp"
6125 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6126 : Change installation prefix, if necessary.
6127 if $test X"$prefix" != X"$installprefix"; then
6128 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6130 installvendorlib="$vendorlibexp"
6133 case "$vendorprefix" in
6134 '') d_vendorarch="$undef"
6138 *) d_vendorarch="$define"
6139 : determine where vendor-supplied architecture-dependent libraries go.
6140 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6141 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6142 : vendorlib may have an optional trailing /share.
6143 case "$vendorarch" in
6144 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6145 dflt="$dflt/$archname"
6147 *) dflt="$vendorarch" ;;
6150 rp='Pathname for vendor-supplied architecture-dependent files?'
6153 vendorarchexp="$ansexp"
6156 : Change installation prefix, if necessary.
6157 if $test X"$prefix" != X"$installprefix"; then
6158 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6160 installvendorarch="$vendorarchexp"
6163 : Final catch-all directories to search
6166 Lastly, you can have perl look in other directories for extensions and
6167 modules in addition to those already specified.
6168 These directories will be searched after
6172 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6173 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6175 case "$otherlibdirs" in
6176 ''|' ') dflt='none' ;;
6177 *) dflt="$otherlibdirs" ;;
6180 Enter a colon-separated set of extra paths to include in perl's @INC
6181 search path, or enter 'none' for no extra paths.
6185 rp='Colon-separated list of additional directories for perl to search?'
6188 ' '|''|none) otherlibdirs=' ' ;;
6189 *) otherlibdirs="$ans" ;;
6191 case "$otherlibdirs" in
6195 set d_perl_otherlibdirs
6198 : Cruising for prototypes
6200 echo "Checking out function prototypes..." >&4
6201 $cat >prototype.c <<'EOCP'
6202 int main(int argc, char *argv[]) {
6205 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6206 echo "Your C compiler appears to support function prototypes."
6209 echo "Your C compiler doesn't seem to understand function prototypes."
6216 case "$prototype" in
6218 *) ansi2knr='ansi2knr'
6223 This version of $package can only be compiled by a compiler that
6224 understands function prototypes. Unfortunately, your C compiler
6226 doesn't seem to understand them. Sorry about that.
6228 If GNU cc is available for your system, perhaps you could try that instead.
6230 Eventually, we hope to support building Perl with pre-ANSI compilers.
6231 If you would like to help in that effort, please contact <perlbug@perl.org>.
6233 Aborting Configure now.
6239 : determine where public executables go
6244 rp='Pathname where the public executables will reside?'
6246 if $test "X$ansexp" != "X$binexp"; then
6251 : Change installation prefix, if necessary.
6252 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6253 if $test X"$prefix" != X"$installprefix"; then
6254 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6256 installbin="$binexp"
6259 : Find perl5.005 or later.
6260 echo "Looking for a previously installed perl5.005 or later... "
6262 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6263 : Check if this perl is recent and can load a simple module
6264 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6267 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6277 '') echo "None found. That's ok.";;
6278 *) echo "Using $perl5." ;;
6281 : Determine list of previous versions to include in @INC
6282 $cat > getverlist <<EOPL
6285 \$api_versionstring = "$api_versionstring";
6286 \$version = "$version";
6287 \$stem = "$sitelib_stem";
6288 \$archname = "$archname";
6290 $cat >> getverlist <<'EOPL'
6291 # Can't have leading @ because metaconfig interprets it as a command!
6292 ;@inc_version_list=();
6293 # XXX Redo to do opendir/readdir?
6296 ;@candidates = glob("5.*");
6302 # XXX ToDo: These comparisons must be reworked when two-digit
6303 # subversions come along, so that 5.7.10 compares as greater than
6304 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6305 # widespread that we can use the built-in version vectors rather
6306 # than reinventing them here. For 5.6.0, however, we must
6307 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6308 foreach $d (@candidates) {
6309 if ($d lt $version) {
6310 if ($d ge $api_versionstring) {
6311 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6313 elsif ($d ge "5.005") {
6314 unshift(@inc_version_list, grep { -d } $d);
6318 # Skip newer version. I.e. don't look in
6319 # 5.7.0 if we're installing 5.6.1.
6323 if (@inc_version_list) {
6324 print join(' ', @inc_version_list);
6327 # Blank space to preserve value for next Configure run.
6332 case "$inc_version_list" in
6333 '') if test -x "$perl5"; then
6334 dflt=`$perl5 getverlist`
6339 $undef) dflt='none' ;;
6340 *) dflt="$inc_version_list" ;;
6343 ''|' ') dflt=none ;;
6346 5.005) case "$bincompat5005" in
6347 $define|true|[yY]*) ;;
6354 In order to ease the process of upgrading, this version of perl
6355 can be configured to use modules built and installed with earlier
6356 versions of perl that were installed under $prefix. Specify here
6357 the list of earlier versions that this version of perl should check.
6358 If Configure detected no earlier versions of perl installed under
6359 $prefix, then the list will be empty. Answer 'none' to tell perl
6360 to not search earlier versions.
6362 The default should almost always be sensible, so if you're not sure,
6363 just accept the default.
6366 rp='List of earlier versions to include in @INC?'
6369 [Nn]one|''|' ') inc_version_list=' ' ;;
6370 *) inc_version_list="$ans" ;;
6372 case "$inc_version_list" in
6374 inc_version_list_init='0';;
6375 *) inc_version_list_init=`echo $inc_version_list |
6376 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6381 : determine whether to install perl also as /usr/bin/perl
6384 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6386 Many scripts expect perl to be installed as /usr/bin/perl.
6387 I can install the perl you are about to compile also as /usr/bin/perl
6388 (in addition to $installbin/perl).
6390 case "$installusrbinperl" in
6391 "$undef"|[nN]*) dflt='n';;
6394 rp="Do you want to install perl as /usr/bin/perl?"
6397 [yY]*) val="$define";;
6403 set installusrbinperl
6406 : see if dld is available
6410 : see if dlopen exists
6417 : determine which dynamic loading, if any, to compile in
6419 dldir="ext/DynaLoader"
6432 $define) dflt='y' ;;
6435 $define) dflt='y' ;;
6437 : Does a dl_xxx.xs file exist for this operating system
6438 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6441 rp="Do you wish to use dynamic loading?"
6448 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6449 dflt="$dldir/dl_${osname}.xs"
6450 elif $test "$d_dlopen" = "$define" ; then
6451 dflt="$dldir/dl_dlopen.xs"
6452 elif $test "$i_dld" = "$define" ; then
6453 dflt="$dldir/dl_dld.xs"
6458 *) dflt="$dldir/$dlsrc"
6461 echo "The following dynamic loading files are available:"
6462 : Can not go over to $dldir because getfile has path hard-coded in.
6463 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6464 rp="Source file to use for dynamic loading"
6470 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6474 Some systems may require passing special flags to $cc -c to
6475 compile modules that will be used to create a shared library.
6476 To use no flags, say "none".
6479 case "$cccdlflags" in
6480 '') case "$gccversion" in
6481 '') case "$osname" in
6483 next) dflt='none' ;;
6484 irix*) dflt='-KPIC' ;;
6485 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6486 sunos) dflt='-pic' ;;
6490 *) case "$osname" in
6491 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6496 *) dflt="$cccdlflags" ;;
6498 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6501 none) cccdlflags=' ' ;;
6502 *) cccdlflags="$ans" ;;
6507 Some systems use ld to create libraries that can be dynamically loaded,
6508 while other systems (such as those using ELF) use $cc.
6512 '') $cat >try.c <<'EOM'
6513 /* Test for whether ELF binaries are produced */
6518 int i = open("a.out",O_RDONLY);
6521 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6522 exit(0); /* succeed (yes, it's ELF) */
6527 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6529 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6533 echo "I'll use ld to build dynamic libraries."
6542 rp="What command should be used to create dynamic libraries?"
6548 Some systems may require passing special flags to $ld to create a
6549 library that can be dynamically loaded. If your ld flags include
6550 -L/other/path options to locate libraries outside your loader's normal
6551 search path, you may need to specify those -L options here as well. To
6552 use no flags, say "none".
6555 case "$lddlflags" in
6556 '') case "$osname" in
6557 beos) dflt='-nostart' ;;
6559 case "$gccversion" in
6560 '') dflt="$dflt +vnocompatwarnings" ;;
6563 linux|irix*) dflt='-shared' ;;
6564 next) dflt='none' ;;
6565 solaris) dflt='-G' ;;
6566 sunos) dflt='-assert nodefinitions' ;;
6567 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6571 *) dflt="$lddlflags" ;;
6574 : Try to guess additional flags to pick up local libraries.
6575 : Be careful not to append to a plain 'none'
6579 for thisflag in $ldflags; do
6584 *) dflt="$dflt $thisflag" ;;
6591 ''|' ') dflt='none' ;;
6594 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6597 none) lddlflags=' ' ;;
6598 *) lddlflags="$ans" ;;
6603 Some systems may require passing special flags to $cc to indicate that
6604 the resulting executable will use dynamic linking. To use no flags,
6608 case "$ccdlflags" in
6609 '') case "$osname" in
6610 hpux) dflt='-Wl,-E' ;;
6611 linux) dflt='-rdynamic' ;;
6612 next) dflt='none' ;;
6613 sunos) dflt='none' ;;
6617 *) dflt="$ccdlflags" ;;
6619 rp="Any special flags to pass to $cc to use dynamic linking?"
6622 none) ccdlflags=' ' ;;
6623 *) ccdlflags="$ans" ;;
6637 # No dynamic loading being used, so don't bother even to prompt.
6640 *) case "$useshrplib" in
6641 '') case "$osname" in
6642 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6644 also='Building a shared libperl is required for dynamic loading to work on your system.'
6649 also='Building a shared libperl is needed for MAB support.'
6667 The perl executable is normally obtained by linking perlmain.c with
6668 libperl${_a}, any static extensions (usually just DynaLoader), and
6669 any other libraries needed on this system (such as -lm, etc.). Since
6670 your system supports dynamic loading, it is probably possible to build
6671 a shared libperl.$so. If you will have more than one executable linked
6672 to libperl.$so, this will significantly reduce the size of each
6673 executable, but it may have a noticeable affect on performance. The
6674 default is probably sensible for your system.
6678 rp="Build a shared libperl.$so (y/n)"
6682 useshrplib='true' ;;
6683 *) useshrplib='false' ;;
6688 case "$useshrplib" in
6692 # Figure out a good name for libperl.so. Since it gets stored in
6693 # a version-specific architecture-dependent library, the version
6694 # number isn't really that important, except for making cc/ld happy.
6696 # A name such as libperl.so.3.1
6697 majmin="libperl.$so.$patchlevel.$subversion"
6698 # A name such as libperl.so.301
6699 majonly=`echo $patchlevel $subversion |
6700 $awk '{printf "%d%02d", $1, $2}'`
6701 majonly=libperl.$so.$majonly
6702 # I'd prefer to keep the os-specific stuff here to a minimum, and
6703 # rely on figuring it out from the naming of libc.
6704 case "${osname}${osvers}" in
6707 # XXX How handle the --version stuff for MAB?
6709 linux*) # ld won't link with a bare -lperl otherwise.
6712 cygwin*) # include version
6713 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6715 *) # Try to guess based on whether libc has major.minor.
6717 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6718 *libc.$so.[0-9]*) dflt=$majonly ;;
6719 *) dflt=libperl.$so ;;
6729 I need to select a good name for the shared libperl. If your system uses
6730 library names with major and minor numbers, then you might want something
6731 like $majmin. Alternatively, if your system uses a single version
6732 number for shared libraries, then you might want to use $majonly.
6733 Or, your system might be quite happy with a simple libperl.$so.
6735 Since the shared libperl will get installed into a version-specific
6736 architecture-dependent directory, the version number of the shared perl
6737 library probably isn't important, so the default should be o.k.
6740 rp='What name do you want to give to the shared libperl?'
6743 echo "Ok, I'll use $libperl"
6746 libperl="libperl${_a}"
6750 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6754 WARNING: Use of the shrpdir variable for the installation location of
6755 the shared $libperl is not supported. It was never documented and
6756 will not work in this version. Let me (perlbug@perl.org)
6757 know of any problems this may cause.
6763 But your current setting of $shrpdir is
6764 the default anyway, so it's harmless.
6769 Further, your current attempted setting of $shrpdir
6770 conflicts with the value of $archlibexp/CORE
6771 that installperl will use.
6778 # How will the perl executable find the installed shared $libperl?
6779 # Add $xxx to ccdlflags.
6780 # If we can't figure out a command-line option, use $shrpenv to
6781 # set env LD_RUN_PATH. The main perl makefile uses this.
6782 shrpdir=$archlibexp/CORE
6785 if "$useshrplib"; then
6788 # We'll set it in Makefile.SH...
6794 xxx="-Wl,-R$shrpdir"
6796 linux|irix*|dec_osf)
6797 xxx="-Wl,-rpath,$shrpdir"
6800 # next doesn't like the default...
6803 # beos doesn't like the default, either.
6806 # hpux doesn't like the default, either.
6807 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6810 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6816 # Only add $xxx if it isn't already in ccdlflags.
6817 case " $ccdlflags " in
6819 *) ccdlflags="$ccdlflags $xxx"
6822 Adding $xxx to the flags
6823 passed to $ld so that the perl executable will find the
6824 installed shared $libperl.
6832 # Fix ccdlflags in AIX for building external extensions.
6833 # (For building Perl itself bare -bE:perl.exp is needed,
6834 # Makefile.SH takes care of this.)
6836 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6838 # Respect a hint or command-line value.
6840 '') shrpenv="$tmp_shrpenv" ;;
6842 case "$ldlibpthname" in
6843 '') ldlibpthname=LD_LIBRARY_PATH ;;
6844 none) ldlibpthname='' ;;
6847 : determine where manual pages are on this system
6851 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6852 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6853 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6854 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6855 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6856 sysman=`./loc . /usr/man/man1 $syspath`
6859 if $test -d "$sysman"; then
6860 echo "System manual is in $sysman." >&4
6862 echo "Could not find manual pages in source form." >&4
6865 : determine where manual pages go
6866 set man1dir man1dir none
6870 $spackage has manual pages available in source form.
6874 echo "However, you don't have nroff, so they're probably useless to you."
6876 '') man1dir="none";;
6879 echo "If you don't want the manual sources installed, answer 'none'."
6884 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6885 lookpath="$lookpath $prefixexp/man/p_man/man1"
6886 lookpath="$lookpath $prefixexp/man/u_man/man1"
6887 lookpath="$lookpath $prefixexp/man/man.1"
6889 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6890 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6900 rp="Where do the main $spackage manual pages (source) go?"
6902 if $test "X$man1direxp" != "X$ansexp"; then
6906 man1direxp="$ansexp"
6912 : Change installation prefix, if necessary.
6913 if $test X"$prefix" != X"$installprefix"; then
6914 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6916 installman1dir="$man1direxp"
6919 : What suffix to use on installed man pages
6926 rp="What suffix should be used for the main $spackage man pages?"
6928 '') case "$man1dir" in
6942 *) dflt="$man1ext";;
6949 : see if we can have long filenames
6951 first=123456789abcdef
6953 if (echo hi >$first) 2>/dev/null; then
6954 if $test -f 123456789abcde; then
6955 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6958 echo 'You can have filenames longer than 14 characters.'>&4
6963 You can't have filenames longer than 14 chars.
6964 You can't even think about them!
6970 $rm -rf 123456789abcde*
6972 : determine where library module manual pages go
6973 set man3dir man3dir none
6977 $spackage has manual pages for many of the library modules.
6983 However, you don't have nroff, so they're probably useless to you.
6986 '') man3dir="none";;
6990 case "$d_flexfnam" in
6993 However, your system can't handle the long file names like File::Basename.3.
6996 '') man3dir="none";;
7000 echo "If you don't want the manual sources installed, answer 'none'."
7001 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7003 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7004 if $test -d "$privlib/man/man3"; then
7007 WARNING: Previous versions of perl installed man3 pages into
7008 $privlib/man/man3. This version will suggest a
7009 new default of $dflt.
7013 rp='Do you wish to preserve the old behavior?(y/n)'
7016 y*) dflt="$privlib/man/man3" ;;
7021 *) dflt="$man3dir" ;;
7028 rp="Where do the $package library man pages (source) go?"
7031 man3direxp="$ansexp"
7037 : Change installation prefix, if necessary.
7038 if $test X"$prefix" != X"$installprefix"; then
7039 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7041 installman3dir="$man3direxp"
7044 : What suffix to use on installed man pages
7050 rp="What suffix should be used for the $package library man pages?"
7052 '') case "$man3dir" in
7066 *) dflt="$man3ext";;
7073 : see if we have to deal with yellow pages, now NIS.
7074 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7075 if $test -f /usr/etc/nibindd; then
7077 echo "I'm fairly confident you're on a NeXT."
7079 rp='Do you get the hosts file via NetInfo?'
7088 y*) hostcat='nidump hosts .';;
7089 *) case "$hostcat" in
7090 nidump*) hostcat='';;
7100 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7108 rp='Are you getting the hosts file via yellow pages?'
7111 y*) hostcat='ypcat hosts';;
7112 *) hostcat='cat /etc/hosts';;
7118 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7121 '') test -f /etc/group && groupcat='cat /etc/group';;
7124 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7127 : now get the host name
7129 echo "Figuring out host name..." >&4
7130 case "$myhostname" in
7132 echo 'Maybe "hostname" will work...'
7133 if tans=`sh -c hostname 2>&1` ; then
7141 if $test "$cont"; then
7143 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7144 if tans=`cat /etc/systemid 2>&1` ; then
7146 phostname='cat /etc/systemid'
7147 echo "Whadyaknow. Xenix always was a bit strange..."
7150 elif $test -r /etc/systemid; then
7151 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7154 if $test "$cont"; then
7155 echo 'No, maybe "uuname -l" will work...'
7156 if tans=`sh -c 'uuname -l' 2>&1` ; then
7158 phostname='uuname -l'
7160 echo 'Strange. Maybe "uname -n" will work...'
7161 if tans=`sh -c 'uname -n' 2>&1` ; then
7163 phostname='uname -n'
7165 echo 'Oh well, maybe I can mine it out of whoami.h...'
7166 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7167 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7168 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7170 case "$myhostname" in
7171 '') echo "Does this machine have an identity crisis or something?"
7174 echo "Well, you said $myhostname before..."
7175 phostname='echo $myhostname';;
7181 : you do not want to know about this
7186 if $test "$myhostname" ; then
7188 rp='Your host name appears to be "'$myhostname'".'" Right?"
7196 : bad guess or no guess
7197 while $test "X$myhostname" = X ; do
7199 rp="Please type the (one word) name of your host:"
7204 : translate upper to lower if necessary
7205 case "$myhostname" in
7207 echo "(Normalizing case in your host name)"
7208 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7212 case "$myhostname" in
7214 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7215 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7216 echo "(Trimming domain name from host name--host name is now $myhostname)"
7218 *) case "$mydomain" in
7221 test "X$hostcat" = "Xypcat hosts" &&
7222 ypmatch "$myhostname" hosts 2>/dev/null |\
7223 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7226 test "X$hostcat" != "X" &&
7227 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7228 /[ ]$myhostname[ . ]/p" > hosts
7231 if $test -f hosts; then
7232 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7233 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7234 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7235 hosts | $sort | $uniq | \
7236 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7237 case `$echo X$dflt` in
7238 X*\ *) echo "(Several hosts in the database matched hostname)"
7241 X.) echo "(You do not have fully-qualified names in the hosts database)"
7245 echo "(I cannot locate a hosts database anywhere)"
7250 tans=`./loc resolv.conf X /etc /usr/etc`
7251 if $test -f "$tans"; then
7252 echo "(Attempting domain name extraction from $tans)"
7253 dflt=.`$sed -n -e 's/ / /g' \
7254 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7255 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7257 .) dflt=.`$sed -n -e 's/ / /g' \
7258 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7259 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7266 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7267 dflt=.`sh -c domainname 2>/dev/null`
7270 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7275 .) echo "(Lost all hope -- silly guess then)"
7281 *) dflt="$mydomain";;
7285 rp="What is your domain name?"
7295 : translate upper to lower if necessary
7298 echo "(Normalizing case in your domain name)"
7299 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7303 : a little sanity check here
7304 case "$phostname" in
7307 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7308 $myhostname$mydomain|$myhostname) ;;
7310 case "$phostname" in
7312 echo "(That doesn't agree with your whoami.h file, by the way.)"
7315 echo "(That doesn't agree with your $phostname command, by the way.)"
7325 I need to get your e-mail address in Internet format if possible, i.e.
7326 something like user@host.domain. Please answer accurately since I have
7327 no easy means to double check it. The default value provided below
7328 is most probably close to reality but may not be valid from outside
7329 your organization...
7333 while test "$cont"; do
7335 '') dflt="$cf_by@$myhostname$mydomain";;
7336 *) dflt="$cf_email";;
7338 rp='What is your e-mail address?'
7344 rp='Address does not look like an Internet one. Use it anyway?'
7360 If you or somebody else will be maintaining perl at your site, please
7361 fill in the correct e-mail address here so that they may be contacted
7362 if necessary. Currently, the "perlbug" program included with perl
7363 will send mail to this address in addition to perlbug@perl.org. You may
7364 enter "none" for no administrator.
7367 case "$perladmin" in
7368 '') dflt="$cf_email";;
7369 *) dflt="$perladmin";;
7371 rp='Perl administrator e-mail address'
7375 : determine whether to only install version-specific parts.
7378 Do you want to install only the version-specific parts of the perl
7379 distribution? Usually you do *not* want to do this.
7381 case "$versiononly" in
7382 "$define"|[Yy]*|true) dflt='y' ;;
7385 rp="Do you want to install only the version-specific parts of perl?"
7388 [yY]*) val="$define";;
7394 : figure out how to guarantee perl startup
7395 case "$startperl" in
7397 case "$sharpbang" in
7401 I can use the #! construct to start perl on your system. This will
7402 make startup of perl scripts faster, but may cause problems if you
7403 want to share those scripts and perl is not in a standard place
7404 ($binexp/perl) on all your platforms. The alternative is to force
7405 a shell by starting the script with a single ':' character.
7408 case "$versiononly" in
7409 "$define") dflt="$binexp/perl$version";;
7410 *) dflt="$binexp/perl";;
7412 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7415 none) startperl=": # use perl";;
7416 *) startperl="#!$ans"
7417 if $test 30 -lt `echo "$ans" | wc -c`; then
7420 WARNING: Some systems limit the #! command to 32 characters.
7421 If you experience difficulty running Perl scripts with #!, try
7422 installing Perl in a directory with a shorter pathname.
7428 *) startperl=": # use perl"
7433 echo "I'll use $startperl to start perl scripts."
7435 : figure best path for perl in scripts
7438 perlpath="$binexp/perl"
7439 case "$startperl" in
7444 I will use the "eval 'exec'" idiom to start Perl on your system.
7445 I can use the full path of your Perl binary for this purpose, but
7446 doing so may cause problems if you want to share those scripts and
7447 Perl is not always in a standard place ($binexp/perl).
7451 rp="What path shall I use in \"eval 'exec'\"?"
7458 case "$startperl" in
7460 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7463 : determine where public executable scripts go
7464 set scriptdir scriptdir
7466 case "$scriptdir" in
7469 : guess some guesses
7470 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7471 $test -d /usr/share/bin && dflt=/usr/share/bin
7472 $test -d /usr/local/script && dflt=/usr/local/script
7473 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7474 $test -d $prefixexp/script && dflt=$prefixexp/script
7478 *) dflt="$scriptdir"
7483 Some installations have a separate directory just for executable scripts so
7484 that they can mount it across multiple architectures but keep the scripts in
7485 one spot. You might, for example, have a subdirectory of /usr/share for this.
7486 Or you might just lump your scripts in with all your other executables.
7490 rp='Where do you keep publicly executable scripts?'
7492 if $test "X$ansexp" != "X$scriptdirexp"; then
7496 scriptdirexp="$ansexp"
7497 : Change installation prefix, if necessary.
7498 if $test X"$prefix" != X"$installprefix"; then
7499 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7501 installscript="$scriptdirexp"
7504 : determine where add-on public executables go
7506 '') dflt=$siteprefix/bin ;;
7510 rp='Pathname where the add-on public executables should be installed?'
7513 sitebinexp="$ansexp"
7514 : Change installation prefix, if necessary.
7515 if $test X"$prefix" != X"$installprefix"; then
7516 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7518 installsitebin="$sitebinexp"
7521 case "$useperlio" in
7522 $define|true|[yY]*) dflt='y';;
7527 Previous version of $package used the standard IO mechanisms as
7528 defined in <stdio.h>. Versions 5.003_02 and later of perl allow
7529 alternate IO mechanisms via the PerlIO abstraction layer, but the
7530 stdio mechanism is still the default. This abstraction layer can
7531 use AT&T's sfio (if you already have sfio installed) or regular stdio.
7532 Using PerlIO with sfio may cause problems with some extension modules.
7534 If this doesn't make any sense to you, just accept the default '$dflt'.
7536 rp='Use the experimental PerlIO abstraction layer?'
7543 echo "Ok, doing things the stdio way."
7552 case "$useperlio" in
7553 $define|true|[yY]*) ;;
7556 You are using the SOCKS proxy protocol library which means that you
7557 should also use the PerlIO layer. You may be headed for trouble.
7566 case "$vendorprefix" in
7567 '') d_vendorbin="$undef"
7571 *) d_vendorbin="$define"
7572 : determine where vendor-supplied executables go.
7573 case "$vendorbin" in
7574 '') dflt=$vendorprefix/bin ;;
7575 *) dflt="$vendorbin" ;;
7578 rp='Pathname for the vendor-supplied executables directory?'
7581 vendorbinexp="$ansexp"
7584 : Change installation prefix, if necessary.
7585 if $test X"$prefix" != X"$installprefix"; then
7586 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7588 installvendorbin="$vendorbinexp"
7591 : see if qgcvt exists
7597 if $test X"$d_longdbl" = X"$define"; then
7599 echo "Checking how to print long doubles..." >&4
7601 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7602 $cat >try.c <<'EOCP'
7603 #include <sys/types.h>
7607 printf("%.3f\n", d);
7611 if eval $compile; then
7615 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7616 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7617 echo "We will use %f."
7623 if $test X"$sPRIfldbl" = X; then
7624 $cat >try.c <<'EOCP'
7625 #include <sys/types.h>
7628 long double d = 123.456;
7629 printf("%.3llf\n", d);
7633 if eval $compile; then
7637 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7638 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7639 echo "We will use %llf."
7645 if $test X"$sPRIfldbl" = X; then
7646 $cat >try.c <<'EOCP'
7647 #include <sys/types.h>
7650 long double d = 123.456;
7651 printf("%.3Lf\n", d);
7655 if eval $compile; then
7659 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7660 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7661 echo "We will use %Lf."
7667 if $test X"$sPRIfldbl" = X; then
7668 $cat >try.c <<'EOCP'
7669 #include <sys/types.h>
7672 long double d = 123.456;
7673 printf("%.3lf\n", d);
7677 if eval $compile; then
7681 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7682 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7683 echo "We will use %lf."
7689 if $test X"$sPRIfldbl" = X; then
7690 echo "Cannot figure out how to print long doubles." >&4
7692 sSCNfldbl=$sPRIfldbl # expect consistency
7699 case "$sPRIfldbl" in
7700 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7701 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7702 d_SCNfldbl="$undef";
7704 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7705 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7706 d_SCNfldbl="$define";
7710 : Check how to convert floats to strings.
7712 echo "Checking for an efficient way to convert floats to strings."
7714 case "$uselongdouble" in
7715 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7717 case "$d_longdbl" in
7718 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7720 case "$d_PRIgldbl" in
7721 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7725 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7726 char *myname = "gconvert";
7729 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7730 char *myname = "gcvt";
7733 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7734 char *myname = "qgcvt";
7735 #define DOUBLETYPE long double
7738 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7739 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7741 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7743 char *myname = "sprintf";
7747 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7748 #define DOUBLETYPE long double
7750 #define DOUBLETYPE double
7756 #define I_STDLIB $i_stdlib
7762 checkit(expect, got)
7766 if (strcmp(expect, got)) {
7767 printf("%s oddity: Expected %s, got %s\n",
7768 myname, expect, got);
7778 /* This must be 1st test on (which?) platform */
7779 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7780 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7781 checkit("0.1", buf);
7783 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7786 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7787 checkit("1.1", buf);
7789 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7790 checkit("1.01", buf);
7792 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7793 checkit("1.001", buf);
7795 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7796 checkit("1.0001", buf);
7798 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7799 checkit("1.00001", buf);
7801 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7802 checkit("1.000001", buf);
7804 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7807 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7810 /* Some Linux gcvt's give 1.e+5 here. */
7811 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7812 checkit("100000", buf);
7814 /* Some Linux gcvt's give -1.e+5 here. */
7815 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7816 checkit("-100000", buf);
7818 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7819 checkit("123.456", buf);
7824 case "$d_Gconvert" in
7825 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7826 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7827 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7828 *) xxx_list='gconvert gcvt sprintf' ;;
7831 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7832 "$define$define$define")
7833 # for long doubles prefer first qgcvt, then sprintf
7834 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7835 xxx_list="sprintf $xxx_list"
7837 "$define") xxx_list="qgcvt $xxx_list" ;;
7842 for xxx_convert in $xxx_list; do
7843 echo "Trying $xxx_convert..."
7845 set try -DTRY_$xxx_convert
7846 if eval $compile; then
7847 echo "$xxx_convert() found." >&4
7849 echo "I'll use $xxx_convert to convert floats into a string." >&4
7852 echo "...But $xxx_convert didn't work as I expected."
7855 echo "$xxx_convert NOT found." >&4
7859 case "$xxx_convert" in
7860 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7861 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7862 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7863 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7864 "$define$define$define")
7865 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7866 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7871 : see if _fwalk exists
7875 : Initialize h_fcntl
7878 : Initialize h_sysfile
7881 : access call always available on UNIX
7885 : locate the flags for 'access()'
7889 $cat >access.c <<'EOCP'
7890 #include <sys/types.h>
7895 #include <sys/file.h>
7904 : check sys/file.h first, no particular reason here
7905 if $test `./findhdr sys/file.h` && \
7906 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7908 echo "<sys/file.h> defines the *_OK access constants." >&4
7909 elif $test `./findhdr fcntl.h` && \
7910 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7912 echo "<fcntl.h> defines the *_OK access constants." >&4
7913 elif $test `./findhdr unistd.h` && \
7914 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7915 echo "<unistd.h> defines the *_OK access constants." >&4
7917 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7923 : see if accessx exists
7924 set accessx d_accessx
7927 : see if alarm exists
7931 : see if atolf exists
7935 : see if atoll exists
7939 : Look for GNU-cc style attribute checking
7941 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7942 $cat >attrib.c <<'EOCP'
7944 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7946 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7947 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7948 echo "Your C compiler doesn't fully support __attribute__."
7951 echo "Your C compiler supports __attribute__."
7955 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7962 : see if bcmp exists
7966 : see if bcopy exists
7970 : see if this is a unistd.h system
7971 set unistd.h i_unistd
7974 : see if getpgrp exists
7975 set getpgrp d_getpgrp
7978 case "$d_getpgrp" in
7981 echo "Checking to see which flavor of getpgrp is in use..."
7984 #include <sys/types.h>
7986 # include <unistd.h>
7990 if (getuid() == 0) {
7991 printf("(I see you are running Configure as super-user...)\n");
7995 if (getpgrp(1) == 0)
8004 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8005 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8007 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8008 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8011 echo "I can't seem to compile and run the test program."
8013 xxx="a USG one, i.e. you use getpgrp()."
8015 # SVR4 systems can appear rather BSD-ish.
8018 xxx="a BSD one, i.e. you use getpgrp(pid)."
8022 xxx="probably a USG one, i.e. you use getpgrp()."
8027 echo "Assuming your getpgrp is $xxx" >&4
8036 : see if setpgrp exists
8037 set setpgrp d_setpgrp
8040 case "$d_setpgrp" in
8043 echo "Checking to see which flavor of setpgrp is in use..."
8046 #include <sys/types.h>
8048 # include <unistd.h>
8052 if (getuid() == 0) {
8053 printf("(I see you are running Configure as super-user...)\n");
8057 if (-1 == setpgrp(1, 1))
8060 if (setpgrp() != -1)
8066 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8067 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8069 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8070 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8073 echo "(I can't seem to compile and run the test program.)"
8075 xxx="a USG one, i.e. you use setpgrp()."
8077 # SVR4 systems can appear rather BSD-ish.
8080 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8084 xxx="probably a USG one, i.e. you use setpgrp()."
8089 echo "Assuming your setpgrp is $xxx" >&4
8097 : see if bzero exists
8101 : see if signal is declared as pointer to function returning int or void
8103 xxx=`./findhdr signal.h`
8104 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8105 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8106 echo "You have int (*signal())() instead of void." >&4
8108 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8109 echo "You have void (*signal())()." >&4
8111 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8112 echo "You have int (*signal())() instead of void." >&4
8114 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8115 echo "You have void (*signal())()." >&4
8118 case "$d_voidsig" in
8120 echo "I can't determine whether signal handler returns void or int..." >&4
8122 rp="What type does your signal handler return?"
8129 echo "As you already told me, signal handler returns void." >&4
8132 *) echo "As you already told me, signal handler returns int." >&4
8139 case "$d_voidsig" in
8140 "$define") signal_t="void";;
8145 : check for ability to cast large floats to 32-bit ints.
8147 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8148 if $test "$intsize" -ge 4; then
8155 #include <sys/types.h>
8157 $signal_t blech(s) int s; { exit(3); }
8164 signal(SIGFPE, blech);
8166 /* Don't let compiler optimize the test away. Store the number
8167 in a writable string for gcc to pass to sscanf under HP/UX.
8169 sprintf(str, "2147483647");
8170 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8174 /* x86 processors will probably give 0x8000 0000, which is a
8175 sign change. We don't want that. We want to mimic SPARC
8176 behavior here, which is to preserve the sign and give
8179 if (i32 != ($xxx) f)
8185 if eval $compile_ok; then
8189 echo "(I can't seem to compile the test program--assuming it can't)"
8197 echo "Nope, it can't."
8204 : check for ability to cast negative floats to unsigned
8206 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8209 #include <sys/types.h>
8211 $signal_t blech(s) int s; { exit(7); }
8212 $signal_t blech_in_list(s) int s; { exit(4); }
8213 unsigned long dummy_long(p) unsigned long p; { return p; }
8214 unsigned int dummy_int(p) unsigned int p; { return p; }
8215 unsigned short dummy_short(p) unsigned short p; { return p; }
8219 unsigned long along;
8221 unsigned short ashort;
8225 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8226 a direct f = -123. assignment. gcc-2.8.0 reportedly
8227 optimized the whole file away
8229 /* Store the number in a writable string for gcc to pass to
8232 sprintf(str, "-123");
8233 sscanf(str, "%lf", &f); /* f = -123.; */
8235 signal(SIGFPE, blech);
8236 along = (unsigned long)f;
8237 aint = (unsigned int)f;
8238 ashort = (unsigned short)f;
8239 if (along != (unsigned long)-123)
8241 if (aint != (unsigned int)-123)
8243 if (ashort != (unsigned short)-123)
8245 sprintf(str, "1073741824.");
8246 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8249 along = (unsigned long)f;
8250 if (along != 0x80000000)
8254 along = (unsigned long)f;
8255 if (along != 0x7fffffff)
8259 along = (unsigned long)f;
8260 if (along != 0x80000001)
8264 signal(SIGFPE, blech_in_list);
8265 sprintf(str, "123.");
8266 sscanf(str, "%lf", &f); /* f = 123.; */
8267 along = dummy_long((unsigned long)f);
8268 aint = dummy_int((unsigned int)f);
8269 ashort = dummy_short((unsigned short)f);
8270 if (along != (unsigned long)123)
8272 if (aint != (unsigned int)123)
8274 if (ashort != (unsigned short)123)
8281 if eval $compile_ok; then
8285 echo "(I can't seem to compile the test program--assuming it can't)"
8288 case "$castflags" in
8293 echo "Nope, it can't."
8300 : see if vprintf exists
8302 if set vprintf val -f d_vprintf; eval $csym; $val; then
8303 echo 'vprintf() found.' >&4
8305 $cat >vprintf.c <<'EOF'
8306 #include <varargs.h>
8308 int main() { xxx("foo"); }
8317 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8321 if eval $compile && ./vprintf; then
8322 echo "Your vsprintf() returns (int)." >&4
8325 echo "Your vsprintf() returns (char*)." >&4
8329 echo 'vprintf() NOT found.' >&4
8339 : see if chown exists
8343 : see if chroot exists
8347 : see if chsize exists
8351 : check for const keyword
8353 echo 'Checking to see if your C compiler knows about "const"...' >&4
8354 $cat >const.c <<'EOCP'
8355 typedef struct spug { int drokk; } spug;
8362 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8364 echo "Yup, it does."
8367 echo "Nope, it doesn't."
8372 : see if crypt exists
8374 if set crypt val -f d_crypt; eval $csym; $val; then
8375 echo 'crypt() found.' >&4
8379 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8380 if $test -z "$cryptlib"; then
8381 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8385 if $test -z "$cryptlib"; then
8386 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8390 if $test -z "$cryptlib"; then
8391 cryptlib=`./loc libcrypt$_a "" $libpth`
8395 if $test -z "$cryptlib"; then
8396 echo 'crypt() NOT found.' >&4
8405 : get csh whereabouts
8407 'csh') val="$undef" ;;
8412 : Respect a hint or command line value for full_csh.
8414 '') full_csh=$csh ;;
8417 : see if cuserid exists
8418 set cuserid d_cuserid
8421 : see if this is a limits.h system
8422 set limits.h i_limits
8425 : see if this is a float.h system
8429 : See if number of significant digits in a double precision number is known
8431 $cat >dbl_dig.c <<EOM
8441 printf("Contains DBL_DIG");
8444 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8445 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8446 echo "DBL_DIG found." >&4
8449 echo "DBL_DIG NOT found." >&4
8456 : see if difftime exists
8457 set difftime d_difftime
8460 : see if this is a dirent system
8462 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8464 echo "<dirent.h> found." >&4
8467 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8468 echo "<sys/dir.h> found." >&4
8471 xinc=`./findhdr sys/ndir.h`
8473 echo "<dirent.h> NOT found." >&4
8478 : Look for type of directory structure.
8480 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8482 case "$direntrytype" in
8485 $define) guess1='struct dirent' ;;
8486 *) guess1='struct direct' ;;
8489 *) guess1="$direntrytype"
8494 'struct dirent') guess2='struct direct' ;;
8495 *) guess2='struct dirent' ;;
8498 if $contains "$guess1" try.c >/dev/null 2>&1; then
8499 direntrytype="$guess1"
8500 echo "Your directory entries are $direntrytype." >&4
8501 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8502 direntrytype="$guess2"
8503 echo "Your directory entries seem to be $direntrytype." >&4
8505 echo "I don't recognize your system's directory entries." >&4
8506 rp="What type is used for directory entries on this system?"
8514 : see if the directory entry stores field length
8516 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8517 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8518 echo "Good, your directory entry keeps length information in d_namlen." >&4
8521 echo "Your directory entry does not know about the d_namlen field." >&4
8528 : see if dlerror exists
8531 set dlerror d_dlerror
8535 : see if dlfcn is available
8543 On a few systems, the dynamically loaded modules that perl generates and uses
8544 will need a different extension than shared libs. The default will probably
8552 rp='What is the extension of dynamically loaded modules'
8561 : Check if dlsym need a leading underscore
8567 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8568 $cat >dyna.c <<'EOM'
8577 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8579 #include <sys/types.h>
8593 int mode = RTLD_LAZY ;
8595 handle = dlopen("./dyna.$dlext", mode) ;
8596 if (handle == NULL) {
8601 symbol = dlsym(handle, "fred") ;
8602 if (symbol == NULL) {
8603 /* try putting a leading underscore */
8604 symbol = dlsym(handle, "_fred") ;
8605 if (symbol == NULL) {
8618 : Call the object file tmp-dyna.o in case dlext=o.
8619 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8620 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8621 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
8622 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8625 1) echo "Test program failed using dlopen." >&4
8626 echo "Perhaps you should not use dynamic loading." >&4;;
8627 2) echo "Test program failed using dlsym." >&4
8628 echo "Perhaps you should not use dynamic loading." >&4;;
8629 3) echo "dlsym needs a leading underscore" >&4
8631 4) echo "dlsym doesn't need a leading underscore." >&4;;
8634 echo "I can't compile and run the test program." >&4
8635 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8640 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8645 hasproto='varname=$1; func=$2; shift; shift;
8646 while $test $# -ge 2; do
8648 $define) echo "#include <$2>";;
8652 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8653 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8654 echo "$func() prototype found.";
8657 echo "$func() prototype NOT found.";
8662 $rm -f try.c tryout.c'
8664 : see if prototype for drand48 is available
8666 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8669 : see if dup2 exists
8673 : see if eaccess exists
8674 set eaccess d_eaccess
8677 : see if endgrent exists
8678 set endgrent d_endgrent
8681 : see if endhostent exists
8682 set endhostent d_endhent
8685 : see if endnetent exists
8686 set endnetent d_endnent
8689 : see if endprotoent exists
8690 set endprotoent d_endpent
8693 : see if endpwent exists
8694 set endpwent d_endpwent
8697 : see if endservent exists
8698 set endservent d_endsent
8701 : Locate the flags for 'open()'
8703 $cat >open3.c <<'EOCP'
8704 #include <sys/types.h>
8709 #include <sys/file.h>
8720 : check sys/file.h first to get FREAD on Sun
8721 if $test `./findhdr sys/file.h` && \
8722 set open3 -DI_SYS_FILE && eval $compile; then
8724 echo "<sys/file.h> defines the O_* constants..." >&4
8726 echo "and you have the 3 argument form of open()." >&4
8729 echo "but not the 3 argument form of open(). Oh, well." >&4
8732 elif $test `./findhdr fcntl.h` && \
8733 set open3 -DI_FCNTL && eval $compile; then
8735 echo "<fcntl.h> defines the O_* constants..." >&4
8737 echo "and you have the 3 argument form of open()." >&4
8740 echo "but not the 3 argument form of open(). Oh, well." >&4
8745 echo "I can't find the O_* constant definitions! You got problems." >&4
8751 : see which of string.h or strings.h is needed
8753 strings=`./findhdr string.h`
8754 if $test "$strings" && $test -r "$strings"; then
8755 echo "Using <string.h> instead of <strings.h>." >&4
8759 strings=`./findhdr strings.h`
8760 if $test "$strings" && $test -r "$strings"; then
8761 echo "Using <strings.h> instead of <string.h>." >&4
8763 echo "No string header found -- You'll surely have problems." >&4
8769 "$undef") strings=`./findhdr strings.h`;;
8770 *) strings=`./findhdr string.h`;;
8773 : check for non-blocking I/O stuff
8774 case "$h_sysfile" in
8775 true) echo "#include <sys/file.h>" > head.c;;
8778 true) echo "#include <fcntl.h>" > head.c;;
8779 *) echo "#include <sys/fcntl.h>" > head.c;;
8784 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8785 case "$o_nonblock" in
8788 $cat >>try.c <<'EOCP'
8792 printf("O_NONBLOCK\n");
8796 printf("O_NDELAY\n");
8800 printf("FNDELAY\n");
8807 if eval $compile_ok; then
8809 case "$o_nonblock" in
8810 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8811 *) echo "Seems like we can use $o_nonblock.";;
8814 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8817 *) echo "Using $hint value $o_nonblock.";;
8819 $rm -f try try.* .out core
8822 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8828 #include <sys/types.h>
8831 #define MY_O_NONBLOCK $o_nonblock
8832 #ifndef errno /* XXX need better Configure test */
8843 #include <strings.h>
8845 $signal_t blech(x) int x; { exit(3); }
8847 $cat >> try.c <<'EOCP'
8855 pipe(pd); /* Down: child -> parent */
8856 pipe(pu); /* Up: parent -> child */
8859 close(pd[1]); /* Parent reads from pd[0] */
8860 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8861 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8863 signal(SIGALRM, blech);
8865 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8867 sprintf(string, "%d\n", ret);
8868 write(2, string, strlen(string));
8871 if (errno == EAGAIN) {
8877 if (errno == EWOULDBLOCK)
8878 printf("EWOULDBLOCK\n");
8881 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8882 sleep(2); /* Give it time to close our pipe */
8884 ret = read(pd[0], buf, 1); /* Should read EOF */
8886 sprintf(string, "%d\n", ret);
8887 write(3, string, strlen(string));
8891 close(pd[0]); /* We write to pd[1] */
8892 close(pu[1]); /* We read from pu[0] */
8893 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8894 close(pd[1]); /* Pipe pd is now fully closed! */
8895 exit(0); /* Bye bye, thank you for playing! */
8899 if eval $compile_ok; then
8900 echo "$startsh" >mtry
8901 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8903 ./mtry >/dev/null 2>&1
8905 0) eagain=`$cat try.out`;;
8906 1) echo "Could not perform non-blocking setting!";;
8907 2) echo "I did a successful read() for something that was not there!";;
8908 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8909 *) echo "Something terribly wrong happened during testing.";;
8911 rd_nodata=`$cat try.ret`
8912 echo "A read() system call with no data present returns $rd_nodata."
8913 case "$rd_nodata" in
8916 echo "(That's peculiar, fixing that to be -1.)"
8922 echo "Forcing errno EAGAIN on read() with no data available."
8926 echo "Your read() sets errno to $eagain when no data is available."
8929 status=`$cat try.err`
8931 0) echo "And it correctly returns 0 to signal EOF.";;
8932 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8933 *) echo "However, your read() returns '$status' on EOF??";;
8936 if test "$status" = "$rd_nodata"; then
8937 echo "WARNING: you can't distinguish between EOF and no data!"
8941 echo "I can't compile the test program--assuming errno EAGAIN will do."
8948 echo "Using $hint value $eagain."
8949 echo "Your read() returns $rd_nodata when no data is present."
8950 case "$d_eofnblk" in
8951 "$define") echo "And you can see EOF because read() returns 0.";;
8952 "$undef") echo "But you can't see EOF status from read() returned value.";;
8954 echo "(Assuming you can't see EOF status from read anyway.)"
8960 $rm -f try try.* .out core head.c mtry
8962 : see if fchmod exists
8966 : see if fchown exists
8970 : see if this is an fcntl system
8975 : See if fcntl-based locking works.
8976 $cat >try.c <<'EOCP'
8981 #if defined(F_SETLK) && defined(F_SETLKW)
8984 fd = open("try.c", O_RDONLY);
8985 flock.l_type = F_RDLCK;
8986 flock.l_whence = SEEK_SET;
8987 flock.l_start = flock.l_len = 0;
8988 retval = fcntl(fd, F_SETLK, &flock);
8990 (retval < 0 ? exit(2) : exit(0));
8996 echo "Checking if fcntl-based file locking works... "
9000 if eval $compile_ok; then
9002 echo "Yes, it seems to work."
9005 echo "Nope, it didn't work."
9009 echo "I'm unable to compile the test program, so I'll assume not."
9014 echo "Nope, since you don't even have fcntl()."
9017 set d_fcntl_can_lock
9022 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9023 while $test $# -ge 2; do
9025 $define) echo "#include <$2>";;
9029 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9031 if eval $compile; then
9042 : see whether socket exists
9044 $echo $n "Hmm... $c" >&4
9045 if set socket val -f d_socket; eval $csym; $val; then
9046 echo "Looks like you have Berkeley networking support." >&4
9048 if set setsockopt val -f; eval $csym; $val; then
9051 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9055 if $contains socklib libc.list >/dev/null 2>&1; then
9056 echo "Looks like you have Berkeley networking support." >&4
9058 : we will have to assume that it supports the 4.2 BSD interface
9061 echo "You don't have Berkeley networking in libc$_a..." >&4
9062 if test "X$d_socket" = "X$define"; then
9063 echo "...but you seem to believe that you have sockets." >&4
9065 for net in net socket
9067 if test -f /usr/lib/lib$net$_a; then
9068 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9069 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9070 if $contains socket libc.list >/dev/null 2>&1; then
9075 echo "...but the Wollongong group seems to have hacked it in." >&4
9076 sockethdr="-I/usr/netinclude"
9079 echo "Found Berkeley sockets interface in lib$net." >& 4
9080 if $contains setsockopt libc.list >/dev/null 2>&1; then
9083 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9090 if test "X$d_socket" != "X$define"; then
9091 echo "or anywhere else I see." >&4
9099 : see if socketpair exists
9100 set socketpair d_sockpair
9105 echo "Checking the availability of certain socket constants..." >& 4
9106 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9107 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9109 #include <sys/types.h>
9110 #include <sys/socket.h>
9116 set try; if eval $compile; then
9119 set d_${enum}; eval $setvar
9123 : see if sys/select.h has to be included
9124 set sys/select.h i_sysselct
9127 : see if we should include time.h, sys/time.h, or both
9129 if test "X$timeincl" = X; then
9130 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9131 $echo $n "I'm now running the test program...$c"
9132 $cat >try.c <<'EOCP'
9133 #include <sys/types.h>
9138 #ifdef SYSTIMEKERNEL
9141 #include <sys/time.h>
9144 #include <sys/select.h>
9153 struct timezone tzp;
9155 if (foo.tm_sec == foo.tm_sec)
9158 if (bar.tv_sec == bar.tv_sec)
9165 for s_timezone in '-DS_TIMEZONE' ''; do
9167 for s_timeval in '-DS_TIMEVAL' ''; do
9168 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9169 for i_time in '' '-DI_TIME'; do
9170 for i_systime in '-DI_SYSTIME' ''; do
9173 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9174 if eval $compile; then
9175 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9179 $echo $n "Succeeded with $flags$c"
9191 *SYSTIMEKERNEL*) i_systimek="$define"
9192 timeincl=`./findhdr sys/time.h`
9193 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9194 *) i_systimek="$undef";;
9197 *I_TIME*) i_time="$define"
9198 timeincl=`./findhdr time.h`" $timeincl"
9199 echo "We'll include <time.h>." >&4;;
9200 *) i_time="$undef";;
9203 *I_SYSTIME*) i_systime="$define"
9204 timeincl=`./findhdr sys/time.h`" $timeincl"
9205 echo "We'll include <sys/time.h>." >&4;;
9206 *) i_systime="$undef";;
9211 : check for fd_set items
9214 Checking to see how well your C compiler handles fd_set and friends ...
9216 $cat >fd_set.c <<EOCP
9217 #$i_systime I_SYS_TIME
9218 #$i_sysselct I_SYS_SELECT
9219 #$d_socket HAS_SOCKET
9220 #include <sys/types.h>
9222 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9225 #include <sys/time.h>
9228 #include <sys/select.h>
9237 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9244 set fd_set -DTRYBITS
9245 if eval $compile; then
9246 d_fds_bits="$define"
9248 echo "Well, your system knows about the normal fd_set typedef..." >&4
9250 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9251 d_fd_macros="$define"
9254 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9256 d_fd_macros="$undef"
9260 Hmm, your compiler has some difficulty with fd_set. Checking further...
9263 if eval $compile; then
9266 echo "Well, your system has some sort of fd_set available..." >&4
9268 echo "and you have the normal fd_set macros." >&4
9269 d_fd_macros="$define"
9272 but not the normal fd_set macros! Gross! More work for me...
9274 d_fd_macros="$undef"
9277 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9280 d_fd_macros="$undef"
9285 : see if fgetpos exists
9286 set fgetpos d_fgetpos
9289 : see if flock exists
9293 : see if fork exists
9297 : see if pathconf exists
9298 set pathconf d_pathconf
9301 : see if fpathconf exists
9302 set fpathconf d_fpathconf
9306 : check for fpos64_t
9308 echo "Checking to see if you have fpos64_t..." >&4
9311 int main() { fpos64_t x = 7; }
9314 if eval $compile; then
9316 echo "You have fpos64_t."
9319 echo "You do not have fpos64_t."
9321 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9328 : see if frexpl exists
9332 hasstruct='varname=$1; struct=$2; shift; shift;
9333 while $test $# -ge 2; do
9335 $define) echo "#include <$2>";;
9339 echo "int main () { struct $struct foo; }" >> try.c;
9341 if eval $compile; then
9350 : see if this is a sys/param system
9351 set sys/param.h i_sysparam
9354 : see if this is a sys/mount.h system
9355 set sys/mount.h i_sysmount
9358 : see if sys/types.h has to be included
9359 set sys/types.h i_systypes
9364 echo "Checking to see if your system supports struct fs_data..." >&4
9365 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9367 case "$d_fs_data_s" in
9368 "$define") echo "Yes, it does." ;;
9369 *) echo "No, it doesn't." ;;
9372 : see if fseeko exists
9376 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9379 : see if fsetpos exists
9380 set fsetpos d_fsetpos
9384 : see if fstatfs exists
9385 set fstatfs d_fstatfs
9389 : see if statvfs exists
9390 set statvfs d_statvfs
9393 : see if fstatvfs exists
9394 set fstatvfs d_fstatvfs
9398 : see if fsync exists
9402 : see if ftello exists
9406 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9409 : see if getcwd exists
9413 : see if getespwnam exists
9414 set getespwnam d_getespwnam
9418 : see if getfsstat exists
9419 set getfsstat d_getfsstat
9422 : see if getgrent exists
9423 set getgrent d_getgrent
9426 : see if gethostbyaddr exists
9427 set gethostbyaddr d_gethbyaddr
9430 : see if gethostbyname exists
9431 set gethostbyname d_gethbyname
9434 : see if gethostent exists
9435 set gethostent d_gethent
9438 : see how we will look up host name
9441 if set gethostname val -f d_gethname; eval $csym; $val; then
9442 echo 'gethostname() found.' >&4
9443 d_gethname="$define"
9446 if set uname val -f d_uname; eval $csym; $val; then
9449 uname() was found, but you're running xenix, and older versions of xenix
9450 have a broken uname(). If you don't really know whether your xenix is old
9451 enough to have a broken system call, use the default answer.
9458 rp='Is your uname() broken?'
9461 n*) d_uname="$define"; call=uname;;
9464 echo 'uname() found.' >&4
9471 case "$d_gethname" in
9472 '') d_gethname="$undef";;
9475 '') d_uname="$undef";;
9477 case "$d_uname$d_gethname" in
9482 Every now and then someone has a $call() that lies about the hostname
9483 but can't be fixed for political or economic reasons. If you wish, I can
9484 pretend $call() isn't there and maybe compute hostname at run-time
9485 thanks to the '$phostname' command.
9488 rp="Shall I ignore $call() from now on?"
9491 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9494 case "$phostname" in
9496 *) case "$aphostname" in
9502 file=`./loc $file $file $pth`
9503 aphostname=`echo $file $*`
9508 case "$d_uname$d_gethname" in
9511 case "$phostname" in
9513 echo "There will be no way for $package to get your hostname." >&4;;
9515 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9519 case "$d_phostname" in
9520 '') d_phostname="$undef";;
9523 : see if this is a netdb.h system
9527 : see if prototypes for various gethostxxx netdb.h functions are available
9529 set d_gethostprotos gethostent $i_netdb netdb.h
9532 : see if getlogin exists
9533 set getlogin d_getlogin
9536 : see if getmnt exists
9540 : see if getmntent exists
9541 set getmntent d_getmntent
9544 : see if getnetbyaddr exists
9545 set getnetbyaddr d_getnbyaddr
9548 : see if getnetbyname exists
9549 set getnetbyname d_getnbyname
9552 : see if getnetent exists
9553 set getnetent d_getnent
9556 : see if prototypes for various getnetxxx netdb.h functions are available
9558 set d_getnetprotos getnetent $i_netdb netdb.h
9561 : see if getpagesize exists
9562 set getpagesize d_getpagsz
9566 : see if getprotobyname exists
9567 set getprotobyname d_getpbyname
9570 : see if getprotobynumber exists
9571 set getprotobynumber d_getpbynumber
9574 : see if getprotoent exists
9575 set getprotoent d_getpent
9578 : see if getpgid exists
9579 set getpgid d_getpgid
9582 : see if getpgrp2 exists
9583 set getpgrp2 d_getpgrp2
9586 : see if getppid exists
9587 set getppid d_getppid
9590 : see if getpriority exists
9591 set getpriority d_getprior
9594 : see if prototypes for various getprotoxxx netdb.h functions are available
9596 set d_getprotoprotos getprotoent $i_netdb netdb.h
9599 : see if getprpwnam exists
9600 set getprpwnam d_getprpwnam
9603 : see if getpwent exists
9604 set getpwent d_getpwent
9608 : see if getservbyname exists
9609 set getservbyname d_getsbyname
9612 : see if getservbyport exists
9613 set getservbyport d_getsbyport
9616 : see if getservent exists
9617 set getservent d_getsent
9620 : see if prototypes for various getservxxx netdb.h functions are available
9622 set d_getservprotos getservent $i_netdb netdb.h
9625 : see if getspnam exists
9626 set getspnam d_getspnam
9629 : see if gettimeofday or ftime exists
9630 set gettimeofday d_gettimeod
9632 case "$d_gettimeod" in
9638 val="$undef"; set d_ftime; eval $setvar
9641 case "$d_gettimeod$d_ftime" in
9644 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9648 : see if this is an grp system
9654 xxx=`./findhdr grp.h`
9655 $cppstdin $cppflags $cppminus < $xxx >$$.h
9657 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9669 set d_grpasswd; eval $setvar
9673 : see if hasmntopt exists
9674 set hasmntopt d_hasmntopt
9677 : see if this is a netinet/in.h or sys/in.h system
9678 set netinet/in.h i_niin sys/in.h i_sysin
9681 : see if arpa/inet.h has to be included
9682 set arpa/inet.h i_arpainet
9685 : see if htonl --and friends-- exists
9690 : Maybe they are macros.
9695 #include <sys/types.h>
9696 #$i_niin I_NETINET_IN
9698 #$i_arpainet I_ARPA_INET
9700 #include <netinet/in.h>
9706 #include <arpa/inet.h>
9709 printf("Defined as a macro.");
9712 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9713 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9715 echo "But it seems to be defined as a macro." >&4
9723 : see if iconv exists
9729 if set index val -f; eval $csym; $val; then
9730 if set strchr val -f d_strchr; eval $csym; $val; then
9731 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9734 echo "strchr() found." >&4
9738 echo "index() found." >&4
9743 echo "index() found." >&4
9746 if set strchr val -f d_strchr; eval $csym; $val; then
9749 echo "strchr() found." >&4
9751 echo "No index() or strchr() found!" >&4
9756 set d_strchr; eval $setvar
9758 set d_index; eval $setvar
9760 : check whether inet_aton exists
9761 set inet_aton d_inetaton
9764 : see if inttypes.h is available
9765 : we want a real compile instead of Inhdr because some systems
9766 : have an inttypes.h which includes non-existent headers
9769 #include <inttypes.h>
9771 static int32_t foo32 = 0x12345678;
9775 if eval $compile; then
9776 echo "<inttypes.h> found." >&4
9779 echo "<inttypes.h> NOT found." >&4
9788 echo "Checking to see if you have int64_t..." >&4
9790 #include <sys/types.h>
9791 #$i_inttypes I_INTTYPES
9793 #include <inttypes.h>
9795 int main() { int64_t x = 7; }
9798 if eval $compile; then
9800 echo "You have int64_t."
9803 echo "You do not have int64_t."
9811 $cat >isascii.c <<'EOCP'
9823 if eval $compile; then
9824 echo "isascii() found." >&4
9827 echo "isascii() NOT found." >&4
9834 : see if isnan exists
9838 : see if isnanl exists
9842 : see if killpg exists
9846 : see if lchown exists
9848 $cat > try.c <<'EOCP'
9849 /* System header to define __stub macros and hopefully few prototypes,
9850 which can conflict with char lchown(); below. */
9852 /* Override any gcc2 internal prototype to avoid an error. */
9853 /* We use char because int might match the return type of a gcc2
9854 builtin and then its argument prototype would still apply. */
9857 /* The GNU C library defines this for functions which it implements
9858 to always fail with ENOSYS. Some functions are actually named
9859 something starting with __ and the normal name is an alias. */
9860 #if defined (__stub_lchown) || defined (__stub___lchown)
9868 if eval $compile; then
9869 $echo "lchown() found." >&4
9872 $echo "lchown() NOT found." >&4
9878 : See if number of significant digits in a double precision number is known
9880 $cat >ldbl_dig.c <<EOM
9890 printf("Contains LDBL_DIG");
9893 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9894 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9895 echo "LDBL_DIG found." >&4
9898 echo "LDBL_DIG NOT found." >&4
9905 : see if link exists
9909 : see if localeconv exists
9910 set localeconv d_locconv
9913 : see if lockf exists
9917 : check for long long
9919 echo "Checking to see if you have long long..." >&4
9920 echo 'int main() { long long x = 7; return 0; }' > try.c
9922 if eval $compile; then
9924 echo "You have long long."
9927 echo "You do not have long long."
9933 : check for length of long long
9934 case "${d_longlong}${longlongsize}" in
9937 echo "Checking to see how big your long longs are..." >&4
9938 $cat >try.c <<'EOCP'
9942 printf("%d\n", (int)sizeof(long long));
9947 if eval $compile_ok; then
9948 longlongsize=`./try$exe_ext`
9949 echo "Your long longs are $longlongsize bytes long."
9953 echo "(I can't seem to compile the test program. Guessing...)"
9954 rp="What is the size of a long long (in bytes)?"
9958 if $test "X$longsize" = "X$longlongsize"; then
9959 echo "(That isn't any different from an ordinary long.)"
9965 : see if prototype for lseek is available
9967 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9970 : see if lstat exists
9974 : see if madvise exists
9975 set madvise d_madvise
9978 : see if mblen exists
9982 : see if mbstowcs exists
9983 set mbstowcs d_mbstowcs
9986 : see if mbtowc exists
9990 : see if memchr exists
9994 : see if memcmp exists
9998 : see if memcpy exists
10002 : see if memmove exists
10003 set memmove d_memmove
10006 : see if memset exists
10007 set memset d_memset
10010 : see if mkdir exists
10014 : see if mkdtemp exists
10015 set mkdtemp d_mkdtemp
10018 : see if mkfifo exists
10019 set mkfifo d_mkfifo
10022 : see if mkstemp exists
10023 set mkstemp d_mkstemp
10026 : see if mkstemps exists
10027 set mkstemps d_mkstemps
10030 : see if mktime exists
10031 set mktime d_mktime
10034 : see if this is a sys/mman.h system
10035 set sys/mman.h i_sysmman
10038 : see if mmap exists
10041 : see what shmat returns
10042 : default to something harmless
10044 case "$i_sysmman$d_mmap" in
10046 $cat >mmap.c <<'END'
10047 #include <sys/mman.h>
10050 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10055 echo "and it returns ($mmaptype)." >&4
10061 : see if modfl exists
10065 : see if mprotect exists
10066 set mprotect d_mprotect
10069 : see if msgctl exists
10070 set msgctl d_msgctl
10073 : see if msgget exists
10074 set msgget d_msgget
10077 : see if msgsnd exists
10078 set msgsnd d_msgsnd
10081 : see if msgrcv exists
10082 set msgrcv d_msgrcv
10085 : see how much of the 'msg*(2)' library is present.
10088 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10089 *"$undef"*) h_msg=false;;
10093 case "`ipcs 2>&1`" in
10094 "SVID messages"*"not configured"*)
10095 echo "Your $osname does not have the msg*(2) configured." >&4
10098 set msgctl d_msgctl
10100 set msgget d_msgget
10102 set msgsnd d_msgsnd
10104 set msgrcv d_msgrcv
10110 : we could also check for sys/ipc.h ...
10111 if $h_msg && $test `./findhdr sys/msg.h`; then
10112 echo "You have the full msg*(2) library." >&4
10115 echo "You don't have the full msg*(2) library." >&4
10121 : see if msync exists
10125 : see if munmap exists
10126 set munmap d_munmap
10129 : see if nice exists
10135 echo "Checking which 64-bit integer type we could use..." >&4
10141 val='"unsigned int"'
10146 *) case "$longsize" in
10150 val='"unsigned long"'
10155 *) case "$d_longlong:$longlongsize" in
10160 val='"unsigned long long"'
10165 *) case "$d_int64_t" in
10183 case "$quadtype" in
10184 '') echo "Alas, no 64-bit integer types in sight." >&4
10187 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10192 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10197 : check for length of character
10199 case "$charsize" in
10201 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10202 $cat >try.c <<'EOCP'
10206 printf("%d\n", (int)sizeof(char));
10211 if eval $compile_ok; then
10215 echo "(I can't seem to compile the test program. Guessing...)"
10222 rp="What is the size of a character (in bytes)?"
10227 : check for volatile keyword
10229 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10230 $cat >try.c <<'EOCP'
10233 typedef struct _goo_struct goo_struct;
10234 goo_struct * volatile goo = ((goo_struct *)0);
10235 struct _goo_struct {
10240 typedef unsigned short foo_t;
10241 char *volatile foo;
10243 volatile foo_t blech;
10247 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10249 echo "Yup, it does."
10252 echo "Nope, it doesn't."
10260 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10262 case "$use64bitint:$d_quad:$quadtype" in
10265 uvtype="$uquadtype"
10270 uvtype="unsigned long"
10276 case "$uselongdouble:$d_longdbl" in
10278 nvtype="long double"
10279 nvsize=$longdblsize
10286 $echo "(IV will be "$ivtype", $ivsize bytes)"
10287 $echo "(UV will be "$uvtype", $uvsize bytes)"
10288 $echo "(NV will be "$nvtype", $nvsize bytes)"
10291 #$i_inttypes I_INTTYPES
10293 #include <inttypes.h>
10298 int8_t i = INT8_MAX;
10299 uint8_t u = UINT8_MAX;
10300 printf("int8_t\n");
10303 int16_t i = INT16_MAX;
10304 uint16_t i = UINT16_MAX;
10305 printf("int16_t\n");
10308 int32_t i = INT32_MAX;
10309 uint32_t u = UINT32_MAX;
10310 printf("int32_t\n");
10316 '') case "$charsize" in
10318 u8type="unsigned char"
10327 if eval $compile; then
10328 case "`./try$exe_ext`" in
10329 int8_t) i8type=int8_t
10339 '') if $test $charsize -ge 1; then
10341 u8type="unsigned char"
10349 '') case "$shortsize" in
10351 u16type="unsigned short"
10359 '') set try -DINT16
10360 if eval $compile; then
10361 case "`./try$exe_ext`" in
10373 '') if $test $shortsize -ge 2; then
10375 u16type="unsigned short"
10383 '') case "$longsize" in
10385 u32type="unsigned long"
10389 *) case "$intsize" in
10391 u32type="unsigned int"
10401 '') set try -DINT32
10402 if eval $compile; then
10403 case "`./try$exe_ext`" in
10415 '') if $test $intsize -ge 4; then
10417 u32type="unsigned int"
10425 '') case "$d_quad:$quadtype" in
10427 i64type="$quadtype"
10428 u64type="$uquadtype"
10436 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10437 : volatile so that the compiler has to store it out to memory.
10438 if test X"$d_volatile" = X"$define"; then
10443 #include <sys/types.h>
10444 #include <signal.h>
10446 $volatile int bletched = 0;
10447 $signal_t blech(s) int s; { bletched = 1; }
10452 int n = 8 * $uvsize;
10455 signal(SIGFPE, blech);
10458 for (i = 0; i < n; i++) {
10459 u = u << 1 | ($uvtype)1;
10461 if (($uvtype)d != u)
10465 d = ($nvtype)(u - 1);
10466 if (($uvtype)d != (u - 1))
10474 printf("%d\n", ((i == n) ? -n : i));
10480 d_nv_preserves_uv="$undef"
10481 if eval $compile; then
10482 d_nv_preserves_uv_bits="`./try$exe_ext`"
10484 case "$d_nv_preserves_uv_bits" in
10486 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10487 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10488 d_nv_preserves_uv="$define"
10490 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10491 d_nv_preserves_uv="$undef" ;;
10492 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10493 d_nv_preserves_uv_bits="$undef" ;;
10499 : check for off64_t
10501 echo "Checking to see if you have off64_t..." >&4
10503 #include <sys/types.h>
10504 #include <unistd.h>
10505 int main() { off64_t x = 7; }
10508 if eval $compile; then
10510 echo "You have off64_t."
10513 echo "You do not have off64_t."
10514 case "$lseeksize" in
10515 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10522 : see if POSIX threads are available
10523 set pthread.h i_pthread
10529 : how to create joinable pthreads
10530 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10532 echo "Checking what constant to use for creating joinable pthreads..." >&4
10533 $cat >try.c <<'EOCP'
10534 #include <pthread.h>
10536 int detachstate = JOINABLE;
10539 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10540 if eval $compile; then
10541 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10542 val="$undef" # Yes, undef.
10543 set d_old_pthread_create_joinable
10546 set old_pthread_create_joinable
10549 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10550 if eval $compile; then
10551 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10553 set d_old_pthread_create_joinable
10555 val=PTHREAD_CREATE_UNDETACHED
10556 set old_pthread_create_joinable
10559 set try -DJOINABLE=__UNDETACHED
10560 if eval $compile; then
10561 echo "You seem to use __UNDETACHED." >&4
10563 set d_old_pthread_create_joinable
10566 set old_pthread_create_joinable
10569 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10571 set d_old_pthread_create_joinable
10574 set old_pthread_create_joinable
10581 d_old_pthread_create_joinable="$undef"
10582 old_pthread_create_joinable=""
10585 : see if pause exists
10589 : see if pipe exists
10593 : see if poll exists
10598 : see whether the various POSIXish _yields exist
10600 #include <pthread.h>
10606 #ifdef PTHREAD_YIELD
10609 #ifdef PTHREAD_YIELD_NULL
10610 pthread_yield(NULL);
10616 : see if sched_yield exists
10617 set try -DSCHED_YIELD
10618 if eval $compile; then
10620 sched_yield='sched_yield()'
10624 case "$usethreads" in
10627 $define) echo 'sched_yield() found.' >&4 ;;
10628 *) echo 'sched_yield() NOT found.' >&4 ;;
10634 : see if pthread_yield exists
10635 set try -DPTHREAD_YIELD
10636 if eval $compile; then
10638 case "$sched_yield" in
10639 '') sched_yield='pthread_yield()' ;;
10642 set try -DPTHREAD_YIELD_NULL
10643 if eval $compile; then
10645 case "$sched_yield" in
10646 '') sched_yield='pthread_yield(NULL)' ;;
10652 case "$usethreads" in
10655 $define) echo 'pthread_yield() found.' >&4 ;;
10656 *) echo 'pthread_yield() NOT found.' >&4 ;;
10660 set d_pthread_yield
10663 case "$sched_yield" in
10664 '') sched_yield=undef ;;
10669 : see if this is a pwd.h system
10675 xxx=`./findhdr pwd.h`
10676 $cppstdin $cppflags $cppminus < $xxx >$$.h
10678 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10686 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10694 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10702 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10710 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10718 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10726 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10734 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10746 set d_pwquota; eval $setvar
10747 set d_pwage; eval $setvar
10748 set d_pwchange; eval $setvar
10749 set d_pwclass; eval $setvar
10750 set d_pwexpire; eval $setvar
10751 set d_pwcomment; eval $setvar
10752 set d_pwgecos; eval $setvar
10753 set d_pwpasswd; eval $setvar
10757 : see if readdir and friends exist
10758 set readdir d_readdir
10760 set seekdir d_seekdir
10762 set telldir d_telldir
10764 set rewinddir d_rewinddir
10767 : see if readlink exists
10768 set readlink d_readlink
10771 : see if rename exists
10772 set rename d_rename
10775 : see if rmdir exists
10779 : see if memory.h is available.
10784 : See if it conflicts with string.h
10790 $cppstdin $cppflags $cppminus < $strings > mem.h
10791 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10793 echo "We won't be including <memory.h>."
10803 : can bcopy handle overlapping blocks?
10808 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10810 #$i_memory I_MEMORY
10811 #$i_stdlib I_STDLIB
10812 #$i_string I_STRING
10813 #$i_unistd I_UNISTD
10815 $cat >>try.c <<'EOCP'
10818 # include <memory.h>
10821 # include <stdlib.h>
10824 # include <string.h>
10826 # include <strings.h>
10829 # include <unistd.h> /* Needed for NetBSD */
10833 char buf[128], abc[128];
10839 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10841 for (align = 7; align >= 0; align--) {
10842 for (len = 36; len; len--) {
10844 bcopy(abc, b, len);
10845 for (off = 1; off <= len; off++) {
10846 bcopy(b, b+off, len);
10847 bcopy(b+off, b, len);
10848 if (bcmp(b, abc, len))
10857 if eval $compile_ok; then
10858 if ./try 2>/dev/null; then
10859 echo "Yes, it can."
10862 echo "It can't, sorry."
10863 case "$d_memmove" in
10864 "$define") echo "But that's Ok since you have memmove()." ;;
10868 echo "(I can't compile the test program, so we'll assume not...)"
10869 case "$d_memmove" in
10870 "$define") echo "But that's Ok since you have memmove()." ;;
10875 $rm -f try.* try core
10879 : can memcpy handle overlapping blocks?
10881 case "$d_memcpy" in
10884 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10886 #$i_memory I_MEMORY
10887 #$i_stdlib I_STDLIB
10888 #$i_string I_STRING
10889 #$i_unistd I_UNISTD
10891 $cat >>try.c <<'EOCP'
10894 # include <memory.h>
10897 # include <stdlib.h>
10900 # include <string.h>
10902 # include <strings.h>
10905 # include <unistd.h> /* Needed for NetBSD */
10909 char buf[128], abc[128];
10915 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10916 try to store the string in read-only memory. */
10917 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10919 for (align = 7; align >= 0; align--) {
10920 for (len = 36; len; len--) {
10922 memcpy(b, abc, len);
10923 for (off = 1; off <= len; off++) {
10924 memcpy(b+off, b, len);
10925 memcpy(b, b+off, len);
10926 if (memcmp(b, abc, len))
10935 if eval $compile_ok; then
10936 if ./try 2>/dev/null; then
10937 echo "Yes, it can."
10940 echo "It can't, sorry."
10941 case "$d_memmove" in
10942 "$define") echo "But that's Ok since you have memmove()." ;;
10946 echo "(I can't compile the test program, so we'll assume not...)"
10947 case "$d_memmove" in
10948 "$define") echo "But that's Ok since you have memmove()." ;;
10953 $rm -f try.* try core
10957 : can memcmp be trusted to compare relative magnitude?
10959 case "$d_memcmp" in
10962 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10964 #$i_memory I_MEMORY
10965 #$i_stdlib I_STDLIB
10966 #$i_string I_STRING
10967 #$i_unistd I_UNISTD
10969 $cat >>try.c <<'EOCP'
10972 # include <memory.h>
10975 # include <stdlib.h>
10978 # include <string.h>
10980 # include <strings.h>
10983 # include <unistd.h> /* Needed for NetBSD */
10989 if ((a < b) && memcmp(&a, &b, 1) < 0)
10995 if eval $compile_ok; then
10996 if ./try 2>/dev/null; then
10997 echo "Yes, it can."
11000 echo "No, it can't (it uses signed chars)."
11003 echo "(I can't compile the test program, so we'll assume not...)"
11007 $rm -f try.* try core
11011 : see if prototype for sbrk is available
11013 set d_sbrkproto sbrk $i_unistd unistd.h
11016 : see if select exists
11017 set select d_select
11020 : see if semctl exists
11021 set semctl d_semctl
11024 : see if semget exists
11025 set semget d_semget
11028 : see if semop exists
11032 : see how much of the 'sem*(2)' library is present.
11035 case "$d_semctl$d_semget$d_semop" in
11036 *"$undef"*) h_sem=false;;
11040 case "`ipcs 2>&1`" in
11041 "SVID messages"*"not configured"*)
11042 echo "Your $osname does not have the sem*(2) configured." >&4
11045 set semctl d_semctl
11047 set semget d_semget
11055 : we could also check for sys/ipc.h ...
11056 if $h_sem && $test `./findhdr sys/sem.h`; then
11057 echo "You have the full sem*(2) library." >&4
11060 echo "You don't have the full sem*(2) library." >&4
11066 : see whether sys/sem.h defines union semun
11068 $cat > try.c <<'END'
11069 #include <sys/types.h>
11070 #include <sys/ipc.h>
11071 #include <sys/sem.h>
11072 int main () { union semun semun; semun.buf = 0; }
11075 if eval $compile; then
11076 echo "You have union semun in <sys/sem.h>." >&4
11079 echo "You do not have union semun in <sys/sem.h>." >&4
11082 $rm -f try try.c try.h
11086 : see how to do semctl IPC_STAT
11089 : see whether semctl IPC_STAT can use union semun
11094 # define S_IRUSR S_IREAD
11095 # define S_IWUSR S_IWRITE
11096 # define S_IXUSR S_IEXEC
11098 # define S_IRUSR 0400
11099 # define S_IWUSR 0200
11100 # define S_IXUSR 0100
11102 # define S_IRGRP (S_IRUSR>>3)
11103 # define S_IWGRP (S_IWUSR>>3)
11104 # define S_IXGRP (S_IXUSR>>3)
11105 # define S_IROTH (S_IRUSR>>6)
11106 # define S_IWOTH (S_IWUSR>>6)
11107 # define S_IXOTH (S_IXUSR>>6)
11110 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11111 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11112 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11117 #include <sys/types.h>
11118 #include <sys/ipc.h>
11119 #include <sys/sem.h>
11120 #include <sys/stat.h>
11127 #$d_union_semun HAS_UNION_SEMUN
11130 #ifndef HAS_UNION_SEMUN
11133 struct semid_ds *buf;
11134 unsigned short *array;
11140 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11141 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11143 struct semid_ds argbuf;
11146 st = semctl(sem, 0, IPC_STAT, arg);
11150 # endif /* IPC_STAT */
11151 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11153 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11154 # endif /* IPC_RMID */
11155 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11157 #endif /* IPC_PRIVATE && ... */
11158 printf("semget failed: errno = %d\n", errno);
11164 if eval $compile; then
11167 semun) val="$define" ;;
11173 case "$d_semctl_semun" in
11175 echo "You can use union semun for semctl IPC_STAT." >&4
11178 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11183 : see whether semctl IPC_STAT can use struct semid_ds pointer
11184 $cat > try.c <<'END'
11185 #include <sys/types.h>
11186 #include <sys/ipc.h>
11187 #include <sys/sem.h>
11188 #include <sys/stat.h>
11196 struct semid_ds arg;
11199 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11200 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11203 st = semctl(sem, 0, IPC_STAT, &arg);
11205 printf("semid_ds\n");
11207 # endif /* IPC_STAT */
11208 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11210 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11211 # endif /* IPC_RMID */
11212 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11214 #endif /* IPC_PRIVATE && ... */
11215 printf("semget failed: errno = %d\n", errno);
11222 if eval $compile; then
11225 semid_ds) val="$define" ;;
11229 set d_semctl_semid_ds
11231 case "$d_semctl_semid_ds" in
11233 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11235 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11242 # We do not have the full sem*(2) library, so assume we can not
11248 set d_semctl_semid_ds
11253 : see if setegid exists
11254 set setegid d_setegid
11257 : see if seteuid exists
11258 set seteuid d_seteuid
11261 : see if setgrent exists
11262 set setgrent d_setgrent
11265 : see if sethostent exists
11266 set sethostent d_sethent
11269 : see if setlinebuf exists
11270 set setlinebuf d_setlinebuf
11273 : see if setlocale exists
11274 set setlocale d_setlocale
11277 : see if setnetent exists
11278 set setnetent d_setnent
11281 : see if setprotoent exists
11282 set setprotoent d_setpent
11285 : see if setpgid exists
11286 set setpgid d_setpgid
11289 : see if setpgrp2 exists
11290 set setpgrp2 d_setpgrp2
11293 : see if setpriority exists
11294 set setpriority d_setprior
11297 : see if setproctitle exists
11298 set setproctitle d_setproctitle
11301 : see if setpwent exists
11302 set setpwent d_setpwent
11305 : see if setregid exists
11306 set setregid d_setregid
11308 set setresgid d_setresgid
11311 : see if setreuid exists
11312 set setreuid d_setreuid
11314 set setresuid d_setresuid
11317 : see if setrgid exists
11318 set setrgid d_setrgid
11321 : see if setruid exists
11322 set setruid d_setruid
11325 : see if setservent exists
11326 set setservent d_setsent
11329 : see if setsid exists
11330 set setsid d_setsid
11333 : see if setvbuf exists
11334 set setvbuf d_setvbuf
11337 : see if sfio.h is available
11342 : see if sfio library is available
11353 : Ok, but do we want to use it.
11357 true|$define|[yY]*) dflt='y';;
11360 echo "$package can use the sfio library, but it is experimental."
11361 case "$useperlio" in
11363 echo "For sfio also the PerlIO abstraction layer is needed."
11364 echo "Earlier you said you wouldn't want that."
11367 rp="You seem to have sfio available, do you want to try using it?"
11370 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11371 useperlio="$define"
11374 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11376 : Remove sfio from list of libraries to use
11377 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11380 echo "libs = $libs" >&4
11384 *) case "$usesfio" in
11385 true|$define|[yY]*)
11386 echo "Sorry, cannot find sfio on this machine." >&4
11387 echo "Ignoring your setting of usesfio=$usesfio." >&4
11396 $define) usesfio='true';;
11397 *) usesfio='false';;
11400 : see if shmctl exists
11401 set shmctl d_shmctl
11404 : see if shmget exists
11405 set shmget d_shmget
11408 : see if shmat exists
11411 : see what shmat returns
11414 $cat >shmat.c <<'END'
11415 #include <sys/shm.h>
11418 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11423 echo "and it returns ($shmattype)." >&4
11424 : see if a prototype for shmat is available
11425 xxx=`./findhdr sys/shm.h`
11426 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11427 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11438 set d_shmatprototype
11441 : see if shmdt exists
11445 : see how much of the 'shm*(2)' library is present.
11448 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11449 *"$undef"*) h_shm=false;;
11453 case "`ipcs 2>&1`" in
11454 "SVID shared memory"*"not configured"*)
11455 echo "Your $osname does not have the shm*(2) configured." >&4
11458 set shmctl d_shmctl
11460 set shmget d_shmget
11470 : we could also check for sys/ipc.h ...
11471 if $h_shm && $test `./findhdr sys/shm.h`; then
11472 echo "You have the full shm*(2) library." >&4
11475 echo "You don't have the full shm*(2) library." >&4
11482 : see if we have sigaction
11483 if set sigaction val -f d_sigaction; eval $csym; $val; then
11484 echo 'sigaction() found.' >&4
11485 $cat > try.c <<'EOP'
11487 #include <sys/types.h>
11488 #include <signal.h>
11491 struct sigaction act, oact;
11493 oact.sa_handler = 0;
11494 /* so that act and oact are used */
11495 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11499 if eval $compile_ok; then
11502 echo "But you don't seem to have a useable struct sigaction." >&4
11506 echo 'sigaction NOT found.' >&4
11509 set d_sigaction; eval $setvar
11510 $rm -f try try$_o try.c
11512 : see if sigsetjmp exists
11514 case "$d_sigsetjmp" in
11516 $cat >try.c <<'EOP'
11517 #include <setjmp.h>
11522 if (sigsetjmp(env,1))
11525 siglongjmp(env, 1);
11530 if eval $compile; then
11531 if ./try >/dev/null 2>&1; then
11532 echo "POSIX sigsetjmp found." >&4
11536 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11542 echo "sigsetjmp not found." >&4
11546 *) val="$d_sigsetjmp"
11547 case "$d_sigsetjmp" in
11548 $define) echo "POSIX sigsetjmp found." >&4;;
11549 $undef) echo "sigsetjmp not found." >&4;;
11557 : see if socks5_init exists
11558 set socks5_init d_socks5_init
11561 : see if sys/stat.h is available
11562 set sys/stat.h i_sysstat
11566 : see if stat knows about block sizes
11568 echo "Checking to see if your struct stat has st_blocks field..." >&4
11569 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11573 : see if this is a sys/vfs.h system
11574 set sys/vfs.h i_sysvfs
11578 : see if this is a sys/statfs.h system
11579 set sys/statfs.h i_sysstatfs
11584 echo "Checking to see if your system supports struct statfs..." >&4
11585 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
11587 case "$d_statfs_s" in
11588 "$define") echo "Yes, it does." ;;
11589 *) echo "No, it doesn't." ;;
11594 : see if struct statfs knows about f_flags
11595 case "$d_statfs_s" in
11598 echo "Checking to see if your struct statfs has f_flags field..." >&4
11599 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
11603 set d_statfs_f_flags
11607 case "$d_statfs_f_flags" in
11608 "$define") echo "Yes, it does." ;;
11609 *) echo "No, it doesn't." ;;
11612 : see if _ptr and _cnt from stdio act std
11615 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11616 echo "(Looks like you have stdio.h from BSD.)"
11617 case "$stdio_ptr" in
11618 '') stdio_ptr='((fp)->_p)'
11621 *) ptr_lval=$d_stdio_ptr_lval;;
11623 case "$stdio_cnt" in
11624 '') stdio_cnt='((fp)->_r)'
11627 *) cnt_lval=$d_stdio_cnt_lval;;
11629 case "$stdio_base" in
11630 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11632 case "$stdio_bufsiz" in
11633 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11635 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11636 echo "(Looks like you have stdio.h from Linux.)"
11637 case "$stdio_ptr" in
11638 '') stdio_ptr='((fp)->_IO_read_ptr)'
11641 *) ptr_lval=$d_stdio_ptr_lval;;
11643 case "$stdio_cnt" in
11644 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11647 *) cnt_lval=$d_stdio_cnt_lval;;
11649 case "$stdio_base" in
11650 '') stdio_base='((fp)->_IO_read_base)';;
11652 case "$stdio_bufsiz" in
11653 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11656 case "$stdio_ptr" in
11657 '') stdio_ptr='((fp)->_ptr)'
11660 *) ptr_lval=$d_stdio_ptr_lval;;
11662 case "$stdio_cnt" in
11663 '') stdio_cnt='((fp)->_cnt)'
11666 *) cnt_lval=$d_stdio_cnt_lval;;
11668 case "$stdio_base" in
11669 '') stdio_base='((fp)->_base)';;
11671 case "$stdio_bufsiz" in
11672 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11676 : test whether _ptr and _cnt really work
11677 echo "Checking how std your stdio is..." >&4
11680 #define FILE_ptr(fp) $stdio_ptr
11681 #define FILE_cnt(fp) $stdio_cnt
11683 FILE *fp = fopen("try.c", "r");
11686 18 <= FILE_cnt(fp) &&
11687 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11695 if eval $compile; then
11697 echo "Your stdio acts pretty std."
11700 echo "Your stdio isn't very std."
11703 echo "Your stdio doesn't appear very std."
11709 : Can _ptr be used as an lvalue?
11710 case "$d_stdstdio$ptr_lval" in
11711 $define$define) val=$define ;;
11714 set d_stdio_ptr_lval
11717 : Can _cnt be used as an lvalue?
11718 case "$d_stdstdio$cnt_lval" in
11719 $define$define) val=$define ;;
11722 set d_stdio_cnt_lval
11726 : test whether setting _ptr sets _cnt as a side effect
11727 d_stdio_ptr_lval_sets_cnt="$undef"
11728 d_stdio_ptr_lval_nochange_cnt="$undef"
11729 case "$d_stdio_ptr_lval$d_stdstdio" in
11731 echo "Checking to see what happens if we set the stdio ptr..." >&4
11734 /* Can we scream? */
11735 /* Eat dust sed :-) */
11736 /* In the buffer space, no one can hear you scream. */
11737 #define FILE_ptr(fp) $stdio_ptr
11738 #define FILE_cnt(fp) $stdio_cnt
11739 #include <sys/types.h>
11741 FILE *fp = fopen("try.c", "r");
11746 puts("Fail even to read");
11749 c = getc(fp); /* Read away the first # */
11751 puts("Fail even to read");
11755 18 <= FILE_cnt(fp) &&
11756 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11758 puts("Fail even to read");
11761 ptr = (char*) FILE_ptr(fp);
11762 cnt = (size_t)FILE_cnt(fp);
11764 FILE_ptr(fp) += 42;
11766 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11767 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11770 if (FILE_cnt(fp) <= 20) {
11771 printf ("Fail (<20 chars to test)");
11774 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11775 puts("Fail compare");
11778 if (cnt == FILE_cnt(fp)) {
11779 puts("Pass_unchanged");
11782 if (FILE_cnt(fp) == (cnt - 42)) {
11783 puts("Pass_changed");
11786 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11792 if eval $compile; then
11793 case `./try$exe_ext` in
11795 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11796 d_stdio_ptr_lval_sets_cnt="$define" ;;
11798 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11799 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11801 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11803 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11806 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11812 : see if _base is also standard
11814 case "$d_stdstdio" in
11818 #define FILE_base(fp) $stdio_base
11819 #define FILE_bufsiz(fp) $stdio_bufsiz
11821 FILE *fp = fopen("try.c", "r");
11824 19 <= FILE_bufsiz(fp) &&
11825 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11832 if eval $compile; then
11834 echo "And its _base field acts std."
11837 echo "But its _base field isn't std."
11840 echo "However, it seems to be lacking the _base field."
11849 Checking how to access stdio streams by file descriptor number...
11851 case "$stdio_stream_array" in
11852 '') $cat >try.c <<EOCP
11855 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11859 for s in _iob __iob __sF
11861 set try -DSTDIO_STREAM_ARRAY=$s
11862 if eval $compile; then
11863 case "`./try$exe_ext`" in
11864 yes) stdio_stream_array=$s; break ;;
11868 $rm -f try.* try$exe_ext
11870 case "$stdio_stream_array" in
11872 I can't figure out how to access stdio streams by file descriptor number.
11874 d_stdio_stream_array="$undef"
11877 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11879 d_stdio_stream_array="$define"
11883 : see if strcoll exists
11884 set strcoll d_strcoll
11887 : check for structure copying
11889 echo "Checking to see if your C compiler can copy structs..." >&4
11890 $cat >try.c <<'EOCP'
11900 if $cc -c try.c >/dev/null 2>&1 ; then
11902 echo "Yup, it can."
11905 echo "Nope, it can't."
11911 : see if strerror and/or sys_errlist[] exist
11913 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11914 if set strerror val -f d_strerror; eval $csym; $val; then
11915 echo 'strerror() found.' >&4
11916 d_strerror="$define"
11917 d_strerrm='strerror(e)'
11918 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11919 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11920 d_syserrlst="$define"
11922 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11923 d_syserrlst="$undef"
11925 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11926 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11927 echo 'strerror() found in string header.' >&4
11928 d_strerror="$define"
11929 d_strerrm='strerror(e)'
11930 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11931 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11932 d_syserrlst="$define"
11934 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11935 d_syserrlst="$undef"
11937 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11938 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11939 d_strerror="$undef"
11940 d_syserrlst="$define"
11941 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11943 echo 'strerror() and sys_errlist[] NOT found.' >&4
11944 d_strerror="$undef"
11945 d_syserrlst="$undef"
11946 d_strerrm='"unknown"'
11950 : see if strtod exists
11951 set strtod d_strtod
11954 : see if strtol exists
11955 set strtol d_strtol
11958 : see if strtold exists
11959 set strtold d_strtold
11962 : see if strtoll exists
11963 set strtoll d_strtoll
11966 case "$d_longlong-$d_strtoll" in
11969 Checking whether your strtoll() works okay...
11971 $cat >try.c <<'EOCP'
11974 #define strtoll __strtoll
11977 #define strtoll _strtoll
11980 extern long long int strtoll(char *s, char **, int);
11981 static int bad = 0;
11982 int check(char *s, long long ell, int een) {
11985 gll = strtoll(s, 0, 10);
11986 if (!((gll == ell) && (errno == een)))
11990 check(" 1", 1LL, 0);
11991 check(" 0", 0LL, 0);
11992 check("-1", -1LL, 0);
11993 check("-9223372036854775808", -9223372036854775808LL, 0);
11994 check("-9223372036854775808", -9223372036854775808LL, 0);
11995 check(" 9223372036854775807", 9223372036854775807LL, 0);
11996 check("-9223372036854775808", -9223372036854775808LL, 0);
11997 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11998 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12004 if eval $compile; then
12007 ok) echo "Your strtoll() seems to be working okay." ;;
12009 Your strtoll() doesn't seem to be working okay.
12015 echo "(I can't seem to compile the test program--assuming it doesn't)"
12021 : see if strtoq exists
12022 set strtoq d_strtoq
12025 : see if strtoul exists
12026 set strtoul d_strtoul
12029 case "$d_strtoul" in
12032 Checking whether your strtoul() works okay...
12034 $cat >try.c <<'EOCP'
12037 extern unsigned long int strtoul(char *s, char **, int);
12038 static int bad = 0;
12039 void check(char *s, unsigned long eul, int een) {
12042 gul = strtoul(s, 0, 10);
12043 if (!((gul == eul) && (errno == een)))
12047 check(" 1", 1L, 0);
12048 check(" 0", 0L, 0);
12050 case "$longsize" in
12052 $cat >>try.c <<'EOCP'
12053 check("18446744073709551615", 18446744073709551615UL, 0);
12054 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12055 #if 0 /* strtoul() for /^-/ strings is undefined. */
12056 check("-1", 18446744073709551615UL, 0);
12057 check("-18446744073709551614", 2, 0);
12058 check("-18446744073709551615", 1, 0);
12059 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12060 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12065 $cat >>try.c <<'EOCP'
12066 check("4294967295", 4294967295UL, 0);
12067 check("4294967296", 4294967295UL, ERANGE);
12068 #if 0 /* strtoul() for /^-/ strings is undefined. */
12069 check("-1", 4294967295UL, 0);
12070 check("-4294967294", 2, 0);
12071 check("-4294967295", 1, 0);
12072 check("-4294967296", 4294967295UL, ERANGE);
12073 check("-4294967297", 4294967295UL, ERANGE);
12078 : Should we write these tests to be more portable by sprintf-ing
12079 : ~0 and then manipulating that char string as input for strtol?
12082 $cat >>try.c <<'EOCP'
12089 if eval $compile; then
12091 ok) echo "Your strtoul() seems to be working okay." ;;
12093 Your strtoul() doesn't seem to be working okay.
12102 : see if strtoull exists
12103 set strtoull d_strtoull
12106 case "$d_longlong-$d_strtoull" in
12109 Checking whether your strtoull() works okay...
12111 $cat >try.c <<'EOCP'
12114 #define strtoull __strtoull
12117 extern unsigned long long int strtoull(char *s, char **, int);
12118 static int bad = 0;
12119 int check(char *s, long long eull, int een) {
12122 gull = strtoull(s, 0, 10);
12123 if (!((gull == eull) && (errno == een)))
12127 check(" 1", 1LL, 0);
12128 check(" 0", 0LL, 0);
12129 check("18446744073709551615", 18446744073709551615ULL, 0);
12130 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12131 #if 0 /* strtoull() for /^-/ strings is undefined. */
12132 check("-1", 18446744073709551615ULL, 0);
12133 check("-18446744073709551614", 2LL, 0);
12134 check("-18446744073709551615", 1LL, 0);
12135 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12136 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12143 if eval $compile; then
12145 ok) echo "Your strtoull() seems to be working okay." ;;
12147 Your strtoull() doesn't seem to be working okay.
12149 d_strtoull="$undef"
12156 : see if strtouq exists
12157 set strtouq d_strtouq
12160 case "$d_strtouq" in
12163 Checking whether your strtouq() works okay...
12165 $cat >try.c <<'EOCP'
12168 extern unsigned long long int strtouq(char *s, char **, int);
12169 static int bad = 0;
12170 void check(char *s, unsigned long long eull, int een) {
12171 unsigned long long gull;
12173 gull = strtouq(s, 0, 10);
12174 if (!((gull == eull) && (errno == een)))
12178 check(" 1", 1LL, 0);
12179 check(" 0", 0LL, 0);
12180 check("18446744073709551615", 18446744073709551615ULL, 0);
12181 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12182 #if 0 /* strtouq() for /^-/ strings is undefined. */
12183 check("-1", 18446744073709551615ULL, 0);
12184 check("-18446744073709551614", 2LL, 0);
12185 check("-18446744073709551615", 1LL, 0);
12186 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12187 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12195 if eval $compile; then
12197 ok) echo "Your strtouq() seems to be working okay." ;;
12199 Your strtouq() doesn't seem to be working okay.
12208 : see if strxfrm exists
12209 set strxfrm d_strxfrm
12212 : see if symlink exists
12213 set symlink d_symlink
12216 : see if syscall exists
12217 set syscall d_syscall
12220 : see if sysconf exists
12221 set sysconf d_sysconf
12224 : see if system exists
12225 set system d_system
12228 : see if tcgetpgrp exists
12229 set tcgetpgrp d_tcgetpgrp
12232 : see if tcsetpgrp exists
12233 set tcsetpgrp d_tcsetpgrp
12236 : see if prototype for telldir is available
12238 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12241 : see if this is a sys/times.h system
12242 set sys/times.h i_systimes
12245 : see if times exists
12247 if set times val -f d_times; eval $csym; $val; then
12248 echo 'times() found.' >&4
12251 case "$i_systimes" in
12252 "$define") inc='sys/times.h';;
12254 rp="What is the type returned by times() on this system?"
12255 set clock_t clocktype long stdio.h sys/types.h $inc
12258 echo 'times() NOT found, hope that will do.' >&4
12263 : see if truncate exists
12264 set truncate d_truncate
12267 : see if tzname[] exists
12269 if set tzname val -a d_tzname; eval $csym; $val; then
12271 echo 'tzname[] found.' >&4
12274 echo 'tzname[] NOT found.' >&4
12279 : see if umask exists
12283 : see if ustat exists
12287 : backward compatibility for d_hvfork
12288 if test X$d_hvfork != X; then
12289 d_vfork="$d_hvfork"
12292 : see if there is a vfork
12297 : Ok, but do we want to use it. vfork is reportedly unreliable in
12298 : perl on Solaris 2.x, and probably elsewhere.
12302 case "$usevfork" in
12308 Perl can only use a vfork() that doesn't suffer from strict
12309 restrictions on calling functions or modifying global data in
12310 the child. For example, glibc-2.1 contains such a vfork()
12311 that is unsuitable. If your system provides a proper fork()
12312 call, chances are that you do NOT want perl to use vfork().
12315 rp="Do you still want to use vfork()?"
12320 echo "Ok, we won't use vfork()."
12329 $define) usevfork='true';;
12330 *) usevfork='false';;
12333 : see if this is an sysdir system
12334 set sys/dir.h i_sysdir
12337 : see if this is an sysndir system
12338 set sys/ndir.h i_sysndir
12341 : see if closedir exists
12342 set closedir d_closedir
12345 case "$d_closedir" in
12348 echo "Checking whether closedir() returns a status..." >&4
12349 cat > closedir.c <<EOM
12350 #$i_dirent I_DIRENT /**/
12351 #$i_sysdir I_SYS_DIR /**/
12352 #$i_sysndir I_SYS_NDIR /**/
12353 #$i_systypes I_SYS_TYPES /**/
12355 #if defined(I_SYS_TYPES)
12356 #include <sys/types.h>
12358 #if defined(I_DIRENT)
12359 #include <dirent.h>
12360 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12361 #include <sys/dir.h>
12365 #include <sys/ndir.h>
12369 #include <ndir.h> /* may be wrong in the future */
12371 #include <sys/dir.h>
12376 int main() { return closedir(opendir(".")); }
12379 if eval $compile_ok; then
12380 if ./closedir > /dev/null 2>&1 ; then
12381 echo "Yes, it does."
12384 echo "No, it doesn't."
12388 echo "(I can't seem to compile the test program--assuming it doesn't)"
12396 set d_void_closedir
12399 : see if there is a wait4
12403 : see if waitpid exists
12404 set waitpid d_waitpid
12407 : see if wcstombs exists
12408 set wcstombs d_wcstombs
12411 : see if wctomb exists
12412 set wctomb d_wctomb
12415 : preserve RCS keywords in files with variable substitution, grrr
12420 Revision='$Revision'
12422 case "$crosscompile" in
12423 ''|[nN]*) crosscompile="$undef" ;;
12427 next|rhapsody|darwin) multiarch="$define" ;;
12429 case "$multiarch" in
12430 ''|[nN]*) multiarch="$undef" ;;
12433 : check for alignment requirements
12435 case "$crosscompile$multiarch" in
12438 You seem to be either cross-compiling or doing a multiarchitecture build,
12439 skipping the memory alignment check.
12442 case "$alignbytes" in
12443 '') alignbytes=8 ;;
12447 case "$alignbytes" in
12448 '') echo "Checking alignment constraints..." >&4
12449 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12450 $cat >try.c <<'EOCP'
12451 typedef long double NV;
12454 $cat >try.c <<'EOCP'
12458 $cat >>try.c <<'EOCP'
12466 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12471 if eval $compile_ok; then
12475 echo "(I can't seem to compile the test program...)"
12478 *) dflt="$alignbytes"
12481 rp="Doubles must be aligned on a how-many-byte boundary?"
12489 : set the base revision
12492 : check for ordering of bytes in a long
12494 case "$crosscompile$multiarch" in
12497 You seem to be either cross-compiling or doing a multiarchitecture build,
12498 skipping the byteorder check.
12504 case "$byteorder" in
12507 In the following, larger digits indicate more significance. A big-endian
12508 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12509 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12510 machines may have weird orders like 3412. A Cray will report 87654321,
12511 an Alpha will report 12345678. If the test program works the default is
12513 I'm now running the test program...
12515 $cat >try.c <<'EOCP'
12522 char c[sizeof(long)];
12525 if (sizeof(long) > 4)
12526 u.l = (0x08070605L << 32) | 0x04030201L;
12529 for (i = 0; i < sizeof(long); i++)
12530 printf("%c", u.c[i]+'0');
12537 if eval $compile && ./try > /dev/null; then
12540 [1-4][1-4][1-4][1-4]|12345678|87654321)
12541 echo "(The test program ran ok.)"
12542 echo "byteorder=$dflt"
12545 ????|????????) echo "(The test program ran ok.)" ;;
12546 *) echo "(The test program didn't run right for some reason.)" ;;
12551 (I can't seem to compile the test program. Guessing big-endian...)
12554 case "$xxx_prompt" in
12556 rp="What is the order of bytes in a long?"
12570 : how do we catenate cpp tokens here?
12572 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12573 $cat >cpp_stuff.c <<'EOCP'
12574 #define RCAT(a,b)a/**/b
12575 #define ACAT(a,b)a ## b
12579 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12580 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12581 echo "Oh! Smells like ANSI's been here." >&4
12582 echo "We can catify or stringify, separately or together!"
12584 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12585 echo "Ah, yes! The good old days!" >&4
12586 echo "However, in the good old days we don't know how to stringify and"
12587 echo "catify at the same time."
12591 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12592 to have to edit the values of CAT[2-5] in config.h...
12594 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12598 : see if this is a db.h system
12604 : Check db version.
12606 echo "Checking Berkeley DB version ..." >&4
12612 #include <sys/types.h>
12617 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12618 int Major, Minor, Patch ;
12619 unsigned long Version ;
12620 (void)db_version(&Major, &Minor, &Patch) ;
12621 printf("You have Berkeley DB Version 2 or greater\n");
12623 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12624 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12625 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12626 Major, Minor, Patch) ;
12628 /* check that db.h & libdb are compatible */
12629 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12630 printf("db.h and libdb are incompatible\n") ;
12634 printf("db.h and libdb are compatible\n") ;
12636 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12637 + DB_VERSION_PATCH ;
12639 /* needs to be >= 2.3.4 */
12640 if (Version < 2003004) {
12641 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12642 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12648 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12649 printf("You have Berkeley DB Version 1\n");
12650 exit(0); /* DB version < 2: the coast is clear. */
12652 exit(1); /* <db.h> not Berkeley DB? */
12658 if eval $compile_ok && ./try; then
12659 echo 'Looks OK.' >&4
12661 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12665 : Remove db from list of libraries to use
12666 echo "Removing unusable -ldb from library list" >&4
12667 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12670 echo "libs = $libs" >&4
12680 : Check the return type needed for hash
12682 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12688 #include <sys/types.h>
12691 #ifndef DB_VERSION_MAJOR
12692 u_int32_t hash_cb (ptr, size)
12700 info.hash = hash_cb;
12704 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12705 if $contains warning try.out >>/dev/null 2>&1 ; then
12708 db_hashtype='u_int32_t'
12711 : XXX Maybe we should just give up here.
12712 db_hashtype=u_int32_t
12714 echo "Help: I can't seem to compile the db test program." >&4
12715 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12718 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12720 *) db_hashtype=u_int32_t
12725 : Check the return type needed for prefix
12727 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12733 #include <sys/types.h>
12736 #ifndef DB_VERSION_MAJOR
12737 size_t prefix_cb (key1, key2)
12745 info.prefix = prefix_cb;
12749 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12750 if $contains warning try.out >>/dev/null 2>&1 ; then
12751 db_prefixtype='int'
12753 db_prefixtype='size_t'
12756 db_prefixtype='size_t'
12757 : XXX Maybe we should just give up here.
12759 echo "Help: I can't seem to compile the db test program." >&4
12760 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12763 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12765 *) db_prefixtype='size_t'
12769 : check for void type
12771 echo "Checking to see how well your C compiler groks the void type..." >&4
12772 case "$voidflags" in
12774 $cat >try.c <<'EOCP'
12780 extern void moo(); /* function returning void */
12781 void (*goo)(); /* ptr to func returning void */
12783 void *hue; /* generic ptr */
12796 int main() { sub(); }
12798 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12799 voidflags=$defvoidused
12800 echo "Good. It appears to support void to the level $package wants.">&4
12801 if $contains warning .out >/dev/null 2>&1; then
12802 echo "However, you might get some warnings that look like this:"
12806 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12807 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12808 echo "It supports 1..."
12809 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12810 echo "It also supports 2..."
12811 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12813 echo "And it supports 4 but not 8 definitely."
12815 echo "It doesn't support 4..."
12816 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12818 echo "But it supports 8."
12821 echo "Neither does it support 8."
12825 echo "It does not support 2..."
12826 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12828 echo "But it supports 4 and 8."
12830 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12832 echo "And it supports 4 but has not heard about 8."
12834 echo "However it supports 8 but not 4."
12839 echo "There is no support at all for void."
12844 case "$voidflags" in
12846 *) $cat >&4 <<'EOM'
12847 Support flag bits are:
12848 1: basic void declarations.
12849 2: arrays of pointers to functions returning void.
12850 4: operations between pointers to and addresses of void functions.
12851 8: generic void pointers.
12854 rp="Your void support flags add up to what?"
12862 : How can we generate normalized random numbers ?
12864 echo "Looking for a random number function..." >&4
12865 case "$randfunc" in
12867 if set drand48 val -f; eval $csym; $val; then
12869 echo "Good, found drand48()." >&4
12870 elif set random val -f; eval $csym; $val; then
12872 echo "OK, found random()." >&4
12875 echo "Yick, looks like I have to use rand()." >&4
12886 *-Dmy_rand=*|*-Dmy_srand=*)
12887 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12888 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12889 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12890 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12894 while $test "$cont"; do
12895 rp="Use which function to generate random numbers?"
12897 if $test "$ans" = "$dflt"; then
12903 if set $ans val -f; eval $csym; $val; then
12907 rp="I cannot find function $ans. Use that name anyway?"
12916 case "$randfunc" in
12918 drand01="drand48()"
12924 case "$randbits" in
12926 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12928 #$i_unistd I_UNISTD
12929 #$i_stdlib I_STDLIB
12932 # include <unistd.h>
12935 # include <stdlib.h>
12940 register unsigned long tmp;
12941 register unsigned long max = 0L;
12943 for (i = 1000; i; i--) {
12944 tmp = (unsigned long) $randfunc();
12945 if (tmp > max) max = tmp;
12947 for (i = 0; max; i++)
12953 if eval $compile_ok; then
12957 echo "(I can't seem to compile the test program...)"
12964 rp="How many bits does your $randfunc() function produce?"
12968 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12969 seedfunc="s$randfunc"
12970 randseedtype=unsigned
12974 rp="How many bits does your $randfunc() function produce?"
12977 seedfunc="s$randfunc"
12978 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12979 if set $seedfunc val -f; eval $csym; $val; then
12980 echo "(Using $seedfunc() to seed random generator)"
12982 echo "(Warning: no $seedfunc() to seed random generator)"
12985 randseedtype=unsigned
12993 echo "Determining whether or not we are on an EBCDIC system..." >&4
12994 $cat >tebcdic.c <<'EOM'
12997 if ('M'==0xd4) return 0;
13004 if eval $compile_ok; then
13006 echo "You seem to speak EBCDIC." >&4
13009 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13012 echo "I'm unable to compile the test program." >&4
13013 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13015 $rm -f tebcdic.c tebcdic
13021 Checking how to flush all pending stdio output...
13023 # I only know how to find the first 32 possibly open files on SunOS.
13024 # See also hints/sunos_4_1.sh and util.c --AD
13026 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13028 $cat >>try.c <<EOCP
13030 #$i_unistd I_UNISTD
13032 # include <unistd.h>
13034 #$d_sysconf HAS_SYSCONF
13035 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13036 #ifdef HAS_STDIO_STREAM_ARRAY
13037 # define STDIO_STREAM_ARRAY $stdio_stream_array
13040 FILE* p = fopen("try.out", "w");
13044 # ifdef TRY_FPRINTF
13048 #ifdef TRY_FFLUSH_NULL
13051 #ifdef TRY_FFLUSH_ALL
13053 long open_max = -1;
13054 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13055 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13057 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13058 open_max = sysconf(_SC_OPEN_MAX);
13061 open_max = FOPEN_MAX;
13064 open_max = OPEN_MAX;
13073 # ifdef HAS_STDIO_STREAM_ARRAY
13074 if (open_max > 0) {
13076 for (i = 0; i < open_max; i++)
13077 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13078 STDIO_STREAM_ARRAY[i]._file < open_max &&
13079 STDIO_STREAM_ARRAY[i]._flag)
13080 fflush(&STDIO_STREAM_ARRAY[i]);
13088 : first we have to find out how _not_ to flush
13089 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13091 set try -DTRY_FPUTC
13092 if eval $compile; then
13094 ./try$exe_ext 2>/dev/null
13095 if $test ! -s try.out -a "X$?" = X42; then
13101 set try -DTRY_FPRINTF
13103 if eval $compile; then
13105 ./try$exe_ext 2>/dev/null
13106 if $test ! -s try.out -a "X$?" = X42; then
13107 output=-DTRY_FPRINTF
13113 : check for fflush NULL behaviour
13114 case "$fflushNULL" in
13115 '') set try -DTRY_FFLUSH_NULL $output
13116 if eval $compile; then
13118 ./try$exe_ext 2>/dev/null
13120 if $test -s try.out -a "X$code" = X42; then
13121 fflushNULL="`$cat try.out`"
13123 if $test "X$code" != X42; then
13125 (If this test failed, don't worry, we'll try another method shortly.)
13130 $rm -f core try.core core.try.*
13131 case "$fflushNULL" in
13133 Your fflush(NULL) works okay for output streams.
13134 Let's see if it clobbers input pipes...
13136 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13137 # bug that improperly flushes the input end of pipes. So we avoid the
13138 # autoflush on fork/system/exec support for now. :-(
13139 $cat >tryp.c <<EOCP
13142 main(int argc, char **argv)
13148 while ((i = getc(stdin)) != -1
13149 && (*bp++ = i) != '\n'
13150 && bp < &buf[1024])
13153 fprintf(stdout, "%s", buf);
13161 fflushNULL="$define"
13163 if eval $compile; then
13165 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13166 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13168 fflush(NULL) seems to behave okay with input streams.
13170 fflushNULL="$define"
13173 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13175 fflushNULL="$undef"
13178 $rm -f core tryp.c tryp.core core.tryp.*
13181 Your fflush(NULL) isn't working (contrary to ANSI C).
13183 fflushNULL="$undef"
13186 Cannot figure out whether your fflush(NULL) works or not.
13187 I'm assuming it doesn't (contrary to ANSI C).
13189 fflushNULL="$undef"
13193 $define|true|[yY]*)
13194 fflushNULL="$define"
13197 fflushNULL="$undef"
13200 : check explicit looping only if NULL did not work, and if the pipe
13201 : bug does not show up on an explicit flush too
13202 case "$fflushNULL" in
13204 $cat >tryp.c <<EOCP
13207 main(int argc, char **argv)
13213 while ((i = getc(stdin)) != -1
13214 && (*bp++ = i) != '\n'
13215 && bp < &buf[1024])
13218 fprintf(stdout, "%s", buf);
13227 if eval $compile; then
13229 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13230 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13232 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13234 : now check for fflushall behaviour
13235 case "$fflushall" in
13236 '') set try -DTRY_FFLUSH_ALL $output
13237 if eval $compile; then
13239 (Now testing the other method--but note that this also may fail.)
13242 ./try$exe_ext 2>/dev/null
13243 if $test -s try.out -a "X$?" = X42; then
13244 fflushall="`$cat try.out`"
13247 $rm -f core try.core core.try.*
13248 case "$fflushall" in
13250 Whew. Flushing explicitly all the stdio streams works.
13252 fflushall="$define"
13255 Sigh. Flushing explicitly all the stdio streams doesn't work.
13260 Cannot figure out whether flushing stdio streams explicitly works or not.
13261 I'm assuming it doesn't.
13267 "$define"|true|[yY]*)
13268 fflushall="$define"
13276 All is futile. Even fflush(stdin) clobbers input pipes!
13283 $rm -f core tryp.c tryp.core core.tryp.*
13285 *) fflushall="$undef"
13289 case "$fflushNULL$fflushall" in
13292 OK, I give up. I cannot figure out how to flush pending stdio output.
13293 We won't be flushing handles at all before fork/exec/popen.
13297 $rm -f try.* try$exe_ext
13299 : Store the full pathname to the ar program for use in the C program
13300 : Respect a hint or command line value for full_ar.
13305 : Store the full pathname to the sed program for use in the C program
13308 : see what type gids are declared as in the kernel
13310 echo "Looking for the type for group ids returned by getgid()."
13311 set gid_t gidtype xxx stdio.h sys/types.h
13315 xxx=`./findhdr sys/user.h`
13316 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13318 unsigned) dflt="$1 $2" ;;
13322 *) dflt="$gidtype";;
13325 gid_t) echo "gid_t found." ;;
13326 *) rp="What is the type for group ids returned by getgid()?"
13334 *_t) zzz="$gidtype" ;;
13337 echo "Checking the size of $zzz..." >&4
13339 #include <sys/types.h>
13342 printf("%d\n", (int)sizeof($gidtype));
13347 if eval $compile_ok; then
13351 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13354 echo "Your $zzz is $gidsize bytes long."
13359 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13365 *_t) zzz="$gidtype" ;;
13368 echo "Checking the sign of $zzz..." >&4
13370 #include <sys/types.h>
13381 if eval $compile; then
13385 echo "(I can't execute the test program--guessing unsigned.)" >&4
13389 1) echo "Your $zzz is unsigned." ;;
13390 -1) echo "Your $zzz is signed." ;;
13396 echo "(I can't compile the test program--guessing unsigned.)" >&4
13402 if $test X"$quadtype" != X; then
13404 echo "Checking how to print 64-bit integers..." >&4
13406 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13407 $cat >try.c <<'EOCP'
13408 #include <sys/types.h>
13411 int q = 12345678901;
13412 printf("%ld\n", q);
13416 if eval $compile; then
13417 yyy=`./try$exe_ext`
13420 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13421 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13422 echo "We will use %d."
13428 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13429 $cat >try.c <<'EOCP'
13430 #include <sys/types.h>
13433 long q = 12345678901;
13434 printf("%ld\n", q);
13438 if eval $compile; then
13439 yyy=`./try$exe_ext`
13442 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13443 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13444 echo "We will use %ld."
13450 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13451 $cat >try.c <<'EOCP'
13452 #include <sys/types.h>
13453 #include <inttypes.h>
13456 int64_t q = 12345678901;
13457 printf("%" PRId64 "\n", q);
13461 if eval $compile; then
13462 yyy=`./try$exe_ext`
13465 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13466 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13467 echo "We will use the C9X style."
13473 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13474 $cat >try.c <<'EOCP'
13475 #include <sys/types.h>
13478 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13479 printf("%lld\n", q);
13483 if eval $compile; then
13484 yyy=`./try$exe_ext`
13487 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13488 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13489 echo "We will use the %lld style."
13495 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13497 #include <sys/types.h>
13500 $quadtype q = 12345678901;
13501 printf("%Ld\n", q);
13505 if eval $compile; then
13506 yyy=`./try$exe_ext`
13509 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13510 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13511 echo "We will use %Ld."
13517 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13519 #include <sys/types.h>
13522 $quadtype q = 12345678901;
13523 printf("%qd\n", q);
13527 if eval $compile; then
13528 yyy=`./try$exe_ext`
13531 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13532 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13533 echo "We will use %qd."
13539 if $test X"$sPRId64" = X; then
13540 echo "Cannot figure out how to print 64-bit integers." >&4
13548 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13549 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13551 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13552 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13558 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13560 if $test X"$ivsize" = X8; then
13561 ivdformat="$sPRId64"
13562 uvuformat="$sPRIu64"
13563 uvoformat="$sPRIo64"
13564 uvxformat="$sPRIx64"
13565 uvXUformat="$sPRIXU64"
13567 if $test X"$ivsize" = X"$longsize"; then
13574 if $test X"$ivsize" = X"$intsize"; then
13582 if $test X"$ivsize" = X"$shortsize"; then
13593 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13594 nveformat="$sPRIeldbl"
13595 nvfformat="$sPRIfldbl"
13596 nvgformat="$sPRIgldbl"
13597 nvEUformat="$sPRIEUldbl"
13598 nvFUformat="$sPRIFUldbl"
13599 nvGUformat="$sPRIGUldbl"
13609 case "$ivdformat" in
13610 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13617 $echo "Checking the format string to be used for gids..." >&4
13620 -1) if $test X"$gidsize" = X"$ivsize"; then
13621 gidformat="$ivdformat"
13623 if $test X"$gidsize" = X"$longsize"; then
13626 if $test X"$gidsize" = X"$intsize"; then
13629 if $test X"$gidsize" = X"$shortsize"; then
13636 *) if $test X"$gidsize" = X"$uvsize"; then
13637 gidformat="$uvuformat"
13639 if $test X"$gidsize" = X"$longsize"; then
13642 if $test X"$gidsize" = X"$intsize"; then
13645 if $test X"$gidsize" = X"$shortsize"; then
13654 : see if getgroups exists
13655 set getgroups d_getgrps
13658 : see if setgroups exists
13659 set setgroups d_setgrps
13663 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13665 case "$d_getgrps$d_setgrps" in
13667 case "$groupstype" in
13668 '') dflt="$gidtype" ;;
13669 *) dflt="$groupstype" ;;
13672 What type of pointer is the second argument to getgroups() and setgroups()?
13673 Usually this is the same as group ids, $gidtype, but not always.
13676 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13680 *) groupstype="$gidtype";;
13684 echo "Checking if your $make program sets \$(MAKE)..." >&4
13685 case "$make_set_make" in
13687 $sed 's/^X //' > testmake.mak << 'EOF'
13689 X @echo 'maketemp="$(MAKE)"'
13691 case "`$make -f testmake.mak 2>/dev/null`" in
13692 *maketemp=*) make_set_make='#' ;;
13693 *) make_set_make="MAKE=$make" ;;
13695 $rm -f testmake.mak
13698 case "$make_set_make" in
13699 '#') echo "Yup, it does.";;
13700 *) echo "Nope, it doesn't.";;
13703 : see what type is used for mode_t
13704 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13705 set mode_t modetype int stdio.h sys/types.h
13708 : see if stdarg is available
13710 if $test `./findhdr stdarg.h`; then
13711 echo "<stdarg.h> found." >&4
13714 echo "<stdarg.h> NOT found." >&4
13718 : see if varags is available
13720 if $test `./findhdr varargs.h`; then
13721 echo "<varargs.h> found." >&4
13723 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13726 : set up the varargs testing programs
13727 $cat > varargs.c <<EOP
13729 #include <stdarg.h>
13732 #include <varargs.h>
13736 int f(char *p, ...)
13750 p = va_arg(ap, char *);
13755 $cat > varargs <<EOP
13757 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13766 : now check which varargs header should be included
13771 if `./varargs I_STDARG`; then
13773 elif `./varargs I_VARARGS`; then
13778 if `./varargs I_VARARGS`; then
13785 echo "I could not find the definition for va_dcl... You have problems..." >&4
13786 val="$undef"; set i_stdarg; eval $setvar
13787 val="$undef"; set i_varargs; eval $setvar
13792 case "$i_varhdr" in
13794 val="$define"; set i_stdarg; eval $setvar
13795 val="$undef"; set i_varargs; eval $setvar
13798 val="$undef"; set i_stdarg; eval $setvar
13799 val="$define"; set i_varargs; eval $setvar
13802 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13806 : see if we need va_copy
13808 case "$i_stdarg" in
13811 #include <stdarg.h>
13813 #$i_stdlib I_STDLIB
13815 #include <stdlib.h>
13817 #include <signal.h>
13820 ivfprintf(FILE *f, const char *fmt, va_list *valp)
13822 return vfprintf(f, fmt, *valp);
13826 myvfprintf(FILE *f, const char *fmt, va_list val)
13828 return ivfprintf(f, fmt, &val);
13832 myprintf(char *fmt, ...)
13835 va_start(val, fmt);
13836 return myvfprintf(stdout, fmt, val);
13840 main(int ac, char **av)
13842 signal(SIGSEGV, exit);
13844 myprintf("%s%cs all right, then\n", "that", '\'');
13849 if eval $compile && ./try 2>&1 >/dev/null; then
13851 "that's all right, then")
13857 yes) echo "It seems that you don't need va_copy()." >&4
13858 need_va_copy="$undef"
13860 *) echo "It seems that va_copy() or similar will be needed." >&4
13861 need_va_copy="$define"
13864 $rm -f try.* core core.* *.core *.core.*
13866 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13870 : define a fucntion to check prototypes
13871 $cat > protochk <<EOSH
13874 optimize="$optimize"
13876 prototype="$prototype"
13881 $cat >> protochk <<'EOSH'
13886 while test $# -ge 2; do
13888 $define) echo "#include <$2>" >> try.c ;;
13889 literal) echo "$2" >> try.c ;;
13893 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13894 cat >> try.c <<'EOCP'
13895 #ifdef CAN_PROTOTYPE
13896 #define _(args) args
13901 echo "$foo" >> try.c
13902 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13903 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13909 $eunicefix protochk
13911 : see what type is used for size_t
13912 rp="What is the type used for the length parameter for string functions?"
13913 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13916 : check for type of arguments to gethostbyaddr.
13917 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13918 case "$d_gethbyaddr" in
13922 Checking to see what type of arguments are accepted by gethostbyaddr().
13924 hdrs="$define sys/types.h
13925 $d_socket sys/socket.h
13926 $i_niin netinet/in.h
13928 $i_unistd unistd.h"
13929 : The first arg can 'char *' or 'void *'
13930 : The second arg is some of integral type
13931 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13932 for yyy in size_t long int; do
13933 case "$netdb_host_type" in
13934 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13935 if ./protochk "$try" $hdrs; then
13936 echo "Your system accepts $xxx for the first arg."
13937 echo "...and $yyy for the second arg."
13938 netdb_host_type="$xxx"
13939 netdb_hlen_type="$yyy"
13945 : In case none of those worked, prompt the user.
13946 case "$netdb_host_type" in
13947 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13950 netdb_host_type=$ans
13951 rp='What is the type for the 2nd argument to gethostbyaddr?'
13954 netdb_hlen_type=$ans
13958 *) : no gethostbyaddr, so pick harmless defaults
13959 netdb_host_type='char *'
13960 netdb_hlen_type="$sizetype"
13963 # Remove the "const" if needed. -- but then we'll have a
13965 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13968 : check for type of argument to gethostbyname.
13969 if test "X$netdb_name_type" = X ; then
13970 case "$d_gethbyname" in
13974 Checking to see what type of argument is accepted by gethostbyname().
13976 hdrs="$define sys/types.h
13977 $d_socket sys/socket.h
13978 $i_niin netinet/in.h
13980 $i_unistd unistd.h"
13981 for xxx in "const char *" "char *"; do
13982 case "$netdb_name_type" in
13983 '') try="extern struct hostent *gethostbyname($xxx);"
13984 if ./protochk "$try" $hdrs; then
13985 echo "Your system accepts $xxx."
13986 netdb_name_type="$xxx"
13991 : In case none of those worked, prompt the user.
13992 case "$netdb_name_type" in
13993 '') rp='What is the type for the 1st argument to gethostbyname?'
13996 netdb_name_type=$ans
14000 *) : no gethostbyname, so pick harmless default
14001 netdb_name_type='char *'
14006 : check for type of 1st argument to getnetbyaddr.
14007 if test "X$netdb_net_type" = X ; then
14008 case "$d_getnbyaddr" in
14012 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14014 hdrs="$define sys/types.h
14015 $d_socket sys/socket.h
14016 $i_niin netinet/in.h
14018 $i_unistd unistd.h"
14019 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14020 case "$netdb_net_type" in
14021 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14022 if ./protochk "$try" $hdrs; then
14023 echo "Your system accepts $xxx."
14024 netdb_net_type="$xxx"
14029 : In case none of those worked, prompt the user.
14030 case "$netdb_net_type" in
14031 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14034 netdb_net_type=$ans
14038 *) : no getnetbyaddr, so pick harmless default
14039 netdb_net_type='long'
14043 : locate the preferred pager for this system
14049 [a-zA-Z]:/*) dflt=$pg;;
14053 [a-zA-Z]:/*) dflt=$more;;
14057 [a-zA-Z]:/*) dflt=$less;;
14060 '') dflt=/usr/ucb/more;;
14067 rp='What pager is used on your system?'
14071 : see what type pids are declared as in the kernel
14072 rp="What is the type of process ids on this system?"
14073 set pid_t pidtype int stdio.h sys/types.h
14076 : Find earliest binary compatible site_perl subdirectory perl can use.
14077 case "$bincompat5005" in
14078 "$define") xs_apiversion='5.005' ;;
14079 *) xs_apiversion=$version ;; # The current site_perl version.
14081 : Find earliest pure perl site_perl subdirectory perl can use.
14082 : The versioned directories started at 5.005.
14083 pm_apiversion='5.005'
14085 : check for length of pointer
14089 echo "Checking to see how big your pointers are..." >&4
14090 if test "$voidflags" -gt 7; then
14091 echo '#define VOID_PTR char *' > try.c
14093 echo '#define VOID_PTR void *' > try.c
14095 $cat >>try.c <<'EOCP'
14099 printf("%d\n", (int)sizeof(VOID_PTR));
14104 if eval $compile_ok; then
14106 echo "Your pointers are $ptrsize bytes long."
14109 echo "(I can't seem to compile the test program. Guessing...)" >&4
14110 rp="What is the size of a pointer (in bytes)?"
14118 : see if ar generates random libraries by itself
14120 echo "Checking how to generate random libraries on your machine..." >&4
14121 echo 'int bar1() { return bar2(); }' > bar1.c
14122 echo 'int bar2() { return 2; }' > bar2.c
14123 $cat > foo.c <<'EOP'
14124 int main() { printf("%d\n", bar1()); exit(0); }
14126 $cc $ccflags -c bar1.c >/dev/null 2>&1
14127 $cc $ccflags -c bar2.c >/dev/null 2>&1
14128 $cc $ccflags -c foo.c >/dev/null 2>&1
14129 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14130 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14131 ./foobar >/dev/null 2>&1; then
14132 echo "$ar appears to generate random libraries itself."
14135 elif $ar ts bar$_a >/dev/null 2>&1 &&
14136 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14137 ./foobar >/dev/null 2>&1; then
14138 echo "a table of contents needs to be added with '$ar ts'."
14145 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14146 $test -f $ranlib || ranlib=''
14149 if $test -n "$ranlib"; then
14150 echo "your system has '$ranlib'; we'll use that."
14153 echo "your system doesn't seem to support random libraries"
14154 echo "so we'll use lorder and tsort to order the libraries."
14161 : check for type of arguments to select.
14162 case "$selecttype" in
14163 '') case "$d_select" in
14167 Checking to see what type of arguments are accepted by select().
14169 hdrs="$define sys/types.h
14170 $i_systime sys/time.h
14171 $i_sysselct sys/select.h
14172 $d_socket sys/socket.h"
14173 : The first arg can be int, unsigned, or size_t
14174 : The last arg may or may not be 'const'
14176 : void pointer has been seen but using that
14177 : breaks the selectminbits test
14178 for xxx in 'fd_set *' 'int *'; do
14179 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14180 for tmo in 'struct timeval *' 'const struct timeval *'; do
14182 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14183 if ./protochk "$try" $hdrs; then
14184 echo "Your system accepts $xxx."
14193 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14194 case "$d_fd_set" in
14195 $define) dflt="fd_set *" ;;
14204 *) : no select, so pick a harmless default
14211 : check for the select 'width'
14212 case "$selectminbits" in
14213 '') case "$d_select" in
14217 Checking to see on how many bits at a time your select() operates...
14220 #include <sys/types.h>
14222 #$i_systime I_SYS_TIME
14223 #$i_systimek I_SYS_TIME_KERNEL
14228 # ifdef I_SYS_TIME_KERNEL
14231 # include <sys/time.h>
14232 # ifdef I_SYS_TIME_KERNEL
14236 #$i_sysselct I_SYS_SELECT
14237 #ifdef I_SYS_SELECT
14238 #include <sys/select.h>
14240 #$d_socket HAS_SOCKET
14242 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14246 #define S sizeof(*(b))
14248 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14249 #define NBITS (NBYTES * 8)
14258 fp = fopen("try.c", "r");
14264 b = ($selecttype)s;
14265 for (i = 0; i < NBITS; i++)
14269 select(fd + 1, b, 0, 0, &t);
14270 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14271 printf("%d\n", i + 1);
14276 if eval $compile_ok; then
14277 selectminbits=`./try`
14278 case "$selectminbits" in
14280 Cannot figure out on how many bits at a time your select() operates.
14281 I'll play safe and guess it is 32 bits.
14287 *) bits="$selectminbits bits" ;;
14289 echo "Your select() operates on $bits at a time." >&4
14291 rp='What is the minimum number of bits your select() operates on?'
14292 case "$byteorder" in
14293 1234|12345678) dflt=32 ;;
14298 selectminbits="$val"
14302 *) : no select, so pick a harmless default
14309 : Trace out the files included by signal.h, then look for SIGxxx names.
14310 : Remove SIGARRAYSIZE used by HPUX.
14311 : Remove SIGSTKSIZE used by Linux.
14312 : Remove SIGSTKSZ used by Posix.
14313 : Remove SIGTYP void lines used by OS2.
14314 : Some cpps, like os390, dont give the file name anywhere
14315 if [ "X$fieldn" = X ]; then
14316 : Just make some guesses. We check them later.
14317 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14319 xxx=`echo '#include <signal.h>' |
14320 $cppstdin $cppminus $cppflags 2>/dev/null |
14321 $grep '^[ ]*#.*include' |
14322 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14324 : Check this list of files to be sure we have parsed the cpp output ok.
14325 : This will also avoid potentially non-existent files, such
14328 for xx in $xxx /dev/null ; do
14329 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14331 : If we have found no files, at least try signal.h
14332 case "$xxxfiles" in
14333 '') xxxfiles=`./findhdr signal.h` ;;
14336 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14337 print substr($2, 4, 20)
14339 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14340 print substr($3, 4, 20)
14342 : Append some common names just in case the awk scan failed.
14343 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14344 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14345 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14346 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14347 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14349 : generate a few handy files for later
14350 $cat > signal.c <<'EOCP'
14351 #include <sys/types.h>
14352 #include <signal.h>
14356 /* Strange style to avoid deeply-nested #if/#else/#endif */
14359 # define NSIG (_NSIG)
14365 # define NSIG (SIGMAX+1)
14371 # define NSIG (SIG_MAX+1)
14377 # define NSIG (MAXSIG+1)
14383 # define NSIG (MAX_SIG+1)
14388 # ifdef SIGARRAYSIZE
14389 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14395 # define NSIG (_sys_nsig) /* Solaris 2.5 */
14399 /* Default to some arbitrary number that's big enough to get most
14400 of the common signals.
14406 printf("NSIG %d\n", NSIG);
14412 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14414 printf "#ifdef SIG"; printf $1; printf "\n"
14415 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14416 printf $1; printf ");\n"
14420 printf "#endif /* JUST_NSIG */\n";
14421 printf "exit(0);\n}\n";
14424 $cat >signal.awk <<'EOP'
14425 BEGIN { ndups = 0 }
14426 $1 ~ /^NSIG$/ { nsig = $2 }
14427 ($1 !~ /^NSIG$/) && (NF == 2) {
14428 if ($2 > maxsig) { maxsig = $2 }
14429 if (sig_name[$2]) {
14430 dup_name[ndups] = $1
14431 dup_num[ndups] = $2
14443 printf("NSIG %d\n", nsig);
14444 for (n = 1; n < nsig; n++) {
14446 printf("%s %d\n", sig_name[n], sig_num[n])
14449 printf("NUM%d %d\n", n, n)
14452 for (n = 0; n < ndups; n++) {
14453 printf("%s %d\n", dup_name[n], dup_num[n])
14457 $cat >signal_cmd <<EOS
14459 if $test -s signal.lst; then
14460 echo "Using your existing signal.lst file"
14465 $cat >>signal_cmd <<'EOS'
14468 if eval $compile_ok; then
14469 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14471 echo "(I can't seem be able to compile the whole test program)" >&4
14472 echo "(I'll try it in little pieces.)" >&4
14473 set signal -DJUST_NSIG
14474 if eval $compile_ok; then
14475 ./signal$_exe > signal.nsg
14478 echo "I can't seem to figure out how many signals you have." >&4
14479 echo "Guessing 50." >&4
14480 echo 'NSIG 50' > signal.nsg
14482 : Now look at all the signal names, one at a time.
14483 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14484 $cat > signal.c <<EOCP
14485 #include <sys/types.h>
14486 #include <signal.h>
14489 printf("$xx %d\n", SIG${xx});
14494 if eval $compile; then
14495 echo "SIG${xx} found."
14496 ./signal$_exe >> signal.ls1
14498 echo "SIG${xx} NOT found."
14501 if $test -s signal.ls1; then
14502 $cat signal.nsg signal.ls1 |
14503 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14507 if $test -s signal.lst; then
14510 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14511 echo 'kill -l' >signal
14512 set X `csh -f <signal`
14516 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14518 echo $@ | $tr ' ' $trnl | \
14519 $awk '{ printf "%s %d\n", $1, ++s; }
14520 END { printf "NSIG %d\n", ++s }' >signal.lst
14522 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14524 chmod a+x signal_cmd
14525 $eunicefix signal_cmd
14527 : generate list of signal names
14529 case "$sig_name_init" in
14531 *) case "$sig_num_init" in
14532 ''|*,*) doinit=yes ;;
14537 echo "Generating a list of signal names and numbers..." >&4
14539 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14540 sig_name=`$awk 'BEGIN { printf "ZERO " }
14541 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14542 sig_num=`$awk 'BEGIN { printf "0 " }
14543 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14544 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14545 !/^NSIG/ { printf "\"%s\", ", $1 }
14546 END { printf "0\n" }' signal.lst`
14547 sig_num_init=`$awk 'BEGIN { printf "0, " }
14548 !/^NSIG/ { printf "%d, ", $2}
14549 END { printf "0\n"}' signal.lst`
14552 echo "The following $sig_count signals are available:"
14554 echo $sig_name | $awk \
14555 'BEGIN { linelen = 0 }
14557 for (i = 1; i <= NF; i++) {
14558 name = "SIG" $i " "
14559 linelen = linelen + length(name)
14560 if (linelen > 70) {
14562 linelen = length(name)
14568 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14571 case "$sizetype" in
14572 *_t) zzz="$sizetype" ;;
14573 *) zzz="filesize" ;;
14575 echo "Checking the size of $zzz..." >&4
14577 #include <sys/types.h>
14580 printf("%d\n", (int)sizeof($sizetype));
14585 if eval $compile_ok; then
14589 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14592 echo "Your $zzz size is $sizesize bytes."
14597 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14601 : check for socklen_t
14603 echo "Checking to see if you have socklen_t..." >&4
14605 #include <sys/types.h>
14606 #$d_socket HAS_SOCKET
14608 #include <sys/socket.h>
14610 int main() { socklen_t x = 16; }
14613 if eval $compile; then
14615 echo "You have socklen_t."
14618 echo "You do not have socklen_t."
14619 case "$sizetype" in
14620 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14627 : see if this is a socks.h system
14628 set socks.h i_socks
14631 : check for type of the size argument to socket calls
14632 case "$d_socket" in
14636 Checking to see what type is the last argument of accept().
14639 case "$d_socklen_t" in
14640 "$define") yyy="$yyy socklen_t"
14642 yyy="$yyy $sizetype int long unsigned"
14643 for xxx in $yyy; do
14644 case "$socksizetype" in
14645 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14646 case "$usesocks" in
14648 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14649 echo "Your system accepts '$xxx *' for the last argument of accept()."
14650 socksizetype="$xxx"
14653 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
14654 echo "Your system accepts '$xxx *' for the last argument of accept()."
14655 socksizetype="$xxx"
14662 : In case none of those worked, prompt the user.
14663 case "$socksizetype" in
14664 '') rp='What is the type for socket address structure sizes?'
14671 *) : no sockets, so pick relatively harmless default
14676 : see what type is used for signed size_t
14677 set ssize_t ssizetype int stdio.h sys/types.h
14680 $cat > ssize.c <<EOM
14682 #include <sys/types.h>
14683 #define Size_t $sizetype
14684 #define SSize_t $dflt
14687 if (sizeof(Size_t) == sizeof(SSize_t))
14689 else if (sizeof(Size_t) == sizeof(int))
14698 if eval $compile_ok && ./ssize > /dev/null; then
14699 ssizetype=`./ssize`
14700 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14703 Help! I can't compile and run the ssize_t test program: please enlighten me!
14704 (This is probably a misconfiguration in your system or libraries, and
14705 you really ought to fix it. Still, I'll try anyway.)
14707 I need a type that is the same size as $sizetype, but is guaranteed to
14708 be signed. Common values are ssize_t, int and long.
14711 rp="What signed type is the same size as $sizetype?"
14715 $rm -f ssize ssize.*
14717 : see what type of char stdio uses.
14719 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14720 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
14721 echo "Your stdio uses unsigned chars." >&4
14722 stdchar="unsigned char"
14724 echo "Your stdio uses signed chars." >&4
14731 : see if time exists
14733 if test "X$d_time" = X -o X"$timetype" = X; then
14734 if set time val -f d_time; eval $csym; $val; then
14735 echo 'time() found.' >&4
14737 rp="What is the type returned by time() on this system?"
14738 set time_t timetype long stdio.h sys/types.h
14741 echo 'time() not found, hope that will do.' >&4
14749 : see what type uids are declared as in the kernel
14751 echo "Looking for the type for user ids returned by getuid()."
14752 set uid_t uidtype xxx stdio.h sys/types.h
14756 xxx=`./findhdr sys/user.h`
14757 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14759 unsigned) dflt="$1 $2" ;;
14763 *) dflt="$uidtype";;
14766 uid_t) echo "uid_t found." ;;
14767 *) rp="What is the type for user ids returned by getuid()?"
14775 *_t) zzz="$uidtype" ;;
14778 echo "Checking the size of $zzz..." >&4
14780 #include <sys/types.h>
14783 printf("%d\n", (int)sizeof($uidtype));
14788 if eval $compile_ok; then
14792 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14795 echo "Your $zzz is $uidsize bytes long."
14800 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14805 *_t) zzz="$uidtype" ;;
14808 echo "Checking the sign of $zzz..." >&4
14810 #include <sys/types.h>
14821 if eval $compile; then
14825 echo "(I can't execute the test program--guessing unsigned.)" >&4
14829 1) echo "Your $zzz is unsigned." ;;
14830 -1) echo "Your $zzz is signed." ;;
14836 echo "(I can't compile the test program--guessing unsigned.)" >&4
14842 $echo "Checking the format string to be used for uids..." >&4
14845 -1) if $test X"$uidsize" = X"$ivsize"; then
14846 uidformat="$ivdformat"
14848 if $test X"$uidsize" = X"$longsize"; then
14851 if $test X"$uidsize" = X"$intsize"; then
14854 if $test X"$uidsize" = X"$shortsize"; then
14861 *) if $test X"$uidsize" = X"$uvsize"; then
14862 uidformat="$uvuformat"
14864 if $test X"$uidsize" = X"$longsize"; then
14867 if $test X"$uidsize" = X"$intsize"; then
14870 if $test X"$uidsize" = X"$shortsize"; then
14879 : see if dbm.h is available
14880 : see if dbmclose exists
14881 set dbmclose d_dbmclose
14884 case "$d_dbmclose" in
14894 *) set rpcsvc/dbm.h i_rpcsvcdbm
14899 *) echo "We won't be including <dbm.h>"
14909 : see if this is a sys/file.h system
14914 : do we need to include sys/file.h ?
14918 if $h_sysfile; then
14920 echo "We'll be including <sys/file.h>." >&4
14923 echo "We won't be including <sys/file.h>." >&4
14933 : see if fcntl.h is there
14938 : see if we can include fcntl.h
14944 echo "We'll be including <fcntl.h>." >&4
14947 if $h_sysfile; then
14948 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14950 echo "We won't be including <fcntl.h>." >&4
14962 : see if this is a iconv.h system
14963 set iconv.h i_iconv
14966 : see if this is a ieeefp.h system
14967 set ieeefp.h i_ieeefp
14970 : see if this is a libutil.h system
14971 set libutil.h i_libutil
14974 : see if locale.h is available
14975 set locale.h i_locale
14978 : see if mach cthreads are available
14979 if test "X$usethreads" = "X$define"; then
14980 set mach/cthreads.h i_machcthr
14983 i_machcthr="$undef"
14988 : see if this is a math.h system
14992 : see if this is a mntent.h system
14993 set mntent.h i_mntent
14996 : see if ndbm.h is available
15001 : see if dbm_open exists
15002 set dbm_open d_dbm_open
15004 case "$d_dbm_open" in
15007 echo "We won't be including <ndbm.h>"
15016 : see if net/errno.h is available
15018 set net/errno.h val
15021 : Unfortunately, it causes problems on some systems. Arrgh.
15024 cat > try.c <<'EOM'
15027 #include <net/errno.h>
15033 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15034 echo "We'll be including <net/errno.h>." >&4
15036 echo "We won't be including <net/errno.h>." >&4
15045 : see if netinet/tcp.h is available
15046 set netinet/tcp.h i_netinettcp
15049 : see if this is a poll.h system
15053 : see if this is a prot.h system
15058 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15059 $cat <<'EOSH' > Cppsym.know
15060 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15061 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15062 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
15063 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
15064 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15065 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15066 bull c cadmus clipper CMU COFF COMPILER_VERSION
15067 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15068 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15069 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15070 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15071 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15072 H3050R H3050RX hbullx20 hcx host_mips
15073 hp200 hp300 hp700 HP700 hp800 hp9000
15074 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15075 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15076 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15077 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15078 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15079 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15080 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15081 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15082 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15083 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15084 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15085 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15086 MATH_HAS_NO_SIDE_EFFECTS
15087 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15088 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15089 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15090 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15091 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15092 NetBSD news1500 news1700 news1800 news1900 news3700
15093 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15094 ns32016 ns32332 ns32k nsc32000
15095 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15096 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15097 pc532 pdp11 PGC PIC plexus PORTAR posix
15098 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15099 POSIX_C_SOURCE POSIX_SOURCE POWER
15100 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15101 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
15102 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15103 sony sony_news sonyrisc sparc sparclite spectrum
15104 stardent stdc STDC_EXT stratos sun sun3 sun386
15105 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15106 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15107 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15108 sysV68 sysV88 Tek4132 Tek4300 titan
15109 tower tower32 tower32_200 tower32_600 tower32_700
15110 tower32_800 tower32_850 tss
15111 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15112 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15113 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15114 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15115 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15116 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15119 # Maybe put other stuff here too.
15120 cat <<EOSH >>Cppsym.know
15123 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15124 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15125 $cat Cppsym.know > Cppsym.c
15126 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15127 $rm -f Cppsym.a Cppsym.b Cppsym.c
15128 cat <<EOSH > Cppsym
15130 if $test \$# -gt 0; then
15131 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15132 if $test -s Cppsym.got; then
15139 $tr " " "$trnl" | ./Cppsym.try
15145 cat <<EOSH > Cppsym.try
15147 cat <<'EOCP' > try.c
15153 cat <<'EOSH' >> Cppsym.try
15155 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
15156 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
15157 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
15158 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
15162 cat <<EOSH >> Cppsym.try
15164 case "$osname-$gccversion" in
15165 irix-) ccflags="\$ccflags -woff 1178" ;;
15166 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15168 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15170 chmod +x Cppsym.try
15171 $eunicefix Cppsym.try
15172 ./Cppsym < Cppsym.know > Cppsym.true
15173 : now check the C compiler for additional symbols
15174 postprocess_cc_v=''
15176 aix) postprocess_cc_v="|$tr , ' '" ;;
15183 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15186 -D*) echo "\$i" | $sed 's/^-D//';;
15187 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15192 postprocess_cc_v=''
15195 ./ccsym > ccsym1.raw
15196 if $test -s ccsym1.raw; then
15197 $sort ccsym1.raw | $uniq >ccsym.raw
15199 mv ccsym1.raw ccsym.raw
15202 $awk '/\=/ { print $0; next }
15203 { print $0"=1" }' ccsym.raw >ccsym.list
15204 $awk '/\=/ { print $0; next }
15205 { print $0"=1" }' Cppsym.true >ccsym.true
15206 $comm -13 ccsym.true ccsym.list >ccsym.own
15207 $comm -12 ccsym.true ccsym.list >ccsym.com
15208 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15210 if $test -z ccsym.raw; then
15211 echo "Your C compiler doesn't seem to define any symbols!" >&4
15213 echo "However, your C preprocessor defines the following symbols:"
15216 cppsymbols=`$cat Cppsym.true`
15217 cppsymbols=`echo $cppsymbols`
15218 cppccsymbols="$cppsymbols"
15220 if $test -s ccsym.com; then
15221 echo "Your C compiler and pre-processor define these symbols:"
15222 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15225 cppccsymbols=`$cat ccsym.com`
15226 cppccsymbols=`echo $cppccsymbols`
15227 $test "$silent" || sleep 1
15229 if $test -s ccsym.cpp; then
15230 $test "$also" && echo " "
15231 echo "Your C pre-processor ${also}defines the following symbols:"
15232 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15234 cppsymbols=`$cat ccsym.cpp`
15235 cppsymbols=`echo $cppsymbols`
15236 $test "$silent" || sleep 1
15238 if $test -s ccsym.own; then
15239 $test "$also" && echo " "
15240 echo "Your C compiler ${also}defines the following cpp symbols:"
15241 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15242 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15243 ccsymbols=`$cat ccsym.own`
15244 ccsymbols=`echo $ccsymbols`
15245 $test "$silent" || sleep 1
15248 $rm -f ccsym* Cppsym.*
15250 : see if this is a termio system
15254 if $test `./findhdr termios.h`; then
15255 set tcsetattr i_termios
15261 "$define") echo "You have POSIX termios.h... good!" >&4;;
15262 *) if ./Cppsym pyr; then
15263 case "`/bin/universe`" in
15264 ucb) if $test `./findhdr sgtty.h`; then
15266 echo "<sgtty.h> found." >&4
15268 echo "System is pyramid with BSD universe."
15269 echo "<sgtty.h> not found--you could have problems." >&4
15271 *) if $test `./findhdr termio.h`; then
15273 echo "<termio.h> found." >&4
15275 echo "System is pyramid with USG universe."
15276 echo "<termio.h> not found--you could have problems." >&4
15280 if $test `./findhdr termio.h`; then
15281 echo "<termio.h> found." >&4
15283 elif $test `./findhdr sgtty.h`; then
15284 echo "<sgtty.h> found." >&4
15287 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15290 if $test `./findhdr sgtty.h`; then
15291 echo "<sgtty.h> found." >&4
15293 elif $test `./findhdr termio.h`; then
15294 echo "<termio.h> found." >&4
15297 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15301 set i_termio; eval $setvar
15302 val=$val2; set i_sgtty; eval $setvar
15303 val=$val3; set i_termios; eval $setvar
15305 : see if this is a shadow.h system
15306 set shadow.h i_shadow
15309 : see if stddef is available
15310 set stddef.h i_stddef
15313 : see if this is a sunmath.h system
15314 set sunmath.h i_sunmath
15317 : see if sys/access.h is available
15318 set sys/access.h i_sysaccess
15321 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15322 set sys/filio.h i_sysfilio
15325 if $test `./findhdr sys/ioctl.h`; then
15327 echo '<sys/ioctl.h> found.' >&4
15330 if $test $i_sysfilio = "$define"; then
15331 echo '<sys/ioctl.h> NOT found.' >&4
15333 $test $i_sgtty = "$define" && xxx="sgtty.h"
15334 $test $i_termio = "$define" && xxx="termio.h"
15335 $test $i_termios = "$define" && xxx="termios.h"
15336 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15343 : see if this is a syslog.h system
15344 set syslog.h i_syslog
15348 : see if this is a sys/mode.h system
15349 set sys/mode.h i_sysmode
15352 : see if sys/resource.h has to be included
15353 set sys/resource.h i_sysresrc
15356 : see if sys/security.h is available
15357 set sys/security.h i_syssecrt
15360 : see if this is a sys/statvfs.h system
15361 set sys/statvfs.h i_sysstatvfs
15364 : see if this is a sys/uio.h system
15365 set sys/uio.h i_sysuio
15368 : see if this is a sys/un.h system
15369 set sys/un.h i_sysun
15373 : see if this is a sys/utsname.h system
15374 set sys/utsname.h i_sysutsname
15377 : see if this is a syswait system
15378 set sys/wait.h i_syswait
15381 : see if this is a ustat.h system
15382 set ustat.h i_ustat
15385 : see if this is an utime system
15386 set utime.h i_utime
15389 : see if this is a values.h system
15390 set values.h i_values
15393 : see if this is a vfork system
15396 set vfork.h i_vfork
15404 : see if gdbm.h is available
15409 : see if gdbm_open exists
15410 set gdbm_open d_gdbm_open
15412 case "$d_gdbm_open" in
15415 echo "We won't be including <gdbm.h>"
15425 echo "Looking for extensions..." >&4
15426 : If we are using the old config.sh, known_extensions may contain
15427 : old or inaccurate or duplicate values.
15428 known_extensions=''
15429 nonxs_extensions=''
15430 : We do not use find because it might not be available.
15431 : We do not just use MANIFEST because the user may have dropped
15432 : some additional extensions into the source tree and expect them
15435 : Function to recursively find available extensions, ignoring DynaLoader
15436 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15440 DynaLoader|dynaload) ;;
15442 if $test -f $xxx/$xxx.xs; then
15443 known_extensions="$known_extensions $1$xxx";
15444 elif $test -f $xxx/Makefile.PL; then
15445 nonxs_extensions="$nonxs_extensions $1$xxx";
15447 if $test -d $xxx -a $# -lt 10; then
15450 eval $find_extensions;
15462 eval $find_extensions
15463 set X $nonxs_extensions
15465 nonxs_extensions="$*"
15466 set X $known_extensions
15468 known_extensions="$*"
15471 : Now see which are supported on this system.
15473 for xxx in $known_extensions ; do
15477 $define) avail_ext="$avail_ext $xxx" ;;
15480 GDBM_File|gdbm_fil)
15482 $define) avail_ext="$avail_ext $xxx" ;;
15485 NDBM_File|ndbm_fil)
15488 case "$osname-$use64bitint" in
15491 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15494 *) avail_ext="$avail_ext $xxx" ;;
15499 ODBM_File|odbm_fil)
15500 case "${i_dbm}${i_rpcsvcdbm}" in
15502 case "$osname-$use64bitint" in
15505 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15508 *) avail_ext="$avail_ext $xxx" ;;
15514 case "$useposix" in
15515 true|define|y) avail_ext="$avail_ext $xxx" ;;
15519 case "$useopcode" in
15520 true|define|y) avail_ext="$avail_ext $xxx" ;;
15524 case "$d_socket" in
15525 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15528 Sys/Syslog|sys/syslog)
15529 : XXX syslog requires socket
15530 case "$d_socket" in
15531 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15535 case "$usethreads" in
15536 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15540 : XXX Do we need a useipcsysv variable here
15541 case "${d_msg}${d_sem}${d_shm}" in
15542 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15545 *) avail_ext="$avail_ext $xxx"
15554 : Now see which nonxs extensions are supported on this system.
15555 : For now assume all are.
15557 for xxx in $nonxs_extensions ; do
15559 *) nonxs_ext="$nonxs_ext $xxx"
15571 A number of extensions are supplied with $package. You may choose to
15572 compile these extensions for dynamic loading (the default), compile
15573 them into the $package executable (static loading), or not include
15574 them at all. Answer "none" to include no extensions.
15575 Note that DynaLoader is always built and need not be mentioned here.
15578 case "$dynamic_ext" in
15579 '') dflt="$avail_ext" ;;
15580 *) dflt="$dynamic_ext"
15581 # Perhaps we are reusing an old out-of-date config.sh.
15584 if test X"$dynamic_ext" != X"$avail_ext"; then
15586 NOTICE: Your previous config.sh list may be incorrect.
15587 The extensions now available to you are
15589 but the default list from your previous config.sh is
15601 rp="What extensions do you wish to load dynamically?"
15604 none) dynamic_ext=' ' ;;
15605 *) dynamic_ext="$ans" ;;
15608 case "$static_ext" in
15610 : Exclude those already listed in dynamic linking
15612 for xxx in $avail_ext; do
15613 case " $dynamic_ext " in
15615 *) dflt="$dflt $xxx" ;;
15622 *) dflt="$static_ext"
15629 rp="What extensions do you wish to load statically?"
15632 none) static_ext=' ' ;;
15633 *) static_ext="$ans" ;;
15638 A number of extensions are supplied with $package. Answer "none"
15639 to include no extensions.
15640 Note that DynaLoader is always built and need not be mentioned here.
15643 case "$static_ext" in
15644 '') dflt="$avail_ext" ;;
15645 *) dflt="$static_ext"
15646 # Perhaps we are reusing an old out-of-date config.sh.
15649 if test X"$static_ext" != X"$avail_ext"; then
15651 NOTICE: Your previous config.sh list may be incorrect.
15652 The extensions now available to you are
15654 but the default list from your previous config.sh is
15663 : Exclude those that are not xs extensions
15667 rp="What extensions do you wish to include?"
15670 none) static_ext=' ' ;;
15671 *) static_ext="$ans" ;;
15676 set X $dynamic_ext $static_ext $nonxs_ext
15680 : Remove libraries needed only for extensions
15681 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15682 : The exception is SunOS 4.x, which needs them.
15683 case "${osname}X${osvers}" in
15687 *) case "$usedl" in
15688 $define|true|[yY]*)
15689 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15693 *) perllibs="$libs"
15699 : Remove build directory name from cppstdin so it can be used from
15700 : either the present location or the final installed location.
15702 : Get out of the UU directory to get correct path name.
15704 case "$cppstdin" in
15706 echo "Stripping down cppstdin path name"
15712 : end of configuration questions
15714 echo "End of configuration questions."
15717 : back to where it started
15718 if test -d ../UU; then
15722 : configuration may be patched via a 'config.over' file
15723 if $test -f config.over; then
15726 rp='I see a config.over file. Do you wish to load it?'
15729 n*) echo "OK, I'll ignore it.";;
15731 echo "Configuration override changes have been loaded."
15736 : in case they want portability, strip down executable paths
15737 case "$d_portable" in
15740 echo "Stripping down executable paths..." >&4
15741 for file in $loclist $trylist; do
15743 eval $file=`basename $temp`
15748 : create config.sh file
15750 echo "Creating config.sh..." >&4
15751 $spitshell <<EOT >config.sh
15754 # This file was produced by running the Configure script. It holds all the
15755 # definitions figured out by Configure. Should you modify one of these values,
15756 # do not forget to propagate your changes by running "Configure -der". You may
15757 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15760 # Package name : $package
15761 # Source directory : $src
15762 # Configuration time: $cf_time
15763 # Configured by : $cf_by
15764 # Target system : $myuname
15774 Revision='$Revision'
15781 alignbytes='$alignbytes'
15782 ansi2knr='$ansi2knr'
15783 aphostname='$aphostname'
15784 api_revision='$api_revision'
15785 api_subversion='$api_subversion'
15786 api_version='$api_version'
15787 api_versionstring='$api_versionstring'
15790 archlibexp='$archlibexp'
15791 archname64='$archname64'
15792 archname='$archname'
15793 archobjs='$archobjs'
15798 bincompat5005='$bincompat5005'
15802 byteorder='$byteorder'
15804 castflags='$castflags'
15807 cccdlflags='$cccdlflags'
15808 ccdlflags='$ccdlflags'
15810 ccflags_uselargefiles='$ccflags_uselargefiles'
15812 ccsymbols='$ccsymbols'
15813 ccversion='$ccversion'
15815 cf_email='$cf_email'
15817 charsize='$charsize'
15821 clocktype='$clocktype'
15823 compress='$compress'
15824 contains='$contains'
15828 cpp_stuff='$cpp_stuff'
15829 cppccsymbols='$cppccsymbols'
15830 cppflags='$cppflags'
15832 cppminus='$cppminus'
15834 cppstdin='$cppstdin'
15835 cppsymbols='$cppsymbols'
15836 crosscompile='$crosscompile'
15837 cryptlib='$cryptlib'
15839 d_Gconvert='$d_Gconvert'
15840 d_PRIEUldbl='$d_PRIEUldbl'
15841 d_PRIFUldbl='$d_PRIFUldbl'
15842 d_PRIGUldbl='$d_PRIGUldbl'
15843 d_PRIXU64='$d_PRIXU64'
15844 d_PRId64='$d_PRId64'
15845 d_PRIeldbl='$d_PRIeldbl'
15846 d_PRIfldbl='$d_PRIfldbl'
15847 d_PRIgldbl='$d_PRIgldbl'
15848 d_PRIi64='$d_PRIi64'
15849 d_PRIo64='$d_PRIo64'
15850 d_PRIu64='$d_PRIu64'
15851 d_PRIx64='$d_PRIx64'
15852 d_SCNfldbl='$d_SCNfldbl'
15853 d__fwalk='$d__fwalk'
15854 d_access='$d_access'
15855 d_accessx='$d_accessx'
15857 d_archlib='$d_archlib'
15860 d_attribut='$d_attribut'
15863 d_bincompat5005='$d_bincompat5005'
15865 d_bsdgetpgrp='$d_bsdgetpgrp'
15866 d_bsdsetpgrp='$d_bsdsetpgrp'
15868 d_casti32='$d_casti32'
15869 d_castneg='$d_castneg'
15870 d_charvspr='$d_charvspr'
15872 d_chroot='$d_chroot'
15873 d_chsize='$d_chsize'
15874 d_closedir='$d_closedir'
15878 d_cuserid='$d_cuserid'
15879 d_dbl_dig='$d_dbl_dig'
15880 d_difftime='$d_difftime'
15881 d_dirnamlen='$d_dirnamlen'
15882 d_dlerror='$d_dlerror'
15883 d_dlopen='$d_dlopen'
15884 d_dlsymun='$d_dlsymun'
15885 d_dosuid='$d_dosuid'
15886 d_drand48proto='$d_drand48proto'
15888 d_eaccess='$d_eaccess'
15889 d_endgrent='$d_endgrent'
15890 d_endhent='$d_endhent'
15891 d_endnent='$d_endnent'
15892 d_endpent='$d_endpent'
15893 d_endpwent='$d_endpwent'
15894 d_endsent='$d_endsent'
15895 d_eofnblk='$d_eofnblk'
15896 d_eunice='$d_eunice'
15897 d_fchmod='$d_fchmod'
15898 d_fchown='$d_fchown'
15900 d_fcntl_can_lock='$d_fcntl_can_lock'
15901 d_fd_macros='$d_fd_macros'
15902 d_fd_set='$d_fd_set'
15903 d_fds_bits='$d_fds_bits'
15904 d_fgetpos='$d_fgetpos'
15905 d_flexfnam='$d_flexfnam'
15908 d_fpathconf='$d_fpathconf'
15909 d_fpos64_t='$d_fpos64_t'
15910 d_frexpl='$d_frexpl'
15911 d_fs_data_s='$d_fs_data_s'
15912 d_fseeko='$d_fseeko'
15913 d_fsetpos='$d_fsetpos'
15914 d_fstatfs='$d_fstatfs'
15915 d_fstatvfs='$d_fstatvfs'
15917 d_ftello='$d_ftello'
15919 d_getcwd='$d_getcwd'
15920 d_getespwnam='$d_getespwnam'
15921 d_getfsstat='$d_getfsstat'
15922 d_getgrent='$d_getgrent'
15923 d_getgrps='$d_getgrps'
15924 d_gethbyaddr='$d_gethbyaddr'
15925 d_gethbyname='$d_gethbyname'
15926 d_gethent='$d_gethent'
15927 d_gethname='$d_gethname'
15928 d_gethostprotos='$d_gethostprotos'
15929 d_getlogin='$d_getlogin'
15930 d_getmnt='$d_getmnt'
15931 d_getmntent='$d_getmntent'
15932 d_getnbyaddr='$d_getnbyaddr'
15933 d_getnbyname='$d_getnbyname'
15934 d_getnent='$d_getnent'
15935 d_getnetprotos='$d_getnetprotos'
15936 d_getpagsz='$d_getpagsz'
15937 d_getpbyname='$d_getpbyname'
15938 d_getpbynumber='$d_getpbynumber'
15939 d_getpent='$d_getpent'
15940 d_getpgid='$d_getpgid'
15941 d_getpgrp2='$d_getpgrp2'
15942 d_getpgrp='$d_getpgrp'
15943 d_getppid='$d_getppid'
15944 d_getprior='$d_getprior'
15945 d_getprotoprotos='$d_getprotoprotos'
15946 d_getprpwnam='$d_getprpwnam'
15947 d_getpwent='$d_getpwent'
15948 d_getsbyname='$d_getsbyname'
15949 d_getsbyport='$d_getsbyport'
15950 d_getsent='$d_getsent'
15951 d_getservprotos='$d_getservprotos'
15952 d_getspnam='$d_getspnam'
15953 d_gettimeod='$d_gettimeod'
15954 d_gnulibc='$d_gnulibc'
15955 d_grpasswd='$d_grpasswd'
15956 d_hasmntopt='$d_hasmntopt'
15960 d_inetaton='$d_inetaton'
15961 d_int64_t='$d_int64_t'
15962 d_isascii='$d_isascii'
15964 d_isnanl='$d_isnanl'
15965 d_killpg='$d_killpg'
15966 d_lchown='$d_lchown'
15967 d_ldbl_dig='$d_ldbl_dig'
15969 d_locconv='$d_locconv'
15971 d_longdbl='$d_longdbl'
15972 d_longlong='$d_longlong'
15973 d_lseekproto='$d_lseekproto'
15975 d_madvise='$d_madvise'
15977 d_mbstowcs='$d_mbstowcs'
15978 d_mbtowc='$d_mbtowc'
15979 d_memchr='$d_memchr'
15980 d_memcmp='$d_memcmp'
15981 d_memcpy='$d_memcpy'
15982 d_memmove='$d_memmove'
15983 d_memset='$d_memset'
15985 d_mkdtemp='$d_mkdtemp'
15986 d_mkfifo='$d_mkfifo'
15987 d_mkstemp='$d_mkstemp'
15988 d_mkstemps='$d_mkstemps'
15989 d_mktime='$d_mktime'
15992 d_mprotect='$d_mprotect'
15994 d_msg_ctrunc='$d_msg_ctrunc'
15995 d_msg_dontroute='$d_msg_dontroute'
15996 d_msg_oob='$d_msg_oob'
15997 d_msg_peek='$d_msg_peek'
15998 d_msg_proxy='$d_msg_proxy'
15999 d_msgctl='$d_msgctl'
16000 d_msgget='$d_msgget'
16001 d_msgrcv='$d_msgrcv'
16002 d_msgsnd='$d_msgsnd'
16004 d_munmap='$d_munmap'
16005 d_mymalloc='$d_mymalloc'
16007 d_nv_preserves_uv='$d_nv_preserves_uv'
16008 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16009 d_off64_t='$d_off64_t'
16010 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16011 d_oldpthreads='$d_oldpthreads'
16012 d_oldsock='$d_oldsock'
16014 d_pathconf='$d_pathconf'
16016 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16017 d_phostname='$d_phostname'
16020 d_portable='$d_portable'
16021 d_pthread_yield='$d_pthread_yield'
16023 d_pwchange='$d_pwchange'
16024 d_pwclass='$d_pwclass'
16025 d_pwcomment='$d_pwcomment'
16026 d_pwexpire='$d_pwexpire'
16027 d_pwgecos='$d_pwgecos'
16028 d_pwpasswd='$d_pwpasswd'
16029 d_pwquota='$d_pwquota'
16032 d_readdir='$d_readdir'
16033 d_readlink='$d_readlink'
16034 d_rename='$d_rename'
16035 d_rewinddir='$d_rewinddir'
16037 d_safebcpy='$d_safebcpy'
16038 d_safemcpy='$d_safemcpy'
16039 d_sanemcmp='$d_sanemcmp'
16040 d_sbrkproto='$d_sbrkproto'
16041 d_sched_yield='$d_sched_yield'
16042 d_scm_rights='$d_scm_rights'
16043 d_seekdir='$d_seekdir'
16044 d_select='$d_select'
16046 d_semctl='$d_semctl'
16047 d_semctl_semid_ds='$d_semctl_semid_ds'
16048 d_semctl_semun='$d_semctl_semun'
16049 d_semget='$d_semget'
16051 d_setegid='$d_setegid'
16052 d_seteuid='$d_seteuid'
16053 d_setgrent='$d_setgrent'
16054 d_setgrps='$d_setgrps'
16055 d_sethent='$d_sethent'
16056 d_setlinebuf='$d_setlinebuf'
16057 d_setlocale='$d_setlocale'
16058 d_setnent='$d_setnent'
16059 d_setpent='$d_setpent'
16060 d_setpgid='$d_setpgid'
16061 d_setpgrp2='$d_setpgrp2'
16062 d_setpgrp='$d_setpgrp'
16063 d_setprior='$d_setprior'
16064 d_setproctitle='$d_setproctitle'
16065 d_setpwent='$d_setpwent'
16066 d_setregid='$d_setregid'
16067 d_setresgid='$d_setresgid'
16068 d_setresuid='$d_setresuid'
16069 d_setreuid='$d_setreuid'
16070 d_setrgid='$d_setrgid'
16071 d_setruid='$d_setruid'
16072 d_setsent='$d_setsent'
16073 d_setsid='$d_setsid'
16074 d_setvbuf='$d_setvbuf'
16078 d_shmatprototype='$d_shmatprototype'
16079 d_shmctl='$d_shmctl'
16081 d_shmget='$d_shmget'
16082 d_sigaction='$d_sigaction'
16083 d_sigsetjmp='$d_sigsetjmp'
16084 d_socket='$d_socket'
16085 d_socklen_t='$d_socklen_t'
16086 d_sockpair='$d_sockpair'
16087 d_socks5_init='$d_socks5_init'
16089 d_statblks='$d_statblks'
16090 d_statfs_f_flags='$d_statfs_f_flags'
16091 d_statfs_s='$d_statfs_s'
16092 d_statvfs='$d_statvfs'
16093 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16094 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16095 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16096 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16097 d_stdio_stream_array='$d_stdio_stream_array'
16098 d_stdiobase='$d_stdiobase'
16099 d_stdstdio='$d_stdstdio'
16100 d_strchr='$d_strchr'
16101 d_strcoll='$d_strcoll'
16102 d_strctcpy='$d_strctcpy'
16103 d_strerrm='$d_strerrm'
16104 d_strerror='$d_strerror'
16105 d_strtod='$d_strtod'
16106 d_strtol='$d_strtol'
16107 d_strtold='$d_strtold'
16108 d_strtoll='$d_strtoll'
16109 d_strtoq='$d_strtoq'
16110 d_strtoul='$d_strtoul'
16111 d_strtoull='$d_strtoull'
16112 d_strtouq='$d_strtouq'
16113 d_strxfrm='$d_strxfrm'
16114 d_suidsafe='$d_suidsafe'
16115 d_symlink='$d_symlink'
16116 d_syscall='$d_syscall'
16117 d_sysconf='$d_sysconf'
16118 d_sysernlst='$d_sysernlst'
16119 d_syserrlst='$d_syserrlst'
16120 d_system='$d_system'
16121 d_tcgetpgrp='$d_tcgetpgrp'
16122 d_tcsetpgrp='$d_tcsetpgrp'
16123 d_telldir='$d_telldir'
16124 d_telldirproto='$d_telldirproto'
16127 d_truncate='$d_truncate'
16128 d_tzname='$d_tzname'
16131 d_union_semun='$d_union_semun'
16133 d_vendorarch='$d_vendorarch'
16134 d_vendorbin='$d_vendorbin'
16135 d_vendorlib='$d_vendorlib'
16137 d_void_closedir='$d_void_closedir'
16138 d_voidsig='$d_voidsig'
16139 d_voidtty='$d_voidtty'
16140 d_volatile='$d_volatile'
16141 d_vprintf='$d_vprintf'
16143 d_waitpid='$d_waitpid'
16144 d_wcstombs='$d_wcstombs'
16145 d_wctomb='$d_wctomb'
16148 db_hashtype='$db_hashtype'
16149 db_prefixtype='$db_prefixtype'
16150 defvoidused='$defvoidused'
16151 direntrytype='$direntrytype'
16154 doublesize='$doublesize'
16156 dynamic_ext='$dynamic_ext'
16162 eunicefix='$eunicefix'
16165 extensions='$extensions'
16166 fflushNULL='$fflushNULL'
16167 fflushall='$fflushall'
16169 firstmakefile='$firstmakefile'
16171 fpossize='$fpossize'
16172 fpostype='$fpostype'
16173 freetype='$freetype'
16175 full_csh='$full_csh'
16176 full_sed='$full_sed'
16177 gccosandvers='$gccosandvers'
16178 gccversion='$gccversion'
16179 gidformat='$gidformat'
16185 groupcat='$groupcat'
16186 groupstype='$groupstype'
16189 h_sysfile='$h_sysfile'
16200 i_arpainet='$i_arpainet'
16201 i_bsdioctl='$i_bsdioctl'
16204 i_dirent='$i_dirent'
16212 i_ieeefp='$i_ieeefp'
16213 i_inttypes='$i_inttypes'
16214 i_libutil='$i_libutil'
16215 i_limits='$i_limits'
16216 i_locale='$i_locale'
16217 i_machcthr='$i_machcthr'
16218 i_malloc='$i_malloc'
16220 i_memory='$i_memory'
16221 i_mntent='$i_mntent'
16224 i_neterrno='$i_neterrno'
16225 i_netinettcp='$i_netinettcp'
16229 i_pthread='$i_pthread'
16231 i_rpcsvcdbm='$i_rpcsvcdbm'
16234 i_shadow='$i_shadow'
16236 i_stdarg='$i_stdarg'
16237 i_stddef='$i_stddef'
16238 i_stdlib='$i_stdlib'
16239 i_string='$i_string'
16240 i_sunmath='$i_sunmath'
16241 i_sysaccess='$i_sysaccess'
16242 i_sysdir='$i_sysdir'
16243 i_sysfile='$i_sysfile'
16244 i_sysfilio='$i_sysfilio'
16246 i_sysioctl='$i_sysioctl'
16247 i_syslog='$i_syslog'
16248 i_sysmman='$i_sysmman'
16249 i_sysmode='$i_sysmode'
16250 i_sysmount='$i_sysmount'
16251 i_sysndir='$i_sysndir'
16252 i_sysparam='$i_sysparam'
16253 i_sysresrc='$i_sysresrc'
16254 i_syssecrt='$i_syssecrt'
16255 i_sysselct='$i_sysselct'
16256 i_syssockio='$i_syssockio'
16257 i_sysstat='$i_sysstat'
16258 i_sysstatfs='$i_sysstatfs'
16259 i_sysstatvfs='$i_sysstatvfs'
16260 i_systime='$i_systime'
16261 i_systimek='$i_systimek'
16262 i_systimes='$i_systimes'
16263 i_systypes='$i_systypes'
16264 i_sysuio='$i_sysuio'
16266 i_sysutsname='$i_sysutsname'
16267 i_sysvfs='$i_sysvfs'
16268 i_syswait='$i_syswait'
16269 i_termio='$i_termio'
16270 i_termios='$i_termios'
16272 i_unistd='$i_unistd'
16275 i_values='$i_values'
16276 i_varargs='$i_varargs'
16277 i_varhdr='$i_varhdr'
16279 ignore_versioned_solibs='$ignore_versioned_solibs'
16280 inc_version_list='$inc_version_list'
16281 inc_version_list_init='$inc_version_list_init'
16284 installarchlib='$installarchlib'
16285 installbin='$installbin'
16286 installman1dir='$installman1dir'
16287 installman3dir='$installman3dir'
16288 installprefix='$installprefix'
16289 installprefixexp='$installprefixexp'
16290 installprivlib='$installprivlib'
16291 installscript='$installscript'
16292 installsitearch='$installsitearch'
16293 installsitebin='$installsitebin'
16294 installsitelib='$installsitelib'
16295 installstyle='$installstyle'
16296 installusrbinperl='$installusrbinperl'
16297 installvendorarch='$installvendorarch'
16298 installvendorbin='$installvendorbin'
16299 installvendorlib='$installvendorlib'
16301 issymlink='$issymlink'
16302 ivdformat='$ivdformat'
16305 known_extensions='$known_extensions'
16308 lddlflags='$lddlflags'
16310 ldflags_uselargefiles='$ldflags_uselargefiles'
16311 ldlibpthname='$ldlibpthname'
16318 libsdirs='$libsdirs'
16319 libsfiles='$libsfiles'
16320 libsfound='$libsfound'
16321 libspath='$libspath'
16322 libswanted='$libswanted'
16323 libswanted_uselargefiles='$libswanted_uselargefiles'
16329 locincpth='$locincpth'
16330 loclibpth='$loclibpth'
16331 longdblsize='$longdblsize'
16332 longlongsize='$longlongsize'
16333 longsize='$longsize'
16337 lseeksize='$lseeksize'
16338 lseektype='$lseektype'
16342 make_set_make='$make_set_make'
16343 mallocobj='$mallocobj'
16344 mallocsrc='$mallocsrc'
16345 malloctype='$malloctype'
16347 man1direxp='$man1direxp'
16350 man3direxp='$man3direxp'
16352 mips_type='$mips_type'
16354 mmaptype='$mmaptype'
16355 modetype='$modetype'
16357 multiarch='$multiarch'
16359 myarchname='$myarchname'
16360 mydomain='$mydomain'
16361 myhostname='$myhostname'
16364 need_va_copy='$need_va_copy'
16365 netdb_hlen_type='$netdb_hlen_type'
16366 netdb_host_type='$netdb_host_type'
16367 netdb_name_type='$netdb_name_type'
16368 netdb_net_type='$netdb_net_type'
16371 nm_so_opt='$nm_so_opt'
16372 nonxs_ext='$nonxs_ext'
16374 nvEUformat='$nvEUformat'
16375 nvFUformat='$nvFUformat'
16376 nvGUformat='$nvGUformat'
16377 nveformat='$nveformat'
16378 nvfformat='$nvfformat'
16379 nvgformat='$nvgformat'
16382 o_nonblock='$o_nonblock'
16384 old_pthread_create_joinable='$old_pthread_create_joinable'
16385 optimize='$optimize'
16386 orderlib='$orderlib'
16389 otherlibdirs='$otherlibdirs'
16393 patchlevel='$patchlevel'
16394 path_sep='$path_sep'
16397 perladmin='$perladmin'
16398 perllibs='$perllibs'
16399 perlpath='$perlpath'
16401 phostname='$phostname'
16404 pm_apiversion='$pm_apiversion'
16408 prefixexp='$prefixexp'
16410 privlibexp='$privlibexp'
16411 prototype='$prototype'
16413 quadkind='$quadkind'
16414 quadtype='$quadtype'
16415 randbits='$randbits'
16416 randfunc='$randfunc'
16417 randseedtype='$randseedtype'
16419 rd_nodata='$rd_nodata'
16420 revision='$revision'
16424 sPRIEUldbl='$sPRIEUldbl'
16425 sPRIFUldbl='$sPRIFUldbl'
16426 sPRIGUldbl='$sPRIGUldbl'
16427 sPRIXU64='$sPRIXU64'
16429 sPRIeldbl='$sPRIeldbl'
16430 sPRIfldbl='$sPRIfldbl'
16431 sPRIgldbl='$sPRIgldbl'
16436 sSCNfldbl='$sSCNfldbl'
16437 sched_yield='$sched_yield'
16438 scriptdir='$scriptdir'
16439 scriptdirexp='$scriptdirexp'
16441 seedfunc='$seedfunc'
16442 selectminbits='$selectminbits'
16443 selecttype='$selecttype'
16444 sendmail='$sendmail'
16447 sharpbang='$sharpbang'
16448 shmattype='$shmattype'
16449 shortsize='$shortsize'
16452 sig_count='$sig_count'
16453 sig_name='$sig_name'
16454 sig_name_init='$sig_name_init'
16456 sig_num_init='$sig_num_init'
16457 signal_t='$signal_t'
16458 sitearch='$sitearch'
16459 sitearchexp='$sitearchexp'
16461 sitebinexp='$sitebinexp'
16463 sitelib_stem='$sitelib_stem'
16464 sitelibexp='$sitelibexp'
16465 siteprefix='$siteprefix'
16466 siteprefixexp='$siteprefixexp'
16467 sizesize='$sizesize'
16468 sizetype='$sizetype'
16472 sockethdr='$sockethdr'
16473 socketlib='$socketlib'
16474 socksizetype='$socksizetype'
16476 spackage='$spackage'
16477 spitshell='$spitshell'
16479 ssizetype='$ssizetype'
16480 startperl='$startperl'
16482 static_ext='$static_ext'
16484 stdio_base='$stdio_base'
16485 stdio_bufsiz='$stdio_bufsiz'
16486 stdio_cnt='$stdio_cnt'
16487 stdio_filbuf='$stdio_filbuf'
16488 stdio_ptr='$stdio_ptr'
16489 stdio_stream_array='$stdio_stream_array'
16492 subversion='$subversion'
16499 timeincl='$timeincl'
16500 timetype='$timetype'
16513 uidformat='$uidformat'
16519 uquadtype='$uquadtype'
16520 use5005threads='$use5005threads'
16521 use64bitall='$use64bitall'
16522 use64bitint='$use64bitint'
16524 useithreads='$useithreads'
16525 uselargefiles='$uselargefiles'
16526 uselongdouble='$uselongdouble'
16527 usemorebits='$usemorebits'
16528 usemultiplicity='$usemultiplicity'
16529 usemymalloc='$usemymalloc'
16531 useopcode='$useopcode'
16532 useperlio='$useperlio'
16533 useposix='$useposix'
16535 useshrplib='$useshrplib'
16536 usesocks='$usesocks'
16537 usethreads='$usethreads'
16538 usevendorprefix='$usevendorprefix'
16539 usevfork='$usevfork'
16542 uvXUformat='$uvXUformat'
16543 uvoformat='$uvoformat'
16546 uvuformat='$uvuformat'
16547 uvxformat='$uvxformat'
16548 vendorarch='$vendorarch'
16549 vendorarchexp='$vendorarchexp'
16550 vendorbin='$vendorbin'
16551 vendorbinexp='$vendorbinexp'
16552 vendorlib='$vendorlib'
16553 vendorlib_stem='$vendorlib_stem'
16554 vendorlibexp='$vendorlibexp'
16555 vendorprefix='$vendorprefix'
16556 vendorprefixexp='$vendorprefixexp'
16558 versiononly='$versiononly'
16560 voidflags='$voidflags'
16562 xs_apiversion='$xs_apiversion'
16567 : Add in command line options if available
16568 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16570 : add special variables
16571 $test -f $src/patchlevel.h && \
16572 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16573 echo "CONFIGDOTSH=true" >>config.sh
16575 : propagate old symbols
16576 if $test -f UU/config.sh; then
16577 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16578 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16579 $sort | $uniq -u >UU/oldsyms
16580 set X `cat UU/oldsyms`
16586 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16588 echo "# Variables propagated from previous config.sh file." >>config.sh
16589 for sym in `cat UU/oldsyms`; do
16590 echo " Propagating $hint variable "'$'"$sym..."
16591 eval 'tmp="$'"${sym}"'"'
16593 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16599 : Finish up by extracting the .SH files
16613 If you'd like to make any changes to the config.sh file before I begin
16614 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16617 rp="Press return or use a shell escape to edit config.sh:"
16622 *) : in case they cannot read
16623 sh 1>&4 -c "$ans";;
16628 : if this fails, just run all the .SH files by hand
16635 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16642 Now you need to generate make dependencies by running "$make depend".
16643 You might prefer to run it in background: "$make depend > makedepend.out &"
16644 It can take a while, so you might not want to run it right now.
16649 rp="Run $make depend now?"
16653 $make depend && echo "Now you must run '$make'."
16656 echo "You must run '$make depend' then '$make'."
16659 elif test -f [Mm]akefile; then
16661 echo "Now you must run a $make."
16666 if $test -f Policy.sh; then
16669 If you compile $package on a different machine or from a different object
16670 directory, copy the Policy.sh file from this object directory to the
16671 new one before you run Configure -- this will help you with most of
16672 the policy defaults.
16676 if $test -f config.msg; then
16677 echo "Hmm. I also noted the following information while running:"
16679 $cat config.msg >&4
16682 $rm -f kit*isdone ark*isdone