3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Wed May 16 17:18:11 EET DST 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
468 d_old_pthread_create_joinable=''
469 old_pthread_create_joinable=''
553 d_stdio_ptr_lval_nochange_cnt=''
554 d_stdio_ptr_lval_sets_cnt=''
731 inc_version_list_init=''
750 ignore_versioned_solibs=''
809 d_perl_otherlibdirs=''
826 d_nv_preserves_uv_bits=''
925 d_stdio_stream_array=''
926 stdio_stream_array=''
936 ccflags_uselargefiles=''
937 ldflags_uselargefiles=''
938 libswanted_uselargefiles=''
983 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
986 : We must find out about Eunice early
988 if test -f /etc/unixtovms; then
989 eunicefix=/etc/unixtovms
991 if test -f /etc/unixtovms.exe; then
992 eunicefix=/etc/unixtovms.exe
999 : set useposix=false in your hint file to disable the POSIX extension.
1001 : set useopcode=false in your hint file to disable the Opcode extension.
1003 : Trailing extension. Override this in a hint file, if needed.
1005 : Extra object files, if any, needed on this platform.
1008 : Possible local include directories to search.
1009 : Set locincpth to "" in a hint file to defeat local include searches.
1010 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1011 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1013 : no include file wanted by default
1017 : change the next line if compiling for Xenix/286 on Xenix/386
1018 xlibpth='/usr/lib/386 /lib/386'
1019 : Possible local library directories to search.
1020 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1021 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1023 : general looking path for locating libraries
1024 glibpth="/lib /usr/lib $xlibpth"
1025 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1026 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1027 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1029 : Private path used by Configure to find libraries. Its value
1030 : is prepended to libpth. This variable takes care of special
1031 : machines, like the mips. Usually, it should be empty.
1034 : default library list
1036 : some systems want to use only the non-versioned libso:s
1037 ignore_versioned_solibs=''
1039 ccflags_uselargefiles=''
1040 ldflags_uselargefiles=''
1041 libswanted_uselargefiles=''
1042 : set usemultiplicity on the Configure command line to enable multiplicity.
1043 : set usesocks on the Configure command line to enable socks.
1044 : set usethreads on the Configure command line to enable threads.
1045 : full support for void wanted by default
1048 : List of libraries we want.
1049 : If anyone needs -lnet, put it in a hint file.
1050 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1051 libswanted="$libswanted dld ld sun m c cposix posix"
1052 libswanted="$libswanted ndir dir crypt sec"
1053 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1054 : We probably want to search /usr/shlib before most other libraries.
1055 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1056 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1057 glibpth="/usr/shlib $glibpth"
1058 : Do not use vfork unless overridden by a hint file.
1061 : Find the basic shell for Bourne shell scripts
1065 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1068 if test -f "$xxx"; then
1071 : Build up a list and do a single loop so we can 'break' out.
1072 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1073 for xxx in sh bash ksh pdksh ash; do
1075 try="$try ${p}/${xxx}"
1079 if test -f "$xxx"; then
1082 elif test -f "$xxx.exe"; then
1093 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1095 Usually it's in /bin/sh. How did you even get this far?
1096 Please contact me (Perl Maintainers) at perlbug@perl.org and
1097 we'll try to straighten this all out.
1103 : see if sh knows # comments
1104 if `$sh -c '#' >/dev/null 2>&1`; then
1108 test -f $xcat || xcat=/usr/bin/cat
1113 if test -s today; then
1116 echo "#! $xcat" > try
1120 if test -s today; then
1128 echo "Your $sh doesn't grok # comments--I will strip them later on."
1131 echo "exec grep -v '^[ ]*#'" >spitshell
1133 $eunicefix spitshell
1134 spitshell=`pwd`/spitshell
1136 echo "I presume that if # doesn't work, #! won't work either!"
1141 : figure out how to guarantee sh startup
1143 '') startsh=${sharpbang}${sh} ;;
1155 : echo "Yup, it does."
1157 echo "Hmm... '$startsh' does not guarantee sh startup..."
1158 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1163 : Save command line options in file UU/cmdline.opt for later use in
1164 : generating config.sh.
1165 cat > cmdline.opt <<EOSH
1166 # Configure command line arguments.
1173 cat >>cmdline.opt <<EOSH
1174 config_arg$argn='$arg'
1176 argn=`expr $argn + 1`
1179 : produce awk script to parse command line options
1180 cat >options.awk <<'EOF'
1182 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1184 len = length(optstr);
1185 for (i = 1; i <= len; i++) {
1186 c = substr(optstr, i, 1);
1187 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1198 if (substr(str, 1, 1) != "-") {
1199 printf("'%s'\n", str);
1203 for (i = 2; i <= len; i++) {
1204 c = substr(str, i, 1);
1206 printf("-%s\n", substr(str, i));
1212 printf("'%s'\n", substr(str, i + 1));
1225 : process the command line options
1226 set X `for arg in "$@"; do echo "X$arg"; done |
1227 sed -e s/X// | awk -f options.awk`
1232 : set up default values
1242 rm -f optdef.sh posthint.sh
1243 cat >optdef.sh <<EOS
1249 while test $# -gt 0; do
1251 -d) shift; fastread=yes;;
1252 -e) shift; alldone=cont;;
1256 if test -r "$1"; then
1259 echo "$me: cannot read config file $1." >&2
1264 -h) shift; error=true;;
1265 -r) shift; reuseval=true;;
1266 -s) shift; silent=true; realsilent=true;;
1267 -E) shift; alldone=exit;;
1268 -K) shift; knowitall=true;;
1269 -O) shift; override=true;;
1270 -S) shift; silent=true; extractsh=true;;
1275 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1276 echo "$me: ignoring -D $1" >&2
1279 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1280 *) echo "$1='define'" >> optdef.sh;;
1287 *=) echo "$1" >> optdef.sh;;
1289 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1290 echo "$me: ignoring -U $1" >&2
1292 *) echo "$1='undef'" >> optdef.sh;;
1303 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1307 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1308 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1314 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1315 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1316 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1317 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1318 *) xxx=`echo $yyy|sed 's!:.*!!'`
1319 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1325 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1327 echo "$yyy=''" >> posthint.sh ;;
1332 echo "$yyy='$zzz'" >> posthint.sh ;;
1334 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1336 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1341 echo "$yyy=$zzz" >> posthint.sh ;;
1342 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1346 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1349 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1357 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1358 [-U symbol] [-U symbol=] [-A command:symbol...]
1359 -d : use defaults for all answers.
1360 -e : go on without questioning past the production of config.sh.
1361 -f : specify an alternate default configuration file.
1362 -h : print this help message and exit (with an error status).
1363 -r : reuse C symbols value if possible (skips costly nm extraction).
1364 -s : silent mode, only echoes questions and essential information.
1365 -D : define symbol to have some value:
1366 -D symbol symbol gets the value 'define'
1367 -D symbol=value symbol gets the value 'value'
1368 -E : stop at the end of questions, after having produced config.sh.
1369 -K : do not use unless you know what you are doing.
1370 -O : let -D and -U override definitions from loaded configuration file.
1371 -S : perform variable substitutions on all .SH files (can mix with -f)
1372 -U : undefine symbol:
1373 -U symbol symbol gets the value 'undef'
1374 -U symbol= symbol gets completely empty
1375 -A : manipulate symbol after the platform specific hints have been applied:
1376 -A symbol=value append " "value to symbol
1377 -A append:symbol=value append value to symbol
1378 -A define:symbol=value define symbol to have value
1379 -A clear:symbol define symbol to be ''
1380 -A define:symbol define symbol to be 'define'
1381 -A eval:symbol=value define symbol to be eval of value
1382 -A prepend:symbol=value prepend value to symbol
1383 -A undef:symbol define symbol to be 'undef'
1384 -A undef:symbol= define symbol to be ''
1385 -V : print version number and exit (with a zero status).
1392 case "$fastread$alldone" in
1395 case "$extractsh" in
1398 if test ! -t 0; then
1399 echo "Say 'sh Configure', not 'sh <Configure'"
1409 true) exec 1>/dev/null;;
1412 : run the defines and the undefines, if any, but leave the file out there...
1415 : create the posthint manipulation script and leave the file out there...
1420 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1421 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1422 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1423 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1424 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1427 : Some greps do not return status, grrr.
1428 echo "grimblepritz" >grimble
1429 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1431 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1437 : the following should work in any shell
1441 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1442 cat >contains <<'EOSS'
1443 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1448 : Find the path to the source tree
1451 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1455 *) src=`cd ../$src && pwd` ;;
1468 if test -f $rsrc/Configure && \
1469 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1471 : found it, so we are ok.
1474 for src in . .. ../.. ../../.. ../../../..; do
1475 if test -f ../$src/Configure && \
1476 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1487 Sorry, I can't seem to locate the source dir for $package. Please start
1488 Configure with an explicit path -- i.e. /some/path/Configure.
1496 echo "Sources for $package found in \"$src\"." >&4
1500 : script used to extract .SH files with variable substitutions
1501 cat >extract <<'EOS'
1503 echo "Doing variable substitutions on .SH files..."
1504 if test -f $src/MANIFEST; then
1505 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1507 echo "(Looking for .SH files under the source directory.)"
1508 set x `(cd $src; find . -name "*.SH" -print)`
1512 0) set x `(cd $src; echo *.SH)`; shift;;
1514 if test ! -f $src/$1; then
1520 while test $name; do
1521 if test ! -d "$name"; then
1522 create="$name $create";
1523 name=`echo $name | sed -e "s|^[^/]*$||"`;
1524 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1529 for file in $create; do
1538 dir=`expr X$file : 'X\(.*\)/'`
1539 file=`expr X$file : 'X.*/\(.*\)'`
1540 (cd $dir && . ./$file)
1550 dir=`expr X$file : 'X\(.*\)/'`
1551 file=`expr X$file : 'X.*/\(.*\)'`
1552 (set x $dir; shift; eval $mkdir_p)
1562 if test -f $src/config_h.SH; then
1563 if test ! -f config.h; then
1564 : oops, they left it out of MANIFEST, probably, so do it anyway.
1570 : extract files and exit if asked to do so
1571 case "$extractsh" in
1573 case "$realsilent" in
1577 case "$config_sh" in
1578 '') config_sh='config.sh';;
1581 echo "Fetching answers from $config_sh..."
1584 test "$override" && . ./optdef.sh
1593 : Eunice requires " " instead of "", can you believe it
1596 echo "Beginning of configuration questions for $package."
1598 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1600 : first determine how to suppress newline on echo command
1602 echo "Checking echo to see how to suppress newlines..."
1603 (echo "hi there\c" ; echo " ") >.echotmp
1604 if $contains c .echotmp >/dev/null 2>&1 ; then
1615 echo $n "The star should be here-->$c"
1619 : Now test for existence of everything in MANIFEST
1621 if test -f $rsrc/MANIFEST; then
1622 echo "First let's make sure your kit is complete. Checking..." >&4
1623 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1626 for filelist in x??; do
1627 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1629 if test -s missing; then
1633 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1635 You have the option of continuing the configuration process, despite the
1636 distinct possibility that your kit is damaged, by typing 'y'es. If you
1637 do, don't blame me if something goes wrong. I advise you to type 'n'o
1638 and contact the author (perlbug@perl.org).
1641 echo $n "Continue? [n] $c" >&4
1645 echo "Continuing..." >&4
1649 echo "ABORTING..." >&4
1654 echo "Looks good..."
1657 echo "There is no MANIFEST file. I hope your kit is complete !"
1662 : Find the appropriate value for a newline for tr
1663 if test -n "$DJGPP"; then
1666 if test X"$trnl" = X; then
1667 case "`echo foo|tr '\n' x 2>/dev/null`" in
1671 if test X"$trnl" = X; then
1672 case "`echo foo|tr '\012' x 2>/dev/null`" in
1673 foox) trnl='\012' ;;
1676 if test X"$trnl" = X; then
1679 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1685 : compute the number of columns on the terminal for proper question formatting
1690 : set up the echo used in my read
1691 myecho="case \"\$xxxm\" in
1692 '') echo $n \"\$rp $c\" >&4;;
1694 '') echo $n \"[\$xxxm] $c\";;
1696 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1698 echo $n \"[\$xxxm] $c\" >&4
1700 echo $n \"\$rp [\$xxxm] $c\" >&4
1706 : now set up to do reads with possible shell escape and default assignment
1712 case "\$fastread" in
1713 yes) case "\$dflt" in
1716 case "\$silent-\$rp" in
1721 *) case "\$silent" in
1722 true) case "\$rp" in
1727 while expr "X\$ans" : "X!" >/dev/null; do
1731 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1739 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1748 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1753 echo "(OK, I'll run with -d after this question.)" >&4
1756 echo "*** Sorry, \$1 not supported yet." >&4
1766 echo "*** Substitution done -- please confirm."
1768 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1773 echo "*** Error -- try again."
1780 case "\$ans\$xxxm\$nostick" in
1792 : create .config dir to save info across Configure sessions
1793 test -d ../.config || mkdir ../.config
1794 cat >../.config/README <<EOF
1795 This directory created by Configure to save information that should
1796 persist across sessions for $package.
1798 You may safely delete it if you wish.
1801 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1803 $define|true|[yY]*) ;;
1804 *) case "$xversion" in
1807 *** WHOA THERE!!! ***
1809 This is an UNSTABLE DEVELOPMENT release.
1810 The version of this $package distribution is $xversion, that is, odd,
1811 (as opposed to even) and that signifies a development release.
1812 If you want a maintenance release, you want an even-numbered version.
1814 Do ***NOT*** install this into production use.
1815 Data corruption and crashes are possible.
1817 It is most seriously suggested that you do not continue any further
1818 unless you want to help in developing and debugging Perl.
1820 If you *still* want to build perl, you can answer 'y' now,
1821 or pass -Dusedevel to Configure.
1824 rp='Do you really want to continue?'
1828 [yY]) echo >&4 "Okay, continuing."
1829 usedevel="$define" ;;
1830 *) echo >&4 "Okay, bye."
1840 case "$versiononly" in
1841 '') versiononly="$define" ;;
1843 case "$installusrbinperl" in
1844 '') installusrbinperl="$undef" ;;
1849 : general instructions
1852 user=`(logname) 2>/dev/null`
1854 '') user=`whoami 2>&1`;;
1856 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1859 rp='Would you like to see the instructions?'
1870 This installation shell script will examine your system and ask you questions
1871 to determine how the perl5 package should be installed. If you get
1872 stuck on a question, you may use a ! shell escape to start a subshell or
1873 execute a command. Many of the questions will have default answers in square
1874 brackets; typing carriage return will give you the default.
1876 On some of the questions which ask for file or directory names you are allowed
1877 to use the ~name construct to specify the login directory belonging to "name",
1878 even if you don't have a shell which knows about that. Questions where this is
1879 allowed will be marked "(~name ok)".
1883 dflt='Type carriage return to continue'
1887 The prompter used in this script allows you to use shell variables and
1888 backticks in your answers. You may use $1, $2, etc... to refer to the words
1889 in the default answer, as if the default line was a set of arguments given to a
1890 script shell. This means you may also use $* to repeat the whole default line,
1891 so you do not have to re-type everything to add something to the default.
1893 Everytime there is a substitution, you will have to confirm. If there is an
1894 error (e.g. an unmatched backtick), the default answer will remain unchanged
1895 and you will be prompted again.
1897 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1898 the questions and use the computed defaults (or the previous answers if there
1899 was already a config.sh file). Type 'Configure -h' for a list of options.
1900 You may also start interactively and then answer '& -d' at any prompt to turn
1901 on the non-interactive behaviour for the remainder of the execution.
1907 Much effort has been expended to ensure that this shell script will run on any
1908 Unix system. If despite that it blows up on yours, your best bet is to edit
1909 Configure and run it again. If you can't run Configure for some reason,
1910 you'll have to generate a config.sh file by hand. Whatever problems you
1911 have, let me (perlbug@perl.org) know how I blew it.
1913 This installation script affects things in two ways:
1915 1) it may do direct variable substitutions on some of the files included
1917 2) it builds a config.h file for inclusion in C programs. You may edit
1918 any of these files as the need arises after running this script.
1920 If you make a mistake on a question, there is no easy way to back up to it
1921 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1922 files. Configure will offer to let you do this before it runs the SH files.
1925 dflt='Type carriage return to continue'
1927 case "$firsttime" in
1928 true) echo $user >>../.config/instruct;;
1932 : find out where common programs are
1934 echo "Locating common programs..." >&4
1947 if test -d \$dir/\$thing; then
1953 for thisthing in \$dir/\$thing; do
1954 : just loop through to pick last item
1956 if test -f \$thisthing; then
1959 elif test -f \$dir/\$thing.exe; then
1960 if test -n "$DJGPP"; then
1961 echo \$dir/\$thing.exe
1963 : on Eunice apparently
2014 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2015 pth="$pth /lib /usr/lib"
2016 for file in $loclist; do
2020 if test -f "$xxx"; then
2023 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2024 xxx=`./loc $file $file $pth`
2027 '') xxx=`./loc $file $file $pth`;;
2028 *) xxx=`./loc $xxx $xxx $pth`;;
2034 echo $file is in $xxx.
2037 echo $file is in $xxx.
2040 echo "I don't know where '$file' is, and my life depends on it." >&4
2041 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2047 echo "Don't worry if any of the following aren't found..."
2049 for file in $trylist; do
2053 if test -f "$xxx"; then
2056 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2057 xxx=`./loc $file $file $pth`
2060 '') xxx=`./loc $file $file $pth`;;
2061 *) xxx=`./loc $xxx $xxx $pth`;;
2067 echo $file is in $xxx.
2070 echo $file is in $xxx.
2073 echo "I don't see $file out there, $say."
2080 echo "Substituting grep for egrep."
2086 echo "Substituting cp for ln."
2092 echo "Hopefully test is built into your sh."
2095 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2096 echo "Using the test built into your sh."
2104 echo "Hopefully echo is built into your sh."
2109 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2110 $echo $n "hi there$c" >foo1
2111 echo $n "hi there$c" >foo2
2112 if cmp foo1 foo2 >/dev/null 2>&1; then
2113 echo "They are compatible. In fact, they may be identical."
2120 They are not compatible! You are probably running ksh on a non-USG system.
2121 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2122 have echo built in and we may have to run some Bourne shell scripts. That
2123 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2126 $echo $n "The star should be here-->$c"
2136 cat <<'EOSC' >>checkcc
2141 int main(int argc, char *argv[]) {
2145 if $cc -o try $ccflags $ldflags try.c; then
2148 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2154 case "`$cc -v -c try.c 2>&1`" in
2157 if $test X"$trygcc" = Xyes; then
2158 if gcc -o try -c try.c; then
2160 echo "You seem to have a working gcc, though." >&4
2161 rp="Would you like to use it?"
2163 if $test -f myread; then
2166 if $test -f UU/myread; then
2169 echo "Cannot find myread, sorry. Aborting." >&2
2174 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2178 if $test X"$despair" = Xyes; then
2180 You need to find a working C compiler.
2181 Either (purchase and) install the C compiler supplied by your OS vendor,
2182 or for a free C compiler try http://gcc.gnu.org/
2183 I cannot continue any further, aborting.
2193 : determine whether symbolic links are supported
2196 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2197 echo "Symbolic links are supported." >&4
2200 echo "Symbolic links are NOT supported." >&4
2205 : determine whether symbolic links are supported
2209 echo "Checking how to test for symbolic links..." >&4
2211 if $test "X$issymlink" = X; then
2212 sh -c "PATH= test -h sym" >/dev/null 2>&1
2213 if test $? = 0; then
2217 if $test "X$issymlink" = X; then
2218 if $test -h >/dev/null 2>&1; then
2219 issymlink="$test -h"
2220 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2223 if $test "X$issymlink" = X; then
2224 if $test -L sym 2>/dev/null; then
2225 issymlink="$test -L"
2228 if $test "X$issymlink" != X; then
2229 echo "You can test for symbolic links with '$issymlink'." >&4
2231 echo "I do not know how you can test for symbolic links." >&4
2235 *) echo "No symbolic links, so not testing for their testing..." >&4
2241 case "$mksymlinks" in
2244 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2247 *) case "$lns:$issymlink" in
2248 *"ln -s:"*"test -"?)
2249 echo "Creating the symbolic links..." >&4
2250 echo "(First creating the subdirectories...)" >&4
2252 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2254 test -z "$directory" && break
2258 if test ! -d t/base; then
2259 echo "Failed to create the subdirectories. Aborting." >&4
2262 echo "(Then creating the symlinks...)" >&4
2263 awk '{print $1}' $src/MANIFEST | while true; do
2265 test -z "$filename" && break
2266 if test -f $filename; then
2267 if $issymlink $filename; then
2271 if test -f $filename; then
2272 echo "$filename already exists, not symlinking."
2274 ln -s $src/$filename $filename
2278 if test ! -f t/base/commonsense.t; then
2279 echo "Failed to create the symlinks. Aborting." >&4
2284 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2292 : see whether [:lower:] and [:upper:] are supported character classes
2294 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2296 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2300 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2301 # (0xc9 and 0xd1), therefore that is a nice testing point.
2302 if test "X$up" = X -o "X$low" = X; then
2303 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2309 if test "X$up" = X -o "X$low" = X; then
2310 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2316 if test "X$up" = X -o "X$low" = X; then
2317 case "`echo IJ | od -x 2>/dev/null`" in
2319 echo "Hey, this might be EBCDIC." >&4
2320 if test "X$up" = X -o "X$low" = X; then
2321 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2322 ij) up='[A-IJ-RS-Z]'
2327 if test "X$up" = X -o "X$low" = X; then
2328 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2338 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2340 echo "Using $up and $low to convert case." >&4
2343 echo "I don't know how to translate letters from upper to lower case." >&4
2344 echo "Your tr is not acting any way I know of." >&4
2348 : set up the translation script tr, must be called with ./tr of course
2352 '[A-Z][a-z]') exec $tr '$up' '$low';;
2353 '[a-z][A-Z]') exec $tr '$low' '$up';;
2360 : Try to determine whether config.sh was made on this system
2361 case "$config_sh" in
2363 myuname=`$uname -a 2>/dev/null`
2364 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2365 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2366 # because the A-Z/a-z are not consecutive.
2367 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2368 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2369 newmyuname="$myuname"
2371 case "$knowitall" in
2373 if test -f ../config.sh; then
2374 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2375 eval "`grep myuname= ../config.sh`"
2377 if test "X$myuname" = "X$newmyuname"; then
2385 : Get old answers from old config file if Configure was run on the
2386 : same system, otherwise use the hints.
2389 if test -f config.sh; then
2391 rp="I see a config.sh file. Shall I use it to set the defaults?"
2394 n*|N*) echo "OK, I'll ignore it."
2395 mv config.sh config.sh.old
2396 myuname="$newmyuname"
2398 *) echo "Fetching default answers from your old config.sh file..." >&4
2406 : Older versions did not always set $sh. Catch re-use of such
2416 if test ! -f config.sh; then
2419 First time through, eh? I have some defaults handy for some systems
2420 that need some extra help getting the Configure answers right:
2423 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2425 : Half the following guesses are probably wrong... If you have better
2426 : tests or hints, please send them to perlbug@perl.org
2427 : The metaconfig authors would also appreciate a copy...
2428 $test -f /irix && osname=irix
2429 $test -f /xenix && osname=sco_xenix
2430 $test -f /dynix && osname=dynix
2431 $test -f /dnix && osname=dnix
2432 $test -f /lynx.os && osname=lynxos
2433 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2434 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2435 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2436 $test -f /bin/mips && /bin/mips && osname=mips
2437 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2438 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2439 $test -d /usr/apollo/bin && osname=apollo
2440 $test -f /etc/saf/_sactab && osname=svr4
2441 $test -d /usr/include/minix && osname=minix
2442 if $test -d /MachTen -o -d /MachTen_Folder; then
2444 if $test -x /sbin/version; then
2445 osvers=`/sbin/version | $awk '{print $2}' |
2446 $sed -e 's/[A-Za-z]$//'`
2447 elif $test -x /usr/etc/version; then
2448 osvers=`/usr/etc/version | $awk '{print $2}' |
2449 $sed -e 's/[A-Za-z]$//'`
2455 $test -f /sys/posix.dll &&
2456 $test -f /usr/bin/what &&
2457 set X `/usr/bin/what /sys/posix.dll` &&
2458 $test "$3" = UWIN &&
2462 if $test -f $uname; then
2470 umips) osname=umips ;;
2473 [23]100) osname=mips ;;
2474 next*) osname=next ;;
2476 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2477 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2480 elif $test -f /etc/kconfig; then
2482 if test "$lns" = "$ln -s"; then
2484 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2486 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2493 if test -n "$DJGPP"; then
2502 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2504 'not found') osvers="$4"."$3" ;;
2505 '<3240'|'<>3240') osvers=3.2.0 ;;
2506 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2507 '=3250'|'>3250') osvers=3.2.5 ;;
2511 bsd386) osname=bsd386
2514 cygwin*) osname=cygwin
2517 *dc.osx) osname=dcosx
2523 domainos) osname=apollo
2529 dynixptx*) osname=dynixptx
2530 osvers=`echo "$4"|sed 's/^v//'`
2532 freebsd) osname=freebsd
2534 genix) osname=genix ;;
2536 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2552 netbsd*) osname=netbsd
2555 news-os) osvers="$3"
2557 4*) osname=newsos4 ;;
2561 next*) osname=next ;;
2562 nonstop-ux) osname=nonstopux ;;
2563 POSIX-BC | posix-bc ) osname=posix-bc
2566 powerux | power_ux | powermax_os | powermaxos | \
2567 powerunix | power_unix) osname=powerux
2573 solaris) osname=solaris
2575 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2582 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2586 titanos) osname=titanos
2595 ultrix) osname=ultrix
2598 osf1|mls+) case "$5" in
2601 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2604 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2607 hp*) osname=hp_osf1 ;;
2608 mips) osname=mips_osf1 ;;
2611 unixware) osname=svr5
2617 $2) case "$osname" in
2621 : svr4.x or possibly later
2631 if test -f /stand/boot ; then
2632 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2633 if test -n "$INITPROG" -a -f "$INITPROG"; then
2634 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2635 if test -n "$isesix"; then
2643 *) if test -f /etc/systemid; then
2645 set `echo $3 | $sed 's/\./ /g'` $4
2646 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2648 elif $test -f $src/hints/sco_$1_$2.sh; then
2650 elif $test -f $src/hints/sco_$1.sh; then
2655 '') : Still unknown. Probably a generic Sys V.
2664 *) case "$osname" in
2665 '') : Still unknown. Probably a generic BSD.
2673 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2674 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2675 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2678 $rm -f UU/kernel.what
2679 elif test -d c:/.; then
2686 : Now look for a hint file osname_osvers, unless one has been
2687 : specified already.
2690 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2691 : Also try without trailing minor version numbers.
2692 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2693 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2694 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2695 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2698 *) case "$osvers" in
2701 *) if $test -f $src/hints/$file.sh ; then
2703 elif $test -f $src/hints/$xfile.sh ; then
2705 elif $test -f $src/hints/$xxfile.sh ; then
2707 elif $test -f $src/hints/$xxxfile.sh ; then
2709 elif $test -f $src/hints/$xxxxfile.sh ; then
2711 elif $test -f "$src/hints/${osname}.sh" ; then
2720 if $test -f Policy.sh ; then
2723 none) dflt="Policy" ;;
2724 *) dflt="Policy $dflt" ;;
2729 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2733 if $test -f Policy.sh ; then
2736 There's also a Policy hint file available, which should make the
2737 site-specific (policy) questions easier to answer.
2744 You may give one or more space-separated answers, or "none" if appropriate.
2745 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2746 is a good thing. DO NOT give a wrong version or a wrong OS.
2750 rp="Which of these apply, if any?"
2753 for file in $tans; do
2754 if $test X$file = XPolicy -a -f Policy.sh; then
2756 $cat Policy.sh >> UU/config.sh
2757 elif $test -f $src/hints/$file.sh; then
2758 . $src/hints/$file.sh
2759 $cat $src/hints/$file.sh >> UU/config.sh
2760 elif $test X$tans = X -o X$tans = Xnone ; then
2763 : Give one chance to correct a possible typo.
2764 echo "$file.sh does not exist"
2766 rp="hint to use instead?"
2768 for file in $ans; do
2769 if $test -f "$src/hints/$file.sh"; then
2770 . $src/hints/$file.sh
2771 $cat $src/hints/$file.sh >> UU/config.sh
2772 elif $test X$ans = X -o X$ans = Xnone ; then
2775 echo "$file.sh does not exist -- ignored."
2782 : Remember our hint file for later.
2783 if $test -f "$src/hints/$file.sh" ; then
2793 echo "Fetching default answers from $config_sh..." >&4
2797 cp $config_sh config.sh 2>/dev/null
2807 test "$override" && . ./optdef.sh
2809 : Restore computed paths
2810 for file in $loclist $trylist; do
2811 eval $file="\$_$file"
2816 Configure uses the operating system name and version to set some defaults.
2817 The default value is probably right if the name rings a bell. Otherwise,
2818 since spelling matters for me, either accept the default or answer "none"
2825 ''|' '|none) dflt=none ;;
2826 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2829 *) dflt="$osname" ;;
2831 rp="Operating system name?"
2835 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2841 ''|' '|none) dflt=none ;;
2842 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2843 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2845 ''|' ') dflt=none ;;
2850 *) dflt="$osvers" ;;
2852 rp="Operating system version?"
2862 : who configured the system
2863 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2864 cf_by=`(logname) 2>/dev/null`
2867 cf_by=`(whoami) 2>/dev/null`
2869 "") cf_by=unknown ;;
2873 : set up the script used to warn in case of inconsistency
2880 echo "*** WHOA THERE!!! ***" >&4
2881 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2882 rp=" Keep the $hint value?"
2885 y) td=$was; tu=$was;;
2889 : function used to set $1 to $val
2890 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2892 $define$undef) . ./whoa; eval "$var=\$td";;
2893 $undef$define) . ./whoa; eval "$var=\$tu";;
2894 *) eval "$var=$val";;
2897 case "$usethreads" in
2898 $define|true|[yY]*) dflt='y';;
2903 Perl can be built to take advantage of threads on some systems.
2904 To do so, Configure can be run with -Dusethreads.
2906 Note that threading is a highly experimental feature, and
2907 some known race conditions still remain. If you choose to try
2908 it, be very sure to not actually deploy it for production
2909 purposes. README.threads has more details, and is required
2910 reading if you enable threads.
2912 If this doesn't make any sense to you, just accept the default '$dflt'.
2914 rp='Build a threading Perl?'
2917 y|Y) val="$define" ;;
2923 case "$usethreads" in
2927 As of 5.5.640, Perl has two different internal threading implementations,
2928 the 5.005 version (5005threads) and an interpreter-based version
2929 (ithreads) that has one interpreter per thread. Both are very
2930 experimental. This arrangement exists to help developers work out
2931 which one is better.
2933 If you're a casual user, you probably don't want interpreter-threads
2934 at this time. There doesn't yet exist a way to create threads from
2935 within Perl in this model, i.e., "use Thread;" will NOT work.
2937 : Default to ithreads unless overridden on command line or with
2940 case "$use5005threads" in
2941 $define|true|[yY]*) dflt='n';;
2943 case "$useithreads" in
2944 $undef|false|[nN]*) dflt='n';;
2946 rp='Use interpreter-based ithreads?'
2949 y|Y) val="$define" ;;
2954 : Now set use5005threads to the opposite value.
2955 case "$useithreads" in
2956 $define) val="$undef" ;;
2963 useithreads="$undef"
2964 use5005threads="$undef"
2968 case "$useithreads$use5005threads" in
2972 You cannot have both the ithreads and the 5.005 threads enabled
2973 at the same time. Disabling the 5.005 threads since they are
2974 much less stable than the ithreads.
2977 use5005threads="$undef"
2981 case "$d_oldpthreads" in
2982 '') : Configure tests would be welcome here. For now, assume undef.
2984 *) val="$d_oldpthreads" ;;
2990 case "$usethreads" in
2991 "$define"|true|[yY]*)
2992 : Look for a hint-file generated 'call-back-unit'. If the
2993 : user has specified that a threading perl is to be built,
2994 : we may need to set or change some other defaults.
2995 if $test -f usethreads.cbu; then
2996 echo "Your platform has some specific hints for threaded builds, using them..."
3000 (Your platform doesn't have any specific hints for threaded builds.
3001 Assuming POSIX threads, then.)
3009 Perl can be built so that multiple Perl interpreters can coexist
3010 within the same Perl executable.
3013 case "$useithreads" in
3016 This multiple interpreter support is required for interpreter-based threads.
3020 *) case "$usemultiplicity" in
3021 $define|true|[yY]*) dflt='y';;
3025 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3026 rp='Build Perl for multiplicity?'
3029 y|Y) val="$define" ;;
3037 : make some quick guesses about what we are up against
3039 $echo $n "Hmm... $c"
3049 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3050 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3052 echo "Looks kind of like an OSF/1 system, but we'll see..."
3054 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3055 xxx=`./loc addbib blurfl $pth`
3056 if $test -f $xxx; then
3057 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3061 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3062 echo "Looks kind of like an extended USG system, but we'll see..."
3064 echo "Looks kind of like a USG system, but we'll see..."
3068 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3069 echo "Looks kind of like a BSD system, but we'll see..."
3073 echo "Looks kind of like a Version 7 system, but we'll see..."
3076 case "$eunicefix" in
3079 There is, however, a strange, musty smell in the air that reminds me of
3080 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3084 : it so happens the Eunice I know will not run shell scripts in Unix format
3088 echo "Congratulations. You aren't running Eunice."
3092 : Detect OS2. The p_ variable is set above in the Head.U unit.
3093 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3094 : semicolon as a patch separator
3099 I have the feeling something is not exactly right, however...don't tell me...
3100 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3101 (Or you may be running DOS with DJGPP.)
3106 if test -f /xenix; then
3107 echo "Actually, this looks more like a XENIX system..."
3112 echo "It's not Xenix..."
3117 if test -f /venix; then
3118 echo "Actually, this looks more like a VENIX system..."
3125 echo "Nor is it Venix..."
3128 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3129 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3136 rp="Use which C compiler?"
3139 : Look for a hint-file generated 'call-back-unit'. Now that the
3140 : user has specified the compiler, we may need to set or change some
3142 if $test -f cc.cbu; then
3148 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3149 $cat >gccvers.c <<EOM
3154 printf("%s\n", __VERSION__);
3156 printf("%s\n", "1");
3162 if $cc -o gccvers $ccflags $ldflags gccvers.c; then
3163 gccversion=`./gccvers`
3164 case "$gccversion" in
3165 '') echo "You are not using GNU cc." ;;
3166 *) echo "You are using GNU cc $gccversion."
3172 echo "*** WHOA THERE!!! ***" >&4
3173 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3174 case "$knowitall" in
3176 echo " You'd better start hunting for one and let me know about it." >&4
3182 case "$gccversion" in
3183 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3185 case "$gccversion" in
3186 '') gccosandvers='' ;;
3187 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3188 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3190 case "$gccosandvers" in
3191 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3192 $osname$osvers) ;; # looking good
3193 $osname*) cat <<EOM >&4
3195 *** WHOA THERE!!! ***
3197 Your gcc has not been compiled for the exact release of
3198 your operating system ($gccosandvers versus $osname$osvers).
3200 In general it is a good idea to keep gcc synchronized with
3201 the operating system because otherwise serious problems
3202 may ensue when trying to compile software, like Perl.
3204 I'm trying to be optimistic here, though, and will continue.
3205 If later during the configuration and build icky compilation
3206 problems appear (headerfile conflicts being the most common
3207 manifestation), I suggest reinstalling the gcc to match
3208 your operating system release.
3212 *) gccosandvers='' ;; # failed to parse, better be silent
3220 : see how we invoke the C preprocessor
3222 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3223 cat <<'EOT' >testcpp.c
3229 if test ! -f cppstdin; then
3230 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3231 # AIX cc -E doesn't show the absolute headerfile
3232 # locations but we'll cheat by using the -M flag.
3233 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
3235 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3238 echo "Keeping your $hint cppstdin wrapper."
3241 wrapper=`pwd`/cppstdin
3245 if $test "X$cppstdin" != "X" && \
3246 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3247 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3249 echo "You used to use $cppstdin $cppminus so we'll use that again."
3251 '') echo "But let's see if we can live without a wrapper..." ;;
3253 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3254 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3256 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3259 echo "(However, $cpprun $cpplast does not work, let's see...)"
3267 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3274 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3275 $cc -E <testcpp.c >testcpp.out 2>&1; \
3276 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3277 echo "Yup, it does."
3280 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3281 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3282 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3283 echo "Yup, it does."
3286 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3287 $cc -P <testcpp.c >testcpp.out 2>&1; \
3288 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3289 echo "Yipee, that works!"
3292 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3293 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3294 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3295 echo "At long last!"
3298 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3299 $cpp <testcpp.c >testcpp.out 2>&1; \
3300 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3304 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3305 $cpp - <testcpp.c >testcpp.out 2>&1; \
3306 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3307 echo "Hooray, it works! I was beginning to wonder."
3310 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3311 $wrapper <testcpp.c >testcpp.out 2>&1; \
3312 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3318 rp="No dice. I can't find a C preprocessor. Name one:"
3322 $x_cpp <testcpp.c >testcpp.out 2>&1
3323 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3324 echo "OK, that will do." >&4
3326 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3341 echo "Perhaps can we force $cc -E using a wrapper..."
3342 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3343 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3349 echo "Nope, we'll have to live without it..."
3363 "$wrapper"|'cppstdin') ;;
3364 *) $rm -f $wrapper;;
3366 $rm -f testcpp.c testcpp.out
3368 : decide how portable to be. Allow command line overrides.
3369 case "$d_portable" in
3371 *) d_portable="$define" ;;
3374 : set up shell script to do ~ expansion
3380 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3383 if $test -f /bin/csh; then
3384 /bin/csh -f -c "glob \$1"
3389 name=\`$expr x\$1 : '..\([^/]*\)'\`
3390 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3391 if $test ! -d "\$dir"; then
3393 echo "\$me: can't locate home directory for: \$name" >&2
3398 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3414 : now set up to get a file name
3418 cat <<'EOSC' >>getfile
3434 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3435 fn=`echo $fn | sed 's/(.*)//'`
3441 loc_file=`expr $fn : '.*:\(.*\)'`
3442 fn=`expr $fn : '\(.*\):.*'`
3450 */*) fullpath=true;;
3459 *e*) exp_file=true;;
3462 *p*) nopath_ok=true;;
3467 *d*) type='Directory';;
3468 *l*) type='Locate';;
3473 Locate) what='File';;
3478 case "$d_portable" in
3486 while test "$type"; do
3491 true) rp="$rp (~name ok)";;
3494 if test -f UU/getfile.ok && \
3495 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3514 value=`UU/filexp $ans`
3517 if test "$ans" != "$value"; then
3518 echo "(That expands to $value on this system.)"
3532 /*) value="$ansexp" ;;
3533 [a-zA-Z]:/*) value="$ansexp" ;;
3538 echo "I shall only accept a full path name, as in /bin/ls." >&4
3539 echo "Use a ! shell escape if you wish to check pathnames." >&4
3542 echo "Please give a full path name, starting with slash." >&4
3545 echo "Note that using ~name is ok provided it expands well." >&4
3558 for fp in $gfpth; do
3559 if test "X$fp" = X.; then
3564 if test -f "$pf"; then
3566 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3568 echo "($value is not a plain file, but that's ok.)"
3571 if test X"$type" = X; then
3578 for fp in $gfpth; do
3579 if test "X$fp" = X.; then
3584 direxp="$fp/$ansexp"
3586 if test -d "$direxp"; then
3594 if test -d "$ansexp"; then
3595 echo "(Looking for $loc_file in directory $value.)"
3596 value="$value/$loc_file"
3597 ansexp="$ansexp/$loc_file"
3599 if test -f "$ansexp"; then
3602 case "$nopath_ok" in
3603 true) case "$value" in
3605 *) echo "Assuming $value will be in people's path."
3621 if test "$fastread" = yes; then
3626 rp="$what $value doesn't exist. Use that name anyway?"
3645 test "X$gfpthkeep" != Xy && gfpth=""
3648 : What should the include directory be ?
3650 $echo $n "Hmm... $c"
3654 if $test -f /bin/mips && /bin/mips; then
3655 echo "Looks like a MIPS system..."
3656 $cat >usr.c <<'EOCP'
3657 #ifdef SYSTYPE_BSD43
3661 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3662 dflt='/bsd43/usr/include'
3666 mips_type='System V'
3668 $rm -f usr.c usr.out
3669 echo "and you're compiling with the $mips_type compiler and libraries."
3673 echo "Doesn't look like a MIPS system."
3683 case "$xxx_prompt" in
3686 rp='Where are the include files you want to use?'
3694 : Set private lib path
3697 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3702 '') dlist="$loclibpth $plibpth $glibpth";;
3703 *) dlist="$libpth";;
3706 : Now check and see which directories actually exist, avoiding duplicates
3710 if $test -d $xxx; then
3713 *) libpth="$libpth $xxx";;
3719 Some systems have incompatible or broken versions of libraries. Among
3720 the directories listed in the question below, please remove any you
3721 know not to be holding relevant libraries, and add any that are needed.
3722 Say "none" for none.
3733 rp="Directories to use for library searches?"
3740 : compute shared library extension
3743 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3753 On some systems, shared libraries may be available. Answer 'none' if
3754 you want to suppress searching of shared libraries for the remainder
3755 of this configuration.
3758 rp='What is the file extension used for shared libraries?'
3762 : Define several unixisms.
3763 : Hints files or command line option can be used to override them.
3764 : The convoluted testing is in case hints files set either the old
3767 '') case "$exe_ext" in
3769 *) _exe="$exe_ext" ;;
3774 '') case "$lib_ext" in
3781 '') case "$obj_ext" in
3788 '') case "$path_sep" in
3799 : Which makefile gets called first. This is used by make depend.
3800 case "$firstmakefile" in
3801 '') firstmakefile='makefile';;
3805 $define|true|[yY]*) dflt='y';;
3810 Perl can be built to use the SOCKS proxy protocol library. To do so,
3811 Configure must be run with -Dusesocks. If you use SOCKS you also need
3812 to use the PerlIO abstraction layer, this will be implicitly selected.
3814 If this doesn't make any sense to you, just accept the default '$dflt'.
3816 rp='Build Perl for SOCKS?'
3819 y|Y) val="$define" ;;
3826 $define|true|[yY]*) useperlio="$define";;
3829 : Looking for optional libraries
3831 echo "Checking for optional libraries..." >&4
3836 case "$libswanted" in
3837 '') libswanted='c_s';;
3840 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3846 for thisdir in $libpth $xlibpth; do
3847 test -d $thisdir && libspath="$libspath $thisdir"
3849 for thislib in $libswanted; do
3850 for thisdir in $libspath; do
3852 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3853 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3854 $test -f "$xxx" && eval $libscheck
3855 $test -f "$xxx" && libstyle=shared
3857 if test ! -f "$xxx"; then
3858 xxx=$thisdir/lib$thislib.$so
3859 $test -f "$xxx" && eval $libscheck
3860 $test -f "$xxx" && libstyle=shared
3862 if test ! -f "$xxx"; then
3863 xxx=$thisdir/lib$thislib$_a
3864 $test -f "$xxx" && eval $libscheck
3865 $test -f "$xxx" && libstyle=static
3867 if test ! -f "$xxx"; then
3868 xxx=$thisdir/$thislib$_a
3869 $test -f "$xxx" && eval $libscheck
3870 $test -f "$xxx" && libstyle=static
3872 if test ! -f "$xxx"; then
3873 xxx=$thisdir/lib${thislib}_s$_a
3874 $test -f "$xxx" && eval $libscheck
3875 $test -f "$xxx" && libstyle=static
3876 $test -f "$xxx" && thislib=${thislib}_s
3878 if test ! -f "$xxx"; then
3879 xxx=$thisdir/Slib$thislib$_a
3880 $test -f "$xxx" && eval $libscheck
3881 $test -f "$xxx" && libstyle=static
3883 if $test -f "$xxx"; then
3885 shared) echo "Found -l$thislib (shared)." ;;
3886 static) echo "Found -l$thislib." ;;
3887 *) echo "Found -l$thislib ($libstyle)." ;;
3891 *) dflt="$dflt -l$thislib"
3892 libsfound="$libsfound $xxx"
3894 libsfiles="$libsfiles $yyy"
3895 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3896 case " $libsdirs " in
3898 *) libsdirs="$libsdirs $yyy" ;;
3905 if $test ! -f "$xxx"; then
3906 echo "No -l$thislib."
3917 ' '|'') dflt='none';;
3922 In order to compile $package on your machine, a number of libraries
3923 are usually needed. Include any other special libraries here as well.
3924 Say "none" for none. The default list is almost always right.
3928 rp="What libraries to use?"
3935 : determine optimization, if desired, or use for debug flag also
3937 ' '|$undef) dflt='none';;
3939 *) dflt="$optimize";;
3943 By default, $package compiles with the -O flag to use the optimizer.
3944 Alternately, you might want to use the symbolic debugger, which uses
3945 the -g flag (on traditional Unix systems). Either flag can be
3946 specified here. To use neither flag, specify the word "none".
3949 rp="What optimizer/debugger flag should be used?"
3953 'none') optimize=" ";;
3957 : We will not override a previous value, but we might want to
3958 : augment a hint file
3960 default|recommended)
3961 case "$gccversion" in
3962 1*) dflt='-fpcc-struct-return' ;;
3965 *-g*) dflt="$dflt -DDEBUGGING";;
3967 case "$gccversion" in
3968 2*) if test -d /etc/conf/kconfig.d &&
3969 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3975 case "$gccversion" in
3979 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3980 echo 'int main(void) { return 0; }' > gcctest.c
3981 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3982 echo "Yes, it does." 2>&1
3985 echo "Leaving current flags $ccflags alone." 2>&1
3987 *) dflt="$dflt -fno-strict-aliasing" ;;
3990 echo "Nope, it doesn't, but that's ok." 2>&1
3997 case "$mips_type" in
3998 *BSD*|'') inclwanted="$locincpth $usrinc";;
3999 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4001 for thisincl in $inclwanted; do
4002 if $test -d $thisincl; then
4003 if $test x$thisincl != x$usrinc; then
4005 *" -I$thisincl "*);;
4006 *) dflt="$dflt -I$thisincl ";;
4012 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4014 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4022 *) dflt="$dflt -D$2";;
4026 set signal.h LANGUAGE_C; eval $inctest
4030 ccflags="$ccflags -DSOCKS"
4035 default|recommended) dflt="$ccflags $dflt" ;;
4036 *) dflt="$ccflags";;
4045 Your C compiler may want other flags. For this question you should include
4046 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4047 but you should NOT include libraries or ld flags like -lwhatever. If you
4048 want $package to honor its debug switch, you should include -DDEBUGGING here.
4049 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4051 To use no flags, specify the word "none".
4057 rp="Any additional cc flags?"
4064 : the following weeds options from ccflags that are of no interest to cpp
4066 '') cppflags="$ccflags" ;;
4067 *) cppflags="$cppflags $ccflags" ;;
4069 case "$gccversion" in
4070 1*) cppflags="$cppflags -D__GNUC__"
4072 case "$mips_type" in
4074 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4080 echo "Let me guess what the preprocessor flags are..." >&4
4094 *) ftry="$previous $flag";;
4096 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4097 >cpp1.out 2>/dev/null && \
4098 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4099 >cpp2.out 2>/dev/null && \
4100 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4101 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4103 cppflags="$cppflags $ftry"
4113 *-*) echo "They appear to be: $cppflags";;
4115 $rm -f cpp.c cpp?.out
4119 : flags used in final linking phase
4121 '') if ./venix; then
4127 *-posix*) dflt="$dflt -posix" ;;
4130 *) dflt="$ldflags";;
4133 : Try to guess additional flags to pick up local libraries.
4134 for thislibdir in $libpth; do
4135 case " $loclibpth " in
4138 *"-L$thislibdir "*) ;;
4139 *) dflt="$dflt -L$thislibdir" ;;
4151 Your C linker may need flags. For this question you should
4152 include -L/whatever and any other flags used by the C linker, but you
4153 should NOT include libraries like -lwhatever.
4155 Make sure you include the appropriate -L/path flags if your C linker
4156 does not normally search all of the directories you specified above,
4159 To use no flags, specify the word "none".
4163 rp="Any additional ld flags (NOT including libraries)?"
4169 rmlist="$rmlist pdp11"
4173 echo "Checking your choice of C compiler and flags for coherency..." >&4
4174 $cat > try.c <<'EOF'
4176 int main() { printf("Ok\n"); exit(0); }
4178 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4180 $cat >try.msg <<'EOM'
4181 I've tried to compile and run the following simple program:
4184 $cat try.c >> try.msg
4186 $cat >> try.msg <<EOM
4193 and I got the following output:
4197 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4198 if $sh -c './try' >>try.msg 2>&1; then
4202 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4205 cat >> try.msg <<'EOQS'
4206 If $libs contains -lsfio, and sfio is mis-configured, then it
4207 sometimes (apparently) runs and exits with a 0 status, but with no
4208 output! It may have to do with sfio's use of _exit vs. exit.
4211 rp="You have a big problem. Shall I abort Configure"
4218 echo "The program compiled OK, but exited with status $?." >>try.msg
4219 rp="You have a problem. Shall I abort Configure"
4223 echo "I can't compile the test program." >>try.msg
4224 rp="You have a BIG problem. Shall I abort Configure"
4230 case "$knowitall" in
4232 echo "(The supplied flags or libraries might be incorrect.)"
4240 *) echo "Ok. Stopping Configure." >&4
4245 n) echo "OK, that should do.";;
4247 $rm -f try try.* core
4249 : define an is-a-typedef? function
4250 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4252 "") inclist="sys/types.h";;
4254 eval "varval=\$$var";
4258 for inc in $inclist; do
4259 echo "#include <$inc>" >>temp.c;
4261 echo "#ifdef $type" >> temp.c;
4262 echo "printf(\"We have $type\");" >> temp.c;
4263 echo "#endif" >> temp.c;
4264 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4265 if $contains $type temp.E >/dev/null 2>&1; then
4271 *) eval "$var=\$varval";;
4274 : define an is-a-typedef? function that prompts if the type is not available.
4275 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4277 "") inclist="sys/types.h";;
4279 eval "varval=\$$var";
4283 for inc in $inclist; do
4284 echo "#include <$inc>" >>temp.c;
4286 echo "#ifdef $type" >> temp.c;
4287 echo "printf(\"We have $type\");" >> temp.c;
4288 echo "#endif" >> temp.c;
4289 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4291 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4292 if $contains $type temp.E >/dev/null 2>&1; then
4293 echo "$type found." >&4;
4296 echo "$type NOT found." >&4;
4302 *) eval "$var=\$varval";;
4305 : define a shorthand compile call
4309 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4310 : define a shorthand compile call for compilations that should be ok.
4314 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4316 : check for lengths of integral types
4320 echo "Checking to see how big your integers are..." >&4
4321 $cat >intsize.c <<'EOCP'
4325 printf("intsize=%d;\n", (int)sizeof(int));
4326 printf("longsize=%d;\n", (int)sizeof(long));
4327 printf("shortsize=%d;\n", (int)sizeof(short));
4332 if eval $compile_ok && ./intsize > /dev/null; then
4334 echo "Your integers are $intsize bytes long."
4335 echo "Your long integers are $longsize bytes long."
4336 echo "Your short integers are $shortsize bytes long."
4340 Help! I can't compile and run the intsize test program: please enlighten me!
4341 (This is probably a misconfiguration in your system or libraries, and
4342 you really ought to fix it. Still, I'll try anyway.)
4346 rp="What is the size of an integer (in bytes)?"
4350 rp="What is the size of a long integer (in bytes)?"
4354 rp="What is the size of a short integer (in bytes)?"
4360 $rm -f intsize intsize.*
4362 : see what type lseek is declared as in the kernel
4363 rp="What is the type used for lseek's offset on this system?"
4364 set off_t lseektype long stdio.h sys/types.h
4368 echo "Checking to see how big your file offsets are..." >&4
4370 #include <sys/types.h>
4374 printf("%d\n", (int)sizeof($lseektype));
4379 if eval $compile_ok; then
4381 echo "Your file offsets are $lseeksize bytes long."
4385 echo "(I can't seem to compile the test program. Guessing...)"
4386 rp="What is the size of your file offsets (in bytes)?"
4392 : see what type file positions are declared as in the library
4393 rp="What is the type for file position used by fsetpos()?"
4394 set fpos_t fpostype long stdio.h sys/types.h
4399 *_t) zzz="$fpostype" ;;
4402 echo "Checking the size of $zzz..." >&4
4404 #include <sys/types.h>
4407 printf("%d\n", (int)sizeof($fpostype));
4412 if eval $compile_ok; then
4416 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4419 echo "Your $zzz is $fpossize bytes long."
4425 echo "(I can't compile the test program. Guessing...)" >&4
4426 rp="What is the size of your file positions (in bytes)?"
4433 # Backward compatibility (uselfs is deprecated).
4435 "$define"|true|[yY]*)
4438 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4440 uselargefiles="$define"
4444 case "$lseeksize:$fpossize" in
4447 You can have files larger than 2 gigabytes.
4450 *) case "$uselargefiles" in
4451 "$undef"|false|[nN]*) dflt='n' ;;
4456 Perl can be built to understand large files (files larger than 2 gigabytes)
4457 on some systems. To do so, Configure can be run with -Duselargefiles.
4459 If this doesn't make any sense to you, just accept the default '$dflt'.
4461 rp='Try to understand large files, if available?'
4464 y|Y) val="$define" ;;
4471 case "$uselargefiles" in
4473 : Look for a hint-file generated 'call-back-unit'. If the
4474 : user has specified that a large files perl is to be built,
4475 : we may need to set or change some other defaults.
4476 if $test -f uselargefiles.cbu; then
4477 echo "Your platform has some specific hints for large file builds, using them..."
4478 . ./uselargefiles.cbu
4480 echo "Rechecking to see how big your file offsets are..." >&4
4482 #include <sys/types.h>
4486 printf("%d\n", (int)sizeof($lseektype));
4491 if eval $compile_ok; then
4493 $echo "Your file offsets are now $lseeksize bytes long."
4497 echo "(I can't seem to compile the test program. Guessing...)"
4498 rp="What is the size of your file offsets (in bytes)?"
4503 *_t) zzz="$fpostype" ;;
4506 $echo $n "Rechecking the size of $zzz...$c" >&4
4508 #include <sys/types.h>
4511 printf("%d\n", (int)sizeof($fpostype));
4516 if eval $compile_ok; then
4521 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4524 echo " $fpossize bytes." >&4
4530 echo "(I can't compile the test program. Guessing...)" >&4
4531 rp="What is the size of your file positions (in bytes)?"
4541 case "$usemorebits" in
4542 "$define"|true|[yY]*)
4543 use64bitint="$define"
4544 uselongdouble="$define"
4545 usemorebits="$define"
4547 *) usemorebits="$undef"
4551 : check for void type
4553 echo "Checking to see how well your C compiler groks the void type..." >&4
4554 case "$voidflags" in
4556 $cat >try.c <<'EOCP'
4562 extern void moo(); /* function returning void */
4563 void (*goo)(); /* ptr to func returning void */
4565 void *hue; /* generic ptr */
4578 int main() { sub(); }
4580 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4581 voidflags=$defvoidused
4582 echo "Good. It appears to support void to the level $package wants.">&4
4583 if $contains warning .out >/dev/null 2>&1; then
4584 echo "However, you might get some warnings that look like this:"
4588 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4589 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4590 echo "It supports 1..."
4591 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4592 echo "It also supports 2..."
4593 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4595 echo "And it supports 4 but not 8 definitely."
4597 echo "It doesn't support 4..."
4598 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4600 echo "But it supports 8."
4603 echo "Neither does it support 8."
4607 echo "It does not support 2..."
4608 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4610 echo "But it supports 4 and 8."
4612 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4614 echo "And it supports 4 but has not heard about 8."
4616 echo "However it supports 8 but not 4."
4621 echo "There is no support at all for void."
4626 case "$voidflags" in
4629 Support flag bits are:
4630 1: basic void declarations.
4631 2: arrays of pointers to functions returning void.
4632 4: operations between pointers to and addresses of void functions.
4633 8: generic void pointers.
4636 rp="Your void support flags add up to what?"
4643 : check for length of pointer
4647 echo "Checking to see how big your pointers are..." >&4
4648 if test "$voidflags" -gt 7; then
4649 echo '#define VOID_PTR char *' > try.c
4651 echo '#define VOID_PTR void *' > try.c
4653 $cat >>try.c <<'EOCP'
4657 printf("%d\n", (int)sizeof(VOID_PTR));
4662 if eval $compile_ok; then
4664 echo "Your pointers are $ptrsize bytes long."
4667 echo "(I can't seem to compile the test program. Guessing...)" >&4
4668 rp="What is the size of a pointer (in bytes)?"
4676 : check for long long
4678 echo "Checking to see if you have long long..." >&4
4679 echo 'int main() { long long x = 7; return 0; }' > try.c
4681 if eval $compile; then
4683 echo "You have long long."
4686 echo "You do not have long long."
4692 : check for length of long long
4693 case "${d_longlong}${longlongsize}" in
4696 echo "Checking to see how big your long longs are..." >&4
4697 $cat >try.c <<'EOCP'
4701 printf("%d\n", (int)sizeof(long long));
4706 if eval $compile_ok; then
4707 longlongsize=`./try$exe_ext`
4708 echo "Your long longs are $longlongsize bytes long."
4712 echo "(I can't seem to compile the test program. Guessing...)"
4713 rp="What is the size of a long long (in bytes)?"
4717 if $test "X$longsize" = "X$longlongsize"; then
4718 echo "(That isn't any different from an ordinary long.)"
4724 : determine filename position in cpp output
4726 echo "Computing filename position in cpp output for #include directives..." >&4
4727 echo '#include <stdio.h>' > foo.c
4730 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4731 $grep '^[ ]*#.*stdio\.h' | \
4732 while read cline; do
4735 while $test \$# -gt 0; do
4736 if $test -r \`echo \$1 | $tr -d '"'\`; then
4741 pos=\`expr \$pos + 1\`
4753 *) pos="${fieldn}th";;
4755 echo "Your cpp writes the filename in the $pos field of the line."
4757 : locate header file
4762 for usrincdir in $usrinc
4764 if test -f \$usrincdir/\$wanted; then
4765 echo "\$usrincdir/\$wanted"
4769 awkprg='{ print \$$fieldn }'
4770 echo "#include <\$wanted>" > foo\$\$.c
4771 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4772 $grep "^[ ]*#.*\$wanted" | \
4773 while read cline; do
4774 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4776 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4777 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4782 # status = 0: grep returned 0 lines, case statement not executed
4783 # status = 1: headerfile found
4784 # status = 2: while loop executed, no headerfile found
4788 if test \$status -eq 1; then
4795 : define an alternate in-header-list? function
4796 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4797 cont=true; xxf="echo \"<\$1> found.\" >&4";
4798 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4799 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4801 case $# in 4) instead=instead;; *) instead="at last";; esac;
4802 while $test "$cont"; do
4804 var=$2; eval "was=\$$2";
4805 if $test "$xxx" && $test -r "$xxx";
4807 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4810 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4811 set $yyy; shift; shift; yyy=$@;
4812 case $# in 0) cont="";;
4813 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4814 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4815 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4816 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4820 do set $yyy; var=$2; eval "was=\$$2";
4821 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4822 set $yyy; shift; shift; yyy=$@;
4825 : see if inttypes.h is available
4826 : we want a real compile instead of Inhdr because some systems
4827 : have an inttypes.h which includes non-existent headers
4830 #include <inttypes.h>
4832 static int32_t foo32 = 0x12345678;
4836 if eval $compile; then
4837 echo "<inttypes.h> found." >&4
4840 echo "<inttypes.h> NOT found." >&4
4849 echo "Checking to see if you have int64_t..." >&4
4851 #include <sys/types.h>
4852 #$i_inttypes I_INTTYPES
4854 #include <inttypes.h>
4856 int main() { int64_t x = 7; }
4859 if eval $compile; then
4861 echo "You have int64_t."
4864 echo "You do not have int64_t."
4872 echo "Checking which 64-bit integer type we could use..." >&4
4878 val='"unsigned int"'
4883 *) case "$longsize" in
4887 val='"unsigned long"'
4892 *) case "$d_longlong:$longlongsize" in
4897 val='"unsigned long long"'
4902 *) case "$d_int64_t" in
4921 '') echo "Alas, no 64-bit integer types in sight." >&4
4924 *) echo "We could use '$quadtype' for 64-bit integers." >&4
4930 case "$uselonglong" in
4931 "$define"|true|[yY]*)
4934 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4936 use64bitint="$define"
4939 case "$use64bits" in
4940 "$define"|true|[yY]*)
4943 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4945 use64bitint="$define"
4948 case "$use64bitints" in
4949 "$define"|true|[yY]*)
4952 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4954 use64bitint="$define"
4957 case "$use64bitsint" in
4958 "$define"|true|[yY]*)
4961 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4963 use64bitint="$define"
4966 case "$uselonglongs" in
4967 "$define"|true|[yY]*)
4970 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4972 use64bitint="$define"
4975 case "$use64bitsall" in
4976 "$define"|true|[yY]*)
4979 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4981 use64bitall="$define"
4986 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4988 case "$use64bitall" in
4989 "$define"|true|[yY]*) use64bitint="$define" ;;
4995 You have natively 64-bit long integers.
4999 *) case "$use64bitint" in
5000 "$define"|true|[yY]*) dflt='y';;
5009 Perl can be built to take advantage of 64-bit integer types
5010 on some systems. To do so, Configure can be run with -Duse64bitint.
5011 Choosing this option will most probably introduce binary incompatibilities.
5013 If this doesn't make any sense to you, just accept the default '$dflt'.
5014 (The default has been chosen based on your configuration.)
5016 rp='Try to use 64-bit integers, if available?'
5019 [yY]*) val="$define" ;;
5027 case "$use64bitall" in
5028 "$define"|true|[yY]*) dflt='y' ;;
5029 *) case "$longsize" in
5037 You may also choose to try maximal 64-bitness. It means using as much
5038 64-bitness as possible on the platform. This in turn means even more
5039 binary incompatibilities. On the other hand, your platform may not
5040 have any more 64-bitness available than what you already have chosen.
5042 If this doesn't make any sense to you, just accept the default '$dflt'.
5043 (The default has been chosen based on your configuration.)
5045 rp='Try to use maximal 64-bit support, if available?'
5048 [yY]*) val="$define" ;;
5053 case "$use64bitall" in
5055 case "$use64bitint" in
5059 Since you have chosen a maximally 64-bit build, I'm also turning on
5060 the use of 64-bit integers.
5062 use64bitint="$define" ;;
5067 case "$use64bitall" in
5068 "$define"|true|[yY]*)
5072 *** You have chosen a maximally 64-bit build, but your pointers
5073 *** are only 4 bytes wide, disabling maximal 64-bitness.
5076 use64bitall="$undef"
5077 case "$use64bitint" in
5078 "$define"|true|[yY]*) ;;
5081 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5084 use64bitint="$define"
5092 case "$use64bitint" in
5093 "$define"|true|[yY]*)
5094 : Look for a hint-file generated 'call-back-unit'. If the
5095 : user has specified that a 64-bit perl is to be built,
5096 : we may need to set or change some other defaults.
5097 if $test -f use64bitint.cbu; then
5098 echo "Your platform has some specific hints for 64-bit integers, using them..."
5102 4) case "$archname64" in
5103 '') archname64=64int ;;
5110 case "$use64bitall" in
5111 "$define"|true|[yY]*)
5112 : Look for a hint-file generated 'call-back-unit'. If the
5113 : user has specified that a maximally 64-bit perl is to be built,
5114 : we may need to set or change some other defaults.
5115 if $test -f use64bitall.cbu; then
5116 echo "Your platform has some specific hints for 64-bit builds, using them..."
5120 4) case "$archname64" in
5121 ''|64int) archname64=64all ;;
5129 echo "Checking for GNU C Library..." >&4
5130 cat >gnulibc.c <<EOM
5142 if eval $compile_ok && ./gnulibc; then
5144 echo "You are using the GNU C Library"
5147 echo "You are not using the GNU C Library"
5153 : see if nm is to be used to determine whether a symbol is defined or not
5157 case "$d_gnulibc" in
5160 echo "nm probably won't work on the GNU C Library." >&4
5166 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5168 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5169 echo "'nm' won't be sufficient on this sytem." >&4
5175 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5176 if $test $dflt -gt 20; then
5186 true|$define) dflt=y;;
5193 I can use $nm to extract the symbols from your C libraries. This
5194 is a time consuming task which may generate huge output on the disk (up
5195 to 3 megabytes) but that should make the symbols extraction faster. The
5196 alternative is to skip the 'nm' extraction part and to compile a small
5197 test program instead to determine whether each symbol is present. If
5198 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5199 this may be the best solution.
5201 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5204 rp="Shall I use $nm to extract C symbols from the libraries?"
5207 [Nn]*) usenm=false;;
5216 : nm options which may be necessary
5218 '') if $test -f /mach_boot; then
5220 elif $test -d /usr/ccs/lib; then
5221 nm_opt='-p' # Solaris (and SunOS?)
5222 elif $test -f /dgux; then
5224 elif $test -f /lib64/rld; then
5225 nm_opt='-p' # 64-bit Irix
5231 : nm options which may be necessary for shared libraries but illegal
5232 : for archive libraries. Thank you, Linux.
5233 case "$nm_so_opt" in
5234 '') case "$myuname" in
5236 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5237 nm_so_opt='--dynamic'
5246 : get list of predefined functions in a handy place
5251 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5258 *) for thislib in $libs; do
5261 : Handle C library specially below.
5264 thislib=`echo $thislib | $sed -e 's/^-l//'`
5265 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5267 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5269 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5271 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5273 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5275 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5277 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5282 libnames="$libnames $try"
5284 *) libnames="$libnames $thislib" ;;
5293 for xxx in $libpth; do
5294 $test -r $1 || set $xxx/libc.$so
5295 : The messy sed command sorts on library version numbers.
5297 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5298 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5300 s/[0-9][0-9]*/0000&/g
5301 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5304 $sort | $sed -e 's/^.* //'`
5307 $test -r $1 || set /usr/ccs/lib/libc.$so
5308 $test -r $1 || set /lib/libsys_s$_a
5314 if $test -r "$1"; then
5315 echo "Your (shared) C library seems to be in $1."
5317 elif $test -r /lib/libc && $test -r /lib/clib; then
5318 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5320 libc='/lib/clib /lib/libc'
5321 if $test -r /lib/syslib; then
5322 echo "(Your math library is in /lib/syslib.)"
5323 libc="$libc /lib/syslib"
5325 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5326 echo "Your C library seems to be in $libc, as you said before."
5327 elif $test -r $incpath/usr/lib/libc$_a; then
5328 libc=$incpath/usr/lib/libc$_a;
5329 echo "Your C library seems to be in $libc. That's fine."
5330 elif $test -r /lib/libc$_a; then
5332 echo "Your C library seems to be in $libc. You're normal."
5334 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5336 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5337 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5338 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5340 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5342 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5345 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5347 if $test -r "$tans"; then
5348 echo "Your C library seems to be in $tans, of all places."
5354 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5358 If the guess above is wrong (which it might be if you're using a strange
5359 compiler, or your machine supports multiple models), you can override it here.
5364 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5366 I can't seem to find your C library. I've looked in the following places:
5369 $sed 's/^/ /' libpath
5372 None of these seems to contain your C library. I need to get its name...
5377 rp='Where is your C library?'
5382 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5383 set X `cat libnames`
5386 case $# in 1) xxx=file; esac
5387 echo "Extracting names from the following $xxx for later perusal:" >&4
5389 $sed 's/^/ /' libnames >&4
5391 $echo $n "This may take a while...$c" >&4
5395 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5396 *) $nm $nm_opt $file 2>/dev/null;;
5401 $grep fprintf libc.tmp > libc.ptf
5402 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5403 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5405 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5407 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5409 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5411 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5413 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5415 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5417 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5419 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5421 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5423 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5425 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5427 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5429 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5430 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5432 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5434 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5436 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5438 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5440 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5442 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5444 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5446 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5448 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5450 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5452 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5454 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5456 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5458 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5460 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5463 $nm -p $* 2>/dev/null >libc.tmp
5464 $grep fprintf libc.tmp > libc.ptf
5465 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5466 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5472 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5474 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5475 for thisname in $libnames $libc; do
5476 $ar t $thisname >>libc.tmp
5478 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5480 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5481 # Repeat libc to extract forwarders to DLL entries too
5482 for thisname in $libnames $libc; do
5483 $ar tv $thisname >>libc.tmp
5484 # Revision 50 of EMX has bug in $ar.
5485 # it will not extract forwarders to DLL entries
5486 # Use emximp which will extract exactly them.
5487 emximp -o tmp.imp $thisname \
5489 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5490 < tmp.imp >>libc.tmp
5493 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5496 echo "$ar didn't seem to work right." >&4
5497 echo "Maybe this is a Cray...trying bld instead..." >&4
5498 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5500 for thisname in $libnames; do
5502 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5503 $ar t $thisname >>libc.tmp
5507 echo "That didn't work either. Giving up." >&4
5514 if $test -f /lib/syscalls.exp; then
5516 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5517 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5521 $rm -f libnames libpath
5523 : is a C symbol defined?
5526 -v) tf=libc.tmp; tc=""; tdc="";;
5527 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5528 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5531 case "$reuseval-$4" in
5533 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5539 if $contains $tlook $tf >/dev/null 2>&1;
5544 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5545 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5553 $define) tval=true;;
5559 : define an is-in-libc? function
5560 inlibc='echo " "; td=$define; tu=$undef;
5561 sym=$1; var=$2; eval "was=\$$2";
5563 case "$reuseval$was" in
5573 echo "$sym() found." >&4;
5574 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5576 echo "$sym() NOT found." >&4;
5577 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5581 $define) echo "$sym() found." >&4;;
5582 *) echo "$sym() NOT found." >&4;;
5586 : see if sqrtl exists
5591 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5594 case "$uselongdouble" in
5595 $define|true|[yY]*) dflt='y';;
5600 Perl can be built to take advantage of long doubles which
5601 (if available) may give more accuracy and range for floating point numbers.
5603 If this doesn't make any sense to you, just accept the default '$dflt'.
5605 rp='Try to use long doubles if available?'
5608 y|Y) val="$define" ;;
5614 case "$uselongdouble" in
5615 true|[yY]*) uselongdouble="$define" ;;
5618 case "$uselongdouble" in
5620 : Look for a hint-file generated 'call-back-unit'. If the
5621 : user has specified that long doubles should be used,
5622 : we may need to set or change some other defaults.
5623 if $test -f uselongdouble.cbu; then
5624 echo "Your platform has some specific hints for long doubles, using them..."
5625 . ./uselongdouble.cbu
5628 (Your platform doesn't have any specific hints for long doubles.)
5634 case "$uselongdouble:$d_sqrtl" in
5638 *** You requested the use of long doubles but you do not seem to have
5639 *** the mathematic functions for long doubles. I'm disabling the use
5640 *** of long doubles.
5643 uselongdouble=$undef
5647 : check for length of double
5649 case "$doublesize" in
5651 echo "Checking to see how big your double precision numbers are..." >&4
5652 $cat >try.c <<'EOCP'
5656 printf("%d\n", (int)sizeof(double));
5661 if eval $compile_ok; then
5663 echo "Your double is $doublesize bytes long."
5666 echo "(I can't seem to compile the test program. Guessing...)"
5667 rp="What is the size of a double precision number (in bytes)?"
5675 : check for long doubles
5677 echo "Checking to see if you have long double..." >&4
5678 echo 'int main() { long double x = 7.0; }' > try.c
5680 if eval $compile; then
5682 echo "You have long double."
5685 echo "You do not have long double."
5691 : check for length of long double
5692 case "${d_longdbl}${longdblsize}" in
5695 echo "Checking to see how big your long doubles are..." >&4
5696 $cat >try.c <<'EOCP'
5700 printf("%d\n", sizeof(long double));
5705 if eval $compile; then
5706 longdblsize=`./try$exe_ext`
5707 echo "Your long doubles are $longdblsize bytes long."
5711 echo "(I can't seem to compile the test program. Guessing...)" >&4
5712 rp="What is the size of a long double (in bytes)?"
5716 if $test "X$doublesize" = "X$longdblsize"; then
5717 echo "(That isn't any different from an ordinary double.)"
5723 case "$useperlio" in
5724 $define|true|[yY]*|'') dflt='y';;
5729 Previous version of $package used the standard IO mechanisms as
5730 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
5731 alternate IO mechanisms via the PerlIO abstraction layer, but the
5732 stdio mechanism is still available if needed. The abstraction layer
5733 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5734 Using PerlIO with sfio may cause problems with some extension modules.
5736 If this doesn't make any sense to you, just accept the default '$dflt'.
5738 rp='Use the PerlIO abstraction layer?'
5745 echo "Ok, doing things the stdio way."
5754 case "$useperlio" in
5755 $define|true|[yY]*) ;;
5758 You are using the SOCKS proxy protocol library which means that you
5759 should also use the PerlIO layer. You may be headed for trouble.
5768 : determine the architecture name
5770 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5771 tarch=`arch`"-$osname"
5772 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5773 if uname -m > tmparch 2>&1 ; then
5774 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5775 -e 's/$/'"-$osname/" tmparch`
5783 case "$myarchname" in
5786 echo "(Your architecture name used to be $myarchname.)"
5793 *) dflt="$archname";;
5795 rp='What is your architecture name'
5798 case "$usethreads" in
5800 echo "Threads selected." >&4
5802 *-thread*) echo "...and architecture name already has -thread." >&4
5804 *) archname="$archname-thread"
5805 echo "...setting architecture name to $archname." >&4
5810 case "$usemultiplicity" in
5812 echo "Multiplicity selected." >&4
5814 *-multi*) echo "...and architecture name already has -multi." >&4
5816 *) archname="$archname-multi"
5817 echo "...setting architecture name to $archname." >&4
5822 case "$use64bitint$use64bitall" in
5824 case "$archname64" in
5826 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5829 case "$use64bitint" in
5830 "$define") echo "64 bit integers selected." >&4 ;;
5832 case "$use64bitall" in
5833 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5836 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5838 *) archname="$archname-$archname64"
5839 echo "...setting architecture name to $archname." >&4
5845 case "$uselongdouble" in
5847 echo "Long doubles selected." >&4
5848 case "$longdblsize" in
5850 "...but long doubles are equal to doubles, not changing architecture name." >&4
5854 *-ld*) echo "...and architecture name already has -ld." >&4
5856 *) archname="$archname-ld"
5857 echo "...setting architecture name to $archname." >&4
5864 case "$useperlio" in
5866 echo "Perlio selected." >&4
5869 echo "Perlio not selected, using stdio." >&4
5871 *-stdio*) echo "...and architecture name already has -stdio." >&4
5873 *) archname="$archname-stdio"
5874 echo "...setting architecture name to $archname." >&4
5880 : determine root of directory hierarchy where package will be installed.
5883 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5891 By default, $package will be installed in $dflt/bin, manual pages
5892 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5893 installation directories. Typically this is something like /usr/local.
5894 If you wish to have binaries under /usr/bin but other parts of the
5895 installation under /usr/local, that's ok: you will be prompted
5896 separately for each of the installation directories, the prefix being
5897 only used to set the defaults.
5901 rp='Installation prefix to use?'
5909 *) oldprefix="$prefix";;
5919 $define|true) afs=true ;;
5920 $undef|false) afs=false ;;
5921 *) if test -d /afs; then
5929 echo "AFS may be running... I'll be extra cautious then..." >&4
5931 echo "AFS does not seem to be running..." >&4
5934 : determine installation prefix for where package is to be installed.
5938 Since you are running AFS, I need to distinguish the directory in which
5939 files will reside from the directory in which they are installed (and from
5940 which they are presumably copied to the former directory by occult means).
5943 case "$installprefix" in
5944 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5945 *) dflt="$installprefix";;
5950 In some special cases, particularly when building $package for distribution,
5951 it is convenient to distinguish between the directory in which files should
5952 be installed from the directory ($prefix) in which they
5953 will eventually reside. For most users, these two directories are the same.
5956 case "$installprefix" in
5958 *) dflt=$installprefix;;
5962 rp='What installation prefix should I use for installing files?'
5964 installprefix="$ans"
5965 installprefixexp="$ansexp"
5967 : set the prefixit variable, to compute a suitable default value
5968 prefixit='case "$3" in
5970 case "$oldprefix" in
5971 "") eval "$1=\"\$$2\"";;
5978 ""|" ") eval "$1=\"\$$2\"";;
5984 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5986 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5987 /*-$oldprefix/*|\~*-$oldprefix/*)
5988 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5989 *) eval "$1=\"\$$2\"";;
5994 : get the patchlevel
5996 echo "Getting the current patchlevel..." >&4
5997 if $test -r $rsrc/patchlevel.h;then
5998 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5999 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6000 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6001 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6002 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6003 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6012 $echo "(You have $package version $patchlevel subversion $subversion.)"
6015 : XXX Should be a Configure test for double-dots in filenames.
6016 version=`echo $revision $patchlevel $subversion | \
6017 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6018 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6019 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6022 version=`echo $revision $patchlevel $subversion | \
6023 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6024 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6025 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6028 : Special case the 5.005_xx maintenance series, which used 5.005
6029 : without any subversion label as a subdirectory in $sitelib
6030 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6031 api_versionstring='5.005'
6034 : determine installation style
6035 : For now, try to deduce it from prefix unless it is already set.
6036 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6037 case "$installstyle" in
6038 '') case "$prefix" in
6039 *perl*) dflt='lib';;
6040 *) dflt='lib/perl5' ;;
6043 *) dflt="$installstyle" ;;
6045 : Probably not worth prompting for this since we prompt for all
6046 : the directories individually, and the prompt would be too long and
6050 : determine where private library files go
6051 : Usual default is /usr/local/lib/perl5/$version.
6052 : Also allow things like /opt/perl/lib/$version, since
6053 : /opt/perl/lib/perl5... would be redundant.
6054 : The default "style" setting is made in installstyle.U
6055 case "$installstyle" in
6056 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6057 *) set dflt privlib lib/$version ;;
6062 There are some auxiliary files for $package that need to be put into a
6063 private library directory that is accessible by everyone.
6067 rp='Pathname where the private library files will reside?'
6070 privlibexp="$ansexp"
6071 : Change installation prefix, if necessary.
6072 if $test X"$prefix" != X"$installprefix"; then
6073 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6075 installprivlib="$privlibexp"
6078 : set the prefixup variable, to restore leading tilda escape
6079 prefixup='case "$prefixexp" in
6081 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6084 : determine where public architecture dependent libraries go
6087 : privlib default is /usr/local/lib/$package/$version
6088 : archlib default is /usr/local/lib/$package/$version/$archname
6089 : privlib may have an optional trailing /share.
6090 tdflt=`echo $privlib | $sed 's,/share$,,'`
6091 tdflt=$tdflt/$archname
6100 $spackage contains architecture-dependent library files. If you are
6101 sharing libraries in a heterogeneous environment, you might store
6102 these files in a separate location. Otherwise, you can just include
6103 them with the rest of the public library files.
6107 rp='Where do you want to put the public architecture-dependent libraries?'
6110 archlibexp="$ansexp"
6111 if $test X"$archlib" = X"$privlib"; then
6116 : Change installation prefix, if necessary.
6117 if $test X"$prefix" != X"$installprefix"; then
6118 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6120 installarchlib="$archlibexp"
6124 : Binary compatibility with 5.005 is not possible for builds
6125 : with advanced features
6126 case "$usethreads$usemultiplicity" in
6128 bincompat5005="$undef"
6129 d_bincompat5005="$undef"
6133 This version of Perl can be compiled for binary compatibility with 5.005.
6134 If you decide to do so, you will be able to continue using most of the
6135 extensions that were compiled for Perl 5.005.
6138 case "$bincompat5005$d_bincompat5005" in
6139 *"$undef"*) dflt=n ;;
6142 rp='Binary compatibility with Perl 5.005?'
6145 y*) val="$define" ;;
6150 case "$d_bincompat5005" in
6152 bincompat5005="$define"
6154 *) bincompat5005="$undef"
6155 d_bincompat5005="$undef"
6162 : see if setuid scripts can be secure
6165 Some kernels have a bug that prevents setuid #! scripts from being
6166 secure. Some sites have disabled setuid #! scripts because of this.
6168 First let's decide if your kernel supports secure setuid #! scripts.
6169 (If setuid #! scripts would be secure but have been disabled anyway,
6170 don't say that they are secure if asked.)
6175 if $test -d /dev/fd; then
6176 echo "#!$ls" >reflect
6177 chmod +x,u+s reflect
6178 ./reflect >flect 2>&1
6179 if $contains "/dev/fd" flect >/dev/null; then
6180 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6184 If you are not sure if they are secure, I can check but I'll need a
6185 username and password different from the one you are using right now.
6186 If you don't have such a username or don't want me to test, simply
6190 rp='Other username to test security of setuid scripts with?'
6195 case "$d_suidsafe" in
6196 '') echo "I'll assume setuid scripts are *not* secure." >&4
6199 echo "Well, the $hint value is *not* secure." >&4
6201 *) echo "Well, the $hint value *is* secure." >&4
6206 $rm -f reflect flect
6207 echo "#!$ls" >reflect
6208 chmod +x,u+s reflect
6211 echo '"su" will (probably) prompt you for '"$ans's password."
6212 su $ans -c './reflect >flect'
6213 if $contains "/dev/fd" flect >/dev/null; then
6214 echo "Okay, it looks like setuid scripts are secure." >&4
6217 echo "I don't think setuid scripts are secure." >&4
6222 rp='Does your kernel have *secure* setuid scripts?'
6225 [yY]*) val="$define";;
6230 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6231 echo "(That's for file descriptors, not floppy disks.)"
6237 $rm -f reflect flect
6239 : now see if they want to do setuid emulation
6242 case "$d_suidsafe" in
6245 echo "No need to emulate SUID scripts since they are secure here." >& 4
6249 Some systems have disabled setuid scripts, especially systems where
6250 setuid scripts cannot be secure. On systems where setuid scripts have
6251 been disabled, the setuid/setgid bits on scripts are currently
6252 useless. It is possible for $package to detect those bits and emulate
6253 setuid/setgid in a secure fashion. This emulation will only work if
6254 setuid scripts have been disabled in your kernel.
6258 "$define") dflt=y ;;
6261 rp="Do you want to do setuid/setgid emulation?"
6264 [yY]*) val="$define";;
6272 : see if this is a malloc.h system
6273 set malloc.h i_malloc
6276 : see if stdlib is available
6277 set stdlib.h i_stdlib
6280 : determine which malloc to compile in
6282 case "$usemymalloc" in
6283 [yY]*|true|$define) dflt='y' ;;
6284 [nN]*|false|$undef) dflt='n' ;;
6285 *) case "$ptrsize" in
6291 rp="Do you wish to attempt to use the malloc that comes with $package?"
6297 mallocsrc='malloc.c'
6298 mallocobj="malloc$_o"
6299 d_mymalloc="$define"
6302 : Remove malloc from list of libraries to use
6303 echo "Removing unneeded -lmalloc from library list" >&4
6304 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6307 echo "libs = $libs" >&4
6319 : compute the return types of malloc and free
6321 $cat >malloc.c <<END
6325 #include <sys/types.h>
6339 case "$malloctype" in
6341 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6348 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6352 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6359 echo "Your system uses $freetype free(), it would seem." >&4
6363 After $package is installed, you may wish to install various
6364 add-on modules and utilities. Typically, these add-ons will
6365 be installed under $prefix with the rest
6366 of this package. However, you may wish to install such add-ons
6367 elsewhere under a different prefix.
6369 If you do not wish to put everything under a single prefix, that's
6370 ok. You will be prompted for the individual locations; this siteprefix
6371 is only used to suggest the defaults.
6373 The default should be fine for most people.
6377 rp='Installation prefix to use for add-on modules and utilities?'
6378 : XXX Here might be another good place for an installstyle setting.
6379 case "$siteprefix" in
6381 *) dflt=$siteprefix ;;
6384 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6386 case "$siteprefix" in
6390 *) oldsiteprefix="$prefix";;
6395 siteprefixexp="$ansexp"
6397 : determine where site specific libraries go.
6398 : Usual default is /usr/local/lib/perl5/site_perl/$version
6399 : The default "style" setting is made in installstyle.U
6400 : XXX No longer works with Prefixit stuff.
6401 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6403 '') case "$installstyle" in
6404 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6405 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6413 The installation process will create a directory for
6414 site-specific extensions and modules. Most users find it convenient
6415 to place all site-specific files in this directory rather than in the
6416 main distribution directory.
6420 rp='Pathname for the site-specific library files?'
6423 sitelibexp="$ansexp"
6424 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6425 : Change installation prefix, if necessary.
6426 if $test X"$prefix" != X"$installprefix"; then
6427 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6429 installsitelib="$sitelibexp"
6432 : determine where site specific architecture-dependent libraries go.
6433 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6434 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6435 : sitelib may have an optional trailing /share.
6437 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6438 dflt="$dflt/$archname"
6443 set sitearch sitearch none
6447 The installation process will also create a directory for
6448 architecture-dependent site-specific extensions and modules.
6452 rp='Pathname for the site-specific architecture-dependent library files?'
6455 sitearchexp="$ansexp"
6456 : Change installation prefix, if necessary.
6457 if $test X"$prefix" != X"$installprefix"; then
6458 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6460 installsitearch="$sitearchexp"
6465 The installation process will also create a directory for
6466 vendor-supplied add-ons. Vendors who supply perl with their system
6467 may find it convenient to place all vendor-supplied files in this
6468 directory rather than in the main distribution directory. This will
6469 ease upgrades between binary-compatible maintenance versions of perl.
6471 Of course you may also use these directories in whatever way you see
6472 fit. For example, you might use them to access modules shared over a
6473 company-wide network.
6475 The default answer should be fine for most people.
6476 This causes further questions about vendor add-ons to be skipped
6477 and no vendor-specific directories will be configured for perl.
6480 rp='Do you want to configure vendor-specific add-on directories?'
6481 case "$usevendorprefix" in
6482 define|true|[yY]*) dflt=y ;;
6483 *) : User may have set vendorprefix directly on Configure command line.
6484 case "$vendorprefix" in
6493 rp='Installation prefix to use for vendor-supplied add-ons?'
6494 case "$vendorprefix" in
6496 *) dflt=$vendorprefix ;;
6499 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6501 case "$vendorprefix" in
6505 *) oldvendorprefix="$prefix";;
6509 usevendorprefix="$define"
6511 vendorprefixexp="$ansexp"
6513 *) usevendorprefix="$undef"
6519 case "$vendorprefix" in
6520 '') d_vendorlib="$undef"
6524 *) d_vendorlib="$define"
6525 : determine where vendor-supplied modules go.
6526 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6527 case "$vendorlib" in
6529 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6530 case "$installstyle" in
6531 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6532 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6535 *) dflt="$vendorlib"
6539 rp='Pathname for the vendor-supplied library files?'
6542 vendorlibexp="$ansexp"
6545 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6546 : Change installation prefix, if necessary.
6547 if $test X"$prefix" != X"$installprefix"; then
6548 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6550 installvendorlib="$vendorlibexp"
6553 case "$vendorprefix" in
6554 '') d_vendorarch="$undef"
6558 *) d_vendorarch="$define"
6559 : determine where vendor-supplied architecture-dependent libraries go.
6560 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6561 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6562 : vendorlib may have an optional trailing /share.
6563 case "$vendorarch" in
6564 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6565 dflt="$dflt/$archname"
6567 *) dflt="$vendorarch" ;;
6570 rp='Pathname for vendor-supplied architecture-dependent files?'
6573 vendorarchexp="$ansexp"
6576 : Change installation prefix, if necessary.
6577 if $test X"$prefix" != X"$installprefix"; then
6578 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6580 installvendorarch="$vendorarchexp"
6583 : Final catch-all directories to search
6586 Lastly, you can have perl look in other directories for extensions and
6587 modules in addition to those already specified.
6588 These directories will be searched after
6592 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6593 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6595 case "$otherlibdirs" in
6596 ''|' ') dflt='none' ;;
6597 *) dflt="$otherlibdirs" ;;
6600 Enter a colon-separated set of extra paths to include in perl's @INC
6601 search path, or enter 'none' for no extra paths.
6605 rp='Colon-separated list of additional directories for perl to search?'
6608 ' '|''|none) otherlibdirs=' ' ;;
6609 *) otherlibdirs="$ans" ;;
6611 case "$otherlibdirs" in
6615 set d_perl_otherlibdirs
6618 : Cruising for prototypes
6620 echo "Checking out function prototypes..." >&4
6621 $cat >prototype.c <<'EOCP'
6622 int main(int argc, char *argv[]) {
6625 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6626 echo "Your C compiler appears to support function prototypes."
6629 echo "Your C compiler doesn't seem to understand function prototypes."
6636 case "$prototype" in
6638 *) ansi2knr='ansi2knr'
6643 This version of $package can only be compiled by a compiler that
6644 understands function prototypes. Unfortunately, your C compiler
6646 doesn't seem to understand them. Sorry about that.
6648 If GNU cc is available for your system, perhaps you could try that instead.
6650 Eventually, we hope to support building Perl with pre-ANSI compilers.
6651 If you would like to help in that effort, please contact <perlbug@perl.org>.
6653 Aborting Configure now.
6659 : determine where public executables go
6664 rp='Pathname where the public executables will reside?'
6666 if $test "X$ansexp" != "X$binexp"; then
6671 : Change installation prefix, if necessary.
6672 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6673 if $test X"$prefix" != X"$installprefix"; then
6674 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6676 installbin="$binexp"
6679 : Find perl5.005 or later.
6680 echo "Looking for a previously installed perl5.005 or later... "
6682 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6683 : Check if this perl is recent and can load a simple module
6684 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6687 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6697 '') echo "None found. That's ok.";;
6698 *) echo "Using $perl5." ;;
6701 : Determine list of previous versions to include in @INC
6702 $cat > getverlist <<EOPL
6705 \$api_versionstring = "$api_versionstring";
6706 \$version = "$version";
6707 \$stem = "$sitelib_stem";
6708 \$archname = "$archname";
6710 $cat >> getverlist <<'EOPL'
6711 # Can't have leading @ because metaconfig interprets it as a command!
6712 ;@inc_version_list=();
6713 # XXX Redo to do opendir/readdir?
6716 ;@candidates = glob("5.*");
6722 # XXX ToDo: These comparisons must be reworked when two-digit
6723 # subversions come along, so that 5.7.10 compares as greater than
6724 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6725 # widespread that we can use the built-in version vectors rather
6726 # than reinventing them here. For 5.6.0, however, we must
6727 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6728 foreach $d (@candidates) {
6729 if ($d lt $version) {
6730 if ($d ge $api_versionstring) {
6731 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6733 elsif ($d ge "5.005") {
6734 unshift(@inc_version_list, grep { -d } $d);
6738 # Skip newer version. I.e. don't look in
6739 # 5.7.0 if we're installing 5.6.1.
6743 if (@inc_version_list) {
6744 print join(' ', @inc_version_list);
6747 # Blank space to preserve value for next Configure run.
6752 case "$inc_version_list" in
6753 '') if test -x "$perl5"; then
6754 dflt=`$perl5 getverlist`
6759 $undef) dflt='none' ;;
6760 *) dflt="$inc_version_list" ;;
6763 ''|' ') dflt=none ;;
6766 5.005) case "$bincompat5005" in
6767 $define|true|[yY]*) ;;
6774 In order to ease the process of upgrading, this version of perl
6775 can be configured to use modules built and installed with earlier
6776 versions of perl that were installed under $prefix. Specify here
6777 the list of earlier versions that this version of perl should check.
6778 If Configure detected no earlier versions of perl installed under
6779 $prefix, then the list will be empty. Answer 'none' to tell perl
6780 to not search earlier versions.
6782 The default should almost always be sensible, so if you're not sure,
6783 just accept the default.
6786 rp='List of earlier versions to include in @INC?'
6789 [Nn]one|''|' ') inc_version_list=' ' ;;
6790 *) inc_version_list="$ans" ;;
6792 case "$inc_version_list" in
6794 inc_version_list_init='0';;
6795 *) inc_version_list_init=`echo $inc_version_list |
6796 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6801 : determine whether to install perl also as /usr/bin/perl
6804 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6806 Many scripts expect perl to be installed as /usr/bin/perl.
6807 I can install the perl you are about to compile also as /usr/bin/perl
6808 (in addition to $installbin/perl).
6810 case "$installusrbinperl" in
6811 "$undef"|[nN]*) dflt='n';;
6814 rp="Do you want to install perl as /usr/bin/perl?"
6817 [yY]*) val="$define";;
6823 set installusrbinperl
6826 : see if dld is available
6830 : see if dlopen exists
6837 : determine which dynamic loading, if any, to compile in
6839 dldir="ext/DynaLoader"
6852 $define) dflt='y' ;;
6855 $define) dflt='y' ;;
6857 : Does a dl_xxx.xs file exist for this operating system
6858 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6861 rp="Do you wish to use dynamic loading?"
6868 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6869 dflt="$dldir/dl_${osname}.xs"
6870 elif $test "$d_dlopen" = "$define" ; then
6871 dflt="$dldir/dl_dlopen.xs"
6872 elif $test "$i_dld" = "$define" ; then
6873 dflt="$dldir/dl_dld.xs"
6878 *) dflt="$dldir/$dlsrc"
6881 echo "The following dynamic loading files are available:"
6882 : Can not go over to $dldir because getfile has path hard-coded in.
6883 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6884 rp="Source file to use for dynamic loading"
6890 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6894 Some systems may require passing special flags to $cc -c to
6895 compile modules that will be used to create a shared library.
6896 To use no flags, say "none".
6899 case "$cccdlflags" in
6900 '') case "$gccversion" in
6901 '') case "$osname" in
6903 next) dflt='none' ;;
6904 irix*) dflt='-KPIC' ;;
6905 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6906 sunos) dflt='-pic' ;;
6910 *) case "$osname" in
6911 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6916 *) dflt="$cccdlflags" ;;
6918 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6921 none) cccdlflags=' ' ;;
6922 *) cccdlflags="$ans" ;;
6927 Some systems use ld to create libraries that can be dynamically loaded,
6928 while other systems (such as those using ELF) use $cc.
6932 '') $cat >try.c <<'EOM'
6933 /* Test for whether ELF binaries are produced */
6938 int i = open("a.out",O_RDONLY);
6941 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6942 exit(0); /* succeed (yes, it's ELF) */
6947 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && ./a.out; then
6949 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6953 echo "I'll use ld to build dynamic libraries."
6962 rp="What command should be used to create dynamic libraries?"
6968 Some systems may require passing special flags to $ld to create a
6969 library that can be dynamically loaded. If your ld flags include
6970 -L/other/path options to locate libraries outside your loader's normal
6971 search path, you may need to specify those -L options here as well. To
6972 use no flags, say "none".
6975 case "$lddlflags" in
6976 '') case "$osname" in
6977 beos) dflt='-nostart' ;;
6979 case "$gccversion" in
6980 '') dflt="$dflt +vnocompatwarnings" ;;
6983 linux|irix*) dflt='-shared' ;;
6984 next) dflt='none' ;;
6985 solaris) dflt='-G' ;;
6986 sunos) dflt='-assert nodefinitions' ;;
6987 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6991 *) dflt="$lddlflags" ;;
6994 : Try to guess additional flags to pick up local libraries.
6995 : Be careful not to append to a plain 'none'
6999 for thisflag in $ldflags; do
7004 *) dflt="$dflt $thisflag" ;;
7011 ''|' ') dflt='none' ;;
7014 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7017 none) lddlflags=' ' ;;
7018 *) lddlflags="$ans" ;;
7023 Some systems may require passing special flags to $cc to indicate that
7024 the resulting executable will use dynamic linking. To use no flags,
7028 case "$ccdlflags" in
7029 '') case "$osname" in
7030 hpux) dflt='-Wl,-E' ;;
7031 linux) dflt='-rdynamic' ;;
7032 next) dflt='none' ;;
7033 sunos) dflt='none' ;;
7037 *) dflt="$ccdlflags" ;;
7039 rp="Any special flags to pass to $cc to use dynamic linking?"
7042 none) ccdlflags=' ' ;;
7043 *) ccdlflags="$ans" ;;
7057 # No dynamic loading being used, so don't bother even to prompt.
7060 *) case "$useshrplib" in
7061 '') case "$osname" in
7062 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7064 also='Building a shared libperl is required for dynamic loading to work on your system.'
7069 also='Building a shared libperl is needed for MAB support.'
7087 The perl executable is normally obtained by linking perlmain.c with
7088 libperl${_a}, any static extensions (usually just DynaLoader), and
7089 any other libraries needed on this system (such as -lm, etc.). Since
7090 your system supports dynamic loading, it is probably possible to build
7091 a shared libperl.$so. If you will have more than one executable linked
7092 to libperl.$so, this will significantly reduce the size of each
7093 executable, but it may have a noticeable affect on performance. The
7094 default is probably sensible for your system.
7098 rp="Build a shared libperl.$so (y/n)"
7102 useshrplib='true' ;;
7103 *) useshrplib='false' ;;
7108 case "$useshrplib" in
7112 # Figure out a good name for libperl.so. Since it gets stored in
7113 # a version-specific architecture-dependent library, the version
7114 # number isn't really that important, except for making cc/ld happy.
7116 # A name such as libperl.so.3.1
7117 majmin="libperl.$so.$patchlevel.$subversion"
7118 # A name such as libperl.so.301
7119 majonly=`echo $patchlevel $subversion |
7120 $awk '{printf "%d%02d", $1, $2}'`
7121 majonly=libperl.$so.$majonly
7122 # I'd prefer to keep the os-specific stuff here to a minimum, and
7123 # rely on figuring it out from the naming of libc.
7124 case "${osname}${osvers}" in
7127 # XXX How handle the --version stuff for MAB?
7129 linux*) # ld won't link with a bare -lperl otherwise.
7132 cygwin*) # include version
7133 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7135 *) # Try to guess based on whether libc has major.minor.
7137 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7138 *libc.$so.[0-9]*) dflt=$majonly ;;
7139 *) dflt=libperl.$so ;;
7149 I need to select a good name for the shared libperl. If your system uses
7150 library names with major and minor numbers, then you might want something
7151 like $majmin. Alternatively, if your system uses a single version
7152 number for shared libraries, then you might want to use $majonly.
7153 Or, your system might be quite happy with a simple libperl.$so.
7155 Since the shared libperl will get installed into a version-specific
7156 architecture-dependent directory, the version number of the shared perl
7157 library probably isn't important, so the default should be o.k.
7160 rp='What name do you want to give to the shared libperl?'
7163 echo "Ok, I'll use $libperl"
7166 libperl="libperl${_a}"
7170 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7174 WARNING: Use of the shrpdir variable for the installation location of
7175 the shared $libperl is not supported. It was never documented and
7176 will not work in this version. Let me (perlbug@perl.org)
7177 know of any problems this may cause.
7183 But your current setting of $shrpdir is
7184 the default anyway, so it's harmless.
7189 Further, your current attempted setting of $shrpdir
7190 conflicts with the value of $archlibexp/CORE
7191 that installperl will use.
7198 # How will the perl executable find the installed shared $libperl?
7199 # Add $xxx to ccdlflags.
7200 # If we can't figure out a command-line option, use $shrpenv to
7201 # set env LD_RUN_PATH. The main perl makefile uses this.
7202 shrpdir=$archlibexp/CORE
7205 if "$useshrplib"; then
7208 # We'll set it in Makefile.SH...
7214 xxx="-Wl,-R$shrpdir"
7216 linux|irix*|dec_osf)
7217 xxx="-Wl,-rpath,$shrpdir"
7220 # next doesn't like the default...
7223 # beos doesn't like the default, either.
7226 # hpux doesn't like the default, either.
7227 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7230 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7236 # Only add $xxx if it isn't already in ccdlflags.
7237 case " $ccdlflags " in
7239 *) ccdlflags="$ccdlflags $xxx"
7242 Adding $xxx to the flags
7243 passed to $ld so that the perl executable will find the
7244 installed shared $libperl.
7252 # Fix ccdlflags in AIX for building external extensions.
7253 # (For building Perl itself bare -bE:perl.exp is needed,
7254 # Makefile.SH takes care of this.)
7256 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7258 # Respect a hint or command-line value.
7260 '') shrpenv="$tmp_shrpenv" ;;
7262 case "$ldlibpthname" in
7263 '') ldlibpthname=LD_LIBRARY_PATH ;;
7264 none) ldlibpthname='' ;;
7267 : determine where manual pages are on this system
7271 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7272 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7273 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7274 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7275 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7276 sysman=`./loc . /usr/man/man1 $syspath`
7279 if $test -d "$sysman"; then
7280 echo "System manual is in $sysman." >&4
7282 echo "Could not find manual pages in source form." >&4
7285 : determine where manual pages go
7286 set man1dir man1dir none
7290 $spackage has manual pages available in source form.
7294 echo "However, you don't have nroff, so they're probably useless to you."
7296 '') man1dir="none";;
7299 echo "If you don't want the manual sources installed, answer 'none'."
7304 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7305 lookpath="$lookpath $prefixexp/man/p_man/man1"
7306 lookpath="$lookpath $prefixexp/man/u_man/man1"
7307 lookpath="$lookpath $prefixexp/man/man.1"
7309 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7310 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7320 rp="Where do the main $spackage manual pages (source) go?"
7322 if $test "X$man1direxp" != "X$ansexp"; then
7326 man1direxp="$ansexp"
7332 : Change installation prefix, if necessary.
7333 if $test X"$prefix" != X"$installprefix"; then
7334 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7336 installman1dir="$man1direxp"
7339 : What suffix to use on installed man pages
7346 rp="What suffix should be used for the main $spackage man pages?"
7348 '') case "$man1dir" in
7362 *) dflt="$man1ext";;
7369 : see if we can have long filenames
7371 first=123456789abcdef
7373 if (echo hi >$first) 2>/dev/null; then
7374 if $test -f 123456789abcde; then
7375 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7378 echo 'You can have filenames longer than 14 characters.'>&4
7383 You can't have filenames longer than 14 chars.
7384 You can't even think about them!
7390 $rm -rf 123456789abcde*
7392 : determine where library module manual pages go
7393 set man3dir man3dir none
7397 $spackage has manual pages for many of the library modules.
7403 However, you don't have nroff, so they're probably useless to you.
7406 '') man3dir="none";;
7410 case "$d_flexfnam" in
7413 However, your system can't handle the long file names like File::Basename.3.
7416 '') man3dir="none";;
7420 echo "If you don't want the manual sources installed, answer 'none'."
7421 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7423 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7424 if $test -d "$privlib/man/man3"; then
7427 WARNING: Previous versions of perl installed man3 pages into
7428 $privlib/man/man3. This version will suggest a
7429 new default of $dflt.
7433 rp='Do you wish to preserve the old behavior?(y/n)'
7436 y*) dflt="$privlib/man/man3" ;;
7441 *) dflt="$man3dir" ;;
7448 rp="Where do the $package library man pages (source) go?"
7451 man3direxp="$ansexp"
7457 : Change installation prefix, if necessary.
7458 if $test X"$prefix" != X"$installprefix"; then
7459 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7461 installman3dir="$man3direxp"
7464 : What suffix to use on installed man pages
7470 rp="What suffix should be used for the $package library man pages?"
7472 '') case "$man3dir" in
7486 *) dflt="$man3ext";;
7493 : see if we have to deal with yellow pages, now NIS.
7494 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7495 if $test -f /usr/etc/nibindd; then
7497 echo "I'm fairly confident you're on a NeXT."
7499 rp='Do you get the hosts file via NetInfo?'
7508 y*) hostcat='nidump hosts .';;
7509 *) case "$hostcat" in
7510 nidump*) hostcat='';;
7520 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7528 rp='Are you getting the hosts file via yellow pages?'
7531 y*) hostcat='ypcat hosts';;
7532 *) hostcat='cat /etc/hosts';;
7538 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7541 '') test -f /etc/group && groupcat='cat /etc/group';;
7544 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7547 : now get the host name
7549 echo "Figuring out host name..." >&4
7550 case "$myhostname" in
7552 echo 'Maybe "hostname" will work...'
7553 if tans=`sh -c hostname 2>&1` ; then
7561 if $test "$cont"; then
7563 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7564 if tans=`cat /etc/systemid 2>&1` ; then
7566 phostname='cat /etc/systemid'
7567 echo "Whadyaknow. Xenix always was a bit strange..."
7570 elif $test -r /etc/systemid; then
7571 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7574 if $test "$cont"; then
7575 echo 'No, maybe "uuname -l" will work...'
7576 if tans=`sh -c 'uuname -l' 2>&1` ; then
7578 phostname='uuname -l'
7580 echo 'Strange. Maybe "uname -n" will work...'
7581 if tans=`sh -c 'uname -n' 2>&1` ; then
7583 phostname='uname -n'
7585 echo 'Oh well, maybe I can mine it out of whoami.h...'
7586 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7587 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7588 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7590 case "$myhostname" in
7591 '') echo "Does this machine have an identity crisis or something?"
7594 echo "Well, you said $myhostname before..."
7595 phostname='echo $myhostname';;
7601 : you do not want to know about this
7606 if $test "$myhostname" ; then
7608 rp='Your host name appears to be "'$myhostname'".'" Right?"
7616 : bad guess or no guess
7617 while $test "X$myhostname" = X ; do
7619 rp="Please type the (one word) name of your host:"
7624 : translate upper to lower if necessary
7625 case "$myhostname" in
7627 echo "(Normalizing case in your host name)"
7628 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7632 case "$myhostname" in
7634 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7635 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7636 echo "(Trimming domain name from host name--host name is now $myhostname)"
7638 *) case "$mydomain" in
7641 test "X$hostcat" = "Xypcat hosts" &&
7642 ypmatch "$myhostname" hosts 2>/dev/null |\
7643 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7646 test "X$hostcat" != "X" &&
7647 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7648 /[ ]$myhostname[ . ]/p" > hosts
7651 if $test -f hosts; then
7652 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7653 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7654 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7655 hosts | $sort | $uniq | \
7656 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7657 case `$echo X$dflt` in
7658 X*\ *) echo "(Several hosts in the database matched hostname)"
7661 X.) echo "(You do not have fully-qualified names in the hosts database)"
7665 echo "(I cannot locate a hosts database anywhere)"
7670 tans=`./loc resolv.conf X /etc /usr/etc`
7671 if $test -f "$tans"; then
7672 echo "(Attempting domain name extraction from $tans)"
7673 dflt=.`$sed -n -e 's/ / /g' \
7674 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7675 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7677 .) dflt=.`$sed -n -e 's/ / /g' \
7678 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7679 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7686 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7687 dflt=.`sh -c domainname 2>/dev/null`
7690 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7694 case "$dflt$osname" in
7695 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7696 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7700 .) echo "(Lost all hope -- silly guess then)"
7706 *) dflt="$mydomain";;
7710 rp="What is your domain name?"
7720 : translate upper to lower if necessary
7723 echo "(Normalizing case in your domain name)"
7724 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7728 : a little sanity check here
7729 case "$phostname" in
7732 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7733 $myhostname$mydomain|$myhostname) ;;
7735 case "$phostname" in
7737 echo "(That doesn't agree with your whoami.h file, by the way.)"
7740 echo "(That doesn't agree with your $phostname command, by the way.)"
7750 I need to get your e-mail address in Internet format if possible, i.e.
7751 something like user@host.domain. Please answer accurately since I have
7752 no easy means to double check it. The default value provided below
7753 is most probably close to reality but may not be valid from outside
7754 your organization...
7758 while test "$cont"; do
7760 '') dflt="$cf_by@$myhostname$mydomain";;
7761 *) dflt="$cf_email";;
7763 rp='What is your e-mail address?'
7769 rp='Address does not look like an Internet one. Use it anyway?'
7785 If you or somebody else will be maintaining perl at your site, please
7786 fill in the correct e-mail address here so that they may be contacted
7787 if necessary. Currently, the "perlbug" program included with perl
7788 will send mail to this address in addition to perlbug@perl.org. You may
7789 enter "none" for no administrator.
7792 case "$perladmin" in
7793 '') dflt="$cf_email";;
7794 *) dflt="$perladmin";;
7796 rp='Perl administrator e-mail address'
7800 : determine whether to only install version-specific parts.
7803 Do you want to install only the version-specific parts of the perl
7804 distribution? Usually you do *not* want to do this.
7806 case "$versiononly" in
7807 "$define"|[Yy]*|true) dflt='y' ;;
7810 rp="Do you want to install only the version-specific parts of perl?"
7813 [yY]*) val="$define";;
7819 : figure out how to guarantee perl startup
7820 case "$startperl" in
7822 case "$sharpbang" in
7826 I can use the #! construct to start perl on your system. This will
7827 make startup of perl scripts faster, but may cause problems if you
7828 want to share those scripts and perl is not in a standard place
7829 ($binexp/perl) on all your platforms. The alternative is to force
7830 a shell by starting the script with a single ':' character.
7833 case "$versiononly" in
7834 "$define") dflt="$binexp/perl$version";;
7835 *) dflt="$binexp/perl";;
7837 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7840 none) startperl=": # use perl";;
7841 *) startperl="#!$ans"
7842 if $test 30 -lt `echo "$ans" | wc -c`; then
7845 WARNING: Some systems limit the #! command to 32 characters.
7846 If you experience difficulty running Perl scripts with #!, try
7847 installing Perl in a directory with a shorter pathname.
7853 *) startperl=": # use perl"
7858 echo "I'll use $startperl to start perl scripts."
7860 : figure best path for perl in scripts
7863 perlpath="$binexp/perl"
7864 case "$startperl" in
7869 I will use the "eval 'exec'" idiom to start Perl on your system.
7870 I can use the full path of your Perl binary for this purpose, but
7871 doing so may cause problems if you want to share those scripts and
7872 Perl is not always in a standard place ($binexp/perl).
7876 rp="What path shall I use in \"eval 'exec'\"?"
7883 case "$startperl" in
7885 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7888 : determine where public executable scripts go
7889 set scriptdir scriptdir
7891 case "$scriptdir" in
7894 : guess some guesses
7895 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7896 $test -d /usr/share/bin && dflt=/usr/share/bin
7897 $test -d /usr/local/script && dflt=/usr/local/script
7898 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7899 $test -d $prefixexp/script && dflt=$prefixexp/script
7903 *) dflt="$scriptdir"
7908 Some installations have a separate directory just for executable scripts so
7909 that they can mount it across multiple architectures but keep the scripts in
7910 one spot. You might, for example, have a subdirectory of /usr/share for this.
7911 Or you might just lump your scripts in with all your other executables.
7915 rp='Where do you keep publicly executable scripts?'
7917 if $test "X$ansexp" != "X$scriptdirexp"; then
7921 scriptdirexp="$ansexp"
7922 : Change installation prefix, if necessary.
7923 if $test X"$prefix" != X"$installprefix"; then
7924 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7926 installscript="$scriptdirexp"
7929 : determine where add-on public executables go
7931 '') dflt=$siteprefix/bin ;;
7935 rp='Pathname where the add-on public executables should be installed?'
7938 sitebinexp="$ansexp"
7939 : Change installation prefix, if necessary.
7940 if $test X"$prefix" != X"$installprefix"; then
7941 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7943 installsitebin="$sitebinexp"
7946 case "$vendorprefix" in
7947 '') d_vendorbin="$undef"
7951 *) d_vendorbin="$define"
7952 : determine where vendor-supplied executables go.
7953 case "$vendorbin" in
7954 '') dflt=$vendorprefix/bin ;;
7955 *) dflt="$vendorbin" ;;
7958 rp='Pathname for the vendor-supplied executables directory?'
7961 vendorbinexp="$ansexp"
7964 : Change installation prefix, if necessary.
7965 if $test X"$prefix" != X"$installprefix"; then
7966 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7968 installvendorbin="$vendorbinexp"
7971 : see if qgcvt exists
7977 if $test X"$d_longdbl" = X"$define"; then
7979 echo "Checking how to print long doubles..." >&4
7981 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7982 $cat >try.c <<'EOCP'
7983 #include <sys/types.h>
7987 printf("%.3f\n", d);
7991 if eval $compile; then
7995 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7996 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7997 echo "We will use %f."
8003 if $test X"$sPRIfldbl" = X; then
8004 $cat >try.c <<'EOCP'
8005 #include <sys/types.h>
8008 long double d = 123.456;
8009 printf("%.3llf\n", d);
8013 if eval $compile; then
8017 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8018 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8019 echo "We will use %llf."
8025 if $test X"$sPRIfldbl" = X; then
8026 $cat >try.c <<'EOCP'
8027 #include <sys/types.h>
8030 long double d = 123.456;
8031 printf("%.3Lf\n", d);
8035 if eval $compile; then
8039 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8040 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8041 echo "We will use %Lf."
8047 if $test X"$sPRIfldbl" = X; then
8048 $cat >try.c <<'EOCP'
8049 #include <sys/types.h>
8052 long double d = 123.456;
8053 printf("%.3lf\n", d);
8057 if eval $compile; then
8061 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8062 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8063 echo "We will use %lf."
8069 if $test X"$sPRIfldbl" = X; then
8070 echo "Cannot figure out how to print long doubles." >&4
8072 sSCNfldbl=$sPRIfldbl # expect consistency
8079 case "$sPRIfldbl" in
8080 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8081 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8082 d_SCNfldbl="$undef";
8084 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8085 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8086 d_SCNfldbl="$define";
8090 : Check how to convert floats to strings.
8092 echo "Checking for an efficient way to convert floats to strings."
8094 case "$uselongdouble" in
8095 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8097 case "$d_longdbl" in
8098 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8100 case "$d_PRIgldbl" in
8101 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8105 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8106 char *myname = "gconvert";
8109 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8110 char *myname = "gcvt";
8113 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8114 char *myname = "qgcvt";
8115 #define DOUBLETYPE long double
8118 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8119 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8121 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8123 char *myname = "sprintf";
8127 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8128 #define DOUBLETYPE long double
8130 #define DOUBLETYPE double
8136 #define I_STDLIB $i_stdlib
8142 checkit(expect, got)
8146 if (strcmp(expect, got)) {
8147 printf("%s oddity: Expected %s, got %s\n",
8148 myname, expect, got);
8158 /* This must be 1st test on (which?) platform */
8159 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8160 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8161 checkit("0.1", buf);
8163 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8166 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8167 checkit("1.1", buf);
8169 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8170 checkit("1.01", buf);
8172 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8173 checkit("1.001", buf);
8175 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8176 checkit("1.0001", buf);
8178 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8179 checkit("1.00001", buf);
8181 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8182 checkit("1.000001", buf);
8184 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8187 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8190 /* Some Linux gcvt's give 1.e+5 here. */
8191 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8192 checkit("100000", buf);
8194 /* Some Linux gcvt's give -1.e+5 here. */
8195 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8196 checkit("-100000", buf);
8198 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8199 checkit("123.456", buf);
8204 case "$d_Gconvert" in
8205 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8206 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8207 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8208 *) xxx_list='gconvert gcvt sprintf' ;;
8211 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8212 "$define$define$define")
8213 # for long doubles prefer first qgcvt, then sprintf
8214 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8215 xxx_list="sprintf $xxx_list"
8217 "$define") xxx_list="qgcvt $xxx_list" ;;
8222 for xxx_convert in $xxx_list; do
8223 echo "Trying $xxx_convert..."
8225 set try -DTRY_$xxx_convert
8226 if eval $compile; then
8227 echo "$xxx_convert() found." >&4
8229 echo "I'll use $xxx_convert to convert floats into a string." >&4
8232 echo "...But $xxx_convert didn't work as I expected."
8235 echo "$xxx_convert NOT found." >&4
8239 case "$xxx_convert" in
8240 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8241 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8242 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8243 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8244 "$define$define$define")
8245 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8246 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8251 : see if _fwalk exists
8255 : Initialize h_fcntl
8258 : Initialize h_sysfile
8261 : access call always available on UNIX
8265 : locate the flags for 'access()'
8269 $cat >access.c <<'EOCP'
8270 #include <sys/types.h>
8275 #include <sys/file.h>
8284 : check sys/file.h first, no particular reason here
8285 if $test `./findhdr sys/file.h` && \
8286 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8288 echo "<sys/file.h> defines the *_OK access constants." >&4
8289 elif $test `./findhdr fcntl.h` && \
8290 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8292 echo "<fcntl.h> defines the *_OK access constants." >&4
8293 elif $test `./findhdr unistd.h` && \
8294 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8295 echo "<unistd.h> defines the *_OK access constants." >&4
8297 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8303 : see if accessx exists
8304 set accessx d_accessx
8307 : see if alarm exists
8311 : see if atolf exists
8315 : see if atoll exists
8319 : Look for GNU-cc style attribute checking
8321 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8322 $cat >attrib.c <<'EOCP'
8324 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8326 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8327 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8328 echo "Your C compiler doesn't fully support __attribute__."
8331 echo "Your C compiler supports __attribute__."
8335 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8342 : see if bcmp exists
8346 : see if bcopy exists
8350 : see if this is a unistd.h system
8351 set unistd.h i_unistd
8354 : see if getpgrp exists
8355 set getpgrp d_getpgrp
8358 case "$d_getpgrp" in
8361 echo "Checking to see which flavor of getpgrp is in use..."
8364 #include <sys/types.h>
8366 # include <unistd.h>
8370 if (getuid() == 0) {
8371 printf("(I see you are running Configure as super-user...)\n");
8375 if (getpgrp(1) == 0)
8384 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8385 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8387 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8388 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8391 echo "I can't seem to compile and run the test program."
8393 xxx="a USG one, i.e. you use getpgrp()."
8395 # SVR4 systems can appear rather BSD-ish.
8398 xxx="a BSD one, i.e. you use getpgrp(pid)."
8402 xxx="probably a USG one, i.e. you use getpgrp()."
8407 echo "Assuming your getpgrp is $xxx" >&4
8416 : see if setpgrp exists
8417 set setpgrp d_setpgrp
8420 case "$d_setpgrp" in
8423 echo "Checking to see which flavor of setpgrp is in use..."
8426 #include <sys/types.h>
8428 # include <unistd.h>
8432 if (getuid() == 0) {
8433 printf("(I see you are running Configure as super-user...)\n");
8437 if (-1 == setpgrp(1, 1))
8440 if (setpgrp() != -1)
8446 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8447 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8449 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8450 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8453 echo "(I can't seem to compile and run the test program.)"
8455 xxx="a USG one, i.e. you use setpgrp()."
8457 # SVR4 systems can appear rather BSD-ish.
8460 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8464 xxx="probably a USG one, i.e. you use setpgrp()."
8469 echo "Assuming your setpgrp is $xxx" >&4
8477 : see if bzero exists
8481 : see if signal is declared as pointer to function returning int or void
8483 xxx=`./findhdr signal.h`
8484 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8485 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8486 echo "You have int (*signal())() instead of void." >&4
8488 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8489 echo "You have void (*signal())()." >&4
8491 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8492 echo "You have int (*signal())() instead of void." >&4
8494 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8495 echo "You have void (*signal())()." >&4
8498 case "$d_voidsig" in
8500 echo "I can't determine whether signal handler returns void or int..." >&4
8502 rp="What type does your signal handler return?"
8509 echo "As you already told me, signal handler returns void." >&4
8512 *) echo "As you already told me, signal handler returns int." >&4
8519 case "$d_voidsig" in
8520 "$define") signal_t="void";;
8525 : check for ability to cast large floats to 32-bit ints.
8527 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8528 if $test "$intsize" -ge 4; then
8535 #include <sys/types.h>
8537 $signal_t blech(s) int s; { exit(3); }
8544 signal(SIGFPE, blech);
8546 /* Don't let compiler optimize the test away. Store the number
8547 in a writable string for gcc to pass to sscanf under HP/UX.
8549 sprintf(str, "2147483647");
8550 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8554 /* x86 processors will probably give 0x8000 0000, which is a
8555 sign change. We don't want that. We want to mimic SPARC
8556 behavior here, which is to preserve the sign and give
8559 if (i32 != ($xxx) f)
8565 if eval $compile_ok; then
8569 echo "(I can't seem to compile the test program--assuming it can't)"
8577 echo "Nope, it can't."
8584 : check for ability to cast negative floats to unsigned
8586 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8589 #include <sys/types.h>
8591 $signal_t blech(s) int s; { exit(7); }
8592 $signal_t blech_in_list(s) int s; { exit(4); }
8593 unsigned long dummy_long(p) unsigned long p; { return p; }
8594 unsigned int dummy_int(p) unsigned int p; { return p; }
8595 unsigned short dummy_short(p) unsigned short p; { return p; }
8599 unsigned long along;
8601 unsigned short ashort;
8605 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8606 a direct f = -123. assignment. gcc-2.8.0 reportedly
8607 optimized the whole file away
8609 /* Store the number in a writable string for gcc to pass to
8612 sprintf(str, "-123");
8613 sscanf(str, "%lf", &f); /* f = -123.; */
8615 signal(SIGFPE, blech);
8616 along = (unsigned long)f;
8617 aint = (unsigned int)f;
8618 ashort = (unsigned short)f;
8619 if (along != (unsigned long)-123)
8621 if (aint != (unsigned int)-123)
8623 if (ashort != (unsigned short)-123)
8625 sprintf(str, "1073741824.");
8626 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8629 along = (unsigned long)f;
8630 if (along != 0x80000000)
8634 along = (unsigned long)f;
8635 if (along != 0x7fffffff)
8639 along = (unsigned long)f;
8640 if (along != 0x80000001)
8644 signal(SIGFPE, blech_in_list);
8645 sprintf(str, "123.");
8646 sscanf(str, "%lf", &f); /* f = 123.; */
8647 along = dummy_long((unsigned long)f);
8648 aint = dummy_int((unsigned int)f);
8649 ashort = dummy_short((unsigned short)f);
8650 if (along != (unsigned long)123)
8652 if (aint != (unsigned int)123)
8654 if (ashort != (unsigned short)123)
8661 if eval $compile_ok; then
8665 echo "(I can't seem to compile the test program--assuming it can't)"
8668 case "$castflags" in
8673 echo "Nope, it can't."
8680 : see if vprintf exists
8682 if set vprintf val -f d_vprintf; eval $csym; $val; then
8683 echo 'vprintf() found.' >&4
8685 $cat >vprintf.c <<'EOF'
8686 #include <varargs.h>
8688 int main() { xxx("foo"); }
8697 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8701 if eval $compile && ./vprintf; then
8702 echo "Your vsprintf() returns (int)." >&4
8705 echo "Your vsprintf() returns (char*)." >&4
8709 echo 'vprintf() NOT found.' >&4
8719 : see if chown exists
8723 : see if chroot exists
8727 : see if chsize exists
8731 hasstruct='varname=$1; struct=$2; shift; shift;
8732 while $test $# -ge 2; do
8734 $define) echo "#include <$2>";;
8738 echo "int main () { struct $struct foo; }" >> try.c;
8740 if eval $compile; then
8749 : see if sys/types.h has to be included
8750 set sys/types.h i_systypes
8753 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8754 while $test $# -ge 2; do
8756 $define) echo "#include <$2>";;
8760 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8762 if eval $compile; then
8773 : see whether socket exists
8775 $echo $n "Hmm... $c" >&4
8776 if set socket val -f d_socket; eval $csym; $val; then
8777 echo "Looks like you have Berkeley networking support." >&4
8779 if set setsockopt val -f; eval $csym; $val; then
8782 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8786 if $contains socklib libc.list >/dev/null 2>&1; then
8787 echo "Looks like you have Berkeley networking support." >&4
8789 : we will have to assume that it supports the 4.2 BSD interface
8792 echo "You don't have Berkeley networking in libc$_a..." >&4
8793 if test "X$d_socket" = "X$define"; then
8794 echo "...but you seem to believe that you have sockets." >&4
8796 for net in net socket
8798 if test -f /usr/lib/lib$net$_a; then
8799 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8800 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8801 if $contains socket libc.list >/dev/null 2>&1; then
8806 echo "...but the Wollongong group seems to have hacked it in." >&4
8807 sockethdr="-I/usr/netinclude"
8810 echo "Found Berkeley sockets interface in lib$net." >& 4
8811 if $contains setsockopt libc.list >/dev/null 2>&1; then
8814 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8821 if test "X$d_socket" != "X$define"; then
8822 echo "or anywhere else I see." >&4
8830 : see if socketpair exists
8831 set socketpair d_sockpair
8836 echo "Checking the availability of certain socket constants..." >& 4
8837 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8838 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8840 #include <sys/types.h>
8841 #include <sys/socket.h>
8847 set try; if eval $compile; then
8850 set d_${enum}; eval $setvar
8854 : see if this is a sys/uio.h system
8855 set sys/uio.h i_sysuio
8860 echo "Checking to see if your system supports struct cmsghdr..." >&4
8861 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
8863 case "$d_cmsghdr_s" in
8864 "$define") echo "Yes, it does." ;;
8865 *) echo "No, it doesn't." ;;
8869 : check for const keyword
8871 echo 'Checking to see if your C compiler knows about "const"...' >&4
8872 $cat >const.c <<'EOCP'
8873 typedef struct spug { int drokk; } spug;
8880 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8882 echo "Yup, it does."
8885 echo "Nope, it doesn't."
8890 : see if crypt exists
8892 if set crypt val -f d_crypt; eval $csym; $val; then
8893 echo 'crypt() found.' >&4
8897 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8898 if $test -z "$cryptlib"; then
8899 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8903 if $test -z "$cryptlib"; then
8904 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8908 if $test -z "$cryptlib"; then
8909 cryptlib=`./loc libcrypt$_a "" $libpth`
8913 if $test -z "$cryptlib"; then
8914 echo 'crypt() NOT found.' >&4
8923 : get csh whereabouts
8925 'csh') val="$undef" ;;
8930 : Respect a hint or command line value for full_csh.
8932 '') full_csh=$csh ;;
8935 : see if cuserid exists
8936 set cuserid d_cuserid
8939 : see if this is a limits.h system
8940 set limits.h i_limits
8943 : see if this is a float.h system
8947 : See if number of significant digits in a double precision number is known
8949 $cat >dbl_dig.c <<EOM
8959 printf("Contains DBL_DIG");
8962 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8963 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8964 echo "DBL_DIG found." >&4
8967 echo "DBL_DIG NOT found." >&4
8974 : see if difftime exists
8975 set difftime d_difftime
8978 : see if this is a dirent system
8980 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8982 echo "<dirent.h> found." >&4
8985 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8986 echo "<sys/dir.h> found." >&4
8989 xinc=`./findhdr sys/ndir.h`
8991 echo "<dirent.h> NOT found." >&4
8996 : Look for type of directory structure.
8998 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9000 case "$direntrytype" in
9003 $define) guess1='struct dirent' ;;
9004 *) guess1='struct direct' ;;
9007 *) guess1="$direntrytype"
9012 'struct dirent') guess2='struct direct' ;;
9013 *) guess2='struct dirent' ;;
9016 if $contains "$guess1" try.c >/dev/null 2>&1; then
9017 direntrytype="$guess1"
9018 echo "Your directory entries are $direntrytype." >&4
9019 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9020 direntrytype="$guess2"
9021 echo "Your directory entries seem to be $direntrytype." >&4
9023 echo "I don't recognize your system's directory entries." >&4
9024 rp="What type is used for directory entries on this system?"
9032 : see if the directory entry stores field length
9034 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9035 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9036 echo "Good, your directory entry keeps length information in d_namlen." >&4
9039 echo "Your directory entry does not know about the d_namlen field." >&4
9046 : see if dlerror exists
9049 set dlerror d_dlerror
9053 : see if dlfcn is available
9061 On a few systems, the dynamically loaded modules that perl generates and uses
9062 will need a different extension than shared libs. The default will probably
9070 rp='What is the extension of dynamically loaded modules'
9079 : Check if dlsym need a leading underscore
9085 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9086 $cat >dyna.c <<'EOM'
9095 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
9097 #include <sys/types.h>
9111 int mode = RTLD_LAZY ;
9113 handle = dlopen("./dyna.$dlext", mode) ;
9114 if (handle == NULL) {
9119 symbol = dlsym(handle, "fred") ;
9120 if (symbol == NULL) {
9121 /* try putting a leading underscore */
9122 symbol = dlsym(handle, "_fred") ;
9123 if (symbol == NULL) {
9136 : Call the object file tmp-dyna.o in case dlext=o.
9137 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9138 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
9139 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
9140 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
9143 1) echo "Test program failed using dlopen." >&4
9144 echo "Perhaps you should not use dynamic loading." >&4;;
9145 2) echo "Test program failed using dlsym." >&4
9146 echo "Perhaps you should not use dynamic loading." >&4;;
9147 3) echo "dlsym needs a leading underscore" >&4
9149 4) echo "dlsym doesn't need a leading underscore." >&4;;
9152 echo "I can't compile and run the test program." >&4
9153 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9158 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9163 hasproto='varname=$1; func=$2; shift; shift;
9164 while $test $# -ge 2; do
9166 $define) echo "#include <$2>";;
9170 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9171 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9172 echo "$func() prototype found.";
9175 echo "$func() prototype NOT found.";
9180 $rm -f try.c tryout.c'
9182 : see if prototype for drand48 is available
9184 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9187 : see if dup2 exists
9191 : see if eaccess exists
9192 set eaccess d_eaccess
9195 : see if endgrent exists
9196 set endgrent d_endgrent
9199 : see if endhostent exists
9200 set endhostent d_endhent
9203 : see if endnetent exists
9204 set endnetent d_endnent
9207 : see if endprotoent exists
9208 set endprotoent d_endpent
9211 : see if endpwent exists
9212 set endpwent d_endpwent
9215 : see if endservent exists
9216 set endservent d_endsent
9219 : Locate the flags for 'open()'
9221 $cat >open3.c <<'EOCP'
9222 #include <sys/types.h>
9227 #include <sys/file.h>
9238 : check sys/file.h first to get FREAD on Sun
9239 if $test `./findhdr sys/file.h` && \
9240 set open3 -DI_SYS_FILE && eval $compile; then
9242 echo "<sys/file.h> defines the O_* constants..." >&4
9244 echo "and you have the 3 argument form of open()." >&4
9247 echo "but not the 3 argument form of open(). Oh, well." >&4
9250 elif $test `./findhdr fcntl.h` && \
9251 set open3 -DI_FCNTL && eval $compile; then
9253 echo "<fcntl.h> defines the O_* constants..." >&4
9255 echo "and you have the 3 argument form of open()." >&4
9258 echo "but not the 3 argument form of open(). Oh, well." >&4
9263 echo "I can't find the O_* constant definitions! You got problems." >&4
9269 : see which of string.h or strings.h is needed
9271 strings=`./findhdr string.h`
9272 if $test "$strings" && $test -r "$strings"; then
9273 echo "Using <string.h> instead of <strings.h>." >&4
9277 strings=`./findhdr strings.h`
9278 if $test "$strings" && $test -r "$strings"; then
9279 echo "Using <strings.h> instead of <string.h>." >&4
9281 echo "No string header found -- You'll surely have problems." >&4
9287 "$undef") strings=`./findhdr strings.h`;;
9288 *) strings=`./findhdr string.h`;;
9291 : check for non-blocking I/O stuff
9292 case "$h_sysfile" in
9293 true) echo "#include <sys/file.h>" > head.c;;
9296 true) echo "#include <fcntl.h>" > head.c;;
9297 *) echo "#include <sys/fcntl.h>" > head.c;;
9302 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9303 case "$o_nonblock" in
9306 $cat >>try.c <<'EOCP'
9310 printf("O_NONBLOCK\n");
9314 printf("O_NDELAY\n");
9318 printf("FNDELAY\n");
9325 if eval $compile_ok; then
9327 case "$o_nonblock" in
9328 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9329 *) echo "Seems like we can use $o_nonblock.";;
9332 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9335 *) echo "Using $hint value $o_nonblock.";;
9337 $rm -f try try.* .out core
9340 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9346 #include <sys/types.h>
9349 #define MY_O_NONBLOCK $o_nonblock
9350 #ifndef errno /* XXX need better Configure test */
9361 #include <strings.h>
9363 $signal_t blech(x) int x; { exit(3); }
9365 $cat >> try.c <<'EOCP'
9373 pipe(pd); /* Down: child -> parent */
9374 pipe(pu); /* Up: parent -> child */
9377 close(pd[1]); /* Parent reads from pd[0] */
9378 close(pu[0]); /* Parent writes (blocking) to pu[1] */
9380 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9385 signal(SIGALRM, blech);
9387 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9389 sprintf(string, "%d\n", ret);
9390 write(2, string, strlen(string));
9393 if (errno == EAGAIN) {
9399 if (errno == EWOULDBLOCK)
9400 printf("EWOULDBLOCK\n");
9403 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9404 sleep(2); /* Give it time to close our pipe */
9406 ret = read(pd[0], buf, 1); /* Should read EOF */
9408 sprintf(string, "%d\n", ret);
9409 write(3, string, strlen(string));
9413 close(pd[0]); /* We write to pd[1] */
9414 close(pu[1]); /* We read from pu[0] */
9415 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9416 close(pd[1]); /* Pipe pd is now fully closed! */
9417 exit(0); /* Bye bye, thank you for playing! */
9421 if eval $compile_ok; then
9422 echo "$startsh" >mtry
9423 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9425 ./mtry >/dev/null 2>&1
9427 0) eagain=`$cat try.out`;;
9428 1) echo "Could not perform non-blocking setting!";;
9429 2) echo "I did a successful read() for something that was not there!";;
9430 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9431 4) echo "Could not find F_SETFL!";;
9432 *) echo "Something terribly wrong happened during testing.";;
9434 rd_nodata=`$cat try.ret`
9435 echo "A read() system call with no data present returns $rd_nodata."
9436 case "$rd_nodata" in
9439 echo "(That's peculiar, fixing that to be -1.)"
9445 echo "Forcing errno EAGAIN on read() with no data available."
9449 echo "Your read() sets errno to $eagain when no data is available."
9452 status=`$cat try.err`
9454 0) echo "And it correctly returns 0 to signal EOF.";;
9455 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9456 *) echo "However, your read() returns '$status' on EOF??";;
9459 if test "$status" = "$rd_nodata"; then
9460 echo "WARNING: you can't distinguish between EOF and no data!"
9464 echo "I can't compile the test program--assuming errno EAGAIN will do."
9471 echo "Using $hint value $eagain."
9472 echo "Your read() returns $rd_nodata when no data is present."
9473 case "$d_eofnblk" in
9474 "$define") echo "And you can see EOF because read() returns 0.";;
9475 "$undef") echo "But you can't see EOF status from read() returned value.";;
9477 echo "(Assuming you can't see EOF status from read anyway.)"
9483 $rm -f try try.* .out core head.c mtry
9485 : see if fchmod exists
9489 : see if fchown exists
9493 : see if this is an fcntl system
9498 : See if fcntl-based locking works.
9499 $cat >try.c <<'EOCP'
9504 #if defined(F_SETLK) && defined(F_SETLKW)
9507 fd = open("try.c", O_RDONLY);
9508 flock.l_type = F_RDLCK;
9509 flock.l_whence = SEEK_SET;
9510 flock.l_start = flock.l_len = 0;
9511 retval = fcntl(fd, F_SETLK, &flock);
9513 (retval < 0 ? exit(2) : exit(0));
9519 echo "Checking if fcntl-based file locking works... "
9523 if eval $compile_ok; then
9525 echo "Yes, it seems to work."
9528 echo "Nope, it didn't work."
9532 echo "I'm unable to compile the test program, so I'll assume not."
9537 echo "Nope, since you don't even have fcntl()."
9540 set d_fcntl_can_lock
9545 : see if sys/select.h has to be included
9546 set sys/select.h i_sysselct
9549 : see if we should include time.h, sys/time.h, or both
9551 if test "X$timeincl" = X; then
9552 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9553 $echo $n "I'm now running the test program...$c"
9554 $cat >try.c <<'EOCP'
9555 #include <sys/types.h>
9560 #ifdef SYSTIMEKERNEL
9563 #include <sys/time.h>
9566 #include <sys/select.h>
9575 struct timezone tzp;
9577 if (foo.tm_sec == foo.tm_sec)
9580 if (bar.tv_sec == bar.tv_sec)
9587 for s_timezone in '-DS_TIMEZONE' ''; do
9589 for s_timeval in '-DS_TIMEVAL' ''; do
9590 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9591 for i_time in '' '-DI_TIME'; do
9592 for i_systime in '-DI_SYSTIME' ''; do
9595 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9596 if eval $compile; then
9597 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9601 $echo $n "Succeeded with $flags$c"
9613 *SYSTIMEKERNEL*) i_systimek="$define"
9614 timeincl=`./findhdr sys/time.h`
9615 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9616 *) i_systimek="$undef";;
9619 *I_TIME*) i_time="$define"
9620 timeincl=`./findhdr time.h`" $timeincl"
9621 echo "We'll include <time.h>." >&4;;
9622 *) i_time="$undef";;
9625 *I_SYSTIME*) i_systime="$define"
9626 timeincl=`./findhdr sys/time.h`" $timeincl"
9627 echo "We'll include <sys/time.h>." >&4;;
9628 *) i_systime="$undef";;
9633 : check for fd_set items
9636 Checking to see how well your C compiler handles fd_set and friends ...
9638 $cat >fd_set.c <<EOCP
9639 #$i_systime I_SYS_TIME
9640 #$i_sysselct I_SYS_SELECT
9641 #$d_socket HAS_SOCKET
9642 #include <sys/types.h>
9644 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9647 #include <sys/time.h>
9650 #include <sys/select.h>
9659 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9666 set fd_set -DTRYBITS
9667 if eval $compile; then
9668 d_fds_bits="$define"
9670 echo "Well, your system knows about the normal fd_set typedef..." >&4
9672 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9673 d_fd_macros="$define"
9676 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9678 d_fd_macros="$undef"
9682 Hmm, your compiler has some difficulty with fd_set. Checking further...
9685 if eval $compile; then
9688 echo "Well, your system has some sort of fd_set available..." >&4
9690 echo "and you have the normal fd_set macros." >&4
9691 d_fd_macros="$define"
9694 but not the normal fd_set macros! Gross! More work for me...
9696 d_fd_macros="$undef"
9699 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9702 d_fd_macros="$undef"
9707 : see if fgetpos exists
9708 set fgetpos d_fgetpos
9711 : see if flock exists
9715 : see if fork exists
9719 : see if pathconf exists
9720 set pathconf d_pathconf
9723 : see if fpathconf exists
9724 set fpathconf d_fpathconf
9728 : check for fpos64_t
9730 echo "Checking to see if you have fpos64_t..." >&4
9733 int main() { fpos64_t x = 7; }
9736 if eval $compile; then
9738 echo "You have fpos64_t."
9741 echo "You do not have fpos64_t."
9743 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9750 : see if frexpl exists
9754 : see if this is a sys/param system
9755 set sys/param.h i_sysparam
9758 : see if this is a sys/mount.h system
9759 set sys/mount.h i_sysmount
9764 echo "Checking to see if your system supports struct fs_data..." >&4
9765 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9767 case "$d_fs_data_s" in
9768 "$define") echo "Yes, it does." ;;
9769 *) echo "No, it doesn't." ;;
9772 : see if fseeko exists
9776 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9779 : see if fsetpos exists
9780 set fsetpos d_fsetpos
9784 : see if fstatfs exists
9785 set fstatfs d_fstatfs
9789 : see if statvfs exists
9790 set statvfs d_statvfs
9793 : see if fstatvfs exists
9794 set fstatvfs d_fstatvfs
9798 : see if fsync exists
9802 : see if ftello exists
9806 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9809 : see if getcwd exists
9813 : see if getespwnam exists
9814 set getespwnam d_getespwnam
9818 : see if getfsstat exists
9819 set getfsstat d_getfsstat
9822 : see if getgrent exists
9823 set getgrent d_getgrent
9826 : see if gethostbyaddr exists
9827 set gethostbyaddr d_gethbyaddr
9830 : see if gethostbyname exists
9831 set gethostbyname d_gethbyname
9834 : see if gethostent exists
9835 set gethostent d_gethent
9838 : see how we will look up host name
9841 if set gethostname val -f d_gethname; eval $csym; $val; then
9842 echo 'gethostname() found.' >&4
9843 d_gethname="$define"
9846 if set uname val -f d_uname; eval $csym; $val; then
9849 uname() was found, but you're running xenix, and older versions of xenix
9850 have a broken uname(). If you don't really know whether your xenix is old
9851 enough to have a broken system call, use the default answer.
9858 rp='Is your uname() broken?'
9861 n*) d_uname="$define"; call=uname;;
9864 echo 'uname() found.' >&4
9871 case "$d_gethname" in
9872 '') d_gethname="$undef";;
9875 '') d_uname="$undef";;
9877 case "$d_uname$d_gethname" in
9882 Every now and then someone has a $call() that lies about the hostname
9883 but can't be fixed for political or economic reasons. If you wish, I can
9884 pretend $call() isn't there and maybe compute hostname at run-time
9885 thanks to the '$phostname' command.
9888 rp="Shall I ignore $call() from now on?"
9891 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9894 case "$phostname" in
9896 *) case "$aphostname" in
9902 file=`./loc $file $file $pth`
9903 aphostname=`echo $file $*`
9908 case "$d_uname$d_gethname" in
9911 case "$phostname" in
9913 echo "There will be no way for $package to get your hostname." >&4;;
9915 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9919 case "$d_phostname" in
9920 '') d_phostname="$undef";;
9923 : see if this is a netdb.h system
9927 : see if prototypes for various gethostxxx netdb.h functions are available
9929 set d_gethostprotos gethostent $i_netdb netdb.h
9932 : see if getitimer exists
9933 set getitimer d_getitimer
9936 : see if getlogin exists
9937 set getlogin d_getlogin
9940 : see if getmnt exists
9944 : see if getmntent exists
9945 set getmntent d_getmntent
9948 : see if getnetbyaddr exists
9949 set getnetbyaddr d_getnbyaddr
9952 : see if getnetbyname exists
9953 set getnetbyname d_getnbyname
9956 : see if getnetent exists
9957 set getnetent d_getnent
9960 : see if prototypes for various getnetxxx netdb.h functions are available
9962 set d_getnetprotos getnetent $i_netdb netdb.h
9965 : see if getpagesize exists
9966 set getpagesize d_getpagsz
9970 : see if getprotobyname exists
9971 set getprotobyname d_getpbyname
9974 : see if getprotobynumber exists
9975 set getprotobynumber d_getpbynumber
9978 : see if getprotoent exists
9979 set getprotoent d_getpent
9982 : see if getpgid exists
9983 set getpgid d_getpgid
9986 : see if getpgrp2 exists
9987 set getpgrp2 d_getpgrp2
9990 : see if getppid exists
9991 set getppid d_getppid
9994 : see if getpriority exists
9995 set getpriority d_getprior
9998 : see if prototypes for various getprotoxxx netdb.h functions are available
10000 set d_getprotoprotos getprotoent $i_netdb netdb.h
10003 : see if getprpwnam exists
10004 set getprpwnam d_getprpwnam
10007 : see if getpwent exists
10008 set getpwent d_getpwent
10012 : see if getservbyname exists
10013 set getservbyname d_getsbyname
10016 : see if getservbyport exists
10017 set getservbyport d_getsbyport
10020 : see if getservent exists
10021 set getservent d_getsent
10024 : see if prototypes for various getservxxx netdb.h functions are available
10026 set d_getservprotos getservent $i_netdb netdb.h
10029 : see if getspnam exists
10030 set getspnam d_getspnam
10033 : see if gettimeofday or ftime exists
10034 set gettimeofday d_gettimeod
10036 case "$d_gettimeod" in
10042 val="$undef"; set d_ftime; eval $setvar
10045 case "$d_gettimeod$d_ftime" in
10048 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10052 : see if this is an grp system
10058 xxx=`./findhdr grp.h`
10059 $cppstdin $cppflags $cppminus < $xxx >$$.h
10061 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10073 set d_grpasswd; eval $setvar
10077 : see if hasmntopt exists
10078 set hasmntopt d_hasmntopt
10081 : see if this is a netinet/in.h or sys/in.h system
10082 set netinet/in.h i_niin sys/in.h i_sysin
10085 : see if arpa/inet.h has to be included
10086 set arpa/inet.h i_arpainet
10089 : see if htonl --and friends-- exists
10094 : Maybe they are macros.
10097 $cat >htonl.c <<EOM
10099 #include <sys/types.h>
10100 #$i_niin I_NETINET_IN
10102 #$i_arpainet I_ARPA_INET
10103 #ifdef I_NETINET_IN
10104 #include <netinet/in.h>
10107 #include <sys/in.h>
10110 #include <arpa/inet.h>
10113 printf("Defined as a macro.");
10116 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10117 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10119 echo "But it seems to be defined as a macro." >&4
10127 : see if iconv exists
10133 if set index val -f; eval $csym; $val; then
10134 if set strchr val -f d_strchr; eval $csym; $val; then
10135 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10138 echo "strchr() found." >&4
10142 echo "index() found." >&4
10147 echo "index() found." >&4
10150 if set strchr val -f d_strchr; eval $csym; $val; then
10153 echo "strchr() found." >&4
10155 echo "No index() or strchr() found!" >&4
10160 set d_strchr; eval $setvar
10162 set d_index; eval $setvar
10164 : check whether inet_aton exists
10165 set inet_aton d_inetaton
10170 $cat >isascii.c <<'EOCP'
10182 if eval $compile; then
10183 echo "isascii() found." >&4
10186 echo "isascii() NOT found." >&4
10193 : see if isnan exists
10197 : see if isnanl exists
10198 set isnanl d_isnanl
10201 : see if killpg exists
10202 set killpg d_killpg
10205 : see if lchown exists
10207 $cat > try.c <<'EOCP'
10208 /* System header to define __stub macros and hopefully few prototypes,
10209 which can conflict with char lchown(); below. */
10210 #include <assert.h>
10211 /* Override any gcc2 internal prototype to avoid an error. */
10212 /* We use char because int might match the return type of a gcc2
10213 builtin and then its argument prototype would still apply. */
10216 /* The GNU C library defines this for functions which it implements
10217 to always fail with ENOSYS. Some functions are actually named
10218 something starting with __ and the normal name is an alias. */
10219 #if defined (__stub_lchown) || defined (__stub___lchown)
10227 if eval $compile; then
10228 $echo "lchown() found." >&4
10231 $echo "lchown() NOT found." >&4
10237 : See if number of significant digits in a double precision number is known
10239 $cat >ldbl_dig.c <<EOM
10240 #$i_limits I_LIMITS
10243 #include <limits.h>
10249 printf("Contains LDBL_DIG");
10252 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10253 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10254 echo "LDBL_DIG found." >&4
10257 echo "LDBL_DIG NOT found." >&4
10264 : see if link exists
10268 : see if localeconv exists
10269 set localeconv d_locconv
10272 : see if lockf exists
10276 : see if prototype for lseek is available
10278 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10281 : see if lstat exists
10285 : see if madvise exists
10286 set madvise d_madvise
10289 : see if mblen exists
10293 : see if mbstowcs exists
10294 set mbstowcs d_mbstowcs
10297 : see if mbtowc exists
10298 set mbtowc d_mbtowc
10301 : see if memchr exists
10302 set memchr d_memchr
10305 : see if memcmp exists
10306 set memcmp d_memcmp
10309 : see if memcpy exists
10310 set memcpy d_memcpy
10313 : see if memmove exists
10314 set memmove d_memmove
10317 : see if memset exists
10318 set memset d_memset
10321 : see if mkdir exists
10325 : see if mkdtemp exists
10326 set mkdtemp d_mkdtemp
10329 : see if mkfifo exists
10330 set mkfifo d_mkfifo
10333 : see if mkstemp exists
10334 set mkstemp d_mkstemp
10337 : see if mkstemps exists
10338 set mkstemps d_mkstemps
10341 : see if mktime exists
10342 set mktime d_mktime
10345 : see if this is a sys/mman.h system
10346 set sys/mman.h i_sysmman
10349 : see if mmap exists
10352 : see what shmat returns
10353 : default to something harmless
10355 case "$i_sysmman$d_mmap" in
10357 $cat >mmap.c <<'END'
10358 #include <sys/mman.h>
10361 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10366 echo "and it returns ($mmaptype)." >&4
10372 : see if modfl exists
10376 : see if mprotect exists
10377 set mprotect d_mprotect
10380 : see if msgctl exists
10381 set msgctl d_msgctl
10384 : see if msgget exists
10385 set msgget d_msgget
10388 : see if msgsnd exists
10389 set msgsnd d_msgsnd
10392 : see if msgrcv exists
10393 set msgrcv d_msgrcv
10396 : see how much of the 'msg*(2)' library is present.
10399 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10400 *"$undef"*) h_msg=false;;
10404 case "`ipcs 2>&1`" in
10405 "SVID messages"*"not configured"*)
10406 echo "Your $osname does not have the msg*(2) configured." >&4
10409 set msgctl d_msgctl
10411 set msgget d_msgget
10413 set msgsnd d_msgsnd
10415 set msgrcv d_msgrcv
10421 : we could also check for sys/ipc.h ...
10422 if $h_msg && $test `./findhdr sys/msg.h`; then
10423 echo "You have the full msg*(2) library." >&4
10426 echo "You don't have the full msg*(2) library." >&4
10434 echo "Checking to see if your system supports struct msghdr..." >&4
10435 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10437 case "$d_msghdr_s" in
10438 "$define") echo "Yes, it does." ;;
10439 *) echo "No, it doesn't." ;;
10443 : see if msync exists
10447 : see if munmap exists
10448 set munmap d_munmap
10451 : see if nice exists
10455 : check for length of character
10457 case "$charsize" in
10459 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10460 $cat >try.c <<'EOCP'
10464 printf("%d\n", (int)sizeof(char));
10469 if eval $compile_ok; then
10473 echo "(I can't seem to compile the test program. Guessing...)"
10480 rp="What is the size of a character (in bytes)?"
10485 : check for volatile keyword
10487 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10488 $cat >try.c <<'EOCP'
10491 typedef struct _goo_struct goo_struct;
10492 goo_struct * volatile goo = ((goo_struct *)0);
10493 struct _goo_struct {
10498 typedef unsigned short foo_t;
10499 char *volatile foo;
10501 volatile foo_t blech;
10505 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10507 echo "Yup, it does."
10510 echo "Nope, it doesn't."
10518 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10520 case "$use64bitint:$d_quad:$quadtype" in
10523 uvtype="$uquadtype"
10528 uvtype="unsigned long"
10534 case "$uselongdouble:$d_longdbl" in
10536 nvtype="long double"
10537 nvsize=$longdblsize
10544 $echo "(IV will be "$ivtype", $ivsize bytes)"
10545 $echo "(UV will be "$uvtype", $uvsize bytes)"
10546 $echo "(NV will be "$nvtype", $nvsize bytes)"
10549 #$i_inttypes I_INTTYPES
10551 #include <inttypes.h>
10556 int8_t i = INT8_MAX;
10557 uint8_t u = UINT8_MAX;
10558 printf("int8_t\n");
10561 int16_t i = INT16_MAX;
10562 uint16_t i = UINT16_MAX;
10563 printf("int16_t\n");
10566 int32_t i = INT32_MAX;
10567 uint32_t u = UINT32_MAX;
10568 printf("int32_t\n");
10574 '') case "$charsize" in
10576 u8type="unsigned char"
10585 if eval $compile; then
10586 case "`./try$exe_ext`" in
10587 int8_t) i8type=int8_t
10597 '') if $test $charsize -ge 1; then
10599 u8type="unsigned char"
10607 '') case "$shortsize" in
10609 u16type="unsigned short"
10617 '') set try -DINT16
10618 if eval $compile; then
10619 case "`./try$exe_ext`" in
10631 '') if $test $shortsize -ge 2; then
10633 u16type="unsigned short"
10641 '') case "$longsize" in
10643 u32type="unsigned long"
10647 *) case "$intsize" in
10649 u32type="unsigned int"
10659 '') set try -DINT32
10660 if eval $compile; then
10661 case "`./try$exe_ext`" in
10673 '') if $test $intsize -ge 4; then
10675 u32type="unsigned int"
10683 '') case "$d_quad:$quadtype" in
10685 i64type="$quadtype"
10686 u64type="$uquadtype"
10694 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10695 : volatile so that the compiler has to store it out to memory.
10696 if test X"$d_volatile" = X"$define"; then
10701 #include <sys/types.h>
10702 #include <signal.h>
10704 $volatile int bletched = 0;
10705 $signal_t blech(s) int s; { bletched = 1; }
10710 int n = 8 * $uvsize;
10713 signal(SIGFPE, blech);
10716 for (i = 0; i < n; i++) {
10717 u = u << 1 | ($uvtype)1;
10719 if (($uvtype)d != u)
10723 d = ($nvtype)(u - 1);
10724 if (($uvtype)d != (u - 1))
10732 printf("%d\n", ((i == n) ? -n : i));
10738 d_nv_preserves_uv="$undef"
10739 if eval $compile; then
10740 d_nv_preserves_uv_bits="`./try$exe_ext`"
10742 case "$d_nv_preserves_uv_bits" in
10744 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10745 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10746 d_nv_preserves_uv="$define"
10748 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10749 d_nv_preserves_uv="$undef" ;;
10750 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10751 d_nv_preserves_uv_bits="$undef" ;;
10757 : check for off64_t
10759 echo "Checking to see if you have off64_t..." >&4
10761 #include <sys/types.h>
10762 #include <unistd.h>
10763 int main() { off64_t x = 7; }
10766 if eval $compile; then
10768 echo "You have off64_t."
10771 echo "You do not have off64_t."
10772 case "$lseeksize" in
10773 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10780 : see if POSIX threads are available
10781 set pthread.h i_pthread
10787 : how to create joinable pthreads
10788 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10790 echo "Checking what constant to use for creating joinable pthreads..." >&4
10791 $cat >try.c <<'EOCP'
10792 #include <pthread.h>
10794 int detachstate = JOINABLE;
10797 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10798 if eval $compile; then
10799 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10800 val="$undef" # Yes, undef.
10801 set d_old_pthread_create_joinable
10804 set old_pthread_create_joinable
10807 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10808 if eval $compile; then
10809 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10811 set d_old_pthread_create_joinable
10813 val=PTHREAD_CREATE_UNDETACHED
10814 set old_pthread_create_joinable
10817 set try -DJOINABLE=__UNDETACHED
10818 if eval $compile; then
10819 echo "You seem to use __UNDETACHED." >&4
10821 set d_old_pthread_create_joinable
10824 set old_pthread_create_joinable
10827 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10829 set d_old_pthread_create_joinable
10832 set old_pthread_create_joinable
10839 d_old_pthread_create_joinable="$undef"
10840 old_pthread_create_joinable=""
10843 : see if pause exists
10847 : see if pipe exists
10851 : see if poll exists
10856 : see whether the various POSIXish _yields exist
10858 #include <pthread.h>
10864 #ifdef PTHREAD_YIELD
10867 #ifdef PTHREAD_YIELD_NULL
10868 pthread_yield(NULL);
10874 : see if sched_yield exists
10875 set try -DSCHED_YIELD
10876 if eval $compile; then
10878 sched_yield='sched_yield()'
10882 case "$usethreads" in
10885 $define) echo 'sched_yield() found.' >&4 ;;
10886 *) echo 'sched_yield() NOT found.' >&4 ;;
10892 : see if pthread_yield exists
10893 set try -DPTHREAD_YIELD
10894 if eval $compile; then
10896 case "$sched_yield" in
10897 '') sched_yield='pthread_yield()' ;;
10900 set try -DPTHREAD_YIELD_NULL
10901 if eval $compile; then
10903 case "$sched_yield" in
10904 '') sched_yield='pthread_yield(NULL)' ;;
10910 case "$usethreads" in
10913 $define) echo 'pthread_yield() found.' >&4 ;;
10914 *) echo 'pthread_yield() NOT found.' >&4 ;;
10918 set d_pthread_yield
10921 case "$sched_yield" in
10922 '') sched_yield=undef ;;
10927 : see if this is a pwd.h system
10933 xxx=`./findhdr pwd.h`
10934 $cppstdin $cppflags $cppminus < $xxx >$$.h
10936 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10944 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10952 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10960 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10968 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10976 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10984 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10992 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11004 set d_pwquota; eval $setvar
11005 set d_pwage; eval $setvar
11006 set d_pwchange; eval $setvar
11007 set d_pwclass; eval $setvar
11008 set d_pwexpire; eval $setvar
11009 set d_pwcomment; eval $setvar
11010 set d_pwgecos; eval $setvar
11011 set d_pwpasswd; eval $setvar
11015 : see if readdir and friends exist
11016 set readdir d_readdir
11018 set seekdir d_seekdir
11020 set telldir d_telldir
11022 set rewinddir d_rewinddir
11025 : see if readlink exists
11026 set readlink d_readlink
11029 : see if readv exists
11033 : see if recvmsg exists
11034 set recvmsg d_recvmsg
11037 : see if rename exists
11038 set rename d_rename
11041 : see if rmdir exists
11045 : see if memory.h is available.
11050 : See if it conflicts with string.h
11056 $cppstdin $cppflags $cppminus < $strings > mem.h
11057 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11059 echo "We won't be including <memory.h>."
11069 : can bcopy handle overlapping blocks?
11074 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
11076 #$i_memory I_MEMORY
11077 #$i_stdlib I_STDLIB
11078 #$i_string I_STRING
11079 #$i_unistd I_UNISTD
11081 $cat >>try.c <<'EOCP'
11084 # include <memory.h>
11087 # include <stdlib.h>
11090 # include <string.h>
11092 # include <strings.h>
11095 # include <unistd.h> /* Needed for NetBSD */
11099 char buf[128], abc[128];
11105 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11107 for (align = 7; align >= 0; align--) {
11108 for (len = 36; len; len--) {
11110 bcopy(abc, b, len);
11111 for (off = 1; off <= len; off++) {
11112 bcopy(b, b+off, len);
11113 bcopy(b+off, b, len);
11114 if (bcmp(b, abc, len))
11123 if eval $compile_ok; then
11124 if ./try 2>/dev/null; then
11125 echo "Yes, it can."
11128 echo "It can't, sorry."
11129 case "$d_memmove" in
11130 "$define") echo "But that's Ok since you have memmove()." ;;
11134 echo "(I can't compile the test program, so we'll assume not...)"
11135 case "$d_memmove" in
11136 "$define") echo "But that's Ok since you have memmove()." ;;
11141 $rm -f try.* try core
11145 : can memcpy handle overlapping blocks?
11147 case "$d_memcpy" in
11150 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
11152 #$i_memory I_MEMORY
11153 #$i_stdlib I_STDLIB
11154 #$i_string I_STRING
11155 #$i_unistd I_UNISTD
11157 $cat >>try.c <<'EOCP'
11160 # include <memory.h>
11163 # include <stdlib.h>
11166 # include <string.h>
11168 # include <strings.h>
11171 # include <unistd.h> /* Needed for NetBSD */
11175 char buf[128], abc[128];
11181 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11182 try to store the string in read-only memory. */
11183 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11185 for (align = 7; align >= 0; align--) {
11186 for (len = 36; len; len--) {
11188 memcpy(b, abc, len);
11189 for (off = 1; off <= len; off++) {
11190 memcpy(b+off, b, len);
11191 memcpy(b, b+off, len);
11192 if (memcmp(b, abc, len))
11201 if eval $compile_ok; then
11202 if ./try 2>/dev/null; then
11203 echo "Yes, it can."
11206 echo "It can't, sorry."
11207 case "$d_memmove" in
11208 "$define") echo "But that's Ok since you have memmove()." ;;
11212 echo "(I can't compile the test program, so we'll assume not...)"
11213 case "$d_memmove" in
11214 "$define") echo "But that's Ok since you have memmove()." ;;
11219 $rm -f try.* try core
11223 : can memcmp be trusted to compare relative magnitude?
11225 case "$d_memcmp" in
11228 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11230 #$i_memory I_MEMORY
11231 #$i_stdlib I_STDLIB
11232 #$i_string I_STRING
11233 #$i_unistd I_UNISTD
11235 $cat >>try.c <<'EOCP'
11238 # include <memory.h>
11241 # include <stdlib.h>
11244 # include <string.h>
11246 # include <strings.h>
11249 # include <unistd.h> /* Needed for NetBSD */
11255 if ((a < b) && memcmp(&a, &b, 1) < 0)
11261 if eval $compile_ok; then
11262 if ./try 2>/dev/null; then
11263 echo "Yes, it can."
11266 echo "No, it can't (it uses signed chars)."
11269 echo "(I can't compile the test program, so we'll assume not...)"
11273 $rm -f try.* try core
11277 : see if prototype for sbrk is available
11279 set d_sbrkproto sbrk $i_unistd unistd.h
11282 : see if select exists
11283 set select d_select
11286 : see if semctl exists
11287 set semctl d_semctl
11290 : see if semget exists
11291 set semget d_semget
11294 : see if semop exists
11298 : see how much of the 'sem*(2)' library is present.
11301 case "$d_semctl$d_semget$d_semop" in
11302 *"$undef"*) h_sem=false;;
11306 case "`ipcs 2>&1`" in
11307 "SVID messages"*"not configured"*)
11308 echo "Your $osname does not have the sem*(2) configured." >&4
11311 set semctl d_semctl
11313 set semget d_semget
11321 : we could also check for sys/ipc.h ...
11322 if $h_sem && $test `./findhdr sys/sem.h`; then
11323 echo "You have the full sem*(2) library." >&4
11326 echo "You don't have the full sem*(2) library." >&4
11332 : see whether sys/sem.h defines union semun
11334 $cat > try.c <<'END'
11335 #include <sys/types.h>
11336 #include <sys/ipc.h>
11337 #include <sys/sem.h>
11338 int main () { union semun semun; semun.buf = 0; }
11341 if eval $compile; then
11342 echo "You have union semun in <sys/sem.h>." >&4
11345 echo "You do not have union semun in <sys/sem.h>." >&4
11348 $rm -f try try.c try.h
11352 : see how to do semctl IPC_STAT
11355 : see whether semctl IPC_STAT can use union semun
11360 # define S_IRUSR S_IREAD
11361 # define S_IWUSR S_IWRITE
11362 # define S_IXUSR S_IEXEC
11364 # define S_IRUSR 0400
11365 # define S_IWUSR 0200
11366 # define S_IXUSR 0100
11368 # define S_IRGRP (S_IRUSR>>3)
11369 # define S_IWGRP (S_IWUSR>>3)
11370 # define S_IXGRP (S_IXUSR>>3)
11371 # define S_IROTH (S_IRUSR>>6)
11372 # define S_IWOTH (S_IWUSR>>6)
11373 # define S_IXOTH (S_IXUSR>>6)
11376 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11377 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11378 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11383 #include <sys/types.h>
11384 #include <sys/ipc.h>
11385 #include <sys/sem.h>
11386 #include <sys/stat.h>
11393 #$d_union_semun HAS_UNION_SEMUN
11396 #ifndef HAS_UNION_SEMUN
11399 struct semid_ds *buf;
11400 unsigned short *array;
11406 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11407 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11409 struct semid_ds argbuf;
11412 st = semctl(sem, 0, IPC_STAT, arg);
11416 # endif /* IPC_STAT */
11417 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11419 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11420 # endif /* IPC_RMID */
11421 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11423 #endif /* IPC_PRIVATE && ... */
11424 printf("semget failed: errno = %d\n", errno);
11430 if eval $compile; then
11433 semun) val="$define" ;;
11439 case "$d_semctl_semun" in
11441 echo "You can use union semun for semctl IPC_STAT." >&4
11444 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11449 : see whether semctl IPC_STAT can use struct semid_ds pointer
11450 $cat > try.c <<'END'
11451 #include <sys/types.h>
11452 #include <sys/ipc.h>
11453 #include <sys/sem.h>
11454 #include <sys/stat.h>
11462 struct semid_ds arg;
11465 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11466 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11469 st = semctl(sem, 0, IPC_STAT, &arg);
11471 printf("semid_ds\n");
11473 # endif /* IPC_STAT */
11474 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11476 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11477 # endif /* IPC_RMID */
11478 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11480 #endif /* IPC_PRIVATE && ... */
11481 printf("semget failed: errno = %d\n", errno);
11488 if eval $compile; then
11491 semid_ds) val="$define" ;;
11495 set d_semctl_semid_ds
11497 case "$d_semctl_semid_ds" in
11499 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11501 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11508 # We do not have the full sem*(2) library, so assume we can not
11514 set d_semctl_semid_ds
11519 : see if sendmsg exists
11520 set sendmsg d_sendmsg
11523 : see if setegid exists
11524 set setegid d_setegid
11527 : see if seteuid exists
11528 set seteuid d_seteuid
11531 : see if setgrent exists
11532 set setgrent d_setgrent
11535 : see if sethostent exists
11536 set sethostent d_sethent
11539 : see if setitimer exists
11540 set setitimer d_setitimer
11543 : see if setlinebuf exists
11544 set setlinebuf d_setlinebuf
11547 : see if setlocale exists
11548 set setlocale d_setlocale
11551 : see if setnetent exists
11552 set setnetent d_setnent
11555 : see if setprotoent exists
11556 set setprotoent d_setpent
11559 : see if setpgid exists
11560 set setpgid d_setpgid
11563 : see if setpgrp2 exists
11564 set setpgrp2 d_setpgrp2
11567 : see if setpriority exists
11568 set setpriority d_setprior
11571 : see if setproctitle exists
11572 set setproctitle d_setproctitle
11575 : see if setpwent exists
11576 set setpwent d_setpwent
11579 : see if setregid exists
11580 set setregid d_setregid
11582 set setresgid d_setresgid
11585 : see if setreuid exists
11586 set setreuid d_setreuid
11588 set setresuid d_setresuid
11591 : see if setrgid exists
11592 set setrgid d_setrgid
11595 : see if setruid exists
11596 set setruid d_setruid
11599 : see if setservent exists
11600 set setservent d_setsent
11603 : see if setsid exists
11604 set setsid d_setsid
11607 : see if setvbuf exists
11608 set setvbuf d_setvbuf
11611 : see if sfio.h is available
11616 : see if sfio library is available
11627 : Ok, but do we want to use it.
11631 true|$define|[yY]*) dflt='y';;
11634 echo "$package can use the sfio library, but it is experimental."
11635 case "$useperlio" in
11637 echo "For sfio also the PerlIO abstraction layer is needed."
11638 echo "Earlier you said you wouldn't want that."
11641 rp="You seem to have sfio available, do you want to try using it?"
11644 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11645 useperlio="$define"
11648 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11653 *) case "$usesfio" in
11654 true|$define|[yY]*)
11655 echo "Sorry, cannot find sfio on this machine." >&4
11656 echo "Ignoring your setting of usesfio=$usesfio." >&4
11665 $define) usesfio='true';;
11666 *) usesfio='false';;
11670 *) : Remove sfio from list of libraries to use
11671 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11674 echo "libs = $libs" >&4
11679 : see if shmctl exists
11680 set shmctl d_shmctl
11683 : see if shmget exists
11684 set shmget d_shmget
11687 : see if shmat exists
11690 : see what shmat returns
11693 $cat >shmat.c <<'END'
11694 #include <sys/shm.h>
11697 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11702 echo "and it returns ($shmattype)." >&4
11703 : see if a prototype for shmat is available
11704 xxx=`./findhdr sys/shm.h`
11705 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11706 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11717 set d_shmatprototype
11720 : see if shmdt exists
11724 : see how much of the 'shm*(2)' library is present.
11727 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11728 *"$undef"*) h_shm=false;;
11732 case "`ipcs 2>&1`" in
11733 "SVID shared memory"*"not configured"*)
11734 echo "Your $osname does not have the shm*(2) configured." >&4
11737 set shmctl d_shmctl
11739 set shmget d_shmget
11749 : we could also check for sys/ipc.h ...
11750 if $h_shm && $test `./findhdr sys/shm.h`; then
11751 echo "You have the full shm*(2) library." >&4
11754 echo "You don't have the full shm*(2) library." >&4
11761 : see if we have sigaction
11762 if set sigaction val -f d_sigaction; eval $csym; $val; then
11763 echo 'sigaction() found.' >&4
11764 $cat > try.c <<'EOP'
11766 #include <sys/types.h>
11767 #include <signal.h>
11770 struct sigaction act, oact;
11772 oact.sa_handler = 0;
11773 /* so that act and oact are used */
11774 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11778 if eval $compile_ok; then
11781 echo "But you don't seem to have a useable struct sigaction." >&4
11785 echo 'sigaction NOT found.' >&4
11788 set d_sigaction; eval $setvar
11789 $rm -f try try$_o try.c
11791 : see if sigprocmask exists
11792 set sigprocmask d_sigprocmask
11795 : see if sigsetjmp exists
11797 case "$d_sigsetjmp" in
11799 $cat >try.c <<'EOP'
11800 #include <setjmp.h>
11805 if (sigsetjmp(env,1))
11808 siglongjmp(env, 1);
11813 if eval $compile; then
11814 if ./try >/dev/null 2>&1; then
11815 echo "POSIX sigsetjmp found." >&4
11819 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11825 echo "sigsetjmp not found." >&4
11829 *) val="$d_sigsetjmp"
11830 case "$d_sigsetjmp" in
11831 $define) echo "POSIX sigsetjmp found." >&4;;
11832 $undef) echo "sigsetjmp not found." >&4;;
11840 : see if sockatmark exists
11841 set sockatmark d_sockatmark
11844 : see if socks5_init exists
11845 set socks5_init d_socks5_init
11848 : see if sys/stat.h is available
11849 set sys/stat.h i_sysstat
11853 : see if stat knows about block sizes
11855 echo "Checking to see if your struct stat has st_blocks field..." >&4
11856 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11860 : see if this is a sys/vfs.h system
11861 set sys/vfs.h i_sysvfs
11865 : see if this is a sys/statfs.h system
11866 set sys/statfs.h i_sysstatfs
11871 echo "Checking to see if your system supports struct statfs..." >&4
11872 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
11874 case "$d_statfs_s" in
11875 "$define") echo "Yes, it does." ;;
11876 *) echo "No, it doesn't." ;;
11881 : see if struct statfs knows about f_flags
11882 case "$d_statfs_s" in
11885 echo "Checking to see if your struct statfs has f_flags field..." >&4
11886 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
11890 set d_statfs_f_flags
11894 case "$d_statfs_f_flags" in
11895 "$define") echo "Yes, it does." ;;
11896 *) echo "No, it doesn't." ;;
11899 : see if _ptr and _cnt from stdio act std
11902 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11903 echo "(Looks like you have stdio.h from BSD.)"
11904 case "$stdio_ptr" in
11905 '') stdio_ptr='((fp)->_p)'
11908 *) ptr_lval=$d_stdio_ptr_lval;;
11910 case "$stdio_cnt" in
11911 '') stdio_cnt='((fp)->_r)'
11914 *) cnt_lval=$d_stdio_cnt_lval;;
11916 case "$stdio_base" in
11917 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11919 case "$stdio_bufsiz" in
11920 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11922 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11923 echo "(Looks like you have stdio.h from Linux.)"
11924 case "$stdio_ptr" in
11925 '') stdio_ptr='((fp)->_IO_read_ptr)'
11928 *) ptr_lval=$d_stdio_ptr_lval;;
11930 case "$stdio_cnt" in
11931 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11934 *) cnt_lval=$d_stdio_cnt_lval;;
11936 case "$stdio_base" in
11937 '') stdio_base='((fp)->_IO_read_base)';;
11939 case "$stdio_bufsiz" in
11940 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11943 case "$stdio_ptr" in
11944 '') stdio_ptr='((fp)->_ptr)'
11947 *) ptr_lval=$d_stdio_ptr_lval;;
11949 case "$stdio_cnt" in
11950 '') stdio_cnt='((fp)->_cnt)'
11953 *) cnt_lval=$d_stdio_cnt_lval;;
11955 case "$stdio_base" in
11956 '') stdio_base='((fp)->_base)';;
11958 case "$stdio_bufsiz" in
11959 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11963 : test whether _ptr and _cnt really work
11964 echo "Checking how std your stdio is..." >&4
11967 #define FILE_ptr(fp) $stdio_ptr
11968 #define FILE_cnt(fp) $stdio_cnt
11970 FILE *fp = fopen("try.c", "r");
11973 18 <= FILE_cnt(fp) &&
11974 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11982 if eval $compile; then
11984 echo "Your stdio acts pretty std."
11987 echo "Your stdio isn't very std."
11990 echo "Your stdio doesn't appear very std."
11996 : Can _ptr be used as an lvalue?
11997 case "$d_stdstdio$ptr_lval" in
11998 $define$define) val=$define ;;
12001 set d_stdio_ptr_lval
12004 : Can _cnt be used as an lvalue?
12005 case "$d_stdstdio$cnt_lval" in
12006 $define$define) val=$define ;;
12009 set d_stdio_cnt_lval
12013 : test whether setting _ptr sets _cnt as a side effect
12014 d_stdio_ptr_lval_sets_cnt="$undef"
12015 d_stdio_ptr_lval_nochange_cnt="$undef"
12016 case "$d_stdio_ptr_lval$d_stdstdio" in
12018 echo "Checking to see what happens if we set the stdio ptr..." >&4
12021 /* Can we scream? */
12022 /* Eat dust sed :-) */
12023 /* In the buffer space, no one can hear you scream. */
12024 #define FILE_ptr(fp) $stdio_ptr
12025 #define FILE_cnt(fp) $stdio_cnt
12026 #include <sys/types.h>
12028 FILE *fp = fopen("try.c", "r");
12033 puts("Fail even to read");
12036 c = getc(fp); /* Read away the first # */
12038 puts("Fail even to read");
12042 18 <= FILE_cnt(fp) &&
12043 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12045 puts("Fail even to read");
12048 ptr = (char*) FILE_ptr(fp);
12049 cnt = (size_t)FILE_cnt(fp);
12051 FILE_ptr(fp) += 42;
12053 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12054 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12057 if (FILE_cnt(fp) <= 20) {
12058 printf ("Fail (<20 chars to test)");
12061 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12062 puts("Fail compare");
12065 if (cnt == FILE_cnt(fp)) {
12066 puts("Pass_unchanged");
12069 if (FILE_cnt(fp) == (cnt - 42)) {
12070 puts("Pass_changed");
12073 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12079 if eval $compile; then
12080 case `./try$exe_ext` in
12082 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12083 d_stdio_ptr_lval_sets_cnt="$define" ;;
12085 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12086 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12088 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12090 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12093 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12099 : see if _base is also standard
12101 case "$d_stdstdio" in
12105 #define FILE_base(fp) $stdio_base
12106 #define FILE_bufsiz(fp) $stdio_bufsiz
12108 FILE *fp = fopen("try.c", "r");
12111 19 <= FILE_bufsiz(fp) &&
12112 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12119 if eval $compile; then
12121 echo "And its _base field acts std."
12124 echo "But its _base field isn't std."
12127 echo "However, it seems to be lacking the _base field."
12136 Checking how to access stdio streams by file descriptor number...
12138 case "$stdio_stream_array" in
12139 '') $cat >try.c <<EOCP
12142 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12146 for s in _iob __iob __sF
12148 set try -DSTDIO_STREAM_ARRAY=$s
12149 if eval $compile; then
12150 case "`./try$exe_ext`" in
12151 yes) stdio_stream_array=$s; break ;;
12155 $rm -f try.* try$exe_ext
12157 case "$stdio_stream_array" in
12159 I can't figure out how to access stdio streams by file descriptor number.
12161 d_stdio_stream_array="$undef"
12164 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12166 d_stdio_stream_array="$define"
12170 : see if strcoll exists
12171 set strcoll d_strcoll
12174 : check for structure copying
12176 echo "Checking to see if your C compiler can copy structs..." >&4
12177 $cat >try.c <<'EOCP'
12187 if $cc -c try.c >/dev/null 2>&1 ; then
12189 echo "Yup, it can."
12192 echo "Nope, it can't."
12198 : see if strerror and/or sys_errlist[] exist
12200 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12201 if set strerror val -f d_strerror; eval $csym; $val; then
12202 echo 'strerror() found.' >&4
12203 d_strerror="$define"
12204 d_strerrm='strerror(e)'
12205 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12206 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12207 d_syserrlst="$define"
12209 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12210 d_syserrlst="$undef"
12212 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12213 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12214 echo 'strerror() found in string header.' >&4
12215 d_strerror="$define"
12216 d_strerrm='strerror(e)'
12217 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12218 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12219 d_syserrlst="$define"
12221 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12222 d_syserrlst="$undef"
12224 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12225 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12226 d_strerror="$undef"
12227 d_syserrlst="$define"
12228 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12230 echo 'strerror() and sys_errlist[] NOT found.' >&4
12231 d_strerror="$undef"
12232 d_syserrlst="$undef"
12233 d_strerrm='"unknown"'
12237 : see if strftime exists
12238 set strftime d_strftime
12241 : see if strtod exists
12242 set strtod d_strtod
12245 : see if strtol exists
12246 set strtol d_strtol
12249 : see if strtold exists
12250 set strtold d_strtold
12253 : see if strtoll exists
12254 set strtoll d_strtoll
12257 case "$d_longlong-$d_strtoll" in
12260 Checking whether your strtoll() works okay...
12262 $cat >try.c <<'EOCP'
12265 #define strtoll __strtoll
12268 #define strtoll _strtoll
12271 extern long long int strtoll(char *s, char **, int);
12272 static int bad = 0;
12273 int check(char *s, long long ell, int een) {
12276 gll = strtoll(s, 0, 10);
12277 if (!((gll == ell) && (errno == een)))
12281 check(" 1", 1LL, 0);
12282 check(" 0", 0LL, 0);
12283 check("-1", -1LL, 0);
12284 check("-9223372036854775808", -9223372036854775808LL, 0);
12285 check("-9223372036854775808", -9223372036854775808LL, 0);
12286 check(" 9223372036854775807", 9223372036854775807LL, 0);
12287 check("-9223372036854775808", -9223372036854775808LL, 0);
12288 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12289 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12295 if eval $compile; then
12298 ok) echo "Your strtoll() seems to be working okay." ;;
12300 Your strtoll() doesn't seem to be working okay.
12306 echo "(I can't seem to compile the test program--assuming it doesn't)"
12312 : see if strtoq exists
12313 set strtoq d_strtoq
12316 : see if strtoul exists
12317 set strtoul d_strtoul
12320 case "$d_strtoul" in
12323 Checking whether your strtoul() works okay...
12325 $cat >try.c <<'EOCP'
12328 extern unsigned long int strtoul(char *s, char **, int);
12329 static int bad = 0;
12330 void check(char *s, unsigned long eul, int een) {
12333 gul = strtoul(s, 0, 10);
12334 if (!((gul == eul) && (errno == een)))
12338 check(" 1", 1L, 0);
12339 check(" 0", 0L, 0);
12341 case "$longsize" in
12343 $cat >>try.c <<'EOCP'
12344 check("18446744073709551615", 18446744073709551615UL, 0);
12345 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12346 #if 0 /* strtoul() for /^-/ strings is undefined. */
12347 check("-1", 18446744073709551615UL, 0);
12348 check("-18446744073709551614", 2, 0);
12349 check("-18446744073709551615", 1, 0);
12350 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12351 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12356 $cat >>try.c <<'EOCP'
12357 check("4294967295", 4294967295UL, 0);
12358 check("4294967296", 4294967295UL, ERANGE);
12359 #if 0 /* strtoul() for /^-/ strings is undefined. */
12360 check("-1", 4294967295UL, 0);
12361 check("-4294967294", 2, 0);
12362 check("-4294967295", 1, 0);
12363 check("-4294967296", 4294967295UL, ERANGE);
12364 check("-4294967297", 4294967295UL, ERANGE);
12369 : Should we write these tests to be more portable by sprintf-ing
12370 : ~0 and then manipulating that char string as input for strtol?
12373 $cat >>try.c <<'EOCP'
12380 if eval $compile; then
12382 ok) echo "Your strtoul() seems to be working okay." ;;
12384 Your strtoul() doesn't seem to be working okay.
12393 : see if strtoull exists
12394 set strtoull d_strtoull
12397 case "$d_longlong-$d_strtoull" in
12400 Checking whether your strtoull() works okay...
12402 $cat >try.c <<'EOCP'
12405 #define strtoull __strtoull
12408 extern unsigned long long int strtoull(char *s, char **, int);
12409 static int bad = 0;
12410 int check(char *s, long long eull, int een) {
12413 gull = strtoull(s, 0, 10);
12414 if (!((gull == eull) && (errno == een)))
12418 check(" 1", 1LL, 0);
12419 check(" 0", 0LL, 0);
12420 check("18446744073709551615", 18446744073709551615ULL, 0);
12421 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12422 #if 0 /* strtoull() for /^-/ strings is undefined. */
12423 check("-1", 18446744073709551615ULL, 0);
12424 check("-18446744073709551614", 2LL, 0);
12425 check("-18446744073709551615", 1LL, 0);
12426 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12427 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12434 if eval $compile; then
12436 ok) echo "Your strtoull() seems to be working okay." ;;
12438 Your strtoull() doesn't seem to be working okay.
12440 d_strtoull="$undef"
12447 : see if strtouq exists
12448 set strtouq d_strtouq
12451 case "$d_strtouq" in
12454 Checking whether your strtouq() works okay...
12456 $cat >try.c <<'EOCP'
12459 extern unsigned long long int strtouq(char *s, char **, int);
12460 static int bad = 0;
12461 void check(char *s, unsigned long long eull, int een) {
12462 unsigned long long gull;
12464 gull = strtouq(s, 0, 10);
12465 if (!((gull == eull) && (errno == een)))
12469 check(" 1", 1LL, 0);
12470 check(" 0", 0LL, 0);
12471 check("18446744073709551615", 18446744073709551615ULL, 0);
12472 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12473 #if 0 /* strtouq() for /^-/ strings is undefined. */
12474 check("-1", 18446744073709551615ULL, 0);
12475 check("-18446744073709551614", 2LL, 0);
12476 check("-18446744073709551615", 1LL, 0);
12477 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12478 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12486 if eval $compile; then
12488 ok) echo "Your strtouq() seems to be working okay." ;;
12490 Your strtouq() doesn't seem to be working okay.
12499 : see if strxfrm exists
12500 set strxfrm d_strxfrm
12503 : see if symlink exists
12504 set symlink d_symlink
12507 : see if syscall exists
12508 set syscall d_syscall
12511 : see if sysconf exists
12512 set sysconf d_sysconf
12515 : see if system exists
12516 set system d_system
12519 : see if tcgetpgrp exists
12520 set tcgetpgrp d_tcgetpgrp
12523 : see if tcsetpgrp exists
12524 set tcsetpgrp d_tcsetpgrp
12527 : see if prototype for telldir is available
12529 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12532 : see if this is a sys/times.h system
12533 set sys/times.h i_systimes
12536 : see if times exists
12538 if set times val -f d_times; eval $csym; $val; then
12539 echo 'times() found.' >&4
12542 case "$i_systimes" in
12543 "$define") inc='sys/times.h';;
12545 rp="What is the type returned by times() on this system?"
12546 set clock_t clocktype long stdio.h sys/types.h $inc
12549 echo 'times() NOT found, hope that will do.' >&4
12554 : see if truncate exists
12555 set truncate d_truncate
12558 : see if tzname[] exists
12560 if set tzname val -a d_tzname; eval $csym; $val; then
12562 echo 'tzname[] found.' >&4
12565 echo 'tzname[] NOT found.' >&4
12570 case "$crosscompile" in
12571 ''|[nN]*) crosscompile="$undef" ;;
12575 next|rhapsody|darwin) multiarch="$define" ;;
12577 case "$multiarch" in
12578 ''|[nN]*) multiarch="$undef" ;;
12581 : check for ordering of bytes in a long
12583 case "$crosscompile$multiarch" in
12586 You seem to be either cross-compiling or doing a multiarchitecture build,
12587 skipping the byteorder check.
12593 case "$byteorder" in
12596 In the following, larger digits indicate more significance. A big-endian
12597 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12598 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12599 machines may have weird orders like 3412. A Cray will report 87654321,
12600 an Alpha will report 12345678. If the test program works the default is
12602 I'm now running the test program...
12604 $cat >try.c <<'EOCP'
12611 char c[sizeof(long)];
12614 if (sizeof(long) > 4)
12615 u.l = (0x08070605L << 32) | 0x04030201L;
12618 for (i = 0; i < sizeof(long); i++)
12619 printf("%c", u.c[i]+'0');
12626 if eval $compile && ./try > /dev/null; then
12629 [1-4][1-4][1-4][1-4]|12345678|87654321)
12630 echo "(The test program ran ok.)"
12631 echo "byteorder=$dflt"
12634 ????|????????) echo "(The test program ran ok.)" ;;
12635 *) echo "(The test program didn't run right for some reason.)" ;;
12640 (I can't seem to compile the test program. Guessing big-endian...)
12643 case "$xxx_prompt" in
12645 rp="What is the order of bytes in a long?"
12661 Checking to see whether you can access character data unalignedly...
12665 #define U32 $u32type
12666 #define BYTEORDER $byteorder
12668 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
12669 U8 buf[] = "\0\0\0\1\0\0\0\0";
12673 if (sizeof(U32) != 4) {
12674 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
12680 for (i = 0; i < 4; i++) {
12681 up = (U32*)(buf + i);
12682 if (! ((*up == 1 << (8*i)) || /* big-endian */
12683 (*up == 1 << (8*(3-i))) /* little-endian */
12687 printf("read failed (%x)\n", *up);
12693 for (i = 0; i < 4; i++) {
12694 up = (U32*)(buf + i);
12696 if (*up != 0xBeef) {
12697 printf("write failed (%x)\n", *up);
12711 if eval $compile_ok; then
12712 echo "(This test may dump core.)" >&4
12713 ./try >&2 >/dev/null
12716 You can access character data pretty unalignedly.
12718 d_u32align="$undef"
12721 It seems that you must access character data in an aligned manner.
12723 d_u32align="$define"
12726 $rm -f core core.try.* try.core
12728 rp='Can you access character data at unaligned addresses?'
12732 [yY]*) d_u32align="$undef" ;;
12733 *) d_u32align="$define" ;;
12737 : see if ualarm exists
12738 set ualarm d_ualarm
12741 : see if umask exists
12745 : see if usleep exists
12746 set usleep d_usleep
12749 : see if ustat exists
12753 : backward compatibility for d_hvfork
12754 if test X$d_hvfork != X; then
12755 d_vfork="$d_hvfork"
12758 : see if there is a vfork
12763 : Ok, but do we want to use it. vfork is reportedly unreliable in
12764 : perl on Solaris 2.x, and probably elsewhere.
12768 case "$usevfork" in
12774 Perl can only use a vfork() that doesn't suffer from strict
12775 restrictions on calling functions or modifying global data in
12776 the child. For example, glibc-2.1 contains such a vfork()
12777 that is unsuitable. If your system provides a proper fork()
12778 call, chances are that you do NOT want perl to use vfork().
12781 rp="Do you still want to use vfork()?"
12786 echo "Ok, we won't use vfork()."
12795 $define) usevfork='true';;
12796 *) usevfork='false';;
12799 : see if this is an sysdir system
12800 set sys/dir.h i_sysdir
12803 : see if this is an sysndir system
12804 set sys/ndir.h i_sysndir
12807 : see if closedir exists
12808 set closedir d_closedir
12811 case "$d_closedir" in
12814 echo "Checking whether closedir() returns a status..." >&4
12815 cat > closedir.c <<EOM
12816 #$i_dirent I_DIRENT /**/
12817 #$i_sysdir I_SYS_DIR /**/
12818 #$i_sysndir I_SYS_NDIR /**/
12819 #$i_systypes I_SYS_TYPES /**/
12821 #if defined(I_SYS_TYPES)
12822 #include <sys/types.h>
12824 #if defined(I_DIRENT)
12825 #include <dirent.h>
12826 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12827 #include <sys/dir.h>
12831 #include <sys/ndir.h>
12835 #include <ndir.h> /* may be wrong in the future */
12837 #include <sys/dir.h>
12842 int main() { return closedir(opendir(".")); }
12845 if eval $compile_ok; then
12846 if ./closedir > /dev/null 2>&1 ; then
12847 echo "Yes, it does."
12850 echo "No, it doesn't."
12854 echo "(I can't seem to compile the test program--assuming it doesn't)"
12862 set d_void_closedir
12865 : see if there is a wait4
12869 : see if waitpid exists
12870 set waitpid d_waitpid
12873 : see if wcstombs exists
12874 set wcstombs d_wcstombs
12877 : see if wctomb exists
12878 set wctomb d_wctomb
12881 : see if writev exists
12882 set writev d_writev
12885 : preserve RCS keywords in files with variable substitution, grrr
12890 Revision='$Revision'
12892 : check for alignment requirements
12894 case "$crosscompile$multiarch" in
12897 You seem to be either cross-compiling or doing a multiarchitecture build,
12898 skipping the memory alignment check.
12901 case "$alignbytes" in
12902 '') alignbytes=8 ;;
12906 case "$alignbytes" in
12907 '') echo "Checking alignment constraints..." >&4
12908 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12909 $cat >try.c <<'EOCP'
12910 typedef long double NV;
12913 $cat >try.c <<'EOCP'
12917 $cat >>try.c <<'EOCP'
12925 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12930 if eval $compile_ok; then
12934 echo "(I can't seem to compile the test program...)"
12937 *) dflt="$alignbytes"
12940 rp="Doubles must be aligned on a how-many-byte boundary?"
12948 : set the base revision
12951 : how do we catenate cpp tokens here?
12953 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12954 $cat >cpp_stuff.c <<'EOCP'
12955 #define RCAT(a,b)a/**/b
12956 #define ACAT(a,b)a ## b
12960 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12961 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12962 echo "Oh! Smells like ANSI's been here." >&4
12963 echo "We can catify or stringify, separately or together!"
12965 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12966 echo "Ah, yes! The good old days!" >&4
12967 echo "However, in the good old days we don't know how to stringify and"
12968 echo "catify at the same time."
12972 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12973 to have to edit the values of CAT[2-5] in config.h...
12975 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12979 : see if this is a db.h system
12985 : Check db version.
12987 echo "Checking Berkeley DB version ..." >&4
12993 #include <sys/types.h>
12998 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12999 int Major, Minor, Patch ;
13000 unsigned long Version ;
13001 (void)db_version(&Major, &Minor, &Patch) ;
13002 printf("You have Berkeley DB Version 2 or greater\n");
13004 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13005 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13006 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13007 Major, Minor, Patch) ;
13009 /* check that db.h & libdb are compatible */
13010 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13011 printf("db.h and libdb are incompatible\n") ;
13015 printf("db.h and libdb are compatible\n") ;
13017 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13018 + DB_VERSION_PATCH ;
13020 /* needs to be >= 2.3.4 */
13021 if (Version < 2003004) {
13022 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13023 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
13029 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13030 printf("You have Berkeley DB Version 1\n");
13031 exit(0); /* DB version < 2: the coast is clear. */
13033 exit(1); /* <db.h> not Berkeley DB? */
13039 if eval $compile_ok && ./try; then
13040 echo 'Looks OK.' >&4
13042 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13046 : Remove db from list of libraries to use
13047 echo "Removing unusable -ldb from library list" >&4
13048 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13051 echo "libs = $libs" >&4
13061 : Check the return type needed for hash
13063 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13069 #include <sys/types.h>
13072 #ifndef DB_VERSION_MAJOR
13073 u_int32_t hash_cb (ptr, size)
13081 info.hash = hash_cb;
13085 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13086 if $contains warning try.out >>/dev/null 2>&1 ; then
13089 db_hashtype='u_int32_t'
13092 : XXX Maybe we should just give up here.
13093 db_hashtype=u_int32_t
13095 echo "Help: I can't seem to compile the db test program." >&4
13096 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13099 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13101 *) db_hashtype=u_int32_t
13106 : Check the return type needed for prefix
13108 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13114 #include <sys/types.h>
13117 #ifndef DB_VERSION_MAJOR
13118 size_t prefix_cb (key1, key2)
13126 info.prefix = prefix_cb;
13130 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13131 if $contains warning try.out >>/dev/null 2>&1 ; then
13132 db_prefixtype='int'
13134 db_prefixtype='size_t'
13137 db_prefixtype='size_t'
13138 : XXX Maybe we should just give up here.
13140 echo "Help: I can't seem to compile the db test program." >&4
13141 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13144 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13146 *) db_prefixtype='size_t'
13151 : How can we generate normalized random numbers ?
13153 echo "Looking for a random number function..." >&4
13154 case "$randfunc" in
13156 if set drand48 val -f; eval $csym; $val; then
13158 echo "Good, found drand48()." >&4
13159 elif set random val -f; eval $csym; $val; then
13161 echo "OK, found random()." >&4
13164 echo "Yick, looks like I have to use rand()." >&4
13175 *-Dmy_rand=*|*-Dmy_srand=*)
13176 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13177 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13178 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13179 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13183 while $test "$cont"; do
13184 rp="Use which function to generate random numbers?"
13186 if $test "$ans" = "$dflt"; then
13192 if set $ans val -f; eval $csym; $val; then
13196 rp="I cannot find function $ans. Use that name anyway?"
13205 case "$randfunc" in
13207 drand01="drand48()"
13213 case "$randbits" in
13215 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13217 #$i_unistd I_UNISTD
13218 #$i_stdlib I_STDLIB
13221 # include <unistd.h>
13224 # include <stdlib.h>
13229 register unsigned long tmp;
13230 register unsigned long max = 0L;
13232 for (i = 1000; i; i--) {
13233 tmp = (unsigned long) $randfunc();
13234 if (tmp > max) max = tmp;
13236 for (i = 0; max; i++)
13242 if eval $compile_ok; then
13246 echo "(I can't seem to compile the test program...)"
13253 rp="How many bits does your $randfunc() function produce?"
13257 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13258 seedfunc="s$randfunc"
13259 randseedtype=unsigned
13263 rp="How many bits does your $randfunc() function produce?"
13266 seedfunc="s$randfunc"
13267 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13268 if set $seedfunc val -f; eval $csym; $val; then
13269 echo "(Using $seedfunc() to seed random generator)"
13271 echo "(Warning: no $seedfunc() to seed random generator)"
13274 randseedtype=unsigned
13282 echo "Determining whether or not we are on an EBCDIC system..." >&4
13283 $cat >tebcdic.c <<'EOM'
13286 if ('M'==0xd4) return 0;
13293 if eval $compile_ok; then
13295 echo "You seem to speak EBCDIC." >&4
13298 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13301 echo "I'm unable to compile the test program." >&4
13302 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13304 $rm -f tebcdic.c tebcdic
13310 Checking how to flush all pending stdio output...
13312 # I only know how to find the first 32 possibly open files on SunOS.
13313 # See also hints/sunos_4_1.sh and util.c --AD
13315 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13317 $cat >>try.c <<EOCP
13319 #$i_unistd I_UNISTD
13321 # include <unistd.h>
13323 #$d_sysconf HAS_SYSCONF
13324 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13325 #ifdef HAS_STDIO_STREAM_ARRAY
13326 # define STDIO_STREAM_ARRAY $stdio_stream_array
13329 FILE* p = fopen("try.out", "w");
13333 # ifdef TRY_FPRINTF
13337 #ifdef TRY_FFLUSH_NULL
13340 #ifdef TRY_FFLUSH_ALL
13342 long open_max = -1;
13343 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13344 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13346 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13347 open_max = sysconf(_SC_OPEN_MAX);
13350 open_max = FOPEN_MAX;
13353 open_max = OPEN_MAX;
13362 # ifdef HAS_STDIO_STREAM_ARRAY
13363 if (open_max > 0) {
13365 for (i = 0; i < open_max; i++)
13366 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13367 STDIO_STREAM_ARRAY[i]._file < open_max &&
13368 STDIO_STREAM_ARRAY[i]._flag)
13369 fflush(&STDIO_STREAM_ARRAY[i]);
13377 : first we have to find out how _not_ to flush
13378 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13380 set try -DTRY_FPUTC
13381 if eval $compile; then
13383 ./try$exe_ext 2>/dev/null
13384 if $test ! -s try.out -a "X$?" = X42; then
13390 set try -DTRY_FPRINTF
13392 if eval $compile; then
13394 ./try$exe_ext 2>/dev/null
13395 if $test ! -s try.out -a "X$?" = X42; then
13396 output=-DTRY_FPRINTF
13402 : check for fflush NULL behaviour
13403 case "$fflushNULL" in
13404 '') set try -DTRY_FFLUSH_NULL $output
13405 if eval $compile; then
13407 ./try$exe_ext 2>/dev/null
13409 if $test -s try.out -a "X$code" = X42; then
13410 fflushNULL="`$cat try.out`"
13412 if $test "X$code" != X42; then
13414 (If this test failed, don't worry, we'll try another method shortly.)
13419 $rm -f core try.core core.try.*
13420 case "$fflushNULL" in
13422 Your fflush(NULL) works okay for output streams.
13423 Let's see if it clobbers input pipes...
13425 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13426 # bug that improperly flushes the input end of pipes. So we avoid the
13427 # autoflush on fork/system/exec support for now. :-(
13428 $cat >tryp.c <<EOCP
13431 main(int argc, char **argv)
13437 while ((i = getc(stdin)) != -1
13438 && (*bp++ = i) != '\n'
13439 && bp < &buf[1024])
13442 fprintf(stdout, "%s", buf);
13450 fflushNULL="$define"
13452 if eval $compile; then
13454 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13455 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13457 fflush(NULL) seems to behave okay with input streams.
13459 fflushNULL="$define"
13462 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13464 fflushNULL="$undef"
13467 $rm -f core tryp.c tryp.core core.tryp.*
13470 Your fflush(NULL) isn't working (contrary to ANSI C).
13472 fflushNULL="$undef"
13475 Cannot figure out whether your fflush(NULL) works or not.
13476 I'm assuming it doesn't (contrary to ANSI C).
13478 fflushNULL="$undef"
13482 $define|true|[yY]*)
13483 fflushNULL="$define"
13486 fflushNULL="$undef"
13489 : check explicit looping only if NULL did not work, and if the pipe
13490 : bug does not show up on an explicit flush too
13491 case "$fflushNULL" in
13493 $cat >tryp.c <<EOCP
13496 main(int argc, char **argv)
13502 while ((i = getc(stdin)) != -1
13503 && (*bp++ = i) != '\n'
13504 && bp < &buf[1024])
13507 fprintf(stdout, "%s", buf);
13516 if eval $compile; then
13518 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13519 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13521 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13523 : now check for fflushall behaviour
13524 case "$fflushall" in
13525 '') set try -DTRY_FFLUSH_ALL $output
13526 if eval $compile; then
13528 (Now testing the other method--but note that this also may fail.)
13531 ./try$exe_ext 2>/dev/null
13532 if $test -s try.out -a "X$?" = X42; then
13533 fflushall="`$cat try.out`"
13536 $rm -f core try.core core.try.*
13537 case "$fflushall" in
13539 Whew. Flushing explicitly all the stdio streams works.
13541 fflushall="$define"
13544 Sigh. Flushing explicitly all the stdio streams doesn't work.
13549 Cannot figure out whether flushing stdio streams explicitly works or not.
13550 I'm assuming it doesn't.
13556 "$define"|true|[yY]*)
13557 fflushall="$define"
13565 All is futile. Even fflush(stdin) clobbers input pipes!
13572 $rm -f core tryp.c tryp.core core.tryp.*
13574 *) fflushall="$undef"
13578 case "$fflushNULL$fflushall" in
13581 OK, I give up. I cannot figure out how to flush pending stdio output.
13582 We won't be flushing handles at all before fork/exec/popen.
13586 $rm -f try.* try$exe_ext
13588 : Store the full pathname to the ar program for use in the C program
13589 : Respect a hint or command line value for full_ar.
13594 : Store the full pathname to the sed program for use in the C program
13597 : see what type gids are declared as in the kernel
13599 echo "Looking for the type for group ids returned by getgid()."
13600 set gid_t gidtype xxx stdio.h sys/types.h
13604 xxx=`./findhdr sys/user.h`
13605 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13607 unsigned) dflt="$1 $2" ;;
13611 *) dflt="$gidtype";;
13614 gid_t) echo "gid_t found." ;;
13615 *) rp="What is the type for group ids returned by getgid()?"
13623 *_t) zzz="$gidtype" ;;
13626 echo "Checking the size of $zzz..." >&4
13628 #include <sys/types.h>
13631 printf("%d\n", (int)sizeof($gidtype));
13636 if eval $compile_ok; then
13640 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13643 echo "Your $zzz is $gidsize bytes long."
13648 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13654 *_t) zzz="$gidtype" ;;
13657 echo "Checking the sign of $zzz..." >&4
13659 #include <sys/types.h>
13670 if eval $compile; then
13674 echo "(I can't execute the test program--guessing unsigned.)" >&4
13678 1) echo "Your $zzz is unsigned." ;;
13679 -1) echo "Your $zzz is signed." ;;
13685 echo "(I can't compile the test program--guessing unsigned.)" >&4
13691 if $test X"$quadtype" != X; then
13693 echo "Checking how to print 64-bit integers..." >&4
13695 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13696 $cat >try.c <<'EOCP'
13697 #include <sys/types.h>
13700 int q = 12345678901;
13701 printf("%ld\n", q);
13705 if eval $compile; then
13706 yyy=`./try$exe_ext`
13709 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13710 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13711 echo "We will use %d."
13717 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13718 $cat >try.c <<'EOCP'
13719 #include <sys/types.h>
13722 long q = 12345678901;
13723 printf("%ld\n", q);
13727 if eval $compile; then
13728 yyy=`./try$exe_ext`
13731 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13732 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13733 echo "We will use %ld."
13739 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13740 $cat >try.c <<'EOCP'
13741 #include <sys/types.h>
13742 #include <inttypes.h>
13745 int64_t q = 12345678901;
13746 printf("%" PRId64 "\n", q);
13750 if eval $compile; then
13751 yyy=`./try$exe_ext`
13754 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13755 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13756 echo "We will use the C9X style."
13762 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13763 $cat >try.c <<'EOCP'
13764 #include <sys/types.h>
13767 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13768 printf("%lld\n", q);
13772 if eval $compile; then
13773 yyy=`./try$exe_ext`
13776 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13777 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13778 echo "We will use the %lld style."
13784 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13786 #include <sys/types.h>
13789 $quadtype q = 12345678901;
13790 printf("%Ld\n", q);
13794 if eval $compile; then
13795 yyy=`./try$exe_ext`
13798 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13799 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13800 echo "We will use %Ld."
13806 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13808 #include <sys/types.h>
13811 $quadtype q = 12345678901;
13812 printf("%qd\n", q);
13816 if eval $compile; then
13817 yyy=`./try$exe_ext`
13820 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13821 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13822 echo "We will use %qd."
13828 if $test X"$sPRId64" = X; then
13829 echo "Cannot figure out how to print 64-bit integers." >&4
13837 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13838 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13840 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13841 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13847 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13849 if $test X"$ivsize" = X8; then
13850 ivdformat="$sPRId64"
13851 uvuformat="$sPRIu64"
13852 uvoformat="$sPRIo64"
13853 uvxformat="$sPRIx64"
13854 uvXUformat="$sPRIXU64"
13856 if $test X"$ivsize" = X"$longsize"; then
13863 if $test X"$ivsize" = X"$intsize"; then
13871 if $test X"$ivsize" = X"$shortsize"; then
13882 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13883 nveformat="$sPRIeldbl"
13884 nvfformat="$sPRIfldbl"
13885 nvgformat="$sPRIgldbl"
13886 nvEUformat="$sPRIEUldbl"
13887 nvFUformat="$sPRIFUldbl"
13888 nvGUformat="$sPRIGUldbl"
13898 case "$ivdformat" in
13899 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13906 $echo "Checking the format string to be used for gids..." >&4
13909 -1) if $test X"$gidsize" = X"$ivsize"; then
13910 gidformat="$ivdformat"
13912 if $test X"$gidsize" = X"$longsize"; then
13915 if $test X"$gidsize" = X"$intsize"; then
13918 if $test X"$gidsize" = X"$shortsize"; then
13925 *) if $test X"$gidsize" = X"$uvsize"; then
13926 gidformat="$uvuformat"
13928 if $test X"$gidsize" = X"$longsize"; then
13931 if $test X"$gidsize" = X"$intsize"; then
13934 if $test X"$gidsize" = X"$shortsize"; then
13943 : see if getgroups exists
13944 set getgroups d_getgrps
13947 : see if setgroups exists
13948 set setgroups d_setgrps
13952 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13954 case "$d_getgrps$d_setgrps" in
13956 case "$groupstype" in
13957 '') dflt="$gidtype" ;;
13958 *) dflt="$groupstype" ;;
13961 What type of pointer is the second argument to getgroups() and setgroups()?
13962 Usually this is the same as group ids, $gidtype, but not always.
13965 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13969 *) groupstype="$gidtype";;
13973 echo "Checking if your $make program sets \$(MAKE)..." >&4
13974 case "$make_set_make" in
13976 $sed 's/^X //' > testmake.mak << 'EOF'
13978 X @echo 'maketemp="$(MAKE)"'
13980 case "`$make -f testmake.mak 2>/dev/null`" in
13981 *maketemp=*) make_set_make='#' ;;
13982 *) make_set_make="MAKE=$make" ;;
13984 $rm -f testmake.mak
13987 case "$make_set_make" in
13988 '#') echo "Yup, it does.";;
13989 *) echo "Nope, it doesn't.";;
13992 : see what type is used for mode_t
13993 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13994 set mode_t modetype int stdio.h sys/types.h
13997 : see if stdarg is available
13999 if $test `./findhdr stdarg.h`; then
14000 echo "<stdarg.h> found." >&4
14003 echo "<stdarg.h> NOT found." >&4
14007 : see if varags is available
14009 if $test `./findhdr varargs.h`; then
14010 echo "<varargs.h> found." >&4
14012 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14015 : set up the varargs testing programs
14016 $cat > varargs.c <<EOP
14018 #include <stdarg.h>
14021 #include <varargs.h>
14025 int f(char *p, ...)
14039 p = va_arg(ap, char *);
14044 $cat > varargs <<EOP
14046 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14055 : now check which varargs header should be included
14060 if `./varargs I_STDARG`; then
14062 elif `./varargs I_VARARGS`; then
14067 if `./varargs I_VARARGS`; then
14074 echo "I could not find the definition for va_dcl... You have problems..." >&4
14075 val="$undef"; set i_stdarg; eval $setvar
14076 val="$undef"; set i_varargs; eval $setvar
14081 case "$i_varhdr" in
14083 val="$define"; set i_stdarg; eval $setvar
14084 val="$undef"; set i_varargs; eval $setvar
14087 val="$undef"; set i_stdarg; eval $setvar
14088 val="$define"; set i_varargs; eval $setvar
14091 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14095 : see if we need va_copy
14097 case "$i_stdarg" in
14100 #include <stdarg.h>
14102 #$i_stdlib I_STDLIB
14104 #include <stdlib.h>
14106 #include <signal.h>
14109 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14111 return vfprintf(f, fmt, *valp);
14115 myvfprintf(FILE *f, const char *fmt, va_list val)
14117 return ivfprintf(f, fmt, &val);
14121 myprintf(char *fmt, ...)
14124 va_start(val, fmt);
14125 return myvfprintf(stdout, fmt, val);
14129 main(int ac, char **av)
14131 signal(SIGSEGV, exit);
14133 myprintf("%s%cs all right, then\n", "that", '\'');
14138 if eval $compile && ./try 2>&1 >/dev/null; then
14140 "that's all right, then")
14146 yes) echo "It seems that you don't need va_copy()." >&4
14147 need_va_copy="$undef"
14149 *) echo "It seems that va_copy() or similar will be needed." >&4
14150 need_va_copy="$define"
14153 $rm -f try.* core core.* *.core *.core.*
14155 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14159 : define a fucntion to check prototypes
14160 $cat > protochk <<EOSH
14163 optimize="$optimize"
14165 prototype="$prototype"
14170 $cat >> protochk <<'EOSH'
14175 while test $# -ge 2; do
14177 $define) echo "#include <$2>" >> try.c ;;
14178 literal) echo "$2" >> try.c ;;
14182 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14183 cat >> try.c <<'EOCP'
14184 #ifdef CAN_PROTOTYPE
14185 #define _(args) args
14190 echo "$foo" >> try.c
14191 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14192 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14198 $eunicefix protochk
14200 : see what type is used for size_t
14201 rp="What is the type used for the length parameter for string functions?"
14202 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14205 : check for type of arguments to gethostbyaddr.
14206 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14207 case "$d_gethbyaddr" in
14211 Checking to see what type of arguments are accepted by gethostbyaddr().
14213 hdrs="$define sys/types.h
14214 $d_socket sys/socket.h
14215 $i_niin netinet/in.h
14217 $i_unistd unistd.h"
14218 : The first arg can 'char *' or 'void *'
14219 : The second arg is some of integral type
14220 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14221 for yyy in size_t long int; do
14222 case "$netdb_host_type" in
14223 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14224 if ./protochk "$try" $hdrs; then
14225 echo "Your system accepts $xxx for the first arg."
14226 echo "...and $yyy for the second arg."
14227 netdb_host_type="$xxx"
14228 netdb_hlen_type="$yyy"
14234 : In case none of those worked, prompt the user.
14235 case "$netdb_host_type" in
14236 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14239 netdb_host_type=$ans
14240 rp='What is the type for the 2nd argument to gethostbyaddr?'
14243 netdb_hlen_type=$ans
14247 *) : no gethostbyaddr, so pick harmless defaults
14248 netdb_host_type='char *'
14249 netdb_hlen_type="$sizetype"
14252 # Remove the "const" if needed. -- but then we'll have a
14254 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14257 : check for type of argument to gethostbyname.
14258 if test "X$netdb_name_type" = X ; then
14259 case "$d_gethbyname" in
14263 Checking to see what type of argument is accepted by gethostbyname().
14265 hdrs="$define sys/types.h
14266 $d_socket sys/socket.h
14267 $i_niin netinet/in.h
14269 $i_unistd unistd.h"
14270 for xxx in "const char *" "char *"; do
14271 case "$netdb_name_type" in
14272 '') try="extern struct hostent *gethostbyname($xxx);"
14273 if ./protochk "$try" $hdrs; then
14274 echo "Your system accepts $xxx."
14275 netdb_name_type="$xxx"
14280 : In case none of those worked, prompt the user.
14281 case "$netdb_name_type" in
14282 '') rp='What is the type for the 1st argument to gethostbyname?'
14285 netdb_name_type=$ans
14289 *) : no gethostbyname, so pick harmless default
14290 netdb_name_type='char *'
14295 : check for type of 1st argument to getnetbyaddr.
14296 if test "X$netdb_net_type" = X ; then
14297 case "$d_getnbyaddr" in
14301 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14303 hdrs="$define sys/types.h
14304 $d_socket sys/socket.h
14305 $i_niin netinet/in.h
14307 $i_unistd unistd.h"
14308 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14309 case "$netdb_net_type" in
14310 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14311 if ./protochk "$try" $hdrs; then
14312 echo "Your system accepts $xxx."
14313 netdb_net_type="$xxx"
14318 : In case none of those worked, prompt the user.
14319 case "$netdb_net_type" in
14320 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14323 netdb_net_type=$ans
14327 *) : no getnetbyaddr, so pick harmless default
14328 netdb_net_type='long'
14332 : locate the preferred pager for this system
14338 [a-zA-Z]:/*) dflt=$pg;;
14342 [a-zA-Z]:/*) dflt=$more;;
14346 [a-zA-Z]:/*) dflt=$less;;
14349 '') dflt=/usr/ucb/more;;
14356 rp='What pager is used on your system?'
14360 : see what type pids are declared as in the kernel
14361 rp="What is the type of process ids on this system?"
14362 set pid_t pidtype int stdio.h sys/types.h
14365 : Find earliest binary compatible site_perl subdirectory perl can use.
14366 case "$bincompat5005" in
14367 "$define") xs_apiversion='5.005' ;;
14368 *) xs_apiversion=$version ;; # The current site_perl version.
14370 : Find earliest pure perl site_perl subdirectory perl can use.
14371 : The versioned directories started at 5.005.
14372 pm_apiversion='5.005'
14374 : see if ar generates random libraries by itself
14376 echo "Checking how to generate random libraries on your machine..." >&4
14377 echo 'int bar1() { return bar2(); }' > bar1.c
14378 echo 'int bar2() { return 2; }' > bar2.c
14379 $cat > foo.c <<'EOP'
14380 int main() { printf("%d\n", bar1()); exit(0); }
14382 $cc $ccflags -c bar1.c >/dev/null 2>&1
14383 $cc $ccflags -c bar2.c >/dev/null 2>&1
14384 $cc $ccflags -c foo.c >/dev/null 2>&1
14385 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14386 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14387 ./foobar >/dev/null 2>&1; then
14388 echo "$ar appears to generate random libraries itself."
14391 elif $ar ts bar$_a >/dev/null 2>&1 &&
14392 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14393 ./foobar >/dev/null 2>&1; then
14394 echo "a table of contents needs to be added with '$ar ts'."
14401 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14402 $test -f $ranlib || ranlib=''
14405 if $test -n "$ranlib"; then
14406 echo "your system has '$ranlib'; we'll use that."
14409 echo "your system doesn't seem to support random libraries"
14410 echo "so we'll use lorder and tsort to order the libraries."
14417 : check for type of arguments to select.
14418 case "$selecttype" in
14419 '') case "$d_select" in
14423 Checking to see what type of arguments are accepted by select().
14425 hdrs="$define sys/types.h
14426 $i_systime sys/time.h
14427 $i_sysselct sys/select.h
14428 $d_socket sys/socket.h"
14429 : The first arg can be int, unsigned, or size_t
14430 : The last arg may or may not be 'const'
14432 : void pointer has been seen but using that
14433 : breaks the selectminbits test
14434 for xxx in 'fd_set *' 'int *'; do
14435 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14436 for tmo in 'struct timeval *' 'const struct timeval *'; do
14438 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14439 if ./protochk "$try" $hdrs; then
14440 echo "Your system accepts $xxx."
14449 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14450 case "$d_fd_set" in
14451 $define) dflt="fd_set *" ;;
14460 *) : no select, so pick a harmless default
14467 : check for the select 'width'
14468 case "$selectminbits" in
14469 '') case "$d_select" in
14473 Checking to see on how many bits at a time your select() operates...
14476 #include <sys/types.h>
14478 #$i_systime I_SYS_TIME
14479 #$i_systimek I_SYS_TIME_KERNEL
14484 # ifdef I_SYS_TIME_KERNEL
14487 # include <sys/time.h>
14488 # ifdef I_SYS_TIME_KERNEL
14492 #$i_sysselct I_SYS_SELECT
14493 #ifdef I_SYS_SELECT
14494 #include <sys/select.h>
14496 #$d_socket HAS_SOCKET
14498 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14502 #define S sizeof(*(b))
14504 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14505 #define NBITS (NBYTES * 8)
14514 fp = fopen("try.c", "r");
14520 b = ($selecttype)s;
14521 for (i = 0; i < NBITS; i++)
14525 select(fd + 1, b, 0, 0, &t);
14526 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14527 printf("%d\n", i + 1);
14532 if eval $compile_ok; then
14533 selectminbits=`./try`
14534 case "$selectminbits" in
14536 Cannot figure out on how many bits at a time your select() operates.
14537 I'll play safe and guess it is 32 bits.
14543 *) bits="$selectminbits bits" ;;
14545 echo "Your select() operates on $bits at a time." >&4
14547 rp='What is the minimum number of bits your select() operates on?'
14548 case "$byteorder" in
14549 1234|12345678) dflt=32 ;;
14554 selectminbits="$val"
14558 *) : no select, so pick a harmless default
14565 : Trace out the files included by signal.h, then look for SIGxxx names.
14566 : Remove SIGARRAYSIZE used by HPUX.
14567 : Remove SIGSTKSIZE used by Linux.
14568 : Remove SIGSTKSZ used by Posix.
14569 : Remove SIGTYP void lines used by OS2.
14570 : Some cpps, like os390, dont give the file name anywhere
14571 if [ "X$fieldn" = X ]; then
14572 : Just make some guesses. We check them later.
14573 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14575 xxx=`echo '#include <signal.h>' |
14576 $cppstdin $cppminus $cppflags 2>/dev/null |
14577 $grep '^[ ]*#.*include' |
14578 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14580 : Check this list of files to be sure we have parsed the cpp output ok.
14581 : This will also avoid potentially non-existent files, such
14584 for xx in $xxx /dev/null ; do
14585 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14587 : If we have found no files, at least try signal.h
14588 case "$xxxfiles" in
14589 '') xxxfiles=`./findhdr signal.h` ;;
14592 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14593 print substr($2, 4, 20)
14595 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14596 print substr($3, 4, 20)
14598 : Append some common names just in case the awk scan failed.
14599 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14600 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14601 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14602 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14603 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14605 : generate a few handy files for later
14606 $cat > signal.c <<'EOCP'
14607 #include <sys/types.h>
14608 #include <signal.h>
14612 /* Strange style to avoid deeply-nested #if/#else/#endif */
14615 # define NSIG (_NSIG)
14621 # define NSIG (SIGMAX+1)
14627 # define NSIG (SIG_MAX+1)
14633 # define NSIG (MAXSIG+1)
14639 # define NSIG (MAX_SIG+1)
14644 # ifdef SIGARRAYSIZE
14645 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14651 # define NSIG (_sys_nsig) /* Solaris 2.5 */
14655 /* Default to some arbitrary number that's big enough to get most
14656 of the common signals.
14662 printf("NSIG %d\n", NSIG);
14668 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14670 printf "#ifdef SIG"; printf $1; printf "\n"
14671 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14672 printf $1; printf ");\n"
14676 printf "#endif /* JUST_NSIG */\n";
14677 printf "exit(0);\n}\n";
14680 $cat >signal.awk <<'EOP'
14681 BEGIN { ndups = 0 }
14682 $1 ~ /^NSIG$/ { nsig = $2 }
14683 ($1 !~ /^NSIG$/) && (NF == 2) {
14684 if ($2 > maxsig) { maxsig = $2 }
14685 if (sig_name[$2]) {
14686 dup_name[ndups] = $1
14687 dup_num[ndups] = $2
14699 printf("NSIG %d\n", nsig);
14700 for (n = 1; n < nsig; n++) {
14702 printf("%s %d\n", sig_name[n], sig_num[n])
14705 printf("NUM%d %d\n", n, n)
14708 for (n = 0; n < ndups; n++) {
14709 printf("%s %d\n", dup_name[n], dup_num[n])
14713 $cat >signal_cmd <<EOS
14715 if $test -s signal.lst; then
14716 echo "Using your existing signal.lst file"
14721 $cat >>signal_cmd <<'EOS'
14724 if eval $compile_ok; then
14725 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14727 echo "(I can't seem be able to compile the whole test program)" >&4
14728 echo "(I'll try it in little pieces.)" >&4
14729 set signal -DJUST_NSIG
14730 if eval $compile_ok; then
14731 ./signal$_exe > signal.nsg
14734 echo "I can't seem to figure out how many signals you have." >&4
14735 echo "Guessing 50." >&4
14736 echo 'NSIG 50' > signal.nsg
14738 : Now look at all the signal names, one at a time.
14739 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14740 $cat > signal.c <<EOCP
14741 #include <sys/types.h>
14742 #include <signal.h>
14745 printf("$xx %d\n", SIG${xx});
14750 if eval $compile; then
14751 echo "SIG${xx} found."
14752 ./signal$_exe >> signal.ls1
14754 echo "SIG${xx} NOT found."
14757 if $test -s signal.ls1; then
14758 $cat signal.nsg signal.ls1 |
14759 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14763 if $test -s signal.lst; then
14766 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14767 echo 'kill -l' >signal
14768 set X `csh -f <signal`
14772 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14774 echo $@ | $tr ' ' $trnl | \
14775 $awk '{ printf "%s %d\n", $1, ++s; }
14776 END { printf "NSIG %d\n", ++s }' >signal.lst
14778 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14780 chmod a+x signal_cmd
14781 $eunicefix signal_cmd
14783 : generate list of signal names
14785 case "$sig_name_init" in
14787 *) case "$sig_num_init" in
14788 ''|*,*) doinit=yes ;;
14793 echo "Generating a list of signal names and numbers..." >&4
14795 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14796 sig_name=`$awk 'BEGIN { printf "ZERO " }
14797 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14798 sig_num=`$awk 'BEGIN { printf "0 " }
14799 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14800 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14801 !/^NSIG/ { printf "\"%s\", ", $1 }
14802 END { printf "0\n" }' signal.lst`
14803 sig_num_init=`$awk 'BEGIN { printf "0, " }
14804 !/^NSIG/ { printf "%d, ", $2}
14805 END { printf "0\n"}' signal.lst`
14808 echo "The following $sig_count signals are available:"
14810 echo $sig_name | $awk \
14811 'BEGIN { linelen = 0 }
14813 for (i = 1; i <= NF; i++) {
14814 name = "SIG" $i " "
14815 linelen = linelen + length(name)
14816 if (linelen > 70) {
14818 linelen = length(name)
14824 sig_size=`echo $sig_name | awk '{print NF}'`
14825 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14828 case "$sizetype" in
14829 *_t) zzz="$sizetype" ;;
14830 *) zzz="filesize" ;;
14832 echo "Checking the size of $zzz..." >&4
14834 #include <sys/types.h>
14837 printf("%d\n", (int)sizeof($sizetype));
14842 if eval $compile_ok; then
14846 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14849 echo "Your $zzz size is $sizesize bytes."
14854 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14858 : check for socklen_t
14860 echo "Checking to see if you have socklen_t..." >&4
14862 #include <sys/types.h>
14863 #$d_socket HAS_SOCKET
14865 #include <sys/socket.h>
14867 int main() { socklen_t x = 16; }
14870 if eval $compile; then
14872 echo "You have socklen_t."
14875 echo "You do not have socklen_t."
14876 case "$sizetype" in
14877 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14884 : see if this is a socks.h system
14885 set socks.h i_socks
14888 : check for type of the size argument to socket calls
14889 case "$d_socket" in
14893 Checking to see what type is the last argument of accept().
14896 case "$d_socklen_t" in
14897 "$define") yyy="$yyy socklen_t"
14899 yyy="$yyy $sizetype int long unsigned"
14900 for xxx in $yyy; do
14901 case "$socksizetype" in
14902 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14903 case "$usesocks" in
14905 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14906 echo "Your system accepts '$xxx *' for the last argument of accept()."
14907 socksizetype="$xxx"
14910 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
14911 echo "Your system accepts '$xxx *' for the last argument of accept()."
14912 socksizetype="$xxx"
14919 : In case none of those worked, prompt the user.
14920 case "$socksizetype" in
14921 '') rp='What is the type for socket address structure sizes?'
14928 *) : no sockets, so pick relatively harmless default
14933 : see what type is used for signed size_t
14934 set ssize_t ssizetype int stdio.h sys/types.h
14937 $cat > ssize.c <<EOM
14939 #include <sys/types.h>
14940 #define Size_t $sizetype
14941 #define SSize_t $dflt
14944 if (sizeof(Size_t) == sizeof(SSize_t))
14946 else if (sizeof(Size_t) == sizeof(int))
14955 if eval $compile_ok && ./ssize > /dev/null; then
14956 ssizetype=`./ssize`
14957 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14960 Help! I can't compile and run the ssize_t test program: please enlighten me!
14961 (This is probably a misconfiguration in your system or libraries, and
14962 you really ought to fix it. Still, I'll try anyway.)
14964 I need a type that is the same size as $sizetype, but is guaranteed to
14965 be signed. Common values are ssize_t, int and long.
14968 rp="What signed type is the same size as $sizetype?"
14972 $rm -f ssize ssize.*
14974 : see what type of char stdio uses.
14976 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14977 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
14978 echo "Your stdio uses unsigned chars." >&4
14979 stdchar="unsigned char"
14981 echo "Your stdio uses signed chars." >&4
14988 : see if time exists
14990 if test "X$d_time" = X -o X"$timetype" = X; then
14991 if set time val -f d_time; eval $csym; $val; then
14992 echo 'time() found.' >&4
14994 rp="What is the type returned by time() on this system?"
14995 set time_t timetype long stdio.h sys/types.h
14998 echo 'time() not found, hope that will do.' >&4
15006 : see what type uids are declared as in the kernel
15008 echo "Looking for the type for user ids returned by getuid()."
15009 set uid_t uidtype xxx stdio.h sys/types.h
15013 xxx=`./findhdr sys/user.h`
15014 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15016 unsigned) dflt="$1 $2" ;;
15020 *) dflt="$uidtype";;
15023 uid_t) echo "uid_t found." ;;
15024 *) rp="What is the type for user ids returned by getuid()?"
15032 *_t) zzz="$uidtype" ;;
15035 echo "Checking the size of $zzz..." >&4
15037 #include <sys/types.h>
15040 printf("%d\n", (int)sizeof($uidtype));
15045 if eval $compile_ok; then
15049 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15052 echo "Your $zzz is $uidsize bytes long."
15057 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15062 *_t) zzz="$uidtype" ;;
15065 echo "Checking the sign of $zzz..." >&4
15067 #include <sys/types.h>
15078 if eval $compile; then
15082 echo "(I can't execute the test program--guessing unsigned.)" >&4
15086 1) echo "Your $zzz is unsigned." ;;
15087 -1) echo "Your $zzz is signed." ;;
15093 echo "(I can't compile the test program--guessing unsigned.)" >&4
15099 $echo "Checking the format string to be used for uids..." >&4
15102 -1) if $test X"$uidsize" = X"$ivsize"; then
15103 uidformat="$ivdformat"
15105 if $test X"$uidsize" = X"$longsize"; then
15108 if $test X"$uidsize" = X"$intsize"; then
15111 if $test X"$uidsize" = X"$shortsize"; then
15118 *) if $test X"$uidsize" = X"$uvsize"; then
15119 uidformat="$uvuformat"
15121 if $test X"$uidsize" = X"$longsize"; then
15124 if $test X"$uidsize" = X"$intsize"; then
15127 if $test X"$uidsize" = X"$shortsize"; then
15136 : determine compiler compiler
15145 if $test -f "$byacc"; then
15147 comp="byacc or $comp"
15149 if $test -f "$bison"; then
15150 comp="$comp or bison -y"
15152 rp="Which compiler compiler ($comp) shall I use?"
15161 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15167 : see if dbm.h is available
15168 : see if dbmclose exists
15169 set dbmclose d_dbmclose
15172 case "$d_dbmclose" in
15182 *) set rpcsvc/dbm.h i_rpcsvcdbm
15187 *) echo "We won't be including <dbm.h>"
15197 : see if this is a sys/file.h system
15202 : do we need to include sys/file.h ?
15206 if $h_sysfile; then
15208 echo "We'll be including <sys/file.h>." >&4
15211 echo "We won't be including <sys/file.h>." >&4
15221 : see if fcntl.h is there
15226 : see if we can include fcntl.h
15232 echo "We'll be including <fcntl.h>." >&4
15235 if $h_sysfile; then
15236 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15238 echo "We won't be including <fcntl.h>." >&4
15250 : see if this is a iconv.h system
15251 set iconv.h i_iconv
15254 : see if this is a ieeefp.h system
15255 set ieeefp.h i_ieeefp
15258 : see if this is a libutil.h system
15259 set libutil.h i_libutil
15262 : see if locale.h is available
15263 set locale.h i_locale
15266 : see if mach cthreads are available
15267 if test "X$usethreads" = "X$define"; then
15268 set mach/cthreads.h i_machcthr
15271 i_machcthr="$undef"
15276 : see if this is a math.h system
15280 : see if this is a mntent.h system
15281 set mntent.h i_mntent
15284 : see if ndbm.h is available
15289 : see if dbm_open exists
15290 set dbm_open d_dbm_open
15292 case "$d_dbm_open" in
15295 echo "We won't be including <ndbm.h>"
15304 : see if net/errno.h is available
15306 set net/errno.h val
15309 : Unfortunately, it causes problems on some systems. Arrgh.
15312 cat > try.c <<'EOM'
15315 #include <net/errno.h>
15321 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15322 echo "We'll be including <net/errno.h>." >&4
15324 echo "We won't be including <net/errno.h>." >&4
15333 : see if netinet/tcp.h is available
15334 set netinet/tcp.h i_netinettcp
15337 : see if this is a poll.h system
15341 : see if this is a prot.h system
15346 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15347 $cat <<'EOSH' > Cppsym.know
15348 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15349 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15350 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15351 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15352 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15353 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15354 bull c cadmus clipper CMU COFF COMPILER_VERSION
15355 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15356 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15357 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15358 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15359 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15360 H3050R H3050RX hbullx20 hcx host_mips
15361 hp200 hp300 hp700 HP700 hp800 hp9000
15362 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15363 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15364 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15365 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15366 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15367 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15368 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15369 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15370 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15371 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15372 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15373 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15374 MATH_HAS_NO_SIDE_EFFECTS
15375 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15376 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15377 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15378 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15379 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15380 NetBSD news1500 news1700 news1800 news1900 news3700
15381 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15382 ns32016 ns32332 ns32k nsc32000
15383 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15384 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15385 pc532 pdp11 PGC PIC plexus PORTAR posix
15386 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15387 POSIX_C_SOURCE POSIX_SOURCE POWER
15388 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15389 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15390 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15391 sony sony_news sonyrisc sparc sparclite spectrum
15392 stardent stdc STDC_EXT stratos sun sun3 sun386
15393 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15394 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15395 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15396 sysV68 sysV88 Tek4132 Tek4300 titan
15397 TM3200 TM5400 TM5600
15398 tower tower32 tower32_200 tower32_600 tower32_700
15399 tower32_800 tower32_850 tss
15400 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15401 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15402 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15403 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15404 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15405 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15408 # Maybe put other stuff here too.
15409 cat <<EOSH >>Cppsym.know
15412 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15413 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15414 $cat Cppsym.know > Cppsym.c
15415 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15416 $rm -f Cppsym.a Cppsym.b Cppsym.c
15417 cat <<EOSH > Cppsym
15419 if $test \$# -gt 0; then
15420 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15421 if $test -s Cppsym.got; then
15428 $tr " " "$trnl" | ./Cppsym.try
15434 cat <<EOSH > Cppsym.try
15436 cat <<'EOCP' > try.c
15442 cat <<'EOSH' >> Cppsym.try
15444 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
15445 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
15446 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
15447 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
15451 cat <<EOSH >> Cppsym.try
15453 case "$osname-$gccversion" in
15454 irix-) ccflags="\$ccflags -woff 1178" ;;
15455 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15457 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15459 chmod +x Cppsym.try
15460 $eunicefix Cppsym.try
15461 ./Cppsym < Cppsym.know > Cppsym.true
15462 : now check the C compiler for additional symbols
15463 postprocess_cc_v=''
15465 aix) postprocess_cc_v="|$tr , ' '" ;;
15472 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15475 -D*) echo "\$i" | $sed 's/^-D//';;
15476 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15481 postprocess_cc_v=''
15484 ./ccsym > ccsym1.raw
15485 if $test -s ccsym1.raw; then
15486 $sort ccsym1.raw | $uniq >ccsym.raw
15488 mv ccsym1.raw ccsym.raw
15491 $awk '/\=/ { print $0; next }
15492 { print $0"=1" }' ccsym.raw >ccsym.list
15493 $awk '/\=/ { print $0; next }
15494 { print $0"=1" }' Cppsym.true >ccsym.true
15495 $comm -13 ccsym.true ccsym.list >ccsym.own
15496 $comm -12 ccsym.true ccsym.list >ccsym.com
15497 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15499 if $test -z ccsym.raw; then
15500 echo "Your C compiler doesn't seem to define any symbols!" >&4
15502 echo "However, your C preprocessor defines the following symbols:"
15505 cppsymbols=`$cat Cppsym.true`
15506 cppsymbols=`echo $cppsymbols`
15507 cppccsymbols="$cppsymbols"
15509 if $test -s ccsym.com; then
15510 echo "Your C compiler and pre-processor define these symbols:"
15511 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15514 cppccsymbols=`$cat ccsym.com`
15515 cppccsymbols=`echo $cppccsymbols`
15516 $test "$silent" || sleep 1
15518 if $test -s ccsym.cpp; then
15519 $test "$also" && echo " "
15520 echo "Your C pre-processor ${also}defines the following symbols:"
15521 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15523 cppsymbols=`$cat ccsym.cpp`
15524 cppsymbols=`echo $cppsymbols`
15525 $test "$silent" || sleep 1
15527 if $test -s ccsym.own; then
15528 $test "$also" && echo " "
15529 echo "Your C compiler ${also}defines the following cpp symbols:"
15530 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15531 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15532 ccsymbols=`$cat ccsym.own`
15533 ccsymbols=`echo $ccsymbols`
15534 $test "$silent" || sleep 1
15537 $rm -f ccsym* Cppsym.*
15539 : see if this is a termio system
15543 if $test `./findhdr termios.h`; then
15544 set tcsetattr i_termios
15550 "$define") echo "You have POSIX termios.h... good!" >&4;;
15551 *) if ./Cppsym pyr; then
15552 case "`/bin/universe`" in
15553 ucb) if $test `./findhdr sgtty.h`; then
15555 echo "<sgtty.h> found." >&4
15557 echo "System is pyramid with BSD universe."
15558 echo "<sgtty.h> not found--you could have problems." >&4
15560 *) if $test `./findhdr termio.h`; then
15562 echo "<termio.h> found." >&4
15564 echo "System is pyramid with USG universe."
15565 echo "<termio.h> not found--you could have problems." >&4
15569 if $test `./findhdr termio.h`; then
15570 echo "<termio.h> found." >&4
15572 elif $test `./findhdr sgtty.h`; then
15573 echo "<sgtty.h> found." >&4
15576 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15579 if $test `./findhdr sgtty.h`; then
15580 echo "<sgtty.h> found." >&4
15582 elif $test `./findhdr termio.h`; then
15583 echo "<termio.h> found." >&4
15586 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15590 set i_termio; eval $setvar
15591 val=$val2; set i_sgtty; eval $setvar
15592 val=$val3; set i_termios; eval $setvar
15594 : see if this is a shadow.h system
15595 set shadow.h i_shadow
15598 : see if stddef is available
15599 set stddef.h i_stddef
15602 : see if this is a sunmath.h system
15603 set sunmath.h i_sunmath
15606 : see if sys/access.h is available
15607 set sys/access.h i_sysaccess
15610 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15611 set sys/filio.h i_sysfilio
15614 if $test `./findhdr sys/ioctl.h`; then
15616 echo '<sys/ioctl.h> found.' >&4
15619 if $test $i_sysfilio = "$define"; then
15620 echo '<sys/ioctl.h> NOT found.' >&4
15622 $test $i_sgtty = "$define" && xxx="sgtty.h"
15623 $test $i_termio = "$define" && xxx="termio.h"
15624 $test $i_termios = "$define" && xxx="termios.h"
15625 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15631 : see if socket ioctl defs are in sys/sockio.h
15633 xxx=`./findhdr sys/sockio.h`
15634 if $test "$xxx"; then
15635 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
15637 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
15640 echo "No socket ioctls found in <sys/sockio.h>." >&4
15645 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
15652 : see if this is a syslog.h system
15653 set syslog.h i_syslog
15657 : see if this is a sys/mode.h system
15658 set sys/mode.h i_sysmode
15661 : see if sys/resource.h has to be included
15662 set sys/resource.h i_sysresrc
15665 : see if sys/security.h is available
15666 set sys/security.h i_syssecrt
15669 : see if this is a sys/statvfs.h system
15670 set sys/statvfs.h i_sysstatvfs
15673 : see if this is a sys/un.h system
15674 set sys/un.h i_sysun
15678 : see if this is a sys/utsname.h system
15679 set sys/utsname.h i_sysutsname
15682 : see if this is a syswait system
15683 set sys/wait.h i_syswait
15686 : see if this is a ustat.h system
15687 set ustat.h i_ustat
15690 : see if this is an utime system
15691 set utime.h i_utime
15694 : see if this is a values.h system
15695 set values.h i_values
15698 : see if this is a vfork system
15701 set vfork.h i_vfork
15709 : see if gdbm.h is available
15714 : see if gdbm_open exists
15715 set gdbm_open d_gdbm_open
15717 case "$d_gdbm_open" in
15720 echo "We won't be including <gdbm.h>"
15730 echo "Looking for extensions..." >&4
15731 : If we are using the old config.sh, known_extensions may contain
15732 : old or inaccurate or duplicate values.
15733 known_extensions=''
15734 nonxs_extensions=''
15735 : We do not use find because it might not be available.
15736 : We do not just use MANIFEST because the user may have dropped
15737 : some additional extensions into the source tree and expect them
15740 : Function to recursively find available extensions, ignoring DynaLoader
15741 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15745 DynaLoader|dynaload) ;;
15747 if $test -f $xxx/$xxx.xs; then
15748 known_extensions="$known_extensions $1$xxx";
15749 elif $test -f $xxx/Makefile.PL; then
15750 nonxs_extensions="$nonxs_extensions $1$xxx";
15752 if $test -d $xxx -a $# -lt 10; then
15755 eval $find_extensions;
15767 eval $find_extensions
15768 set X $nonxs_extensions
15770 nonxs_extensions="$*"
15771 set X $known_extensions
15773 known_extensions="$*"
15776 : Now see which are supported on this system.
15778 for xxx in $known_extensions ; do
15782 $define) avail_ext="$avail_ext $xxx" ;;
15785 GDBM_File|gdbm_fil)
15787 $define) avail_ext="$avail_ext $xxx" ;;
15790 NDBM_File|ndbm_fil)
15793 case "$osname-$use64bitint" in
15796 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15799 *) avail_ext="$avail_ext $xxx" ;;
15804 ODBM_File|odbm_fil)
15805 case "${i_dbm}${i_rpcsvcdbm}" in
15807 case "$osname-$use64bitint" in
15810 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15813 *) avail_ext="$avail_ext $xxx" ;;
15819 case "$useposix" in
15820 true|define|y) avail_ext="$avail_ext $xxx" ;;
15824 case "$useopcode" in
15825 true|define|y) avail_ext="$avail_ext $xxx" ;;
15829 case "$d_socket" in
15830 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15833 Sys/Syslog|sys/syslog)
15834 : XXX syslog requires socket
15835 case "$d_socket" in
15836 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15840 case "$usethreads" in
15841 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15845 : XXX Do we need a useipcsysv variable here
15846 case "${d_msg}${d_sem}${d_shm}" in
15847 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15850 *) avail_ext="$avail_ext $xxx"
15859 : Now see which nonxs extensions are supported on this system.
15860 : For now assume all are.
15862 for xxx in $nonxs_extensions ; do
15864 *) nonxs_ext="$nonxs_ext $xxx"
15876 A number of extensions are supplied with $package. You may choose to
15877 compile these extensions for dynamic loading (the default), compile
15878 them into the $package executable (static loading), or not include
15879 them at all. Answer "none" to include no extensions.
15880 Note that DynaLoader is always built and need not be mentioned here.
15883 case "$dynamic_ext" in
15884 '') dflt="$avail_ext" ;;
15885 *) dflt="$dynamic_ext"
15886 # Perhaps we are reusing an old out-of-date config.sh.
15889 if test X"$dynamic_ext" != X"$avail_ext"; then
15891 NOTICE: Your previous config.sh list may be incorrect.
15892 The extensions now available to you are
15894 but the default list from your previous config.sh is
15906 rp="What extensions do you wish to load dynamically?"
15909 none) dynamic_ext=' ' ;;
15910 *) dynamic_ext="$ans" ;;
15913 case "$static_ext" in
15915 : Exclude those already listed in dynamic linking
15917 for xxx in $avail_ext; do
15918 case " $dynamic_ext " in
15920 *) dflt="$dflt $xxx" ;;
15927 *) dflt="$static_ext"
15934 rp="What extensions do you wish to load statically?"
15937 none) static_ext=' ' ;;
15938 *) static_ext="$ans" ;;
15943 A number of extensions are supplied with $package. Answer "none"
15944 to include no extensions.
15945 Note that DynaLoader is always built and need not be mentioned here.
15948 case "$static_ext" in
15949 '') dflt="$avail_ext" ;;
15950 *) dflt="$static_ext"
15951 # Perhaps we are reusing an old out-of-date config.sh.
15954 if test X"$static_ext" != X"$avail_ext"; then
15956 NOTICE: Your previous config.sh list may be incorrect.
15957 The extensions now available to you are
15959 but the default list from your previous config.sh is
15968 : Exclude those that are not xs extensions
15972 rp="What extensions do you wish to include?"
15975 none) static_ext=' ' ;;
15976 *) static_ext="$ans" ;;
15981 set X $dynamic_ext $static_ext $nonxs_ext
15985 : Remove libraries needed only for extensions
15986 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15987 : The exception is SunOS 4.x, which needs them.
15988 case "${osname}X${osvers}" in
15992 *) case "$usedl" in
15993 $define|true|[yY]*)
15994 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15998 *) perllibs="$libs"
16004 : Remove build directory name from cppstdin so it can be used from
16005 : either the present location or the final installed location.
16007 : Get out of the UU directory to get correct path name.
16009 case "$cppstdin" in
16011 echo "Stripping down cppstdin path name"
16017 : end of configuration questions
16019 echo "End of configuration questions."
16022 : back to where it started
16023 if test -d ../UU; then
16027 : configuration may be patched via a 'config.over' file
16028 if $test -f config.over; then
16031 rp='I see a config.over file. Do you wish to load it?'
16034 n*) echo "OK, I'll ignore it.";;
16036 echo "Configuration override changes have been loaded."
16041 : in case they want portability, strip down executable paths
16042 case "$d_portable" in
16045 echo "Stripping down executable paths..." >&4
16046 for file in $loclist $trylist; do
16048 eval $file=`basename $temp`
16053 : create config.sh file
16055 echo "Creating config.sh..." >&4
16056 $spitshell <<EOT >config.sh
16059 # This file was produced by running the Configure script. It holds all the
16060 # definitions figured out by Configure. Should you modify one of these values,
16061 # do not forget to propagate your changes by running "Configure -der". You may
16062 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16065 # Package name : $package
16066 # Source directory : $src
16067 # Configuration time: $cf_time
16068 # Configured by : $cf_by
16069 # Target system : $myuname
16079 Revision='$Revision'
16086 alignbytes='$alignbytes'
16087 ansi2knr='$ansi2knr'
16088 aphostname='$aphostname'
16089 api_revision='$api_revision'
16090 api_subversion='$api_subversion'
16091 api_version='$api_version'
16092 api_versionstring='$api_versionstring'
16095 archlibexp='$archlibexp'
16096 archname64='$archname64'
16097 archname='$archname'
16098 archobjs='$archobjs'
16103 bincompat5005='$bincompat5005'
16107 byteorder='$byteorder'
16109 castflags='$castflags'
16112 cccdlflags='$cccdlflags'
16113 ccdlflags='$ccdlflags'
16115 ccflags_uselargefiles='$ccflags_uselargefiles'
16117 ccsymbols='$ccsymbols'
16118 ccversion='$ccversion'
16120 cf_email='$cf_email'
16122 charsize='$charsize'
16126 clocktype='$clocktype'
16128 compress='$compress'
16129 contains='$contains'
16133 cpp_stuff='$cpp_stuff'
16134 cppccsymbols='$cppccsymbols'
16135 cppflags='$cppflags'
16137 cppminus='$cppminus'
16139 cppstdin='$cppstdin'
16140 cppsymbols='$cppsymbols'
16141 crosscompile='$crosscompile'
16142 cryptlib='$cryptlib'
16144 d_Gconvert='$d_Gconvert'
16145 d_PRIEUldbl='$d_PRIEUldbl'
16146 d_PRIFUldbl='$d_PRIFUldbl'
16147 d_PRIGUldbl='$d_PRIGUldbl'
16148 d_PRIXU64='$d_PRIXU64'
16149 d_PRId64='$d_PRId64'
16150 d_PRIeldbl='$d_PRIeldbl'
16151 d_PRIfldbl='$d_PRIfldbl'
16152 d_PRIgldbl='$d_PRIgldbl'
16153 d_PRIi64='$d_PRIi64'
16154 d_PRIo64='$d_PRIo64'
16155 d_PRIu64='$d_PRIu64'
16156 d_PRIx64='$d_PRIx64'
16157 d_SCNfldbl='$d_SCNfldbl'
16158 d__fwalk='$d__fwalk'
16159 d_access='$d_access'
16160 d_accessx='$d_accessx'
16162 d_archlib='$d_archlib'
16165 d_attribut='$d_attribut'
16168 d_bincompat5005='$d_bincompat5005'
16170 d_bsdgetpgrp='$d_bsdgetpgrp'
16171 d_bsdsetpgrp='$d_bsdsetpgrp'
16173 d_casti32='$d_casti32'
16174 d_castneg='$d_castneg'
16175 d_charvspr='$d_charvspr'
16177 d_chroot='$d_chroot'
16178 d_chsize='$d_chsize'
16179 d_closedir='$d_closedir'
16180 d_cmsghdr_s='$d_cmsghdr_s'
16184 d_cuserid='$d_cuserid'
16185 d_dbl_dig='$d_dbl_dig'
16186 d_difftime='$d_difftime'
16187 d_dirnamlen='$d_dirnamlen'
16188 d_dlerror='$d_dlerror'
16189 d_dlopen='$d_dlopen'
16190 d_dlsymun='$d_dlsymun'
16191 d_dosuid='$d_dosuid'
16192 d_drand48proto='$d_drand48proto'
16194 d_eaccess='$d_eaccess'
16195 d_endgrent='$d_endgrent'
16196 d_endhent='$d_endhent'
16197 d_endnent='$d_endnent'
16198 d_endpent='$d_endpent'
16199 d_endpwent='$d_endpwent'
16200 d_endsent='$d_endsent'
16201 d_eofnblk='$d_eofnblk'
16202 d_eunice='$d_eunice'
16203 d_fchmod='$d_fchmod'
16204 d_fchown='$d_fchown'
16206 d_fcntl_can_lock='$d_fcntl_can_lock'
16207 d_fd_macros='$d_fd_macros'
16208 d_fd_set='$d_fd_set'
16209 d_fds_bits='$d_fds_bits'
16210 d_fgetpos='$d_fgetpos'
16211 d_flexfnam='$d_flexfnam'
16214 d_fpathconf='$d_fpathconf'
16215 d_fpos64_t='$d_fpos64_t'
16216 d_frexpl='$d_frexpl'
16217 d_fs_data_s='$d_fs_data_s'
16218 d_fseeko='$d_fseeko'
16219 d_fsetpos='$d_fsetpos'
16220 d_fstatfs='$d_fstatfs'
16221 d_fstatvfs='$d_fstatvfs'
16223 d_ftello='$d_ftello'
16225 d_getcwd='$d_getcwd'
16226 d_getespwnam='$d_getespwnam'
16227 d_getfsstat='$d_getfsstat'
16228 d_getgrent='$d_getgrent'
16229 d_getgrps='$d_getgrps'
16230 d_gethbyaddr='$d_gethbyaddr'
16231 d_gethbyname='$d_gethbyname'
16232 d_gethent='$d_gethent'
16233 d_gethname='$d_gethname'
16234 d_gethostprotos='$d_gethostprotos'
16235 d_getitimer='$d_getitimer'
16236 d_getlogin='$d_getlogin'
16237 d_getmnt='$d_getmnt'
16238 d_getmntent='$d_getmntent'
16239 d_getnbyaddr='$d_getnbyaddr'
16240 d_getnbyname='$d_getnbyname'
16241 d_getnent='$d_getnent'
16242 d_getnetprotos='$d_getnetprotos'
16243 d_getpagsz='$d_getpagsz'
16244 d_getpbyname='$d_getpbyname'
16245 d_getpbynumber='$d_getpbynumber'
16246 d_getpent='$d_getpent'
16247 d_getpgid='$d_getpgid'
16248 d_getpgrp2='$d_getpgrp2'
16249 d_getpgrp='$d_getpgrp'
16250 d_getppid='$d_getppid'
16251 d_getprior='$d_getprior'
16252 d_getprotoprotos='$d_getprotoprotos'
16253 d_getprpwnam='$d_getprpwnam'
16254 d_getpwent='$d_getpwent'
16255 d_getsbyname='$d_getsbyname'
16256 d_getsbyport='$d_getsbyport'
16257 d_getsent='$d_getsent'
16258 d_getservprotos='$d_getservprotos'
16259 d_getspnam='$d_getspnam'
16260 d_gettimeod='$d_gettimeod'
16261 d_gnulibc='$d_gnulibc'
16262 d_grpasswd='$d_grpasswd'
16263 d_hasmntopt='$d_hasmntopt'
16267 d_inetaton='$d_inetaton'
16268 d_int64_t='$d_int64_t'
16269 d_isascii='$d_isascii'
16271 d_isnanl='$d_isnanl'
16272 d_killpg='$d_killpg'
16273 d_lchown='$d_lchown'
16274 d_ldbl_dig='$d_ldbl_dig'
16276 d_locconv='$d_locconv'
16278 d_longdbl='$d_longdbl'
16279 d_longlong='$d_longlong'
16280 d_lseekproto='$d_lseekproto'
16282 d_madvise='$d_madvise'
16284 d_mbstowcs='$d_mbstowcs'
16285 d_mbtowc='$d_mbtowc'
16286 d_memchr='$d_memchr'
16287 d_memcmp='$d_memcmp'
16288 d_memcpy='$d_memcpy'
16289 d_memmove='$d_memmove'
16290 d_memset='$d_memset'
16292 d_mkdtemp='$d_mkdtemp'
16293 d_mkfifo='$d_mkfifo'
16294 d_mkstemp='$d_mkstemp'
16295 d_mkstemps='$d_mkstemps'
16296 d_mktime='$d_mktime'
16299 d_mprotect='$d_mprotect'
16301 d_msg_ctrunc='$d_msg_ctrunc'
16302 d_msg_dontroute='$d_msg_dontroute'
16303 d_msg_oob='$d_msg_oob'
16304 d_msg_peek='$d_msg_peek'
16305 d_msg_proxy='$d_msg_proxy'
16306 d_msgctl='$d_msgctl'
16307 d_msgget='$d_msgget'
16308 d_msghdr_s='$d_msghdr_s'
16309 d_msgrcv='$d_msgrcv'
16310 d_msgsnd='$d_msgsnd'
16312 d_munmap='$d_munmap'
16313 d_mymalloc='$d_mymalloc'
16315 d_nv_preserves_uv='$d_nv_preserves_uv'
16316 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16317 d_off64_t='$d_off64_t'
16318 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16319 d_oldpthreads='$d_oldpthreads'
16320 d_oldsock='$d_oldsock'
16322 d_pathconf='$d_pathconf'
16324 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16325 d_phostname='$d_phostname'
16328 d_portable='$d_portable'
16329 d_pthread_yield='$d_pthread_yield'
16331 d_pwchange='$d_pwchange'
16332 d_pwclass='$d_pwclass'
16333 d_pwcomment='$d_pwcomment'
16334 d_pwexpire='$d_pwexpire'
16335 d_pwgecos='$d_pwgecos'
16336 d_pwpasswd='$d_pwpasswd'
16337 d_pwquota='$d_pwquota'
16340 d_readdir='$d_readdir'
16341 d_readlink='$d_readlink'
16343 d_recvmsg='$d_recvmsg'
16344 d_rename='$d_rename'
16345 d_rewinddir='$d_rewinddir'
16347 d_safebcpy='$d_safebcpy'
16348 d_safemcpy='$d_safemcpy'
16349 d_sanemcmp='$d_sanemcmp'
16350 d_sbrkproto='$d_sbrkproto'
16351 d_sched_yield='$d_sched_yield'
16352 d_scm_rights='$d_scm_rights'
16353 d_seekdir='$d_seekdir'
16354 d_select='$d_select'
16356 d_semctl='$d_semctl'
16357 d_semctl_semid_ds='$d_semctl_semid_ds'
16358 d_semctl_semun='$d_semctl_semun'
16359 d_semget='$d_semget'
16361 d_sendmsg='$d_sendmsg'
16362 d_setegid='$d_setegid'
16363 d_seteuid='$d_seteuid'
16364 d_setgrent='$d_setgrent'
16365 d_setgrps='$d_setgrps'
16366 d_sethent='$d_sethent'
16367 d_setitimer='$d_setitimer'
16368 d_setlinebuf='$d_setlinebuf'
16369 d_setlocale='$d_setlocale'
16370 d_setnent='$d_setnent'
16371 d_setpent='$d_setpent'
16372 d_setpgid='$d_setpgid'
16373 d_setpgrp2='$d_setpgrp2'
16374 d_setpgrp='$d_setpgrp'
16375 d_setprior='$d_setprior'
16376 d_setproctitle='$d_setproctitle'
16377 d_setpwent='$d_setpwent'
16378 d_setregid='$d_setregid'
16379 d_setresgid='$d_setresgid'
16380 d_setresuid='$d_setresuid'
16381 d_setreuid='$d_setreuid'
16382 d_setrgid='$d_setrgid'
16383 d_setruid='$d_setruid'
16384 d_setsent='$d_setsent'
16385 d_setsid='$d_setsid'
16386 d_setvbuf='$d_setvbuf'
16390 d_shmatprototype='$d_shmatprototype'
16391 d_shmctl='$d_shmctl'
16393 d_shmget='$d_shmget'
16394 d_sigaction='$d_sigaction'
16395 d_sigprocmask='$d_sigprocmask'
16396 d_sigsetjmp='$d_sigsetjmp'
16397 d_sockatmark='$d_sockatmark'
16398 d_socket='$d_socket'
16399 d_socklen_t='$d_socklen_t'
16400 d_sockpair='$d_sockpair'
16401 d_socks5_init='$d_socks5_init'
16403 d_statblks='$d_statblks'
16404 d_statfs_f_flags='$d_statfs_f_flags'
16405 d_statfs_s='$d_statfs_s'
16406 d_statvfs='$d_statvfs'
16407 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16408 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16409 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16410 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16411 d_stdio_stream_array='$d_stdio_stream_array'
16412 d_stdiobase='$d_stdiobase'
16413 d_stdstdio='$d_stdstdio'
16414 d_strchr='$d_strchr'
16415 d_strcoll='$d_strcoll'
16416 d_strctcpy='$d_strctcpy'
16417 d_strerrm='$d_strerrm'
16418 d_strerror='$d_strerror'
16419 d_strftime='$d_strftime'
16420 d_strtod='$d_strtod'
16421 d_strtol='$d_strtol'
16422 d_strtold='$d_strtold'
16423 d_strtoll='$d_strtoll'
16424 d_strtoq='$d_strtoq'
16425 d_strtoul='$d_strtoul'
16426 d_strtoull='$d_strtoull'
16427 d_strtouq='$d_strtouq'
16428 d_strxfrm='$d_strxfrm'
16429 d_suidsafe='$d_suidsafe'
16430 d_symlink='$d_symlink'
16431 d_syscall='$d_syscall'
16432 d_sysconf='$d_sysconf'
16433 d_sysernlst='$d_sysernlst'
16434 d_syserrlst='$d_syserrlst'
16435 d_system='$d_system'
16436 d_tcgetpgrp='$d_tcgetpgrp'
16437 d_tcsetpgrp='$d_tcsetpgrp'
16438 d_telldir='$d_telldir'
16439 d_telldirproto='$d_telldirproto'
16442 d_truncate='$d_truncate'
16443 d_tzname='$d_tzname'
16444 d_u32align='$d_u32align'
16445 d_ualarm='$d_ualarm'
16448 d_union_semun='$d_union_semun'
16449 d_usleep='$d_usleep'
16451 d_vendorarch='$d_vendorarch'
16452 d_vendorbin='$d_vendorbin'
16453 d_vendorlib='$d_vendorlib'
16455 d_void_closedir='$d_void_closedir'
16456 d_voidsig='$d_voidsig'
16457 d_voidtty='$d_voidtty'
16458 d_volatile='$d_volatile'
16459 d_vprintf='$d_vprintf'
16461 d_waitpid='$d_waitpid'
16462 d_wcstombs='$d_wcstombs'
16463 d_wctomb='$d_wctomb'
16464 d_writev='$d_writev'
16467 db_hashtype='$db_hashtype'
16468 db_prefixtype='$db_prefixtype'
16469 defvoidused='$defvoidused'
16470 direntrytype='$direntrytype'
16473 doublesize='$doublesize'
16475 dynamic_ext='$dynamic_ext'
16481 eunicefix='$eunicefix'
16484 extensions='$extensions'
16485 fflushNULL='$fflushNULL'
16486 fflushall='$fflushall'
16488 firstmakefile='$firstmakefile'
16490 fpossize='$fpossize'
16491 fpostype='$fpostype'
16492 freetype='$freetype'
16494 full_csh='$full_csh'
16495 full_sed='$full_sed'
16496 gccosandvers='$gccosandvers'
16497 gccversion='$gccversion'
16498 gidformat='$gidformat'
16504 groupcat='$groupcat'
16505 groupstype='$groupstype'
16508 h_sysfile='$h_sysfile'
16519 i_arpainet='$i_arpainet'
16520 i_bsdioctl='$i_bsdioctl'
16523 i_dirent='$i_dirent'
16531 i_ieeefp='$i_ieeefp'
16532 i_inttypes='$i_inttypes'
16533 i_libutil='$i_libutil'
16534 i_limits='$i_limits'
16535 i_locale='$i_locale'
16536 i_machcthr='$i_machcthr'
16537 i_malloc='$i_malloc'
16539 i_memory='$i_memory'
16540 i_mntent='$i_mntent'
16543 i_neterrno='$i_neterrno'
16544 i_netinettcp='$i_netinettcp'
16548 i_pthread='$i_pthread'
16550 i_rpcsvcdbm='$i_rpcsvcdbm'
16553 i_shadow='$i_shadow'
16555 i_stdarg='$i_stdarg'
16556 i_stddef='$i_stddef'
16557 i_stdlib='$i_stdlib'
16558 i_string='$i_string'
16559 i_sunmath='$i_sunmath'
16560 i_sysaccess='$i_sysaccess'
16561 i_sysdir='$i_sysdir'
16562 i_sysfile='$i_sysfile'
16563 i_sysfilio='$i_sysfilio'
16565 i_sysioctl='$i_sysioctl'
16566 i_syslog='$i_syslog'
16567 i_sysmman='$i_sysmman'
16568 i_sysmode='$i_sysmode'
16569 i_sysmount='$i_sysmount'
16570 i_sysndir='$i_sysndir'
16571 i_sysparam='$i_sysparam'
16572 i_sysresrc='$i_sysresrc'
16573 i_syssecrt='$i_syssecrt'
16574 i_sysselct='$i_sysselct'
16575 i_syssockio='$i_syssockio'
16576 i_sysstat='$i_sysstat'
16577 i_sysstatfs='$i_sysstatfs'
16578 i_sysstatvfs='$i_sysstatvfs'
16579 i_systime='$i_systime'
16580 i_systimek='$i_systimek'
16581 i_systimes='$i_systimes'
16582 i_systypes='$i_systypes'
16583 i_sysuio='$i_sysuio'
16585 i_sysutsname='$i_sysutsname'
16586 i_sysvfs='$i_sysvfs'
16587 i_syswait='$i_syswait'
16588 i_termio='$i_termio'
16589 i_termios='$i_termios'
16591 i_unistd='$i_unistd'
16594 i_values='$i_values'
16595 i_varargs='$i_varargs'
16596 i_varhdr='$i_varhdr'
16598 ignore_versioned_solibs='$ignore_versioned_solibs'
16599 inc_version_list='$inc_version_list'
16600 inc_version_list_init='$inc_version_list_init'
16603 installarchlib='$installarchlib'
16604 installbin='$installbin'
16605 installman1dir='$installman1dir'
16606 installman3dir='$installman3dir'
16607 installprefix='$installprefix'
16608 installprefixexp='$installprefixexp'
16609 installprivlib='$installprivlib'
16610 installscript='$installscript'
16611 installsitearch='$installsitearch'
16612 installsitebin='$installsitebin'
16613 installsitelib='$installsitelib'
16614 installstyle='$installstyle'
16615 installusrbinperl='$installusrbinperl'
16616 installvendorarch='$installvendorarch'
16617 installvendorbin='$installvendorbin'
16618 installvendorlib='$installvendorlib'
16620 issymlink='$issymlink'
16621 ivdformat='$ivdformat'
16624 known_extensions='$known_extensions'
16627 lddlflags='$lddlflags'
16629 ldflags_uselargefiles='$ldflags_uselargefiles'
16630 ldlibpthname='$ldlibpthname'
16637 libsdirs='$libsdirs'
16638 libsfiles='$libsfiles'
16639 libsfound='$libsfound'
16640 libspath='$libspath'
16641 libswanted='$libswanted'
16642 libswanted_uselargefiles='$libswanted_uselargefiles'
16648 locincpth='$locincpth'
16649 loclibpth='$loclibpth'
16650 longdblsize='$longdblsize'
16651 longlongsize='$longlongsize'
16652 longsize='$longsize'
16656 lseeksize='$lseeksize'
16657 lseektype='$lseektype'
16661 make_set_make='$make_set_make'
16662 mallocobj='$mallocobj'
16663 mallocsrc='$mallocsrc'
16664 malloctype='$malloctype'
16666 man1direxp='$man1direxp'
16669 man3direxp='$man3direxp'
16671 mips_type='$mips_type'
16673 mmaptype='$mmaptype'
16674 modetype='$modetype'
16676 multiarch='$multiarch'
16678 myarchname='$myarchname'
16679 mydomain='$mydomain'
16680 myhostname='$myhostname'
16683 need_va_copy='$need_va_copy'
16684 netdb_hlen_type='$netdb_hlen_type'
16685 netdb_host_type='$netdb_host_type'
16686 netdb_name_type='$netdb_name_type'
16687 netdb_net_type='$netdb_net_type'
16690 nm_so_opt='$nm_so_opt'
16691 nonxs_ext='$nonxs_ext'
16693 nvEUformat='$nvEUformat'
16694 nvFUformat='$nvFUformat'
16695 nvGUformat='$nvGUformat'
16696 nveformat='$nveformat'
16697 nvfformat='$nvfformat'
16698 nvgformat='$nvgformat'
16701 o_nonblock='$o_nonblock'
16703 old_pthread_create_joinable='$old_pthread_create_joinable'
16704 optimize='$optimize'
16705 orderlib='$orderlib'
16708 otherlibdirs='$otherlibdirs'
16712 patchlevel='$patchlevel'
16713 path_sep='$path_sep'
16716 perladmin='$perladmin'
16717 perllibs='$perllibs'
16718 perlpath='$perlpath'
16720 phostname='$phostname'
16723 pm_apiversion='$pm_apiversion'
16727 prefixexp='$prefixexp'
16729 privlibexp='$privlibexp'
16730 prototype='$prototype'
16732 quadkind='$quadkind'
16733 quadtype='$quadtype'
16734 randbits='$randbits'
16735 randfunc='$randfunc'
16736 randseedtype='$randseedtype'
16738 rd_nodata='$rd_nodata'
16739 revision='$revision'
16743 sPRIEUldbl='$sPRIEUldbl'
16744 sPRIFUldbl='$sPRIFUldbl'
16745 sPRIGUldbl='$sPRIGUldbl'
16746 sPRIXU64='$sPRIXU64'
16748 sPRIeldbl='$sPRIeldbl'
16749 sPRIfldbl='$sPRIfldbl'
16750 sPRIgldbl='$sPRIgldbl'
16755 sSCNfldbl='$sSCNfldbl'
16756 sched_yield='$sched_yield'
16757 scriptdir='$scriptdir'
16758 scriptdirexp='$scriptdirexp'
16760 seedfunc='$seedfunc'
16761 selectminbits='$selectminbits'
16762 selecttype='$selecttype'
16763 sendmail='$sendmail'
16766 sharpbang='$sharpbang'
16767 shmattype='$shmattype'
16768 shortsize='$shortsize'
16771 sig_count='$sig_count'
16772 sig_name='$sig_name'
16773 sig_name_init='$sig_name_init'
16775 sig_num_init='$sig_num_init'
16776 sig_size='$sig_size'
16777 signal_t='$signal_t'
16778 sitearch='$sitearch'
16779 sitearchexp='$sitearchexp'
16781 sitebinexp='$sitebinexp'
16783 sitelib_stem='$sitelib_stem'
16784 sitelibexp='$sitelibexp'
16785 siteprefix='$siteprefix'
16786 siteprefixexp='$siteprefixexp'
16787 sizesize='$sizesize'
16788 sizetype='$sizetype'
16792 sockethdr='$sockethdr'
16793 socketlib='$socketlib'
16794 socksizetype='$socksizetype'
16796 spackage='$spackage'
16797 spitshell='$spitshell'
16799 ssizetype='$ssizetype'
16800 startperl='$startperl'
16802 static_ext='$static_ext'
16804 stdio_base='$stdio_base'
16805 stdio_bufsiz='$stdio_bufsiz'
16806 stdio_cnt='$stdio_cnt'
16807 stdio_filbuf='$stdio_filbuf'
16808 stdio_ptr='$stdio_ptr'
16809 stdio_stream_array='$stdio_stream_array'
16812 subversion='$subversion'
16819 timeincl='$timeincl'
16820 timetype='$timetype'
16833 uidformat='$uidformat'
16839 uquadtype='$uquadtype'
16840 use5005threads='$use5005threads'
16841 use64bitall='$use64bitall'
16842 use64bitint='$use64bitint'
16844 useithreads='$useithreads'
16845 uselargefiles='$uselargefiles'
16846 uselongdouble='$uselongdouble'
16847 usemorebits='$usemorebits'
16848 usemultiplicity='$usemultiplicity'
16849 usemymalloc='$usemymalloc'
16851 useopcode='$useopcode'
16852 useperlio='$useperlio'
16853 useposix='$useposix'
16855 useshrplib='$useshrplib'
16856 usesocks='$usesocks'
16857 usethreads='$usethreads'
16858 usevendorprefix='$usevendorprefix'
16859 usevfork='$usevfork'
16862 uvXUformat='$uvXUformat'
16863 uvoformat='$uvoformat'
16866 uvuformat='$uvuformat'
16867 uvxformat='$uvxformat'
16868 vendorarch='$vendorarch'
16869 vendorarchexp='$vendorarchexp'
16870 vendorbin='$vendorbin'
16871 vendorbinexp='$vendorbinexp'
16872 vendorlib='$vendorlib'
16873 vendorlib_stem='$vendorlib_stem'
16874 vendorlibexp='$vendorlibexp'
16875 vendorprefix='$vendorprefix'
16876 vendorprefixexp='$vendorprefixexp'
16878 versiononly='$versiononly'
16880 voidflags='$voidflags'
16882 xs_apiversion='$xs_apiversion'
16884 yaccflags='$yaccflags'
16889 : Add in command line options if available
16890 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16892 : add special variables
16893 $test -f $src/patchlevel.h && \
16894 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16895 echo "PERL_CONFIG_SH=true" >>config.sh
16897 : propagate old symbols
16898 if $test -f UU/config.sh; then
16899 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16900 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16901 $sort | $uniq -u >UU/oldsyms
16902 set X `cat UU/oldsyms`
16908 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16910 echo "# Variables propagated from previous config.sh file." >>config.sh
16911 for sym in `cat UU/oldsyms`; do
16912 echo " Propagating $hint variable "'$'"$sym..."
16913 eval 'tmp="$'"${sym}"'"'
16915 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16921 : Finish up by extracting the .SH files
16935 If you'd like to make any changes to the config.sh file before I begin
16936 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16939 rp="Press return or use a shell escape to edit config.sh:"
16944 *) : in case they cannot read
16945 sh 1>&4 -c "$ans";;
16950 : if this fails, just run all the .SH files by hand
16957 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16964 Now you need to generate make dependencies by running "$make depend".
16965 You might prefer to run it in background: "$make depend > makedepend.out &"
16966 It can take a while, so you might not want to run it right now.
16971 rp="Run $make depend now?"
16975 $make depend && echo "Now you must run '$make'."
16978 echo "You must run '$make depend' then '$make'."
16981 elif test -f [Mm]akefile; then
16983 echo "Now you must run a $make."
16988 if $test -f Policy.sh; then
16991 If you compile $package on a different machine or from a different object
16992 directory, copy the Policy.sh file from this object directory to the
16993 new one before you run Configure -- this will help you with most of
16994 the policy defaults.
16998 if $test -f config.msg; then
16999 echo "Hmm. I also noted the following information while running:"
17001 $cat config.msg >&4
17004 $rm -f kit*isdone ark*isdone