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 Mon Nov 19 22:50:26 GMT 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
68 case "X${MACHTYPE:-nonesuchmach}" in
76 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
77 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
78 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
79 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
80 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
81 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
82 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
83 paths="$paths /sbin /usr/sbin /usr/libexec"
89 *) test -d $p && PATH=$PATH$p_$p ;;
96 : shall we be using ksh?
102 if (PATH=.; alias -x) >/dev/null 2>&1; then
105 if test -f /hp-ux -a -f /bin/ksh; then
106 needksh='to avoid sh bug in "here document" expansion'
108 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
109 if test X`/usr/bin/uname -v` = X4; then
110 avoidksh="to avoid AIX 4's /bin/sh"
114 if test -f /osf_boot -a -f /usr/sbin/setld; then
115 if test X`/usr/bin/uname -s` = XOSF1; then
116 avoidksh="to avoid Digital UNIX' ksh"
118 unset BIN_SH # if this is 'xpg4' sh will start up ksh
121 case "$inksh/$needksh" in
128 case "$inksh/$avoidksh" in
134 case "$inksh/$needksh-$avoidksh-" in
137 (I see you are using the Korn shell. Some ksh's blow up on $me,
138 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
144 echo "(Feeding myself to $newsh $reason.)"
146 Configure|*/Configure) exec $newsh $0 "$@";;
147 *) exec $newsh Configure "$@";;
152 : if needed set CDPATH to a harmless value that is not chatty
153 : avoid bash 2.02 problems with empty CDPATH.
157 *bash*) CDPATH='.' ;;
162 : Configure runs within the UU subdirectory
163 test -d UU || mkdir UU
490 d_old_pthread_create_joinable=''
491 old_pthread_create_joinable=''
579 d_stdio_ptr_lval_nochange_cnt=''
580 d_stdio_ptr_lval_sets_cnt=''
765 inc_version_list_init=''
784 ignore_versioned_solibs=''
843 d_perl_otherlibdirs=''
857 version_patchlevel_string=''
862 d_nv_preserves_uv_bits=''
962 d_stdio_stream_array=''
963 stdio_stream_array=''
973 ccflags_uselargefiles=''
974 ldflags_uselargefiles=''
975 libswanted_uselargefiles=''
1021 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1024 : We must find out about Eunice early
1026 if test -f /etc/unixtovms; then
1027 eunicefix=/etc/unixtovms
1029 if test -f /etc/unixtovms.exe; then
1030 eunicefix=/etc/unixtovms.exe
1034 : Possible local include directories to search.
1035 : Set locincpth to "" in a hint file to defeat local include searches.
1036 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1037 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1039 : no include file wanted by default
1042 : Trailing extension. Override this in a hint file, if needed.
1044 : Extra object files, if any, needed on this platform.
1048 : change the next line if compiling for Xenix/286 on Xenix/386
1049 xlibpth='/usr/lib/386 /lib/386'
1050 : Possible local library directories to search.
1051 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1052 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1054 : general looking path for locating libraries
1055 glibpth="/lib /usr/lib $xlibpth"
1056 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1057 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1058 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1060 : Private path used by Configure to find libraries. Its value
1061 : is prepended to libpth. This variable takes care of special
1062 : machines, like the mips. Usually, it should be empty.
1065 : default library list
1067 : some systems want to use only the non-versioned libso:s
1068 ignore_versioned_solibs=''
1069 : full support for void wanted by default
1075 : set useposix=false in your hint file to disable the POSIX extension.
1077 : set useopcode=false in your hint file to disable the Opcode extension.
1080 ccflags_uselargefiles=''
1081 ldflags_uselargefiles=''
1082 libswanted_uselargefiles=''
1083 : set usemultiplicity on the Configure command line to enable multiplicity.
1084 : set usesocks on the Configure command line to enable socks.
1086 : set usethreads on the Configure command line to enable threads.
1087 usereentrant='undef'
1088 : List of libraries we want.
1089 : If anyone needs -lnet, put it in a hint file.
1090 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1091 libswanted="$libswanted dld ld sun m c cposix posix"
1092 libswanted="$libswanted ndir dir crypt sec"
1093 libswanted="$libswanted ucb bsd BSD PW x util"
1094 : We probably want to search /usr/shlib before most other libraries.
1095 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1096 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1097 glibpth="/usr/shlib $glibpth"
1098 : Do not use vfork unless overridden by a hint file.
1101 : Find the basic shell for Bourne shell scripts
1105 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1108 if test -f "$xxx"; then
1111 : Build up a list and do a single loop so we can 'break' out.
1112 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1113 for xxx in sh bash ksh pdksh ash; do
1115 try="$try ${p}/${xxx}"
1119 if test -f "$xxx"; then
1122 elif test -f "$xxx.exe"; then
1133 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1135 Usually it's in /bin/sh. How did you even get this far?
1136 Please contact me (Perl Maintainers) at perlbug@perl.org and
1137 we'll try to straighten this all out.
1143 : see if sh knows # comments
1144 if `$sh -c '#' >/dev/null 2>&1`; then
1148 test -f $xcat || xcat=/usr/bin/cat
1149 echo "#!$xcat" >sharp
1153 if test -s today; then
1156 echo "#! $xcat" > sharp
1160 if test -s today; then
1168 echo "Your $sh doesn't grok # comments--I will strip them later on."
1171 echo "exec grep -v '^[ ]*#'" >spitshell
1173 $eunicefix spitshell
1174 spitshell=`pwd`/spitshell
1176 echo "I presume that if # doesn't work, #! won't work either!"
1181 : figure out how to guarantee sh startup
1183 '') startsh=${sharpbang}${sh} ;;
1195 : echo "Yup, it does."
1197 echo "Hmm... '$startsh' does not guarantee sh startup..."
1198 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1203 : Save command line options in file UU/cmdline.opt for later use in
1204 : generating config.sh.
1205 cat > cmdline.opt <<EOSH
1206 # Configure command line arguments.
1215 cat >>cmdline.opt <<EOSH
1216 config_arg$argn='$arg'
1218 # Extreme backslashitis: replace each ' by '"'"'
1219 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1222 arg_exp=`cat cmdl.opt`
1223 args_exp="$args_exp$args_sep'$arg_exp'"
1224 argn=`expr $argn + 1`
1227 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1228 # used by ./hints/os2.sh
1231 : produce awk script to parse command line options
1232 cat >options.awk <<'EOF'
1234 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1236 len = length(optstr);
1237 for (i = 1; i <= len; i++) {
1238 c = substr(optstr, i, 1);
1239 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1250 if (substr(str, 1, 1) != "-") {
1251 printf("'%s'\n", str);
1255 for (i = 2; i <= len; i++) {
1256 c = substr(str, i, 1);
1258 printf("-%s\n", substr(str, i));
1264 printf("'%s'\n", substr(str, i + 1));
1277 : process the command line options
1278 set X `for arg in "$@"; do echo "X$arg"; done |
1279 sed -e s/X// | awk -f options.awk`
1284 : set up default values
1294 rm -f optdef.sh posthint.sh
1295 cat >optdef.sh <<EOS
1301 while test $# -gt 0; do
1303 -d) shift; fastread=yes;;
1304 -e) shift; alldone=cont;;
1308 if test -r "$1"; then
1311 echo "$me: cannot read config file $1." >&2
1316 -h) shift; error=true;;
1317 -r) shift; reuseval=true;;
1318 -s) shift; silent=true; realsilent=true;;
1319 -E) shift; alldone=exit;;
1320 -K) shift; knowitall=true;;
1321 -O) shift; override=true;;
1322 -S) shift; silent=true; extractsh=true;;
1327 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1328 echo "$me: ignoring -D $1" >&2
1331 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1332 *) echo "$1='define'" >> optdef.sh;;
1339 *=) echo "$1" >> optdef.sh;;
1341 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1342 echo "$me: ignoring -U $1" >&2
1344 *) echo "$1='undef'" >> optdef.sh;;
1355 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1359 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1360 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1366 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1367 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1368 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1369 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1370 *) xxx=`echo $yyy|sed 's!:.*!!'`
1371 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1377 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1379 echo "$yyy=''" >> posthint.sh ;;
1384 echo "$yyy='$zzz'" >> posthint.sh ;;
1386 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1388 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1393 echo "$yyy=$zzz" >> posthint.sh ;;
1394 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1398 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1401 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1409 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1410 [-U symbol] [-U symbol=] [-A command:symbol...]
1411 -d : use defaults for all answers.
1412 -e : go on without questioning past the production of config.sh.
1413 -f : specify an alternate default configuration file.
1414 -h : print this help message and exit (with an error status).
1415 -r : reuse C symbols value if possible (skips costly nm extraction).
1416 -s : silent mode, only echoes questions and essential information.
1417 -D : define symbol to have some value:
1418 -D symbol symbol gets the value 'define'
1419 -D symbol=value symbol gets the value 'value'
1420 -E : stop at the end of questions, after having produced config.sh.
1421 -K : do not use unless you know what you are doing.
1422 -O : let -D and -U override definitions from loaded configuration file.
1423 -S : perform variable substitutions on all .SH files (can mix with -f)
1424 -U : undefine symbol:
1425 -U symbol symbol gets the value 'undef'
1426 -U symbol= symbol gets completely empty
1427 -A : manipulate symbol after the platform specific hints have been applied:
1428 -A symbol=value append " "value to symbol
1429 -A append:symbol=value append value to symbol
1430 -A define:symbol=value define symbol to have value
1431 -A clear:symbol define symbol to be ''
1432 -A define:symbol define symbol to be 'define'
1433 -A eval:symbol=value define symbol to be eval of value
1434 -A prepend:symbol=value prepend value to symbol
1435 -A undef:symbol define symbol to be 'undef'
1436 -A undef:symbol= define symbol to be ''
1437 -V : print version number and exit (with a zero status).
1444 case "$fastread$alldone" in
1447 case "$extractsh" in
1450 if test ! -t 0; then
1451 echo "Say 'sh Configure', not 'sh <Configure'"
1461 true) exec 1>/dev/null;;
1464 : run the defines and the undefines, if any, but leave the file out there...
1467 : create the posthint manipulation script and leave the file out there...
1472 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1473 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1474 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1475 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1476 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1479 : Some greps do not return status, grrr.
1480 echo "grimblepritz" >grimble
1481 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1483 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1489 : the following should work in any shell
1493 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1494 cat >contains <<'EOSS'
1495 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1500 : Find the path to the source tree
1503 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1507 *) src=`cd ../$src && pwd` ;;
1520 if test -f $rsrc/Configure && \
1521 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1523 : found it, so we are ok.
1526 for src in . .. ../.. ../../.. ../../../..; do
1527 if test -f ../$src/Configure && \
1528 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1539 Sorry, I can't seem to locate the source dir for $package. Please start
1540 Configure with an explicit path -- i.e. /some/path/Configure.
1548 echo "Sources for $package found in \"$src\"." >&4
1552 : script used to extract .SH files with variable substitutions
1553 cat >extract <<'EOS'
1555 echo "Doing variable substitutions on .SH files..."
1556 if test -f MANIFEST; then
1557 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1559 echo "(Looking for .SH files under the source directory.)"
1560 set x `(cd $src; find . -name "*.SH" -print)`
1564 0) set x `(cd $src; echo *.SH)`; shift;;
1566 if test ! -f $src/$1; then
1572 while test $name; do
1573 if test ! -d "$name"; then
1574 create="$name $create";
1575 name=`echo $name | sed -e "s|^[^/]*$||"`;
1576 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1581 for file in $create; do
1590 dir=`expr X$file : 'X\(.*\)/'`
1591 file=`expr X$file : 'X.*/\(.*\)'`
1592 (cd $dir && . ./$file)
1602 dir=`expr X$file : 'X\(.*\)/'`
1603 file=`expr X$file : 'X.*/\(.*\)'`
1604 (set x $dir; shift; eval $mkdir_p)
1614 if test -f $src/config_h.SH; then
1615 if test ! -f config.h; then
1616 : oops, they left it out of MANIFEST, probably, so do it anyway.
1622 : extract files and exit if asked to do so
1623 case "$extractsh" in
1625 case "$realsilent" in
1629 case "$config_sh" in
1630 '') config_sh='config.sh';;
1633 echo "Fetching answers from $config_sh..."
1636 test "$override" && . ./optdef.sh
1640 echo "Extraction done."
1645 : Eunice requires " " instead of "", can you believe it
1648 echo "Beginning of configuration questions for $package."
1650 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1652 : first determine how to suppress newline on echo command
1654 echo "Checking echo to see how to suppress newlines..."
1655 (echo "hi there\c" ; echo " ") >.echotmp
1656 if $contains c .echotmp >/dev/null 2>&1 ; then
1667 echo $n "The star should be here-->$c"
1671 : Now test for existence of everything in MANIFEST
1673 if test -f $rsrc/MANIFEST; then
1674 echo "First let's make sure your kit is complete. Checking..." >&4
1675 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1678 for filelist in x??; do
1679 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1681 if test -s missing; then
1685 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1687 You have the option of continuing the configuration process, despite the
1688 distinct possibility that your kit is damaged, by typing 'y'es. If you
1689 do, don't blame me if something goes wrong. I advise you to type 'n'o
1690 and contact the author (perlbug@perl.org).
1693 echo $n "Continue? [n] $c" >&4
1697 echo "Continuing..." >&4
1701 echo "ABORTING..." >&4
1706 echo "Looks good..."
1709 echo "There is no MANIFEST file. I hope your kit is complete !"
1714 : Find the appropriate value for a newline for tr
1715 if test -n "$DJGPP"; then
1718 if test X"$trnl" = X; then
1719 case "`echo foo|tr '\n' x 2>/dev/null`" in
1723 if test X"$trnl" = X; then
1724 case "`echo foo|tr '\012' x 2>/dev/null`" in
1725 foox) trnl='\012' ;;
1728 if test X"$trnl" = X; then
1731 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1737 : compute the number of columns on the terminal for proper question formatting
1742 : set up the echo used in my read
1743 myecho="case \"\$xxxm\" in
1744 '') echo $n \"\$rp $c\" >&4;;
1746 '') echo $n \"[\$xxxm] $c\";;
1748 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1750 echo $n \"[\$xxxm] $c\" >&4
1752 echo $n \"\$rp [\$xxxm] $c\" >&4
1758 : now set up to do reads with possible shell escape and default assignment
1764 case "\$fastread" in
1765 yes) case "\$dflt" in
1768 case "\$silent-\$rp" in
1773 *) case "\$silent" in
1774 true) case "\$rp" in
1779 while expr "X\$ans" : "X!" >/dev/null; do
1783 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1791 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1800 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1805 echo "(OK, I'll run with -d after this question.)" >&4
1808 echo "*** Sorry, \$1 not supported yet." >&4
1818 echo "*** Substitution done -- please confirm."
1820 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1825 echo "*** Error -- try again."
1832 case "\$ans\$xxxm\$nostick" in
1844 : create .config dir to save info across Configure sessions
1845 test -d ../.config || mkdir ../.config
1846 cat >../.config/README <<EOF
1847 This directory created by Configure to save information that should
1848 persist across sessions for $package.
1850 You may safely delete it if you wish.
1853 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1855 $define|true|[yY]*) ;;
1856 *) case "$xversion" in
1859 *** WHOA THERE!!! ***
1861 This is an UNSTABLE DEVELOPMENT release.
1862 The version of this $package distribution is $xversion, that is, odd,
1863 (as opposed to even) and that signifies a development release.
1864 If you want a maintenance release, you want an even-numbered version.
1866 Do ***NOT*** install this into production use.
1867 Data corruption and crashes are possible.
1869 It is most seriously suggested that you do not continue any further
1870 unless you want to help in developing and debugging Perl.
1872 If you *still* want to build perl, you can answer 'y' now,
1873 or pass -Dusedevel to Configure.
1876 rp='Do you really want to continue?'
1880 [yY]) echo >&4 "Okay, continuing."
1881 usedevel="$define" ;;
1882 *) echo >&4 "Okay, bye."
1892 case "$versiononly" in
1893 '') versiononly="$define" ;;
1895 case "$installusrbinperl" in
1896 '') installusrbinperl="$undef" ;;
1901 : general instructions
1904 user=`(logname) 2>/dev/null`
1906 '') user=`whoami 2>&1`;;
1908 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1911 rp='Would you like to see the instructions?'
1922 This installation shell script will examine your system and ask you questions
1923 to determine how the perl5 package should be installed. If you get
1924 stuck on a question, you may use a ! shell escape to start a subshell or
1925 execute a command. Many of the questions will have default answers in square
1926 brackets; typing carriage return will give you the default.
1928 On some of the questions which ask for file or directory names you are allowed
1929 to use the ~name construct to specify the login directory belonging to "name",
1930 even if you don't have a shell which knows about that. Questions where this is
1931 allowed will be marked "(~name ok)".
1935 dflt='Type carriage return to continue'
1939 The prompter used in this script allows you to use shell variables and
1940 backticks in your answers. You may use $1, $2, etc... to refer to the words
1941 in the default answer, as if the default line was a set of arguments given to a
1942 script shell. This means you may also use $* to repeat the whole default line,
1943 so you do not have to re-type everything to add something to the default.
1945 Everytime there is a substitution, you will have to confirm. If there is an
1946 error (e.g. an unmatched backtick), the default answer will remain unchanged
1947 and you will be prompted again.
1949 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1950 the questions and use the computed defaults (or the previous answers if there
1951 was already a config.sh file). Type 'Configure -h' for a list of options.
1952 You may also start interactively and then answer '& -d' at any prompt to turn
1953 on the non-interactive behaviour for the remainder of the execution.
1959 Much effort has been expended to ensure that this shell script will run on any
1960 Unix system. If despite that it blows up on yours, your best bet is to edit
1961 Configure and run it again. If you can't run Configure for some reason,
1962 you'll have to generate a config.sh file by hand. Whatever problems you
1963 have, let me (perlbug@perl.org) know how I blew it.
1965 This installation script affects things in two ways:
1967 1) it may do direct variable substitutions on some of the files included
1969 2) it builds a config.h file for inclusion in C programs. You may edit
1970 any of these files as the need arises after running this script.
1972 If you make a mistake on a question, there is no easy way to back up to it
1973 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1974 files. Configure will offer to let you do this before it runs the SH files.
1977 dflt='Type carriage return to continue'
1979 case "$firsttime" in
1980 true) echo $user >>../.config/instruct;;
1984 : find out where common programs are
1986 echo "Locating common programs..." >&4
1999 if test -d \$dir/\$thing; then
2005 for thisthing in \$dir/\$thing; do
2006 : just loop through to pick last item
2008 if test -f \$thisthing; then
2011 elif test -f \$dir/\$thing.exe; then
2012 if test -n "$DJGPP"; then
2013 echo \$dir/\$thing.exe
2015 : on Eunice apparently
2067 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2068 pth="$pth /lib /usr/lib"
2069 for file in $loclist; do
2073 if test -f "$xxx"; then
2076 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2077 xxx=`./loc $file $file $pth`
2080 '') xxx=`./loc $file $file $pth`;;
2081 *) xxx=`./loc $xxx $xxx $pth`;;
2087 echo $file is in $xxx.
2090 echo $file is in $xxx.
2093 echo "I don't know where '$file' is, and my life depends on it." >&4
2094 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2100 echo "Don't worry if any of the following aren't found..."
2102 for file in $trylist; do
2106 if test -f "$xxx"; then
2109 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2110 xxx=`./loc $file $file $pth`
2113 '') xxx=`./loc $file $file $pth`;;
2114 *) xxx=`./loc $xxx $xxx $pth`;;
2120 echo $file is in $xxx.
2123 echo $file is in $xxx.
2126 echo "I don't see $file out there, $say."
2133 echo "Substituting grep for egrep."
2139 echo "Substituting cp for ln."
2145 echo "Hopefully test is built into your sh."
2148 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2149 echo "Using the test built into your sh."
2157 echo "Hopefully echo is built into your sh."
2162 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2163 $echo $n "hi there$c" >foo1
2164 echo $n "hi there$c" >foo2
2165 if cmp foo1 foo2 >/dev/null 2>&1; then
2166 echo "They are compatible. In fact, they may be identical."
2173 They are not compatible! You are probably running ksh on a non-USG system.
2174 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2175 have echo built in and we may have to run some Bourne shell scripts. That
2176 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2179 $echo $n "The star should be here-->$c"
2189 cat <<'EOSC' >>checkcc
2194 int main(int argc, char *argv[]) {
2198 if $cc -o try $ccflags $ldflags try.c; then
2201 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2207 case "`$cc -v -c try.c 2>&1`" in
2210 if $test X"$trygcc" = Xyes; then
2211 if gcc -o try -c try.c; then
2213 echo "You seem to have a working gcc, though." >&4
2214 rp="Would you like to use it?"
2216 if $test -f myread; then
2219 if $test -f UU/myread; then
2222 echo "Cannot find myread, sorry. Aborting." >&2
2227 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2231 if $test X"$despair" = Xyes; then
2233 You need to find a working C compiler.
2234 Either (purchase and) install the C compiler supplied by your OS vendor,
2235 or for a free C compiler try http://gcc.gnu.org/
2236 I cannot continue any further, aborting.
2246 : determine whether symbolic links are supported
2249 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2250 echo "Symbolic links are supported." >&4
2253 echo "Symbolic links are NOT supported." >&4
2258 : determine whether symbolic links are supported
2262 echo "Checking how to test for symbolic links..." >&4
2264 if $test "X$issymlink" = X; then
2265 sh -c "PATH= test -h sym" >/dev/null 2>&1
2266 if test $? = 0; then
2270 if $test "X$issymlink" = X; then
2271 if $test -h >/dev/null 2>&1; then
2272 issymlink="$test -h"
2273 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2276 if $test "X$issymlink" = X; then
2277 if $test -L sym 2>/dev/null; then
2278 issymlink="$test -L"
2281 if $test "X$issymlink" != X; then
2282 echo "You can test for symbolic links with '$issymlink'." >&4
2284 echo "I do not know how you can test for symbolic links." >&4
2288 *) echo "No symbolic links, so not testing for their testing..." >&4
2294 case "$mksymlinks" in
2297 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2300 *) case "$lns:$issymlink" in
2301 *"ln -s:"*"test -"?)
2302 echo "Creating the symbolic links..." >&4
2303 echo "(First creating the subdirectories...)" >&4
2305 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2307 test -z "$directory" && break
2311 if test ! -d t/base; then
2312 echo "Failed to create the subdirectories. Aborting." >&4
2315 echo "(Then creating the symlinks...)" >&4
2316 awk '{print $1}' $src/MANIFEST | while true; do
2318 test -z "$filename" && break
2319 if test -f $filename; then
2320 if $issymlink $filename; then
2324 if test -f $filename; then
2325 echo "$filename already exists, not symlinking."
2327 ln -s $src/$filename $filename
2331 if test ! -f t/base/lex.t; then
2332 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2337 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2346 case "$usecrosscompile" in
2348 $echo "Cross-compiling..."
2351 *-*-gcc) # A cross-compiling gcc, probably.
2352 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2354 # leave out ld, choosing it is more complex
2356 ranlib=$targetarch-ranlib
2357 $echo 'extern int foo;' > try.c
2358 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2360 if $test $# -gt 0; then
2362 incpth="`$echo $incpth|$sed 's/^ //'`"
2363 echo "Guessing incpth '$incpth'." >&4
2365 j="`$echo $i|$sed 's,/include$,/lib,'`"
2366 if $test -d $j; then
2370 libpth="`$echo $libpth|$sed 's/^ //'`"
2371 echo "Guessing libpth '$libpth'." >&4
2376 case "$targetarch" in
2377 '') echo "Targetarch not defined." >&4; croak=y ;;
2378 *) echo "Using targetarch $targetarch." >&4 ;;
2381 '') echo "Incpth not defined." >&4; croak=y ;;
2382 *) echo "Using incpth '$incpth'." >&4 ;;
2385 '') echo "Libpth not defined." >&4; croak=y ;;
2386 *) echo "Using libpth '$libpth'." >&4 ;;
2389 '') for i in $incpth; do
2390 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2392 echo "Guessing usrinc $usrinc." >&4
2397 '') echo "Usrinc not defined." >&4; croak=y ;;
2400 *) echo "Using usrinc $usrinc." >&4 ;;
2402 case "$targethost" in
2403 '') echo "Targethost not defined." >&4; croak=y ;;
2404 *) echo "Using targethost $targethost." >&4
2409 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2412 /*) run=$src/Cross/run
2413 targetmkdir=$src/Cross/mkdir
2415 from=$src/Cross/from
2417 *) pwd=`$test -f ../Configure & cd ..; pwd`
2419 targetmkdir=$pwd/Cross/mkdir
2421 from=$pwd/Cross/from
2424 case "$targetrun" in
2425 '') targetrun=ssh ;;
2430 case "$targetfrom" in
2431 '') targetfrom=scp ;;
2435 from=$from-$targetfrom
2436 case "$targetdir" in
2438 echo "Guessing targetdir $targetdir." >&4
2441 case "$targetuser" in
2443 echo "Guessing targetuser $targetuser." >&4
2446 case "$targetfrom" in
2450 case "$targetrun" in
2462 '') cwd=$targetdir ;;
2466 if $test ! -f \$exe.xok; then
2470 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2473 *) echo "Unknown targetrun '$targetrun'" >&4
2477 case "$targetmkdir" in
2479 cat >$targetmkdir <<EOF
2481 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2483 $chmod a+rx $targetmkdir
2485 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2497 $targetmkdir \`dirname \$f\`
2498 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2501 $targetmkdir $targetdir/\`dirname \$f\`
2502 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2515 $mkdir -p $targetdir/\`dirname \$f\`
2516 $cp \$f $targetdir/\$f || exit 1
2519 $targetmkdir $targetdir/\`dirname \$f\`
2520 $cp \$f $targetdir/\$f || exit 1
2527 *) echo "Unknown targetto '$targetto'" >&4
2531 case "$targetfrom" in
2538 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2543 cp) cat >$from <<EOF
2548 cp $targetdir/\$f . || exit 1
2553 *) echo "Unknown targetfrom '$targetfrom'" >&4
2557 if $test ! -f $run; then
2558 echo "Target 'run' script '$run' not found." >&4
2562 if $test ! -f $to; then
2563 echo "Target 'to' script '$to' not found." >&4
2567 if $test ! -f $from; then
2568 echo "Target 'from' script '$from' not found." >&4
2572 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2576 Using '$run' for remote execution,
2577 and '$from' and '$to'
2578 for remote file transfer.
2584 usecrosscompile='undef'
2589 : see whether [:lower:] and [:upper:] are supported character classes
2591 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2593 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2597 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2598 # (0xc9 and 0xd1), therefore that is a nice testing point.
2599 if test "X$up" = X -o "X$low" = X; then
2600 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2606 if test "X$up" = X -o "X$low" = X; then
2607 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2613 if test "X$up" = X -o "X$low" = X; then
2614 case "`echo IJ | od -x 2>/dev/null`" in
2616 echo "Hey, this might be EBCDIC." >&4
2617 if test "X$up" = X -o "X$low" = X; then
2618 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2619 ij) up='[A-IJ-RS-Z]'
2624 if test "X$up" = X -o "X$low" = X; then
2625 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2635 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2637 echo "Using $up and $low to convert case." >&4
2640 echo "I don't know how to translate letters from upper to lower case." >&4
2641 echo "Your tr is not acting any way I know of." >&4
2645 : set up the translation script tr, must be called with ./tr of course
2649 '[A-Z][a-z]') exec $tr '$up' '$low';;
2650 '[a-z][A-Z]') exec $tr '$low' '$up';;
2657 : Try to determine whether config.sh was made on this system
2658 case "$config_sh" in
2660 myuname=`$uname -a 2>/dev/null`
2661 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2662 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2663 # because the A-Z/a-z are not consecutive.
2664 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2665 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2666 newmyuname="$myuname"
2668 case "$knowitall" in
2670 if test -f ../config.sh; then
2671 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2672 eval "`grep myuname= ../config.sh`"
2674 if test "X$myuname" = "X$newmyuname"; then
2682 : Get old answers from old config file if Configure was run on the
2683 : same system, otherwise use the hints.
2686 if test -f config.sh; then
2688 rp="I see a config.sh file. Shall I use it to set the defaults?"
2691 n*|N*) echo "OK, I'll ignore it."
2692 mv config.sh config.sh.old
2693 myuname="$newmyuname"
2695 *) echo "Fetching default answers from your old config.sh file..." >&4
2703 : Older versions did not always set $sh. Catch re-use of such
2713 if test ! -f config.sh; then
2716 First time through, eh? I have some defaults handy for some systems
2717 that need some extra help getting the Configure answers right:
2720 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2722 : Half the following guesses are probably wrong... If you have better
2723 : tests or hints, please send them to perlbug@perl.org
2724 : The metaconfig authors would also appreciate a copy...
2725 $test -f /irix && osname=irix
2726 $test -f /xenix && osname=sco_xenix
2727 $test -f /dynix && osname=dynix
2728 $test -f /dnix && osname=dnix
2729 $test -f /lynx.os && osname=lynxos
2730 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2731 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2732 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2733 $test -f /bin/mips && /bin/mips && osname=mips
2734 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2735 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2736 $test -d /usr/apollo/bin && osname=apollo
2737 $test -f /etc/saf/_sactab && osname=svr4
2738 $test -d /usr/include/minix && osname=minix
2739 if $test -d /MachTen -o -d /MachTen_Folder; then
2741 if $test -x /sbin/version; then
2742 osvers=`/sbin/version | $awk '{print $2}' |
2743 $sed -e 's/[A-Za-z]$//'`
2744 elif $test -x /usr/etc/version; then
2745 osvers=`/usr/etc/version | $awk '{print $2}' |
2746 $sed -e 's/[A-Za-z]$//'`
2752 $test -f /sys/posix.dll &&
2753 $test -f /usr/bin/what &&
2754 set X `/usr/bin/what /sys/posix.dll` &&
2755 $test "$3" = UWIN &&
2759 if $test -f $uname; then
2767 umips) osname=umips ;;
2770 [23]100) osname=mips ;;
2771 next*) osname=next ;;
2773 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2774 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2777 elif $test -f /etc/kconfig; then
2779 if test "$lns" = "$ln -s"; then
2781 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2783 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2790 if test -n "$DJGPP"; then
2799 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2801 'not found') osvers="$4"."$3" ;;
2802 '<3240'|'<>3240') osvers=3.2.0 ;;
2803 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2804 '=3250'|'>3250') osvers=3.2.5 ;;
2808 bsd386) osname=bsd386
2811 cygwin*) osname=cygwin
2814 *dc.osx) osname=dcosx
2820 domainos) osname=apollo
2826 dynixptx*) osname=dynixptx
2827 osvers=`echo "$4"|sed 's/^v//'`
2829 freebsd) osname=freebsd
2831 genix) osname=genix ;;
2833 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2849 netbsd*) osname=netbsd
2852 news-os) osvers="$3"
2854 4*) osname=newsos4 ;;
2858 next*) osname=next ;;
2859 nonstop-ux) osname=nonstopux ;;
2860 POSIX-BC | posix-bc ) osname=posix-bc
2863 powerux | power_ux | powermax_os | powermaxos | \
2864 powerunix | power_unix) osname=powerux
2870 solaris) osname=solaris
2872 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2879 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2883 titanos) osname=titanos
2892 ultrix) osname=ultrix
2895 osf1|mls+) case "$5" in
2898 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2901 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2904 hp*) osname=hp_osf1 ;;
2905 mips) osname=mips_osf1 ;;
2908 unixware) osname=svr5
2914 $2) case "$osname" in
2918 : svr4.x or possibly later
2928 if test -f /stand/boot ; then
2929 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2930 if test -n "$INITPROG" -a -f "$INITPROG"; then
2931 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2932 if test -n "$isesix"; then
2940 *) if test -f /etc/systemid; then
2942 set `echo $3 | $sed 's/\./ /g'` $4
2943 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2945 elif $test -f $src/hints/sco_$1_$2.sh; then
2947 elif $test -f $src/hints/sco_$1.sh; then
2952 '') : Still unknown. Probably a generic Sys V.
2961 *) case "$osname" in
2962 '') : Still unknown. Probably a generic BSD.
2970 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2971 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2972 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2975 $rm -f UU/kernel.what
2976 elif test -d c:/.; then
2983 case "$targetarch" in
2986 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2991 : Now look for a hint file osname_osvers, unless one has been
2992 : specified already.
2995 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2996 : Also try without trailing minor version numbers.
2997 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2998 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2999 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3000 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3003 *) case "$osvers" in
3006 *) if $test -f $src/hints/$file.sh ; then
3008 elif $test -f $src/hints/$xfile.sh ; then
3010 elif $test -f $src/hints/$xxfile.sh ; then
3012 elif $test -f $src/hints/$xxxfile.sh ; then
3014 elif $test -f $src/hints/$xxxxfile.sh ; then
3016 elif $test -f "$src/hints/${osname}.sh" ; then
3025 if $test -f Policy.sh ; then
3028 none) dflt="Policy" ;;
3029 *) dflt="Policy $dflt" ;;
3034 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3038 if $test -f Policy.sh ; then
3041 There's also a Policy hint file available, which should make the
3042 site-specific (policy) questions easier to answer.
3049 You may give one or more space-separated answers, or "none" if appropriate.
3050 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3051 is a good thing. DO NOT give a wrong version or a wrong OS.
3055 rp="Which of these apply, if any?"
3058 for file in $tans; do
3059 if $test X$file = XPolicy -a -f Policy.sh; then
3061 $cat Policy.sh >> UU/config.sh
3062 elif $test -f $src/hints/$file.sh; then
3063 . $src/hints/$file.sh
3064 $cat $src/hints/$file.sh >> UU/config.sh
3065 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3068 : Give one chance to correct a possible typo.
3069 echo "$file.sh does not exist"
3071 rp="hint to use instead?"
3073 for file in $ans; do
3074 if $test -f "$src/hints/$file.sh"; then
3075 . $src/hints/$file.sh
3076 $cat $src/hints/$file.sh >> UU/config.sh
3077 elif $test X$ans = X -o X$ans = Xnone ; then
3080 echo "$file.sh does not exist -- ignored."
3087 : Remember our hint file for later.
3088 if $test -f "$src/hints/$file.sh" ; then
3098 echo "Fetching default answers from $config_sh..." >&4
3102 cp $config_sh config.sh 2>/dev/null
3112 test "$override" && . ./optdef.sh
3114 : Restore computed paths
3115 for file in $loclist $trylist; do
3116 eval $file="\$_$file"
3121 Configure uses the operating system name and version to set some defaults.
3122 The default value is probably right if the name rings a bell. Otherwise,
3123 since spelling matters for me, either accept the default or answer "none"
3130 ''|' '|none) dflt=none ;;
3131 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3134 *) dflt="$osname" ;;
3136 rp="Operating system name?"
3140 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3146 ''|' '|none) dflt=none ;;
3147 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3148 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3150 ''|' ') dflt=none ;;
3155 *) dflt="$osvers" ;;
3157 rp="Operating system version?"
3167 : who configured the system
3168 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3169 cf_by=`(logname) 2>/dev/null`
3172 cf_by=`(whoami) 2>/dev/null`
3174 "") cf_by=unknown ;;
3178 : set up the script used to warn in case of inconsistency
3185 echo "*** WHOA THERE!!! ***" >&4
3186 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3187 rp=" Keep the $hint value?"
3190 y) td=$was; tu=$was;;
3194 : function used to set $1 to $val
3195 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3197 $define$undef) . ./whoa; eval "$var=\$td";;
3198 $undef$define) . ./whoa; eval "$var=\$tu";;
3199 *) eval "$var=$val";;
3202 case "$usethreads" in
3203 $define|true|[yY]*) dflt='y';;
3208 Perl can be built to take advantage of threads on some systems.
3209 To do so, Configure can be run with -Dusethreads.
3211 Note that threading is a highly experimental feature, and
3212 some known race conditions still remain. If you choose to try
3213 it, be very sure to not actually deploy it for production
3214 purposes. README.threads has more details, and is required
3215 reading if you enable threads.
3217 If this doesn't make any sense to you, just accept the default '$dflt'.
3219 rp='Build a threading Perl?'
3222 y|Y) val="$define" ;;
3228 case "$usethreads" in
3232 As of 5.5.640, Perl has two different internal threading implementations,
3233 the 5.005 version (5005threads) and an interpreter-based version
3234 (ithreads) that has one interpreter per thread. Both are very
3235 experimental. This arrangement exists to help developers work out
3236 which one is better.
3238 If you're a casual user, you probably don't want interpreter-threads
3239 at this time. There doesn't yet exist a way to create threads from
3240 within Perl in this model, i.e., "use Thread;" will NOT work.
3242 : Default to ithreads unless overridden on command line or with
3245 case "$use5005threads" in
3246 $define|true|[yY]*) dflt='n';;
3248 case "$useithreads" in
3249 $undef|false|[nN]*) dflt='n';;
3251 rp='Use interpreter-based ithreads?'
3254 y|Y) val="$define" ;;
3259 : Now set use5005threads to the opposite value.
3260 case "$useithreads" in
3261 $define) val="$undef" ;;
3268 useithreads="$undef"
3269 use5005threads="$undef"
3273 case "$useithreads$use5005threads" in
3277 You cannot have both the ithreads and the 5.005 threads enabled
3278 at the same time. Disabling the 5.005 threads since they are
3279 much less stable than the ithreads.
3282 use5005threads="$undef"
3286 case "$d_oldpthreads" in
3287 '') : Configure tests would be welcome here. For now, assume undef.
3289 *) val="$d_oldpthreads" ;;
3295 case "$usethreads" in
3296 "$define"|true|[yY]*)
3297 : Look for a hint-file generated 'call-back-unit'. If the
3298 : user has specified that a threading perl is to be built,
3299 : we may need to set or change some other defaults.
3300 if $test -f usethreads.cbu; then
3301 echo "Your platform has some specific hints for threaded builds, using them..."
3305 (Your platform doesn't have any specific hints for threaded builds.
3306 Assuming POSIX threads, then.)
3314 Perl can be built so that multiple Perl interpreters can coexist
3315 within the same Perl executable.
3318 case "$useithreads" in
3321 This multiple interpreter support is required for interpreter-based threads.
3325 *) case "$usemultiplicity" in
3326 $define|true|[yY]*) dflt='y';;
3330 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3331 rp='Build Perl for multiplicity?'
3334 y|Y) val="$define" ;;
3343 case "$usemorebits" in
3344 "$define"|true|[yY]*)
3345 use64bitint="$define"
3346 uselongdouble="$define"
3347 usemorebits="$define"
3349 *) usemorebits="$undef"
3353 : make some quick guesses about what we are up against
3355 $echo $n "Hmm... $c"
3365 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3366 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3368 echo "Looks kind of like an OSF/1 system, but we'll see..."
3370 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3371 xxx=`./loc addbib blurfl $pth`
3372 if $test -f $xxx; then
3373 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3377 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3378 echo "Looks kind of like an extended USG system, but we'll see..."
3380 echo "Looks kind of like a USG system, but we'll see..."
3384 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3385 echo "Looks kind of like a BSD system, but we'll see..."
3389 echo "Looks kind of like a Version 7 system, but we'll see..."
3392 case "$eunicefix" in
3395 There is, however, a strange, musty smell in the air that reminds me of
3396 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3400 : it so happens the Eunice I know will not run shell scripts in Unix format
3404 echo "Congratulations. You aren't running Eunice."
3408 : Detect OS2. The p_ variable is set above in the Head.U unit.
3409 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3410 : semicolon as a patch separator
3415 I have the feeling something is not exactly right, however...don't tell me...
3416 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3417 (Or you may be running DOS with DJGPP.)
3422 if test -f /xenix; then
3423 echo "Actually, this looks more like a XENIX system..."
3428 echo "It's not Xenix..."
3433 if test -f /venix; then
3434 echo "Actually, this looks more like a VENIX system..."
3441 echo "Nor is it Venix..."
3444 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3445 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3452 rp="Use which C compiler?"
3455 : Look for a hint-file generated 'call-back-unit'. Now that the
3456 : user has specified the compiler, we may need to set or change some
3458 if $test -f cc.cbu; then
3464 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3470 printf("%s\n", __VERSION__);
3472 printf("%s\n", "1");
3478 if $cc -o try $ccflags $ldflags try.c; then
3479 gccversion=`$run ./try`
3480 case "$gccversion" in
3481 '') echo "You are not using GNU cc." ;;
3482 *) echo "You are using GNU cc $gccversion."
3488 echo "*** WHOA THERE!!! ***" >&4
3489 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3490 case "$knowitall" in
3492 echo " You'd better start hunting for one and let me know about it." >&4
3498 case "$gccversion" in
3499 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3501 case "$gccversion" in
3502 '') gccosandvers='' ;;
3503 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3504 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3506 case "$gccosandvers" in
3507 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3508 $osname$osvers) ;; # looking good
3509 $osname*) cat <<EOM >&4
3511 *** WHOA THERE!!! ***
3513 Your gcc has not been compiled for the exact release of
3514 your operating system ($gccosandvers versus $osname$osvers).
3516 In general it is a good idea to keep gcc synchronized with
3517 the operating system because otherwise serious problems
3518 may ensue when trying to compile software, like Perl.
3520 I'm trying to be optimistic here, though, and will continue.
3521 If later during the configuration and build icky compilation
3522 problems appear (headerfile conflicts being the most common
3523 manifestation), I suggest reinstalling the gcc to match
3524 your operating system release.
3528 *) gccosandvers='' ;; # failed to parse, better be silent
3537 : decide how portable to be. Allow command line overrides.
3538 case "$d_portable" in
3540 *) d_portable="$define" ;;
3543 : set up shell script to do ~ expansion
3549 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3552 if $test -f /bin/csh; then
3553 /bin/csh -f -c "glob \$1"
3558 name=\`$expr x\$1 : '..\([^/]*\)'\`
3559 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3560 if $test ! -d "\$dir"; then
3562 echo "\$me: can't locate home directory for: \$name" >&2
3567 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3583 : now set up to get a file name
3587 cat <<'EOSC' >>getfile
3603 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3604 fn=`echo $fn | sed 's/(.*)//'`
3610 loc_file=`expr $fn : '.*:\(.*\)'`
3611 fn=`expr $fn : '\(.*\):.*'`
3619 */*) fullpath=true;;
3628 *e*) exp_file=true;;
3631 *p*) nopath_ok=true;;
3636 *d*) type='Directory';;
3637 *l*) type='Locate';;
3642 Locate) what='File';;
3647 case "$d_portable" in
3655 while test "$type"; do
3660 true) rp="$rp (~name ok)";;
3663 if test -f UU/getfile.ok && \
3664 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3683 value=`UU/filexp $ans`
3686 if test "$ans" != "$value"; then
3687 echo "(That expands to $value on this system.)"
3701 /*) value="$ansexp" ;;
3702 [a-zA-Z]:/*) value="$ansexp" ;;
3707 echo "I shall only accept a full path name, as in /bin/ls." >&4
3708 echo "Use a ! shell escape if you wish to check pathnames." >&4
3711 echo "Please give a full path name, starting with slash." >&4
3714 echo "Note that using ~name is ok provided it expands well." >&4
3727 for fp in $gfpth; do
3728 if test "X$fp" = X.; then
3733 if test -f "$pf"; then
3735 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3737 echo "($value is not a plain file, but that's ok.)"
3740 if test X"$type" = X; then
3747 for fp in $gfpth; do
3748 if test "X$fp" = X.; then
3753 direxp="$fp/$ansexp"
3755 if test -d "$direxp"; then
3763 if test -d "$ansexp"; then
3764 echo "(Looking for $loc_file in directory $value.)"
3765 value="$value/$loc_file"
3766 ansexp="$ansexp/$loc_file"
3768 if test -f "$ansexp"; then
3771 case "$nopath_ok" in
3772 true) case "$value" in
3774 *) echo "Assuming $value will be in people's path."
3790 if test "$fastread" = yes; then
3795 rp="$what $value doesn't exist. Use that name anyway?"
3814 test "X$gfpthkeep" != Xy && gfpth=""
3817 : What should the include directory be ?
3819 $echo $n "Hmm... $c"
3823 if $test -f /bin/mips && /bin/mips; then
3824 echo "Looks like a MIPS system..."
3825 $cat >usr.c <<'EOCP'
3826 #ifdef SYSTYPE_BSD43
3830 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3831 dflt='/bsd43/usr/include'
3835 mips_type='System V'
3837 $rm -f usr.c usr.out
3838 echo "and you're compiling with the $mips_type compiler and libraries."
3842 echo "Doesn't look like a MIPS system."
3852 case "$xxx_prompt" in
3855 rp='Where are the include files you want to use?'
3863 : see how we invoke the C preprocessor
3865 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3866 cat <<'EOT' >testcpp.c
3872 if test ! -f cppstdin; then
3873 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3874 # AIX cc -E doesn't show the absolute headerfile
3875 # locations but we'll cheat by using the -M flag.
3876 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
3878 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3881 echo "Keeping your $hint cppstdin wrapper."
3884 wrapper=`pwd`/cppstdin
3888 if $test "X$cppstdin" != "X" && \
3889 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3890 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3892 echo "You used to use $cppstdin $cppminus so we'll use that again."
3894 '') echo "But let's see if we can live without a wrapper..." ;;
3896 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3897 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3899 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3902 echo "(However, $cpprun $cpplast does not work, let's see...)"
3910 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3917 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3918 $cc -E <testcpp.c >testcpp.out 2>&1; \
3919 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3920 echo "Yup, it does."
3923 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3924 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3925 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3926 echo "Yup, it does."
3929 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3930 $cc -P <testcpp.c >testcpp.out 2>&1; \
3931 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3932 echo "Yipee, that works!"
3935 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3936 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3937 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3938 echo "At long last!"
3941 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3942 $cpp <testcpp.c >testcpp.out 2>&1; \
3943 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3947 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3948 $cpp - <testcpp.c >testcpp.out 2>&1; \
3949 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3950 echo "Hooray, it works! I was beginning to wonder."
3953 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3954 $wrapper <testcpp.c >testcpp.out 2>&1; \
3955 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3961 rp="No dice. I can't find a C preprocessor. Name one:"
3965 $x_cpp <testcpp.c >testcpp.out 2>&1
3966 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3967 echo "OK, that will do." >&4
3969 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3984 echo "Perhaps can we force $cc -E using a wrapper..."
3985 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3986 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3992 echo "Nope, we'll have to live without it..."
4006 "$wrapper"|'cppstdin') ;;
4007 *) $rm -f $wrapper;;
4009 $rm -f testcpp.c testcpp.out
4011 : Set private lib path
4014 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4019 '') dlist="$loclibpth $plibpth $glibpth";;
4020 *) dlist="$libpth";;
4023 : Now check and see which directories actually exist, avoiding duplicates
4027 if $test -d $xxx; then
4030 *) libpth="$libpth $xxx";;
4036 Some systems have incompatible or broken versions of libraries. Among
4037 the directories listed in the question below, please remove any you
4038 know not to be holding relevant libraries, and add any that are needed.
4039 Say "none" for none.
4050 rp="Directories to use for library searches?"
4057 : compute shared library extension
4060 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4070 On some systems, shared libraries may be available. Answer 'none' if
4071 you want to suppress searching of shared libraries for the remainder
4072 of this configuration.
4075 rp='What is the file extension used for shared libraries?'
4079 : Define several unixisms.
4080 : Hints files or command line option can be used to override them.
4081 : The convoluted testing is in case hints files set either the old
4084 '') case "$exe_ext" in
4086 *) _exe="$exe_ext" ;;
4091 '') case "$lib_ext" in
4098 '') case "$obj_ext" in
4105 '') case "$path_sep" in
4116 : Which makefile gets called first. This is used by make depend.
4117 case "$firstmakefile" in
4118 '') firstmakefile='makefile';;
4122 $define|true|[yY]*) dflt='y';;
4127 Perl can be built to use the SOCKS proxy protocol library. To do so,
4128 Configure must be run with -Dusesocks. If you use SOCKS you also need
4129 to use the PerlIO abstraction layer, this will be implicitly selected.
4131 If this doesn't make any sense to you, just accept the default '$dflt'.
4133 rp='Build Perl for SOCKS?'
4136 y|Y) val="$define" ;;
4143 $define|true|[yY]*) useperlio="$define";;
4146 : Looking for optional libraries
4148 echo "Checking for optional libraries..." >&4
4153 case "$libswanted" in
4154 '') libswanted='c_s';;
4157 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4163 for thisdir in $libpth $xlibpth; do
4164 test -d $thisdir && libspath="$libspath $thisdir"
4166 for thislib in $libswanted; do
4167 for thisdir in $libspath; do
4169 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4170 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4171 $test -f "$xxx" && eval $libscheck
4172 $test -f "$xxx" && libstyle=shared
4174 if test ! -f "$xxx"; then
4175 xxx=$thisdir/lib$thislib.$so
4176 $test -f "$xxx" && eval $libscheck
4177 $test -f "$xxx" && libstyle=shared
4179 if test ! -f "$xxx"; then
4180 xxx=$thisdir/lib$thislib$_a
4181 $test -f "$xxx" && eval $libscheck
4182 $test -f "$xxx" && libstyle=static
4184 if test ! -f "$xxx"; then
4185 xxx=$thisdir/$thislib$_a
4186 $test -f "$xxx" && eval $libscheck
4187 $test -f "$xxx" && libstyle=static
4189 if test ! -f "$xxx"; then
4190 xxx=$thisdir/lib${thislib}_s$_a
4191 $test -f "$xxx" && eval $libscheck
4192 $test -f "$xxx" && libstyle=static
4193 $test -f "$xxx" && thislib=${thislib}_s
4195 if test ! -f "$xxx"; then
4196 xxx=$thisdir/Slib$thislib$_a
4197 $test -f "$xxx" && eval $libscheck
4198 $test -f "$xxx" && libstyle=static
4200 if $test -f "$xxx"; then
4202 shared) echo "Found -l$thislib (shared)." ;;
4203 static) echo "Found -l$thislib." ;;
4204 *) echo "Found -l$thislib ($libstyle)." ;;
4208 *) dflt="$dflt -l$thislib"
4209 libsfound="$libsfound $xxx"
4211 libsfiles="$libsfiles $yyy"
4212 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4213 case " $libsdirs " in
4215 *) libsdirs="$libsdirs $yyy" ;;
4222 if $test ! -f "$xxx"; then
4223 echo "No -l$thislib."
4234 ' '|'') dflt='none';;
4239 In order to compile $package on your machine, a number of libraries
4240 are usually needed. Include any other special libraries here as well.
4241 Say "none" for none. The default list is almost always right.
4245 rp="What libraries to use?"
4252 : determine optimization, if desired, or use for debug flag also
4254 ' '|$undef) dflt='none';;
4256 *) dflt="$optimize";;
4260 By default, $package compiles with the -O flag to use the optimizer.
4261 Alternately, you might want to use the symbolic debugger, which uses
4262 the -g flag (on traditional Unix systems). Either flag can be
4263 specified here. To use neither flag, specify the word "none".
4266 rp="What optimizer/debugger flag should be used?"
4270 'none') optimize=" ";;
4274 : We will not override a previous value, but we might want to
4275 : augment a hint file
4277 default|recommended)
4278 case "$gccversion" in
4279 1*) dflt='-fpcc-struct-return' ;;
4282 *-g*) dflt="$dflt -DDEBUGGING";;
4284 case "$gccversion" in
4285 2*) if test -d /etc/conf/kconfig.d &&
4286 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4292 case "$gccversion" in
4296 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4297 echo 'int main(void) { return 0; }' > gcctest.c
4298 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4299 echo "Yes, it does." 2>&1
4302 echo "Leaving current flags $ccflags alone." 2>&1
4304 *) dflt="$dflt -fno-strict-aliasing" ;;
4307 echo "Nope, it doesn't, but that's ok." 2>&1
4314 case "$mips_type" in
4315 *BSD*|'') inclwanted="$locincpth $usrinc";;
4316 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4318 for thisincl in $inclwanted; do
4319 if $test -d $thisincl; then
4320 if $test x$thisincl != x$usrinc; then
4322 *" -I$thisincl "*);;
4323 *) dflt="$dflt -I$thisincl ";;
4329 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4331 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4339 *) dflt="$dflt -D$2";;
4343 set signal.h LANGUAGE_C; eval $inctest
4347 ccflags="$ccflags -DSOCKS"
4352 default|recommended) dflt="$ccflags $dflt" ;;
4353 *) dflt="$ccflags";;
4362 Your C compiler may want other flags. For this question you should include
4363 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4364 but you should NOT include libraries or ld flags like -lwhatever. If you
4365 want $package to honor its debug switch, you should include -DDEBUGGING here.
4366 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4368 To use no flags, specify the word "none".
4374 rp="Any additional cc flags?"
4381 : the following weeds options from ccflags that are of no interest to cpp
4383 '') cppflags="$ccflags" ;;
4384 *) cppflags="$cppflags $ccflags" ;;
4386 case "$gccversion" in
4387 1*) cppflags="$cppflags -D__GNUC__"
4389 case "$mips_type" in
4391 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4397 echo "Let me guess what the preprocessor flags are..." >&4
4411 *) ftry="$previous $flag";;
4413 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4414 >cpp1.out 2>/dev/null && \
4415 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4416 >cpp2.out 2>/dev/null && \
4417 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4418 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4420 cppflags="$cppflags $ftry"
4430 *-*) echo "They appear to be: $cppflags";;
4432 $rm -f cpp.c cpp?.out
4436 : flags used in final linking phase
4438 '') if ./venix; then
4444 *-posix*) dflt="$dflt -posix" ;;
4447 *) dflt="$ldflags";;
4450 : Try to guess additional flags to pick up local libraries.
4451 for thislibdir in $libpth; do
4452 case " $loclibpth " in
4455 *"-L$thislibdir "*) ;;
4456 *) dflt="$dflt -L$thislibdir" ;;
4468 Your C linker may need flags. For this question you should
4469 include -L/whatever and any other flags used by the C linker, but you
4470 should NOT include libraries like -lwhatever.
4472 Make sure you include the appropriate -L/path flags if your C linker
4473 does not normally search all of the directories you specified above,
4476 To use no flags, specify the word "none".
4480 rp="Any additional ld flags (NOT including libraries)?"
4486 rmlist="$rmlist pdp11"
4490 echo "Checking your choice of C compiler and flags for coherency..." >&4
4491 $cat > try.c <<'EOF'
4493 int main() { printf("Ok\n"); exit(0); }
4495 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4497 $cat >try.msg <<'EOM'
4498 I've tried to compile and run the following simple program:
4501 $cat try.c >> try.msg
4503 $cat >> try.msg <<EOM
4510 and I got the following output:
4514 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4515 if $sh -c "$run ./try" >>try.msg 2>&1; then
4519 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4522 cat >> try.msg <<'EOQS'
4523 If $libs contains -lsfio, and sfio is mis-configured, then it
4524 sometimes (apparently) runs and exits with a 0 status, but with no
4525 output! It may have to do with sfio's use of _exit vs. exit.
4528 rp="You have a big problem. Shall I abort Configure"
4535 echo "The program compiled OK, but exited with status $?." >>try.msg
4536 rp="You have a problem. Shall I abort Configure"
4540 echo "I can't compile the test program." >>try.msg
4541 rp="You have a BIG problem. Shall I abort Configure"
4547 case "$knowitall" in
4549 echo "(The supplied flags or libraries might be incorrect.)"
4557 *) echo "Ok. Stopping Configure." >&4
4562 n) echo "OK, that should do.";;
4564 $rm -f try try.* core
4566 : define a shorthand compile call
4570 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4571 : define a shorthand compile call for compilations that should be ok.
4575 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4577 : check for lengths of integral types
4581 echo "Checking to see how big your integers are..." >&4
4582 $cat >try.c <<'EOCP'
4586 printf("intsize=%d;\n", (int)sizeof(int));
4587 printf("longsize=%d;\n", (int)sizeof(long));
4588 printf("shortsize=%d;\n", (int)sizeof(short));
4593 if eval $compile_ok && $run ./try > /dev/null; then
4595 echo "Your integers are $intsize bytes long."
4596 echo "Your long integers are $longsize bytes long."
4597 echo "Your short integers are $shortsize bytes long."
4601 Help! I can't compile and run the intsize test program: please enlighten me!
4602 (This is probably a misconfiguration in your system or libraries, and
4603 you really ought to fix it. Still, I'll try anyway.)
4607 rp="What is the size of an integer (in bytes)?"
4611 rp="What is the size of a long integer (in bytes)?"
4615 rp="What is the size of a short integer (in bytes)?"
4623 : check for void type
4625 echo "Checking to see how well your C compiler groks the void type..." >&4
4626 case "$voidflags" in
4628 $cat >try.c <<'EOCP'
4634 extern void moo(); /* function returning void */
4635 void (*goo)(); /* ptr to func returning void */
4637 void *hue; /* generic ptr */
4650 int main() { sub(); }
4652 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4653 voidflags=$defvoidused
4654 echo "Good. It appears to support void to the level $package wants.">&4
4655 if $contains warning .out >/dev/null 2>&1; then
4656 echo "However, you might get some warnings that look like this:"
4660 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4661 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4662 echo "It supports 1..."
4663 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4664 echo "It also supports 2..."
4665 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4667 echo "And it supports 4 but not 8 definitely."
4669 echo "It doesn't support 4..."
4670 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4672 echo "But it supports 8."
4675 echo "Neither does it support 8."
4679 echo "It does not support 2..."
4680 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4682 echo "But it supports 4 and 8."
4684 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4686 echo "And it supports 4 but has not heard about 8."
4688 echo "However it supports 8 but not 4."
4693 echo "There is no support at all for void."
4698 case "$voidflags" in
4701 Support flag bits are:
4702 1: basic void declarations.
4703 2: arrays of pointers to functions returning void.
4704 4: operations between pointers to and addresses of void functions.
4705 8: generic void pointers.
4708 rp="Your void support flags add up to what?"
4715 : check for length of pointer
4719 echo "Checking to see how big your pointers are..." >&4
4720 if test "$voidflags" -gt 7; then
4721 echo '#define VOID_PTR char *' > try.c
4723 echo '#define VOID_PTR void *' > try.c
4725 $cat >>try.c <<'EOCP'
4729 printf("%d\n", (int)sizeof(VOID_PTR));
4734 if eval $compile_ok; then
4735 ptrsize=`$run ./try`
4736 echo "Your pointers are $ptrsize bytes long."
4739 echo "(I can't seem to compile the test program. Guessing...)" >&4
4740 rp="What is the size of a pointer (in bytes)?"
4748 : check for long long
4750 echo "Checking to see if you have long long..." >&4
4751 echo 'int main() { long long x = 7; return 0; }' > try.c
4753 if eval $compile; then
4755 echo "You have long long."
4758 echo "You do not have long long."
4764 : check for length of long long
4765 case "${d_longlong}${longlongsize}" in
4768 echo "Checking to see how big your long longs are..." >&4
4769 $cat >try.c <<'EOCP'
4773 printf("%d\n", (int)sizeof(long long));
4778 if eval $compile_ok; then
4779 longlongsize=`$run ./try`
4780 echo "Your long longs are $longlongsize bytes long."
4784 echo "(I can't seem to compile the test program. Guessing...)"
4785 rp="What is the size of a long long (in bytes)?"
4789 if $test "X$longsize" = "X$longlongsize"; then
4790 echo "(That isn't any different from an ordinary long.)"
4796 : determine filename position in cpp output
4798 echo "Computing filename position in cpp output for #include directives..." >&4
4799 echo '#include <stdio.h>' > foo.c
4802 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4803 $grep '^[ ]*#.*stdio\.h' | \
4804 while read cline; do
4807 while $test \$# -gt 0; do
4808 if $test -r \`echo \$1 | $tr -d '"'\`; then
4813 pos=\`expr \$pos + 1\`
4825 *) pos="${fieldn}th";;
4827 echo "Your cpp writes the filename in the $pos field of the line."
4829 : locate header file
4834 for usrincdir in $usrinc
4836 if test -f \$usrincdir/\$wanted; then
4837 echo "\$usrincdir/\$wanted"
4841 awkprg='{ print \$$fieldn }'
4842 echo "#include <\$wanted>" > foo\$\$.c
4843 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4844 $grep "^[ ]*#.*\$wanted" | \
4845 while read cline; do
4846 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4848 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4849 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4854 # status = 0: grep returned 0 lines, case statement not executed
4855 # status = 1: headerfile found
4856 # status = 2: while loop executed, no headerfile found
4860 if test \$status -eq 1; then
4867 : define an alternate in-header-list? function
4868 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4869 cont=true; xxf="echo \"<\$1> found.\" >&4";
4870 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4871 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4873 case $# in 4) instead=instead;; *) instead="at last";; esac;
4874 while $test "$cont"; do
4876 var=$2; eval "was=\$$2";
4877 if $test "$xxx" && $test -r "$xxx";
4879 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4882 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4883 set $yyy; shift; shift; yyy=$@;
4884 case $# in 0) cont="";;
4885 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4886 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4887 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4888 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4892 do set $yyy; var=$2; eval "was=\$$2";
4893 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4894 set $yyy; shift; shift; yyy=$@;
4897 : see if inttypes.h is available
4898 : we want a real compile instead of Inhdr because some systems
4899 : have an inttypes.h which includes non-existent headers
4902 #include <inttypes.h>
4904 static int32_t foo32 = 0x12345678;
4908 if eval $compile; then
4909 echo "<inttypes.h> found." >&4
4912 echo "<inttypes.h> NOT found." >&4
4921 echo "Checking to see if you have int64_t..." >&4
4923 #include <sys/types.h>
4924 #$i_inttypes I_INTTYPES
4926 #include <inttypes.h>
4928 int main() { int64_t x = 7; }
4931 if eval $compile; then
4933 echo "You have int64_t."
4936 echo "You do not have int64_t."
4944 echo "Checking which 64-bit integer type we could use..." >&4
4950 val='"unsigned int"'
4955 *) case "$longsize" in
4959 val='"unsigned long"'
4964 *) case "$d_longlong:$longlongsize" in
4969 val='"unsigned long long"'
4974 *) case "$d_int64_t" in
4993 '') echo "Alas, no 64-bit integer types in sight." >&4
4996 *) echo "We could use '$quadtype' for 64-bit integers." >&4
5002 case "$uselonglong" in
5003 "$define"|true|[yY]*)
5006 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5008 use64bitint="$define"
5011 case "$use64bits" in
5012 "$define"|true|[yY]*)
5015 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5017 use64bitint="$define"
5020 case "$use64bitints" in
5021 "$define"|true|[yY]*)
5024 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5026 use64bitint="$define"
5029 case "$use64bitsint" in
5030 "$define"|true|[yY]*)
5033 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5035 use64bitint="$define"
5038 case "$uselonglongs" in
5039 "$define"|true|[yY]*)
5042 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5044 use64bitint="$define"
5047 case "$use64bitsall" in
5048 "$define"|true|[yY]*)
5051 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5053 use64bitall="$define"
5058 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5060 case "$use64bitall" in
5061 "$define"|true|[yY]*) use64bitint="$define" ;;
5067 You have natively 64-bit long integers.
5071 *) case "$use64bitint" in
5072 "$define"|true|[yY]*) dflt='y';;
5081 Perl can be built to take advantage of 64-bit integer types
5082 on some systems. To do so, Configure can be run with -Duse64bitint.
5083 Choosing this option will most probably introduce binary incompatibilities.
5085 If this doesn't make any sense to you, just accept the default '$dflt'.
5086 (The default has been chosen based on your configuration.)
5088 rp='Try to use 64-bit integers, if available?'
5091 [yY]*) val="$define" ;;
5099 case "$use64bitall" in
5100 "$define"|true|[yY]*) dflt='y' ;;
5101 *) case "$longsize" in
5109 You may also choose to try maximal 64-bitness. It means using as much
5110 64-bitness as possible on the platform. This in turn means even more
5111 binary incompatibilities. On the other hand, your platform may not
5112 have any more 64-bitness available than what you already have chosen.
5114 If this doesn't make any sense to you, just accept the default '$dflt'.
5115 (The default has been chosen based on your configuration.)
5117 rp='Try to use maximal 64-bit support, if available?'
5120 [yY]*) val="$define" ;;
5125 case "$use64bitall" in
5127 case "$use64bitint" in
5131 Since you have chosen a maximally 64-bit build, I'm also turning on
5132 the use of 64-bit integers.
5134 use64bitint="$define" ;;
5139 case "$use64bitall" in
5140 "$define"|true|[yY]*)
5144 *** You have chosen a maximally 64-bit build, but your pointers
5145 *** are only 4 bytes wide, disabling maximal 64-bitness.
5148 use64bitall="$undef"
5149 case "$use64bitint" in
5150 "$define"|true|[yY]*) ;;
5153 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5156 use64bitint="$define"
5164 case "$use64bitint" in
5165 "$define"|true|[yY]*)
5166 : Look for a hint-file generated 'call-back-unit'. If the
5167 : user has specified that a 64-bit perl is to be built,
5168 : we may need to set or change some other defaults.
5169 if $test -f use64bitint.cbu; then
5170 echo "Your platform has some specific hints for 64-bit integers, using them..."
5174 4) case "$archname64" in
5175 '') archname64=64int ;;
5182 case "$use64bitall" in
5183 "$define"|true|[yY]*)
5184 : Look for a hint-file generated 'call-back-unit'. If the
5185 : user has specified that a maximally 64-bit perl is to be built,
5186 : we may need to set or change some other defaults.
5187 if $test -f use64bitall.cbu; then
5188 echo "Your platform has some specific hints for 64-bit builds, using them..."
5192 4) case "$archname64" in
5193 ''|64int) archname64=64all ;;
5201 echo "Checking for GNU C Library..." >&4
5214 if eval $compile_ok && $run ./try; then
5216 echo "You are using the GNU C Library"
5219 echo "You are not using the GNU C Library"
5225 : see if nm is to be used to determine whether a symbol is defined or not
5229 case "$d_gnulibc" in
5232 echo "nm probably won't work on the GNU C Library." >&4
5238 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5240 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5241 echo "'nm' won't be sufficient on this sytem." >&4
5247 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5248 if $test $dflt -gt 20; then
5258 true|$define) dflt=y;;
5265 I can use $nm to extract the symbols from your C libraries. This
5266 is a time consuming task which may generate huge output on the disk (up
5267 to 3 megabytes) but that should make the symbols extraction faster. The
5268 alternative is to skip the 'nm' extraction part and to compile a small
5269 test program instead to determine whether each symbol is present. If
5270 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5271 this may be the best solution.
5273 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5276 rp="Shall I use $nm to extract C symbols from the libraries?"
5279 [Nn]*) usenm=false;;
5288 : nm options which may be necessary
5290 '') if $test -f /mach_boot; then
5292 elif $test -d /usr/ccs/lib; then
5293 nm_opt='-p' # Solaris (and SunOS?)
5294 elif $test -f /dgux; then
5296 elif $test -f /lib64/rld; then
5297 nm_opt='-p' # 64-bit Irix
5303 : nm options which may be necessary for shared libraries but illegal
5304 : for archive libraries. Thank you, Linux.
5305 case "$nm_so_opt" in
5306 '') case "$myuname" in
5308 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5309 nm_so_opt='--dynamic'
5318 : get list of predefined functions in a handy place
5323 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5329 *) for thislib in $libs; do
5332 : Handle C library specially below.
5335 thislib=`echo $thislib | $sed -e 's/^-l//'`
5336 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5338 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5340 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5342 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5344 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5346 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5348 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5353 libnames="$libnames $try"
5355 *) libnames="$libnames $thislib" ;;
5364 for xxx in $libpth; do
5365 $test -r $1 || set $xxx/libc.$so
5366 : The messy sed command sorts on library version numbers.
5368 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5369 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5371 s/[0-9][0-9]*/0000&/g
5372 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5375 $sort | $sed -e 's/^.* //'`
5378 $test -r $1 || set /usr/ccs/lib/libc.$so
5379 $test -r $1 || set /lib/libsys_s$_a
5385 if $test -r "$1"; then
5386 echo "Your (shared) C library seems to be in $1."
5388 elif $test -r /lib/libc && $test -r /lib/clib; then
5389 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5391 libc='/lib/clib /lib/libc'
5392 if $test -r /lib/syslib; then
5393 echo "(Your math library is in /lib/syslib.)"
5394 libc="$libc /lib/syslib"
5396 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5397 echo "Your C library seems to be in $libc, as you said before."
5398 elif $test -r $incpath/usr/lib/libc$_a; then
5399 libc=$incpath/usr/lib/libc$_a;
5400 echo "Your C library seems to be in $libc. That's fine."
5401 elif $test -r /lib/libc$_a; then
5403 echo "Your C library seems to be in $libc. You're normal."
5405 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5407 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5408 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5409 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5411 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5413 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5416 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5418 if $test -r "$tans"; then
5419 echo "Your C library seems to be in $tans, of all places."
5425 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5429 If the guess above is wrong (which it might be if you're using a strange
5430 compiler, or your machine supports multiple models), you can override it here.
5435 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5437 I can't seem to find your C library. I've looked in the following places:
5440 $sed 's/^/ /' libpath
5443 None of these seems to contain your C library. I need to get its name...
5448 rp='Where is your C library?'
5453 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5454 set X `cat libnames`
5457 case $# in 1) xxx=file; esac
5458 echo "Extracting names from the following $xxx for later perusal:" >&4
5460 $sed 's/^/ /' libnames >&4
5462 $echo $n "This may take a while...$c" >&4
5466 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5467 *) $nm $nm_opt $file 2>/dev/null;;
5472 $grep fprintf libc.tmp > libc.ptf
5473 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5474 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5476 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5478 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5480 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5482 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5484 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5486 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5488 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5490 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5492 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5494 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5496 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5498 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5500 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5501 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5503 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5505 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5507 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5509 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5511 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5513 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5515 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5517 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5519 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5521 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5523 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5525 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5527 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5529 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5531 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5534 $nm -p $* 2>/dev/null >libc.tmp
5535 $grep fprintf libc.tmp > libc.ptf
5536 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5537 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5543 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5545 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5546 for thisname in $libnames $libc; do
5547 $ar t $thisname >>libc.tmp
5549 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5551 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5552 # Repeat libc to extract forwarders to DLL entries too
5553 for thisname in $libnames $libc; do
5554 $ar tv $thisname >>libc.tmp
5555 # Revision 50 of EMX has bug in $ar.
5556 # it will not extract forwarders to DLL entries
5557 # Use emximp which will extract exactly them.
5558 emximp -o tmp.imp $thisname \
5560 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5561 < tmp.imp >>libc.tmp
5564 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5567 echo "$ar didn't seem to work right." >&4
5568 echo "Maybe this is a Cray...trying bld instead..." >&4
5569 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5571 for thisname in $libnames; do
5573 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5574 $ar t $thisname >>libc.tmp
5578 echo "That didn't work either. Giving up." >&4
5585 if $test -f /lib/syscalls.exp; then
5587 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5588 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
5592 $rm -f libnames libpath
5594 : is a C symbol defined?
5597 -v) tf=libc.tmp; tc=""; tdc="";;
5598 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5599 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5602 case "$reuseval-$4" in
5604 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5610 if $contains $tlook $tf >/dev/null 2>&1;
5615 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5616 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5624 $define) tval=true;;
5630 : define an is-in-libc? function
5631 inlibc='echo " "; td=$define; tu=$undef;
5632 sym=$1; var=$2; eval "was=\$$2";
5634 case "$reuseval$was" in
5644 echo "$sym() found." >&4;
5645 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5647 echo "$sym() NOT found." >&4;
5648 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5652 $define) echo "$sym() found." >&4;;
5653 *) echo "$sym() NOT found." >&4;;
5657 : see if sqrtl exists
5662 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5665 case "$uselongdouble" in
5666 $define|true|[yY]*) dflt='y';;
5671 Perl can be built to take advantage of long doubles which
5672 (if available) may give more accuracy and range for floating point numbers.
5674 If this doesn't make any sense to you, just accept the default '$dflt'.
5676 rp='Try to use long doubles if available?'
5679 y|Y) val="$define" ;;
5685 case "$uselongdouble" in
5686 true|[yY]*) uselongdouble="$define" ;;
5689 case "$uselongdouble" in
5691 : Look for a hint-file generated 'call-back-unit'. If the
5692 : user has specified that long doubles should be used,
5693 : we may need to set or change some other defaults.
5694 if $test -f uselongdouble.cbu; then
5695 echo "Your platform has some specific hints for long doubles, using them..."
5696 . ./uselongdouble.cbu
5699 (Your platform doesn't have any specific hints for long doubles.)
5705 case "$uselongdouble:$d_sqrtl" in
5709 *** You requested the use of long doubles but you do not seem to have
5710 *** the mathematic functions for long doubles. I'm disabling the use
5711 *** of long doubles.
5714 uselongdouble=$undef
5718 : check for length of double
5720 case "$doublesize" in
5722 echo "Checking to see how big your double precision numbers are..." >&4
5723 $cat >try.c <<'EOCP'
5727 printf("%d\n", (int)sizeof(double));
5732 if eval $compile_ok; then
5733 doublesize=`$run ./try`
5734 echo "Your double is $doublesize bytes long."
5737 echo "(I can't seem to compile the test program. Guessing...)"
5738 rp="What is the size of a double precision number (in bytes)?"
5746 : check for long doubles
5748 echo "Checking to see if you have long double..." >&4
5749 echo 'int main() { long double x = 7.0; }' > try.c
5751 if eval $compile; then
5753 echo "You have long double."
5756 echo "You do not have long double."
5762 : check for length of long double
5763 case "${d_longdbl}${longdblsize}" in
5766 echo "Checking to see how big your long doubles are..." >&4
5767 $cat >try.c <<'EOCP'
5771 printf("%d\n", sizeof(long double));
5776 if eval $compile; then
5777 longdblsize=`$run ./try`
5778 echo "Your long doubles are $longdblsize bytes long."
5782 echo "(I can't seem to compile the test program. Guessing...)" >&4
5783 rp="What is the size of a long double (in bytes)?"
5787 if $test "X$doublesize" = "X$longdblsize"; then
5788 echo "(That isn't any different from an ordinary double.)"
5794 case "$useperlio" in
5795 $define|true|[yY]*|'') dflt='y';;
5800 Previous version of $package used the standard IO mechanisms as
5801 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
5802 alternate IO mechanisms via the PerlIO abstraction layer, but the
5803 stdio mechanism is still available if needed. The abstraction layer
5804 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5805 Using PerlIO with sfio may cause problems with some extension modules.
5807 If this doesn't make any sense to you, just accept the default '$dflt'.
5809 rp='Use the PerlIO abstraction layer?'
5816 echo "Ok, doing things the stdio way."
5825 case "$useperlio" in
5826 $define|true|[yY]*) ;;
5829 You are using the SOCKS proxy protocol library which means that you
5830 should also use the PerlIO layer. You may be headed for trouble.
5839 : determine the architecture name
5841 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5842 tarch=`arch`"-$osname"
5843 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5844 if uname -m > tmparch 2>&1 ; then
5845 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5846 -e 's/$/'"-$osname/" tmparch`
5854 case "$myarchname" in
5857 echo "(Your architecture name used to be $myarchname.)"
5861 case "$targetarch" in
5863 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5868 *) dflt="$archname";;
5870 rp='What is your architecture name'
5873 case "$usethreads" in
5875 echo "Threads selected." >&4
5877 *-thread*) echo "...and architecture name already has -thread." >&4
5879 *) archname="$archname-thread"
5880 echo "...setting architecture name to $archname." >&4
5885 case "$usemultiplicity" in
5887 echo "Multiplicity selected." >&4
5889 *-multi*) echo "...and architecture name already has -multi." >&4
5891 *) archname="$archname-multi"
5892 echo "...setting architecture name to $archname." >&4
5897 case "$use64bitint$use64bitall" in
5899 case "$archname64" in
5901 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5904 case "$use64bitint" in
5905 "$define") echo "64 bit integers selected." >&4 ;;
5907 case "$use64bitall" in
5908 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5911 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5913 *) archname="$archname-$archname64"
5914 echo "...setting architecture name to $archname." >&4
5920 case "$uselongdouble" in
5922 echo "Long doubles selected." >&4
5923 case "$longdblsize" in
5925 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5929 *-ld*) echo "...and architecture name already has -ld." >&4
5931 *) archname="$archname-ld"
5932 echo "...setting architecture name to $archname." >&4
5939 case "$useperlio" in
5941 echo "Perlio selected." >&4
5944 echo "Perlio not selected, using stdio." >&4
5946 *-stdio*) echo "...and architecture name already has -stdio." >&4
5948 *) archname="$archname-stdio"
5949 echo "...setting architecture name to $archname." >&4
5955 : determine root of directory hierarchy where package will be installed.
5958 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5966 By default, $package will be installed in $dflt/bin, manual pages
5967 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5968 installation directories. Typically this is something like /usr/local.
5969 If you wish to have binaries under /usr/bin but other parts of the
5970 installation under /usr/local, that's ok: you will be prompted
5971 separately for each of the installation directories, the prefix being
5972 only used to set the defaults.
5976 rp='Installation prefix to use?'
5984 *) oldprefix="$prefix";;
5993 *) afsroot=$afsroot ;;
5999 $define|true) afs=true ;;
6000 $undef|false) afs=false ;;
6001 *) if test -d $afsroot; then
6009 echo "AFS may be running... I'll be extra cautious then..." >&4
6011 echo "AFS does not seem to be running..." >&4
6014 : determine installation prefix for where package is to be installed.
6018 Since you are running AFS, I need to distinguish the directory in which
6019 files will reside from the directory in which they are installed (and from
6020 which they are presumably copied to the former directory by occult means).
6023 case "$installprefix" in
6024 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6025 *) dflt="$installprefix";;
6030 In some special cases, particularly when building $package for distribution,
6031 it is convenient to distinguish between the directory in which files should
6032 be installed from the directory ($prefix) in which they
6033 will eventually reside. For most users, these two directories are the same.
6036 case "$installprefix" in
6038 *) dflt=$installprefix;;
6042 rp='What installation prefix should I use for installing files?'
6044 installprefix="$ans"
6045 installprefixexp="$ansexp"
6047 : set the prefixit variable, to compute a suitable default value
6048 prefixit='case "$3" in
6050 case "$oldprefix" in
6051 "") eval "$1=\"\$$2\"";;
6058 ""|" ") eval "$1=\"\$$2\"";;
6064 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6066 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6067 /*-$oldprefix/*|\~*-$oldprefix/*)
6068 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6069 *) eval "$1=\"\$$2\"";;
6073 : get the patchlevel
6075 echo "Getting the current patchlevel..." >&4
6076 if $test -r $rsrc/patchlevel.h;then
6077 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6078 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6079 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6080 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6081 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6082 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6083 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6092 $echo "(You do not have patchlevel.h. Eek.)"
6094 if $test -r $rsrc/.patch ; then
6095 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6096 perl_patchlevel=`cat $rsrc/.patch`
6099 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6100 version_patchlevel_string="version $patchlevel subversion $subversion"
6101 case "$perl_patchlevel" in
6103 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6106 $echo "(You have $package $version_patchlevel_string.)"
6110 : XXX Should be a Configure test for double-dots in filenames.
6111 version=`echo $revision $patchlevel $subversion | \
6112 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6113 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6114 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6117 version=`echo $revision $patchlevel $subversion | \
6118 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6119 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6120 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6123 : Special case the 5.005_xx maintenance series, which used 5.005
6124 : without any subversion label as a subdirectory in $sitelib
6125 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6126 api_versionstring='5.005'
6129 : determine installation style
6130 : For now, try to deduce it from prefix unless it is already set.
6131 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6132 case "$installstyle" in
6133 '') case "$prefix" in
6134 *perl*) dflt='lib';;
6135 *) dflt='lib/perl5' ;;
6138 *) dflt="$installstyle" ;;
6140 : Probably not worth prompting for this since we prompt for all
6141 : the directories individually, and the prompt would be too long and
6145 : determine where private library files go
6146 : Usual default is /usr/local/lib/perl5/$version.
6147 : Also allow things like /opt/perl/lib/$version, since
6148 : /opt/perl/lib/perl5... would be redundant.
6149 : The default "style" setting is made in installstyle.U
6150 case "$installstyle" in
6151 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6152 *) set dflt privlib lib/$version ;;
6157 There are some auxiliary files for $package that need to be put into a
6158 private library directory that is accessible by everyone.
6162 rp='Pathname where the private library files will reside?'
6165 privlibexp="$ansexp"
6166 : Change installation prefix, if necessary.
6167 if $test X"$prefix" != X"$installprefix"; then
6168 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6170 installprivlib="$privlibexp"
6173 : set the prefixup variable, to restore leading tilda escape
6174 prefixup='case "$prefixexp" in
6176 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6179 : determine where public architecture dependent libraries go
6182 : privlib default is /usr/local/lib/$package/$version
6183 : archlib default is /usr/local/lib/$package/$version/$archname
6184 : privlib may have an optional trailing /share.
6185 tdflt=`echo $privlib | $sed 's,/share$,,'`
6186 tdflt=$tdflt/$archname
6195 $spackage contains architecture-dependent library files. If you are
6196 sharing libraries in a heterogeneous environment, you might store
6197 these files in a separate location. Otherwise, you can just include
6198 them with the rest of the public library files.
6202 rp='Where do you want to put the public architecture-dependent libraries?'
6205 archlibexp="$ansexp"
6206 if $test X"$archlib" = X"$privlib"; then
6211 : Change installation prefix, if necessary.
6212 if $test X"$prefix" != X"$installprefix"; then
6213 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6215 installarchlib="$archlibexp"
6219 : Binary compatibility with 5.005 is not possible for builds
6220 : with advanced features
6221 case "$usethreads$usemultiplicity" in
6223 bincompat5005="$undef"
6224 d_bincompat5005="$undef"
6228 This version of Perl can be compiled for binary compatibility with 5.005.
6229 If you decide to do so, you will be able to continue using most of the
6230 extensions that were compiled for Perl 5.005.
6233 case "$bincompat5005$d_bincompat5005" in
6234 *"$undef"*) dflt=n ;;
6237 rp='Binary compatibility with Perl 5.005?'
6240 y*) val="$define" ;;
6245 case "$d_bincompat5005" in
6247 bincompat5005="$define"
6249 *) bincompat5005="$undef"
6250 d_bincompat5005="$undef"
6257 : see if setuid scripts can be secure
6260 Some kernels have a bug that prevents setuid #! scripts from being
6261 secure. Some sites have disabled setuid #! scripts because of this.
6263 First let's decide if your kernel supports secure setuid #! scripts.
6264 (If setuid #! scripts would be secure but have been disabled anyway,
6265 don't say that they are secure if asked.)
6270 if $test -d /dev/fd; then
6271 echo "#!$ls" >reflect
6272 chmod +x,u+s reflect
6273 ./reflect >flect 2>&1
6274 if $contains "/dev/fd" flect >/dev/null; then
6275 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6279 If you are not sure if they are secure, I can check but I'll need a
6280 username and password different from the one you are using right now.
6281 If you don't have such a username or don't want me to test, simply
6285 rp='Other username to test security of setuid scripts with?'
6290 case "$d_suidsafe" in
6291 '') echo "I'll assume setuid scripts are *not* secure." >&4
6294 echo "Well, the $hint value is *not* secure." >&4
6296 *) echo "Well, the $hint value *is* secure." >&4
6301 $rm -f reflect flect
6302 echo "#!$ls" >reflect
6303 chmod +x,u+s reflect
6306 echo '"su" will (probably) prompt you for '"$ans's password."
6307 su $ans -c './reflect >flect'
6308 if $contains "/dev/fd" flect >/dev/null; then
6309 echo "Okay, it looks like setuid scripts are secure." >&4
6312 echo "I don't think setuid scripts are secure." >&4
6317 rp='Does your kernel have *secure* setuid scripts?'
6320 [yY]*) val="$define";;
6325 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6326 echo "(That's for file descriptors, not floppy disks.)"
6332 $rm -f reflect flect
6334 : now see if they want to do setuid emulation
6337 case "$d_suidsafe" in
6340 echo "No need to emulate SUID scripts since they are secure here." >& 4
6344 Some systems have disabled setuid scripts, especially systems where
6345 setuid scripts cannot be secure. On systems where setuid scripts have
6346 been disabled, the setuid/setgid bits on scripts are currently
6347 useless. It is possible for $package to detect those bits and emulate
6348 setuid/setgid in a secure fashion. This emulation will only work if
6349 setuid scripts have been disabled in your kernel.
6353 "$define") dflt=y ;;
6356 rp="Do you want to do setuid/setgid emulation?"
6359 [yY]*) val="$define";;
6367 : see if this is a malloc.h system
6368 set malloc.h i_malloc
6371 : see if stdlib is available
6372 set stdlib.h i_stdlib
6375 : determine which malloc to compile in
6377 case "$usemymalloc" in
6378 [yY]*|true|$define) dflt='y' ;;
6379 [nN]*|false|$undef) dflt='n' ;;
6380 *) case "$ptrsize" in
6386 rp="Do you wish to attempt to use the malloc that comes with $package?"
6392 mallocsrc='malloc.c'
6393 mallocobj="malloc$_o"
6394 d_mymalloc="$define"
6397 : Remove malloc from list of libraries to use
6398 echo "Removing unneeded -lmalloc from library list" >&4
6399 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6402 echo "libs = $libs" >&4
6414 : compute the return types of malloc and free
6416 $cat >malloc.c <<END
6420 #include <sys/types.h>
6434 case "$malloctype" in
6436 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6443 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6447 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6454 echo "Your system uses $freetype free(), it would seem." >&4
6458 After $package is installed, you may wish to install various
6459 add-on modules and utilities. Typically, these add-ons will
6460 be installed under $prefix with the rest
6461 of this package. However, you may wish to install such add-ons
6462 elsewhere under a different prefix.
6464 If you do not wish to put everything under a single prefix, that's
6465 ok. You will be prompted for the individual locations; this siteprefix
6466 is only used to suggest the defaults.
6468 The default should be fine for most people.
6472 rp='Installation prefix to use for add-on modules and utilities?'
6473 : XXX Here might be another good place for an installstyle setting.
6474 case "$siteprefix" in
6476 *) dflt=$siteprefix ;;
6479 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6481 case "$siteprefix" in
6485 *) oldsiteprefix="$prefix";;
6490 siteprefixexp="$ansexp"
6492 : determine where site specific libraries go.
6493 : Usual default is /usr/local/lib/perl5/site_perl/$version
6494 : The default "style" setting is made in installstyle.U
6495 : XXX No longer works with Prefixit stuff.
6496 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6498 '') case "$installstyle" in
6499 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6500 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6508 The installation process will create a directory for
6509 site-specific extensions and modules. Most users find it convenient
6510 to place all site-specific files in this directory rather than in the
6511 main distribution directory.
6515 rp='Pathname for the site-specific library files?'
6518 sitelibexp="$ansexp"
6519 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6520 : Change installation prefix, if necessary.
6521 if $test X"$prefix" != X"$installprefix"; then
6522 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6524 installsitelib="$sitelibexp"
6527 : determine where site specific architecture-dependent libraries go.
6528 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6529 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6530 : sitelib may have an optional trailing /share.
6532 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6533 dflt="$dflt/$archname"
6538 set sitearch sitearch none
6542 The installation process will also create a directory for
6543 architecture-dependent site-specific extensions and modules.
6547 rp='Pathname for the site-specific architecture-dependent library files?'
6550 sitearchexp="$ansexp"
6551 : Change installation prefix, if necessary.
6552 if $test X"$prefix" != X"$installprefix"; then
6553 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6555 installsitearch="$sitearchexp"
6560 The installation process will also create a directory for
6561 vendor-supplied add-ons. Vendors who supply perl with their system
6562 may find it convenient to place all vendor-supplied files in this
6563 directory rather than in the main distribution directory. This will
6564 ease upgrades between binary-compatible maintenance versions of perl.
6566 Of course you may also use these directories in whatever way you see
6567 fit. For example, you might use them to access modules shared over a
6568 company-wide network.
6570 The default answer should be fine for most people.
6571 This causes further questions about vendor add-ons to be skipped
6572 and no vendor-specific directories will be configured for perl.
6575 rp='Do you want to configure vendor-specific add-on directories?'
6576 case "$usevendorprefix" in
6577 define|true|[yY]*) dflt=y ;;
6578 *) : User may have set vendorprefix directly on Configure command line.
6579 case "$vendorprefix" in
6588 rp='Installation prefix to use for vendor-supplied add-ons?'
6589 case "$vendorprefix" in
6591 *) dflt=$vendorprefix ;;
6594 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6596 case "$vendorprefix" in
6600 *) oldvendorprefix="$prefix";;
6604 usevendorprefix="$define"
6606 vendorprefixexp="$ansexp"
6608 *) usevendorprefix="$undef"
6614 case "$vendorprefix" in
6615 '') d_vendorlib="$undef"
6619 *) d_vendorlib="$define"
6620 : determine where vendor-supplied modules go.
6621 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6622 case "$vendorlib" in
6624 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6625 case "$installstyle" in
6626 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6627 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6630 *) dflt="$vendorlib"
6634 rp='Pathname for the vendor-supplied library files?'
6637 vendorlibexp="$ansexp"
6640 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6641 : Change installation prefix, if necessary.
6642 if $test X"$prefix" != X"$installprefix"; then
6643 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6645 installvendorlib="$vendorlibexp"
6648 case "$vendorprefix" in
6649 '') d_vendorarch="$undef"
6653 *) d_vendorarch="$define"
6654 : determine where vendor-supplied architecture-dependent libraries go.
6655 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6656 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6657 : vendorlib may have an optional trailing /share.
6658 case "$vendorarch" in
6659 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6660 dflt="$dflt/$archname"
6662 *) dflt="$vendorarch" ;;
6665 rp='Pathname for vendor-supplied architecture-dependent files?'
6668 vendorarchexp="$ansexp"
6671 : Change installation prefix, if necessary.
6672 if $test X"$prefix" != X"$installprefix"; then
6673 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6675 installvendorarch="$vendorarchexp"
6678 : Final catch-all directories to search
6681 Lastly, you can have perl look in other directories for extensions and
6682 modules in addition to those already specified.
6683 These directories will be searched after
6687 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6688 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6690 case "$otherlibdirs" in
6691 ''|' ') dflt='none' ;;
6692 *) dflt="$otherlibdirs" ;;
6695 Enter a colon-separated set of extra paths to include in perl's @INC
6696 search path, or enter 'none' for no extra paths.
6700 rp='Colon-separated list of additional directories for perl to search?'
6703 ' '|''|none) otherlibdirs=' ' ;;
6704 *) otherlibdirs="$ans" ;;
6706 case "$otherlibdirs" in
6710 set d_perl_otherlibdirs
6713 : Cruising for prototypes
6715 echo "Checking out function prototypes..." >&4
6716 $cat >prototype.c <<'EOCP'
6717 int main(int argc, char *argv[]) {
6720 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6721 echo "Your C compiler appears to support function prototypes."
6724 echo "Your C compiler doesn't seem to understand function prototypes."
6731 case "$prototype" in
6733 *) ansi2knr='ansi2knr'
6738 This version of $package can only be compiled by a compiler that
6739 understands function prototypes. Unfortunately, your C compiler
6741 doesn't seem to understand them. Sorry about that.
6743 If GNU cc is available for your system, perhaps you could try that instead.
6745 Eventually, we hope to support building Perl with pre-ANSI compilers.
6746 If you would like to help in that effort, please contact <perlbug@perl.org>.
6748 Aborting Configure now.
6754 : determine where public executables go
6759 rp='Pathname where the public executables will reside?'
6761 if $test "X$ansexp" != "X$binexp"; then
6766 : Change installation prefix, if necessary.
6767 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6768 if $test X"$prefix" != X"$installprefix"; then
6769 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6771 installbin="$binexp"
6780 Perl can be built with extra modules or bundles of modules which
6781 will be fetched from the CPAN and installed alongside Perl.
6783 Notice that you will need access to the CPAN; either via the Internet,
6784 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6785 be asked later to configure the CPAN.pm module which will in turn do
6786 the installation of the rest of the extra modules or bundles.)
6788 Notice also that if the modules require any external software such as
6789 libraries and headers (the libz library and the zlib.h header for the
6790 Compress::Zlib module, for example) you MUST have any such software
6791 already installed, this configuration process will NOT install such
6794 If this doesn't make any sense to you, just accept the default '$dflt'.
6796 rp='Install any extra modules (y or n)?'
6802 Please list any extra modules or bundles to be installed from CPAN,
6803 with spaces between the names. The names can be in any format the
6804 'install' command of CPAN.pm will understand. (Answer 'none',
6805 without the quotes, to install no extra modules or bundles.)
6815 $rm -f ../extras.lst
6817 *) echo "(Saving the list of extras for later...)"
6818 echo "$extras" > ../extras.lst
6826 : Find perl5.005 or later.
6827 echo "Looking for a previously installed perl5.005 or later... "
6829 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6830 : Check if this perl is recent and can load a simple module
6831 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6834 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6844 '') echo "None found. That's ok.";;
6845 *) echo "Using $perl5." ;;
6848 : Determine list of previous versions to include in @INC
6849 $cat > getverlist <<EOPL
6852 \$api_versionstring = "$api_versionstring";
6853 \$version = "$version";
6854 \$stem = "$sitelib_stem";
6855 \$archname = "$archname";
6857 $cat >> getverlist <<'EOPL'
6858 # Can't have leading @ because metaconfig interprets it as a command!
6859 ;@inc_version_list=();
6860 # XXX Redo to do opendir/readdir?
6863 ;@candidates = glob("5.*");
6869 # XXX ToDo: These comparisons must be reworked when two-digit
6870 # subversions come along, so that 5.7.10 compares as greater than
6871 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6872 # widespread that we can use the built-in version vectors rather
6873 # than reinventing them here. For 5.6.0, however, we must
6874 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6875 foreach $d (@candidates) {
6876 if ($d lt $version) {
6877 if ($d ge $api_versionstring) {
6878 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6880 elsif ($d ge "5.005") {
6881 unshift(@inc_version_list, grep { -d } $d);
6885 # Skip newer version. I.e. don't look in
6886 # 5.7.0 if we're installing 5.6.1.
6890 if (@inc_version_list) {
6891 print join(' ', @inc_version_list);
6894 # Blank space to preserve value for next Configure run.
6899 case "$inc_version_list" in
6900 '') if test -x "$perl5$exe_ext"; then
6901 dflt=`$perl5 getverlist`
6906 $undef) dflt='none' ;;
6907 *) eval dflt=\"$inc_version_list\" ;;
6910 ''|' ') dflt=none ;;
6913 5.005) case "$bincompat5005" in
6914 $define|true|[yY]*) ;;
6921 In order to ease the process of upgrading, this version of perl
6922 can be configured to use modules built and installed with earlier
6923 versions of perl that were installed under $prefix. Specify here
6924 the list of earlier versions that this version of perl should check.
6925 If Configure detected no earlier versions of perl installed under
6926 $prefix, then the list will be empty. Answer 'none' to tell perl
6927 to not search earlier versions.
6929 The default should almost always be sensible, so if you're not sure,
6930 just accept the default.
6933 rp='List of earlier versions to include in @INC?'
6936 [Nn]one|''|' ') inc_version_list=' ' ;;
6937 *) inc_version_list="$ans" ;;
6939 case "$inc_version_list" in
6941 inc_version_list_init='0';;
6942 *) inc_version_list_init=`echo $inc_version_list |
6943 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6948 : determine whether to install perl also as /usr/bin/perl
6951 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6953 Many scripts expect perl to be installed as /usr/bin/perl.
6954 I can install the perl you are about to compile also as /usr/bin/perl
6955 (in addition to $installbin/perl).
6957 case "$installusrbinperl" in
6958 "$undef"|[nN]*) dflt='n';;
6961 rp="Do you want to install perl as /usr/bin/perl?"
6964 [yY]*) val="$define";;
6970 set installusrbinperl
6973 : see if dld is available
6977 : see if dlopen exists
6984 : determine which dynamic loading, if any, to compile in
6986 dldir="ext/DynaLoader"
6999 $define) dflt='y' ;;
7002 $define) dflt='y' ;;
7004 : Does a dl_xxx.xs file exist for this operating system
7005 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7008 rp="Do you wish to use dynamic loading?"
7015 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7016 dflt="$dldir/dl_${osname}.xs"
7017 elif $test "$d_dlopen" = "$define" ; then
7018 dflt="$dldir/dl_dlopen.xs"
7019 elif $test "$i_dld" = "$define" ; then
7020 dflt="$dldir/dl_dld.xs"
7025 *) dflt="$dldir/$dlsrc"
7028 echo "The following dynamic loading files are available:"
7029 : Can not go over to $dldir because getfile has path hard-coded in.
7030 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7031 rp="Source file to use for dynamic loading"
7037 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7041 Some systems may require passing special flags to $cc -c to
7042 compile modules that will be used to create a shared library.
7043 To use no flags, say "none".
7046 case "$cccdlflags" in
7047 '') case "$gccversion" in
7048 '') case "$osname" in
7050 next) dflt='none' ;;
7051 irix*) dflt='-KPIC' ;;
7052 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7053 sunos) dflt='-pic' ;;
7057 *) case "$osname" in
7058 darwin) dflt='none' ;;
7059 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7064 *) dflt="$cccdlflags" ;;
7066 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7069 none) cccdlflags=' ' ;;
7070 *) cccdlflags="$ans" ;;
7075 Some systems use ld to create libraries that can be dynamically loaded,
7076 while other systems (such as those using ELF) use $cc.
7080 '') $cat >try.c <<'EOM'
7081 /* Test for whether ELF binaries are produced */
7086 int i = open("a.out",O_RDONLY);
7089 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7090 exit(0); /* succeed (yes, it's ELF) */
7095 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7097 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7101 echo "I'll use ld to build dynamic libraries."
7110 rp="What command should be used to create dynamic libraries?"
7116 Some systems may require passing special flags to $ld to create a
7117 library that can be dynamically loaded. If your ld flags include
7118 -L/other/path options to locate libraries outside your loader's normal
7119 search path, you may need to specify those -L options here as well. To
7120 use no flags, say "none".
7123 case "$lddlflags" in
7124 '') case "$osname" in
7125 beos) dflt='-nostart' ;;
7127 case "$gccversion" in
7128 '') dflt="$dflt +vnocompatwarnings" ;;
7131 linux|irix*) dflt='-shared' ;;
7132 next) dflt='none' ;;
7133 solaris) dflt='-G' ;;
7134 sunos) dflt='-assert nodefinitions' ;;
7135 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7139 *) dflt="$lddlflags" ;;
7142 : Try to guess additional flags to pick up local libraries.
7143 : Be careful not to append to a plain 'none'
7147 for thisflag in $ldflags; do
7152 *) dflt="$dflt $thisflag" ;;
7159 ''|' ') dflt='none' ;;
7162 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7165 none) lddlflags=' ' ;;
7166 *) lddlflags="$ans" ;;
7171 Some systems may require passing special flags to $cc to indicate that
7172 the resulting executable will use dynamic linking. To use no flags,
7176 case "$ccdlflags" in
7177 '') case "$osname" in
7178 hpux) dflt='-Wl,-E' ;;
7179 linux) dflt='-rdynamic' ;;
7180 next) dflt='none' ;;
7181 sunos) dflt='none' ;;
7185 *) dflt="$ccdlflags" ;;
7187 rp="Any special flags to pass to $cc to use dynamic linking?"
7190 none) ccdlflags=' ' ;;
7191 *) ccdlflags="$ans" ;;
7205 # No dynamic loading being used, so don't bother even to prompt.
7208 *) case "$useshrplib" in
7209 '') case "$osname" in
7210 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7212 also='Building a shared libperl is required for dynamic loading to work on your system.'
7217 also='Building a shared libperl is needed for MAB support.'
7235 The perl executable is normally obtained by linking perlmain.c with
7236 libperl${_a}, any static extensions (usually just DynaLoader), and
7237 any other libraries needed on this system (such as -lm, etc.). Since
7238 your system supports dynamic loading, it is probably possible to build
7239 a shared libperl.$so. If you will have more than one executable linked
7240 to libperl.$so, this will significantly reduce the size of each
7241 executable, but it may have a noticeable affect on performance. The
7242 default is probably sensible for your system.
7246 rp="Build a shared libperl.$so (y/n)"
7250 useshrplib='true' ;;
7251 *) useshrplib='false' ;;
7256 case "$useshrplib" in
7260 # Figure out a good name for libperl.so. Since it gets stored in
7261 # a version-specific architecture-dependent library, the version
7262 # number isn't really that important, except for making cc/ld happy.
7264 # A name such as libperl.so.3.1
7265 majmin="libperl.$so.$patchlevel.$subversion"
7266 # A name such as libperl.so.301
7267 majonly=`echo $patchlevel $subversion |
7268 $awk '{printf "%d%02d", $1, $2}'`
7269 majonly=libperl.$so.$majonly
7270 # I'd prefer to keep the os-specific stuff here to a minimum, and
7271 # rely on figuring it out from the naming of libc.
7272 case "${osname}${osvers}" in
7275 # XXX How handle the --version stuff for MAB?
7277 linux*) # ld won't link with a bare -lperl otherwise.
7280 cygwin*) # include version
7281 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7283 *) # Try to guess based on whether libc has major.minor.
7285 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7286 *libc.$so.[0-9]*) dflt=$majonly ;;
7287 *) dflt=libperl.$so ;;
7297 I need to select a good name for the shared libperl. If your system uses
7298 library names with major and minor numbers, then you might want something
7299 like $majmin. Alternatively, if your system uses a single version
7300 number for shared libraries, then you might want to use $majonly.
7301 Or, your system might be quite happy with a simple libperl.$so.
7303 Since the shared libperl will get installed into a version-specific
7304 architecture-dependent directory, the version number of the shared perl
7305 library probably isn't important, so the default should be o.k.
7308 rp='What name do you want to give to the shared libperl?'
7311 echo "Ok, I'll use $libperl"
7314 libperl="libperl${_a}"
7318 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7322 WARNING: Use of the shrpdir variable for the installation location of
7323 the shared $libperl is not supported. It was never documented and
7324 will not work in this version. Let me (perlbug@perl.org)
7325 know of any problems this may cause.
7331 But your current setting of $shrpdir is
7332 the default anyway, so it's harmless.
7337 Further, your current attempted setting of $shrpdir
7338 conflicts with the value of $archlibexp/CORE
7339 that installperl will use.
7346 # How will the perl executable find the installed shared $libperl?
7347 # Add $xxx to ccdlflags.
7348 # If we can't figure out a command-line option, use $shrpenv to
7349 # set env LD_RUN_PATH. The main perl makefile uses this.
7350 shrpdir=$archlibexp/CORE
7353 if "$useshrplib"; then
7356 # We'll set it in Makefile.SH...
7362 xxx="-Wl,-R$shrpdir"
7364 linux|irix*|dec_osf)
7365 xxx="-Wl,-rpath,$shrpdir"
7368 # next doesn't like the default...
7371 # beos doesn't like the default, either.
7374 # hpux doesn't like the default, either.
7375 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7378 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7384 # Only add $xxx if it isn't already in ccdlflags.
7385 case " $ccdlflags " in
7387 *) ccdlflags="$ccdlflags $xxx"
7390 Adding $xxx to the flags
7391 passed to $ld so that the perl executable will find the
7392 installed shared $libperl.
7400 # Fix ccdlflags in AIX for building external extensions.
7401 # (For building Perl itself bare -bE:perl.exp is needed,
7402 # Makefile.SH takes care of this.)
7404 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7406 # Respect a hint or command-line value.
7408 '') shrpenv="$tmp_shrpenv" ;;
7410 case "$ldlibpthname" in
7411 '') ldlibpthname=LD_LIBRARY_PATH ;;
7412 none) ldlibpthname='' ;;
7415 : determine where manual pages are on this system
7419 syspath='/usr/share/man/man1 /usr/man/man1'
7420 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7421 syspath="$syspath /usr/man/u_man/man1"
7422 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7423 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7424 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7425 sysman=`./loc . /usr/man/man1 $syspath`
7428 if $test -d "$sysman"; then
7429 echo "System manual is in $sysman." >&4
7431 echo "Could not find manual pages in source form." >&4
7434 : determine where manual pages go
7435 set man1dir man1dir none
7439 $spackage has manual pages available in source form.
7443 echo "However, you don't have nroff, so they're probably useless to you."
7445 '') man1dir="none";;
7448 echo "If you don't want the manual sources installed, answer 'none'."
7453 lookpath="$prefixexp/share/man/man1"
7454 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7455 lookpath="$lookpath $prefixexp/man/p_man/man1"
7456 lookpath="$lookpath $prefixexp/man/u_man/man1"
7457 lookpath="$lookpath $prefixexp/man/man.1"
7459 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7460 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7470 rp="Where do the main $spackage manual pages (source) go?"
7472 if $test "X$man1direxp" != "X$ansexp"; then
7476 man1direxp="$ansexp"
7482 : Change installation prefix, if necessary.
7483 if $test X"$prefix" != X"$installprefix"; then
7484 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7486 installman1dir="$man1direxp"
7489 : What suffix to use on installed man pages
7496 rp="What suffix should be used for the main $spackage man pages?"
7498 '') case "$man1dir" in
7512 *) dflt="$man1ext";;
7519 : see if we can have long filenames
7521 first=123456789abcdef
7523 if (echo hi >$first) 2>/dev/null; then
7524 if $test -f 123456789abcde; then
7525 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7528 echo 'You can have filenames longer than 14 characters.'>&4
7533 You can't have filenames longer than 14 chars.
7534 You can't even think about them!
7540 $rm -rf 123456789abcde*
7542 : determine where library module manual pages go
7543 set man3dir man3dir none
7547 $spackage has manual pages for many of the library modules.
7553 However, you don't have nroff, so they're probably useless to you.
7556 '') man3dir="none";;
7560 case "$d_flexfnam" in
7563 However, your system can't handle the long file names like File::Basename.3.
7566 '') man3dir="none";;
7570 echo "If you don't want the manual sources installed, answer 'none'."
7571 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7573 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7574 if $test -d "$privlib/man/man3"; then
7577 WARNING: Previous versions of perl installed man3 pages into
7578 $privlib/man/man3. This version will suggest a
7579 new default of $dflt.
7583 rp='Do you wish to preserve the old behavior?(y/n)'
7586 y*) dflt="$privlib/man/man3" ;;
7591 *) dflt="$man3dir" ;;
7598 rp="Where do the $package library man pages (source) go?"
7601 man3direxp="$ansexp"
7607 : Change installation prefix, if necessary.
7608 if $test X"$prefix" != X"$installprefix"; then
7609 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7611 installman3dir="$man3direxp"
7614 : What suffix to use on installed man pages
7620 rp="What suffix should be used for the $package library man pages?"
7622 '') case "$man3dir" in
7636 *) dflt="$man3ext";;
7643 : see if we have to deal with yellow pages, now NIS.
7644 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7645 if $test -f /usr/etc/nibindd; then
7647 echo "I'm fairly confident you're on a NeXT."
7649 rp='Do you get the hosts file via NetInfo?'
7658 y*) hostcat='nidump hosts .';;
7659 *) case "$hostcat" in
7660 nidump*) hostcat='';;
7670 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7678 rp='Are you getting the hosts file via yellow pages?'
7681 y*) hostcat='ypcat hosts';;
7682 *) hostcat='cat /etc/hosts';;
7688 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7691 '') test -f /etc/group && groupcat='cat /etc/group';;
7694 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7697 : now get the host name
7699 echo "Figuring out host name..." >&4
7700 case "$myhostname" in
7702 echo 'Maybe "hostname" will work...'
7703 if tans=`sh -c hostname 2>&1` ; then
7711 if $test "$cont"; then
7713 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7714 if tans=`cat /etc/systemid 2>&1` ; then
7716 phostname='cat /etc/systemid'
7717 echo "Whadyaknow. Xenix always was a bit strange..."
7720 elif $test -r /etc/systemid; then
7721 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7724 if $test "$cont"; then
7725 echo 'No, maybe "uuname -l" will work...'
7726 if tans=`sh -c 'uuname -l' 2>&1` ; then
7728 phostname='uuname -l'
7730 echo 'Strange. Maybe "uname -n" will work...'
7731 if tans=`sh -c 'uname -n' 2>&1` ; then
7733 phostname='uname -n'
7735 echo 'Oh well, maybe I can mine it out of whoami.h...'
7736 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7737 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7738 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7740 case "$myhostname" in
7741 '') echo "Does this machine have an identity crisis or something?"
7744 echo "Well, you said $myhostname before..."
7745 phostname='echo $myhostname';;
7751 : you do not want to know about this
7756 if $test "$myhostname" ; then
7758 rp='Your host name appears to be "'$myhostname'".'" Right?"
7766 : bad guess or no guess
7767 while $test "X$myhostname" = X ; do
7769 rp="Please type the (one word) name of your host:"
7774 : translate upper to lower if necessary
7775 case "$myhostname" in
7777 echo "(Normalizing case in your host name)"
7778 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7782 case "$myhostname" in
7784 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7785 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7786 echo "(Trimming domain name from host name--host name is now $myhostname)"
7788 *) case "$mydomain" in
7791 test "X$hostcat" = "Xypcat hosts" &&
7792 ypmatch "$myhostname" hosts 2>/dev/null |\
7793 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7796 test "X$hostcat" != "X" &&
7797 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7798 /[ ]$myhostname[ . ]/p" > hosts
7801 if $test -f hosts; then
7802 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7803 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7804 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7805 hosts | $sort | $uniq | \
7806 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7807 case `$echo X$dflt` in
7808 X*\ *) echo "(Several hosts in the database matched hostname)"
7811 X.) echo "(You do not have fully-qualified names in the hosts database)"
7815 echo "(I cannot locate a hosts database anywhere)"
7820 tans=`./loc resolv.conf X /etc /usr/etc`
7821 if $test -f "$tans"; then
7822 echo "(Attempting domain name extraction from $tans)"
7823 dflt=.`$sed -n -e 's/ / /g' \
7824 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7825 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7827 .) dflt=.`$sed -n -e 's/ / /g' \
7828 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7829 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7836 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7837 dflt=.`sh -c domainname 2>/dev/null`
7840 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7844 case "$dflt$osname" in
7845 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7846 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7850 .) echo "(Lost all hope -- silly guess then)"
7856 *) dflt="$mydomain";;
7860 rp="What is your domain name?"
7870 : translate upper to lower if necessary
7873 echo "(Normalizing case in your domain name)"
7874 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7878 : a little sanity check here
7879 case "$phostname" in
7882 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7883 $myhostname$mydomain|$myhostname) ;;
7885 case "$phostname" in
7887 echo "(That doesn't agree with your whoami.h file, by the way.)"
7890 echo "(That doesn't agree with your $phostname command, by the way.)"
7900 I need to get your e-mail address in Internet format if possible, i.e.
7901 something like user@host.domain. Please answer accurately since I have
7902 no easy means to double check it. The default value provided below
7903 is most probably close to reality but may not be valid from outside
7904 your organization...
7908 while test "$cont"; do
7910 '') dflt="$cf_by@$myhostname$mydomain";;
7911 *) dflt="$cf_email";;
7913 rp='What is your e-mail address?'
7919 rp='Address does not look like an Internet one. Use it anyway?'
7935 If you or somebody else will be maintaining perl at your site, please
7936 fill in the correct e-mail address here so that they may be contacted
7937 if necessary. Currently, the "perlbug" program included with perl
7938 will send mail to this address in addition to perlbug@perl.org. You may
7939 enter "none" for no administrator.
7942 case "$perladmin" in
7943 '') dflt="$cf_email";;
7944 *) dflt="$perladmin";;
7946 rp='Perl administrator e-mail address'
7950 : determine whether to only install version-specific parts.
7953 Do you want to install only the version-specific parts of the perl
7954 distribution? Usually you do *not* want to do this.
7956 case "$versiononly" in
7957 "$define"|[Yy]*|true) dflt='y' ;;
7960 rp="Do you want to install only the version-specific parts of perl?"
7963 [yY]*) val="$define";;
7969 : figure out how to guarantee perl startup
7970 case "$startperl" in
7972 case "$sharpbang" in
7976 I can use the #! construct to start perl on your system. This will
7977 make startup of perl scripts faster, but may cause problems if you
7978 want to share those scripts and perl is not in a standard place
7979 ($binexp/perl) on all your platforms. The alternative is to force
7980 a shell by starting the script with a single ':' character.
7983 case "$versiononly" in
7984 "$define") dflt="$binexp/perl$version";;
7985 *) dflt="$binexp/perl";;
7987 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7990 none) startperl=": # use perl";;
7991 *) startperl="#!$ans"
7992 if $test 30 -lt `echo "$ans" | wc -c`; then
7995 WARNING: Some systems limit the #! command to 32 characters.
7996 If you experience difficulty running Perl scripts with #!, try
7997 installing Perl in a directory with a shorter pathname.
8003 *) startperl=": # use perl"
8008 echo "I'll use $startperl to start perl scripts."
8010 : figure best path for perl in scripts
8013 perlpath="$binexp/perl"
8014 case "$startperl" in
8019 I will use the "eval 'exec'" idiom to start Perl on your system.
8020 I can use the full path of your Perl binary for this purpose, but
8021 doing so may cause problems if you want to share those scripts and
8022 Perl is not always in a standard place ($binexp/perl).
8026 rp="What path shall I use in \"eval 'exec'\"?"
8033 case "$startperl" in
8035 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8038 : determine where public executable scripts go
8039 set scriptdir scriptdir
8041 case "$scriptdir" in
8044 : guess some guesses
8045 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8046 $test -d /usr/share/bin && dflt=/usr/share/bin
8047 $test -d /usr/local/script && dflt=/usr/local/script
8048 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8049 $test -d $prefixexp/script && dflt=$prefixexp/script
8053 *) dflt="$scriptdir"
8058 Some installations have a separate directory just for executable scripts so
8059 that they can mount it across multiple architectures but keep the scripts in
8060 one spot. You might, for example, have a subdirectory of /usr/share for this.
8061 Or you might just lump your scripts in with all your other executables.
8065 rp='Where do you keep publicly executable scripts?'
8067 if $test "X$ansexp" != "X$scriptdirexp"; then
8071 scriptdirexp="$ansexp"
8072 : Change installation prefix, if necessary.
8073 if $test X"$prefix" != X"$installprefix"; then
8074 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8076 installscript="$scriptdirexp"
8079 : determine where add-on public executables go
8081 '') dflt=$siteprefix/bin ;;
8085 rp='Pathname where the add-on public executables should be installed?'
8088 sitebinexp="$ansexp"
8089 : Change installation prefix, if necessary.
8090 if $test X"$prefix" != X"$installprefix"; then
8091 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8093 installsitebin="$sitebinexp"
8096 : define an is-a-typedef? function
8097 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8099 "") inclist="sys/types.h";;
8101 eval "varval=\$$var";
8105 for inc in $inclist; do
8106 echo "#include <$inc>" >>temp.c;
8108 echo "#ifdef $type" >> temp.c;
8109 echo "printf(\"We have $type\");" >> temp.c;
8110 echo "#endif" >> temp.c;
8111 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8112 if $contains $type temp.E >/dev/null 2>&1; then
8118 *) eval "$var=\$varval";;
8121 : define an is-a-typedef? function that prompts if the type is not available.
8122 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8124 "") inclist="sys/types.h";;
8126 eval "varval=\$$var";
8130 for inc in $inclist; do
8131 echo "#include <$inc>" >>temp.c;
8133 echo "#ifdef $type" >> temp.c;
8134 echo "printf(\"We have $type\");" >> temp.c;
8135 echo "#endif" >> temp.c;
8136 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8138 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8139 if $contains $type temp.E >/dev/null 2>&1; then
8140 echo "$type found." >&4;
8143 echo "$type NOT found." >&4;
8149 *) eval "$var=\$varval";;
8152 : see what type lseek is declared as in the kernel
8153 rp="What is the type used for lseek's offset on this system?"
8154 set off_t lseektype long stdio.h sys/types.h
8158 echo "Checking to see how big your file offsets are..." >&4
8160 #include <sys/types.h>
8164 printf("%d\n", (int)sizeof($lseektype));
8169 if eval $compile_ok; then
8170 lseeksize=`$run ./try`
8171 echo "Your file offsets are $lseeksize bytes long."
8175 echo "(I can't seem to compile the test program. Guessing...)"
8176 rp="What is the size of your file offsets (in bytes)?"
8182 : see what type file positions are declared as in the library
8183 rp="What is the type for file position used by fsetpos()?"
8184 set fpos_t fpostype long stdio.h sys/types.h
8189 *_t) zzz="$fpostype" ;;
8192 echo "Checking the size of $zzz..." >&4
8194 #include <sys/types.h>
8197 printf("%d\n", (int)sizeof($fpostype));
8202 if eval $compile_ok; then
8206 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8209 echo "Your $zzz is $fpossize bytes long."
8215 echo "(I can't compile the test program. Guessing...)" >&4
8216 rp="What is the size of your file positions (in bytes)?"
8223 # Backward compatibility (uselfs is deprecated).
8225 "$define"|true|[yY]*)
8228 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8230 uselargefiles="$define"
8234 case "$lseeksize:$fpossize" in
8237 You can have files larger than 2 gigabytes.
8240 *) case "$uselargefiles" in
8241 "$undef"|false|[nN]*) dflt='n' ;;
8246 Perl can be built to understand large files (files larger than 2 gigabytes)
8247 on some systems. To do so, Configure can be run with -Duselargefiles.
8249 If this doesn't make any sense to you, just accept the default '$dflt'.
8251 rp='Try to understand large files, if available?'
8254 y|Y) val="$define" ;;
8261 case "$uselargefiles" in
8263 : Look for a hint-file generated 'call-back-unit'. If the
8264 : user has specified that a large files perl is to be built,
8265 : we may need to set or change some other defaults.
8266 if $test -f uselargefiles.cbu; then
8267 echo "Your platform has some specific hints for large file builds, using them..."
8268 . ./uselargefiles.cbu
8270 echo "Rechecking to see how big your file offsets are..." >&4
8272 #include <sys/types.h>
8276 printf("%d\n", (int)sizeof($lseektype));
8281 if eval $compile_ok; then
8282 lseeksize=`$run ./try`
8283 $echo "Your file offsets are now $lseeksize bytes long."
8287 echo "(I can't seem to compile the test program. Guessing...)"
8288 rp="What is the size of your file offsets (in bytes)?"
8293 *_t) zzz="$fpostype" ;;
8296 $echo $n "Rechecking the size of $zzz...$c" >&4
8298 #include <sys/types.h>
8301 printf("%d\n", (int)sizeof($fpostype));
8306 if eval $compile_ok; then
8311 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8314 echo " $fpossize bytes." >&4
8320 echo "(I can't compile the test program. Guessing...)" >&4
8321 rp="What is the size of your file positions (in bytes)?"
8330 case "$vendorprefix" in
8331 '') d_vendorbin="$undef"
8335 *) d_vendorbin="$define"
8336 : determine where vendor-supplied executables go.
8337 case "$vendorbin" in
8338 '') dflt=$vendorprefix/bin ;;
8339 *) dflt="$vendorbin" ;;
8342 rp='Pathname for the vendor-supplied executables directory?'
8345 vendorbinexp="$ansexp"
8348 : Change installation prefix, if necessary.
8349 if $test X"$prefix" != X"$installprefix"; then
8350 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8352 installvendorbin="$vendorbinexp"
8355 : see if qgcvt exists
8361 if $test X"$d_longdbl" = X"$define"; then
8363 echo "Checking how to print long doubles..." >&4
8365 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8366 $cat >try.c <<'EOCP'
8367 #include <sys/types.h>
8371 printf("%.3f\n", d);
8375 if eval $compile; then
8379 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8380 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8381 echo "We will use %f."
8387 if $test X"$sPRIfldbl" = X; then
8388 $cat >try.c <<'EOCP'
8389 #include <sys/types.h>
8392 long double d = 123.456;
8393 printf("%.3Lf\n", d);
8397 if eval $compile; then
8401 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8402 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8403 echo "We will use %Lf."
8409 if $test X"$sPRIfldbl" = X; then
8410 $cat >try.c <<'EOCP'
8411 #include <sys/types.h>
8414 long double d = 123.456;
8415 printf("%.3llf\n", d);
8419 if eval $compile; then
8423 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8424 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8425 echo "We will use %llf."
8431 if $test X"$sPRIfldbl" = X; then
8432 $cat >try.c <<'EOCP'
8433 #include <sys/types.h>
8436 long double d = 123.456;
8437 printf("%.3lf\n", d);
8441 if eval $compile; then
8445 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8446 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8447 echo "We will use %lf."
8453 if $test X"$sPRIfldbl" = X; then
8454 echo "Cannot figure out how to print long doubles." >&4
8456 sSCNfldbl=$sPRIfldbl # expect consistency
8463 case "$sPRIfldbl" in
8464 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8465 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8466 d_SCNfldbl="$undef";
8468 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8469 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8470 d_SCNfldbl="$define";
8474 : Check how to convert floats to strings.
8476 echo "Checking for an efficient way to convert floats to strings."
8478 case "$uselongdouble" in
8479 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8481 case "$d_longdbl" in
8482 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8484 case "$d_PRIgldbl" in
8485 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8489 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8490 char *myname = "gconvert";
8493 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8494 char *myname = "gcvt";
8497 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8498 char *myname = "qgcvt";
8499 #define DOUBLETYPE long double
8502 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8503 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8505 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8507 char *myname = "sprintf";
8511 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8512 #define DOUBLETYPE long double
8514 #define DOUBLETYPE double
8520 #define I_STDLIB $i_stdlib
8526 checkit(expect, got)
8530 if (strcmp(expect, got)) {
8531 printf("%s oddity: Expected %s, got %s\n",
8532 myname, expect, got);
8542 /* This must be 1st test on (which?) platform */
8543 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8544 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8545 checkit("0.1", buf);
8547 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8550 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8551 checkit("1.1", buf);
8553 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8554 checkit("1.01", buf);
8556 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8557 checkit("1.001", buf);
8559 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8560 checkit("1.0001", buf);
8562 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8563 checkit("1.00001", buf);
8565 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8566 checkit("1.000001", buf);
8568 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8571 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8574 /* Some Linux gcvt's give 1.e+5 here. */
8575 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8576 checkit("100000", buf);
8578 /* Some Linux gcvt's give -1.e+5 here. */
8579 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8580 checkit("-100000", buf);
8582 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8583 checkit("123.456", buf);
8585 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8586 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8587 if (strlen(buf) > 5)
8588 checkit("1e+030", buf); /* for Microsoft */
8590 checkit("1e+30", buf);
8595 case "$d_Gconvert" in
8596 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8597 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8598 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8599 *) xxx_list='gconvert gcvt sprintf' ;;
8602 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8603 "$define$define$define")
8604 # for long doubles prefer first qgcvt, then sprintf
8605 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8606 xxx_list="sprintf $xxx_list"
8608 "$define") xxx_list="qgcvt $xxx_list" ;;
8613 for xxx_convert in $xxx_list; do
8614 echo "Trying $xxx_convert..."
8616 set try -DTRY_$xxx_convert
8617 if eval $compile; then
8618 echo "$xxx_convert() found." >&4
8620 echo "I'll use $xxx_convert to convert floats into a string." >&4
8623 echo "...But $xxx_convert didn't work as I expected."
8626 echo "$xxx_convert NOT found." >&4
8630 case "$xxx_convert" in
8631 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8632 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8633 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8634 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8635 "$define$define$define")
8636 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8637 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8642 : see if _fwalk exists
8646 : Initialize h_fcntl
8649 : Initialize h_sysfile
8652 : access call always available on UNIX
8656 : locate the flags for 'access()'
8660 $cat >access.c <<'EOCP'
8661 #include <sys/types.h>
8666 #include <sys/file.h>
8675 : check sys/file.h first, no particular reason here
8676 if $test `./findhdr sys/file.h` && \
8677 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8679 echo "<sys/file.h> defines the *_OK access constants." >&4
8680 elif $test `./findhdr fcntl.h` && \
8681 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8683 echo "<fcntl.h> defines the *_OK access constants." >&4
8684 elif $test `./findhdr unistd.h` && \
8685 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8686 echo "<unistd.h> defines the *_OK access constants." >&4
8688 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8694 : see if accessx exists
8695 set accessx d_accessx
8698 : see if alarm exists
8702 : see if atolf exists
8706 : see if atoll exists
8710 : Look for GNU-cc style attribute checking
8712 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8713 $cat >attrib.c <<'EOCP'
8715 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8717 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8718 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8719 echo "Your C compiler doesn't fully support __attribute__."
8722 echo "Your C compiler supports __attribute__."
8726 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8733 : see if bcmp exists
8737 : see if bcopy exists
8741 : see if this is a unistd.h system
8742 set unistd.h i_unistd
8745 : see if getpgrp exists
8746 set getpgrp d_getpgrp
8749 case "$d_getpgrp" in
8752 echo "Checking to see which flavor of getpgrp is in use..."
8755 #include <sys/types.h>
8757 # include <unistd.h>
8761 if (getuid() == 0) {
8762 printf("(I see you are running Configure as super-user...)\n");
8766 if (getpgrp(1) == 0)
8775 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8776 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8778 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8779 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8782 echo "I can't seem to compile and run the test program."
8784 xxx="a USG one, i.e. you use getpgrp()."
8786 # SVR4 systems can appear rather BSD-ish.
8789 xxx="a BSD one, i.e. you use getpgrp(pid)."
8793 xxx="probably a USG one, i.e. you use getpgrp()."
8798 echo "Assuming your getpgrp is $xxx" >&4
8807 : see if setpgrp exists
8808 set setpgrp d_setpgrp
8811 case "$d_setpgrp" in
8814 echo "Checking to see which flavor of setpgrp is in use..."
8817 #include <sys/types.h>
8819 # include <unistd.h>
8823 if (getuid() == 0) {
8824 printf("(I see you are running Configure as super-user...)\n");
8828 if (-1 == setpgrp(1, 1))
8831 if (setpgrp() != -1)
8837 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8838 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8840 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8841 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8844 echo "(I can't seem to compile and run the test program.)"
8846 xxx="a USG one, i.e. you use setpgrp()."
8848 # SVR4 systems can appear rather BSD-ish.
8851 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8855 xxx="probably a USG one, i.e. you use setpgrp()."
8860 echo "Assuming your setpgrp is $xxx" >&4
8868 : see if bzero exists
8872 : see if signal is declared as pointer to function returning int or void
8874 xxx=`./findhdr signal.h`
8875 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8876 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8877 echo "You have int (*signal())() instead of void." >&4
8879 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8880 echo "You have void (*signal())()." >&4
8882 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8883 echo "You have int (*signal())() instead of void." >&4
8885 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8886 echo "You have void (*signal())()." >&4
8889 case "$d_voidsig" in
8891 echo "I can't determine whether signal handler returns void or int..." >&4
8893 rp="What type does your signal handler return?"
8900 echo "As you already told me, signal handler returns void." >&4
8903 *) echo "As you already told me, signal handler returns int." >&4
8910 case "$d_voidsig" in
8911 "$define") signal_t="void";;
8916 : check for ability to cast large floats to 32-bit ints.
8918 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8919 if $test "$intsize" -ge 4; then
8926 #include <sys/types.h>
8928 $signal_t blech(s) int s; { exit(3); }
8935 signal(SIGFPE, blech);
8937 /* Don't let compiler optimize the test away. Store the number
8938 in a writable string for gcc to pass to sscanf under HP/UX.
8940 sprintf(str, "2147483647");
8941 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8945 /* x86 processors will probably give 0x8000 0000, which is a
8946 sign change. We don't want that. We want to mimic SPARC
8947 behavior here, which is to preserve the sign and give
8950 if (i32 != ($xxx) f)
8956 if eval $compile_ok; then
8960 echo "(I can't seem to compile the test program--assuming it can't)"
8968 echo "Nope, it can't."
8975 : check for ability to cast negative floats to unsigned
8977 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8980 #include <sys/types.h>
8982 $signal_t blech(s) int s; { exit(7); }
8983 $signal_t blech_in_list(s) int s; { exit(4); }
8984 unsigned long dummy_long(p) unsigned long p; { return p; }
8985 unsigned int dummy_int(p) unsigned int p; { return p; }
8986 unsigned short dummy_short(p) unsigned short p; { return p; }
8990 unsigned long along;
8992 unsigned short ashort;
8996 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8997 a direct f = -123. assignment. gcc-2.8.0 reportedly
8998 optimized the whole file away
9000 /* Store the number in a writable string for gcc to pass to
9003 sprintf(str, "-123");
9004 sscanf(str, "%lf", &f); /* f = -123.; */
9006 signal(SIGFPE, blech);
9007 along = (unsigned long)f;
9008 aint = (unsigned int)f;
9009 ashort = (unsigned short)f;
9010 if (along != (unsigned long)-123)
9012 if (aint != (unsigned int)-123)
9014 if (ashort != (unsigned short)-123)
9016 sprintf(str, "1073741824.");
9017 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9020 along = (unsigned long)f;
9021 if (along != 0x80000000)
9025 along = (unsigned long)f;
9026 if (along != 0x7fffffff)
9030 along = (unsigned long)f;
9031 if (along != 0x80000001)
9035 signal(SIGFPE, blech_in_list);
9036 sprintf(str, "123.");
9037 sscanf(str, "%lf", &f); /* f = 123.; */
9038 along = dummy_long((unsigned long)f);
9039 aint = dummy_int((unsigned int)f);
9040 ashort = dummy_short((unsigned short)f);
9041 if (along != (unsigned long)123)
9043 if (aint != (unsigned int)123)
9045 if (ashort != (unsigned short)123)
9052 if eval $compile_ok; then
9056 echo "(I can't seem to compile the test program--assuming it can't)"
9059 case "$castflags" in
9064 echo "Nope, it can't."
9071 : see if vprintf exists
9073 if set vprintf val -f d_vprintf; eval $csym; $val; then
9074 echo 'vprintf() found.' >&4
9077 #include <varargs.h>
9079 int main() { xxx("foo"); }
9088 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9092 if eval $compile && $run ./try; then
9093 echo "Your vsprintf() returns (int)." >&4
9096 echo "Your vsprintf() returns (char*)." >&4
9100 echo 'vprintf() NOT found.' >&4
9111 : see if chown exists
9115 : see if chroot exists
9119 : see if chsize exists
9123 : see if class exists
9127 hasstruct='varname=$1; struct=$2; shift; shift;
9128 while $test $# -ge 2; do
9130 $define) echo "#include <$2>";;
9134 echo "int main () { struct $struct foo; }" >> try.c;
9136 if eval $compile; then
9145 : see if sys/types.h has to be included
9146 set sys/types.h i_systypes
9149 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9150 while $test $# -ge 2; do
9152 $define) echo "#include <$2>";;
9156 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9158 if eval $compile; then
9169 : see whether socket exists
9171 $echo $n "Hmm... $c" >&4
9172 if set socket val -f d_socket; eval $csym; $val; then
9173 echo "Looks like you have Berkeley networking support." >&4
9175 if set setsockopt val -f; eval $csym; $val; then
9178 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9182 if $contains socklib libc.list >/dev/null 2>&1; then
9183 echo "Looks like you have Berkeley networking support." >&4
9185 : we will have to assume that it supports the 4.2 BSD interface
9188 echo "You don't have Berkeley networking in libc$_a..." >&4
9189 if test "X$d_socket" = "X$define"; then
9190 echo "...but you seem to believe that you have sockets." >&4
9192 for net in net socket
9194 if test -f /usr/lib/lib$net$_a; then
9195 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9196 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9197 if $contains socket libc.list >/dev/null 2>&1; then
9202 echo "...but the Wollongong group seems to have hacked it in." >&4
9203 sockethdr="-I/usr/netinclude"
9206 echo "Found Berkeley sockets interface in lib$net." >& 4
9207 if $contains setsockopt libc.list >/dev/null 2>&1; then
9210 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9217 if test "X$d_socket" != "X$define"; then
9218 echo "or anywhere else I see." >&4
9226 : see if socketpair exists
9227 set socketpair d_sockpair
9232 echo "Checking the availability of certain socket constants..." >& 4
9233 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9234 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9236 #include <sys/types.h>
9237 #include <sys/socket.h>
9243 set try; if eval $compile; then
9246 set d_${enum}; eval $setvar
9250 : see if this is a sys/uio.h system
9251 set sys/uio.h i_sysuio
9256 echo "Checking to see if your system supports struct cmsghdr..." >&4
9257 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9259 case "$d_cmsghdr_s" in
9260 "$define") echo "Yes, it does." ;;
9261 *) echo "No, it doesn't." ;;
9265 : check for const keyword
9267 echo 'Checking to see if your C compiler knows about "const"...' >&4
9268 $cat >const.c <<'EOCP'
9269 typedef struct spug { int drokk; } spug;
9276 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9278 echo "Yup, it does."
9281 echo "Nope, it doesn't."
9286 : see if crypt exists
9288 if set crypt val -f d_crypt; eval $csym; $val; then
9289 echo 'crypt() found.' >&4
9293 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9294 if $test -z "$cryptlib"; then
9295 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9299 if $test -z "$cryptlib"; then
9300 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9304 if $test -z "$cryptlib"; then
9305 cryptlib=`./loc libcrypt$_a "" $libpth`
9309 if $test -z "$cryptlib"; then
9310 echo 'crypt() NOT found.' >&4
9319 : get csh whereabouts
9321 'csh') val="$undef" ;;
9326 : Respect a hint or command line value for full_csh.
9328 '') full_csh=$csh ;;
9331 : see if cuserid exists
9332 set cuserid d_cuserid
9335 : see if this is a limits.h system
9336 set limits.h i_limits
9339 : see if this is a float.h system
9343 : See if number of significant digits in a double precision number is known
9345 $cat >dbl_dig.c <<EOM
9355 printf("Contains DBL_DIG");
9358 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9359 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9360 echo "DBL_DIG found." >&4
9363 echo "DBL_DIG NOT found." >&4
9370 hasproto='varname=$1; func=$2; shift; shift;
9371 while $test $# -ge 2; do
9373 $define) echo "#include <$2>";;
9377 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9378 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9379 echo "$func() prototype found.";
9382 echo "$func() prototype NOT found.";
9387 $rm -f try.c tryout.c'
9389 : see if dbm.h is available
9390 : see if dbmclose exists
9391 set dbmclose d_dbmclose
9394 case "$d_dbmclose" in
9404 *) set rpcsvc/dbm.h i_rpcsvcdbm
9409 *) echo "We won't be including <dbm.h>"
9419 : see if prototype for dbminit is available
9421 set d_dbminitproto dbminit $i_dbm dbm.h
9424 : see if difftime exists
9425 set difftime d_difftime
9428 : see if this is a dirent system
9430 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9432 echo "<dirent.h> found." >&4
9435 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9436 echo "<sys/dir.h> found." >&4
9439 xinc=`./findhdr sys/ndir.h`
9441 echo "<dirent.h> NOT found." >&4
9446 : Look for type of directory structure.
9448 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9450 case "$direntrytype" in
9453 $define) guess1='struct dirent' ;;
9454 *) guess1='struct direct' ;;
9457 *) guess1="$direntrytype"
9462 'struct dirent') guess2='struct direct' ;;
9463 *) guess2='struct dirent' ;;
9466 if $contains "$guess1" try.c >/dev/null 2>&1; then
9467 direntrytype="$guess1"
9468 echo "Your directory entries are $direntrytype." >&4
9469 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9470 direntrytype="$guess2"
9471 echo "Your directory entries seem to be $direntrytype." >&4
9473 echo "I don't recognize your system's directory entries." >&4
9474 rp="What type is used for directory entries on this system?"
9482 : see if the directory entry stores field length
9484 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9485 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9486 echo "Good, your directory entry keeps length information in d_namlen." >&4
9489 echo "Your directory entry does not know about the d_namlen field." >&4
9496 : see if dlerror exists
9499 set dlerror d_dlerror
9503 : see if dlfcn is available
9511 On a few systems, the dynamically loaded modules that perl generates and uses
9512 will need a different extension than shared libs. The default will probably
9520 rp='What is the extension of dynamically loaded modules'
9529 : Check if dlsym need a leading underscore
9535 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9536 $cat >dyna.c <<'EOM'
9545 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
9547 #include <sys/types.h>
9561 int mode = RTLD_LAZY ;
9563 handle = dlopen("./dyna.$dlext", mode) ;
9564 if (handle == NULL) {
9569 symbol = dlsym(handle, "fred") ;
9570 if (symbol == NULL) {
9571 /* try putting a leading underscore */
9572 symbol = dlsym(handle, "_fred") ;
9573 if (symbol == NULL) {
9586 : Call the object file tmp-dyna.o in case dlext=o.
9587 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9588 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
9589 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
9590 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9593 1) echo "Test program failed using dlopen." >&4
9594 echo "Perhaps you should not use dynamic loading." >&4;;
9595 2) echo "Test program failed using dlsym." >&4
9596 echo "Perhaps you should not use dynamic loading." >&4;;
9597 3) echo "dlsym needs a leading underscore" >&4
9599 4) echo "dlsym doesn't need a leading underscore." >&4;;
9602 echo "I can't compile and run the test program." >&4
9603 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9608 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9613 : see if prototype for drand48 is available
9615 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9618 : see if dup2 exists
9622 : see if eaccess exists
9623 set eaccess d_eaccess
9626 : see if endgrent exists
9627 set endgrent d_endgrent
9630 : see if endhostent exists
9631 set endhostent d_endhent
9634 : see if endnetent exists
9635 set endnetent d_endnent
9638 : see if endprotoent exists
9639 set endprotoent d_endpent
9642 : see if endpwent exists
9643 set endpwent d_endpwent
9646 : see if endservent exists
9647 set endservent d_endsent
9650 : Locate the flags for 'open()'
9652 $cat >try.c <<'EOCP'
9653 #include <sys/types.h>
9658 #include <sys/file.h>
9669 : check sys/file.h first to get FREAD on Sun
9670 if $test `./findhdr sys/file.h` && \
9671 set try -DI_SYS_FILE && eval $compile; then
9673 echo "<sys/file.h> defines the O_* constants..." >&4
9675 echo "and you have the 3 argument form of open()." >&4
9678 echo "but not the 3 argument form of open(). Oh, well." >&4
9681 elif $test `./findhdr fcntl.h` && \
9682 set try -DI_FCNTL && eval $compile; then
9684 echo "<fcntl.h> defines the O_* constants..." >&4
9686 echo "and you have the 3 argument form of open()." >&4
9689 echo "but not the 3 argument form of open(). Oh, well." >&4
9694 echo "I can't find the O_* constant definitions! You got problems." >&4
9700 : see which of string.h or strings.h is needed
9702 strings=`./findhdr string.h`
9703 if $test "$strings" && $test -r "$strings"; then
9704 echo "Using <string.h> instead of <strings.h>." >&4
9708 strings=`./findhdr strings.h`
9709 if $test "$strings" && $test -r "$strings"; then
9710 echo "Using <strings.h> instead of <string.h>." >&4
9712 echo "No string header found -- You'll surely have problems." >&4
9718 "$undef") strings=`./findhdr strings.h`;;
9719 *) strings=`./findhdr string.h`;;
9722 : check for non-blocking I/O stuff
9723 case "$h_sysfile" in
9724 true) echo "#include <sys/file.h>" > head.c;;
9727 true) echo "#include <fcntl.h>" > head.c;;
9728 *) echo "#include <sys/fcntl.h>" > head.c;;
9733 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9734 case "$o_nonblock" in
9737 $cat >>try.c <<'EOCP'
9742 printf("O_NONBLOCK\n");
9746 printf("O_NDELAY\n");
9750 printf("FNDELAY\n");
9757 if eval $compile_ok; then
9758 o_nonblock=`$run ./try`
9759 case "$o_nonblock" in
9760 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9761 *) echo "Seems like we can use $o_nonblock.";;
9764 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9767 *) echo "Using $hint value $o_nonblock.";;
9769 $rm -f try try.* .out core
9772 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9778 #include <sys/types.h>
9782 #define MY_O_NONBLOCK $o_nonblock
9783 #ifndef errno /* XXX need better Configure test */
9794 #include <strings.h>
9796 $signal_t blech(x) int x; { exit(3); }
9798 $cat >> try.c <<'EOCP'
9806 pipe(pd); /* Down: child -> parent */
9807 pipe(pu); /* Up: parent -> child */
9810 close(pd[1]); /* Parent reads from pd[0] */
9811 close(pu[0]); /* Parent writes (blocking) to pu[1] */
9813 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9818 signal(SIGALRM, blech);
9820 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9822 sprintf(string, "%d\n", ret);
9823 write(2, string, strlen(string));
9826 if (errno == EAGAIN) {
9832 if (errno == EWOULDBLOCK)
9833 printf("EWOULDBLOCK\n");
9836 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9837 sleep(2); /* Give it time to close our pipe */
9839 ret = read(pd[0], buf, 1); /* Should read EOF */
9841 sprintf(string, "%d\n", ret);
9842 write(3, string, strlen(string));
9846 close(pd[0]); /* We write to pd[1] */
9847 close(pu[1]); /* We read from pu[0] */
9848 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9849 close(pd[1]); /* Pipe pd is now fully closed! */
9850 exit(0); /* Bye bye, thank you for playing! */
9854 if eval $compile_ok; then
9855 echo "$startsh" >mtry
9856 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9858 ./mtry >/dev/null 2>&1
9860 0) eagain=`$cat try.out`;;
9861 1) echo "Could not perform non-blocking setting!";;
9862 2) echo "I did a successful read() for something that was not there!";;
9863 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9864 4) echo "Could not find F_SETFL!";;
9865 *) echo "Something terribly wrong happened during testing.";;
9867 rd_nodata=`$cat try.ret`
9868 echo "A read() system call with no data present returns $rd_nodata."
9869 case "$rd_nodata" in
9872 echo "(That's peculiar, fixing that to be -1.)"
9878 echo "Forcing errno EAGAIN on read() with no data available."
9882 echo "Your read() sets errno to $eagain when no data is available."
9885 status=`$cat try.err`
9887 0) echo "And it correctly returns 0 to signal EOF.";;
9888 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9889 *) echo "However, your read() returns '$status' on EOF??";;
9892 if test "$status" = "$rd_nodata"; then
9893 echo "WARNING: you can't distinguish between EOF and no data!"
9897 echo "I can't compile the test program--assuming errno EAGAIN will do."
9904 echo "Using $hint value $eagain."
9905 echo "Your read() returns $rd_nodata when no data is present."
9906 case "$d_eofnblk" in
9907 "$define") echo "And you can see EOF because read() returns 0.";;
9908 "$undef") echo "But you can't see EOF status from read() returned value.";;
9910 echo "(Assuming you can't see EOF status from read anyway.)"
9916 $rm -f try try.* .out core head.c mtry
9918 : see if fchdir exists
9922 : see if fchmod exists
9926 : see if fchown exists
9930 : see if this is an fcntl system
9935 : See if fcntl-based locking works.
9941 $signal_t blech(x) int x; { exit(3); }
9943 #if defined(F_SETLK) && defined(F_SETLKW)
9946 fd = open("try.c", O_RDONLY);
9947 flock.l_type = F_RDLCK;
9948 flock.l_whence = SEEK_SET;
9949 flock.l_start = flock.l_len = 0;
9950 signal(SIGALRM, blech);
9952 retval = fcntl(fd, F_SETLK, &flock);
9954 (retval < 0 ? exit(2) : exit(0));
9960 echo "Checking if fcntl-based file locking works... "
9964 if eval $compile_ok; then
9966 echo "Yes, it seems to work."
9969 echo "Nope, it didn't work."
9974 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9975 *** This is (almost) impossible.
9976 *** If your NFS lock daemons are not feeling well, something like
9977 *** this may happen, please investigate. Cannot continue, aborting.
9985 echo "I'm unable to compile the test program, so I'll assume not."
9990 echo "Nope, since you don't even have fcntl()."
9993 set d_fcntl_can_lock
9998 : see if sys/select.h has to be included
9999 set sys/select.h i_sysselct
10002 : see if we should include time.h, sys/time.h, or both
10004 if test "X$timeincl" = X; then
10005 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10006 $echo $n "I'm now running the test program...$c"
10007 $cat >try.c <<'EOCP'
10008 #include <sys/types.h>
10013 #ifdef SYSTIMEKERNEL
10016 #include <sys/time.h>
10019 #include <sys/select.h>
10025 struct timeval bar;
10028 struct timezone tzp;
10030 if (foo.tm_sec == foo.tm_sec)
10033 if (bar.tv_sec == bar.tv_sec)
10040 for s_timezone in '-DS_TIMEZONE' ''; do
10042 for s_timeval in '-DS_TIMEVAL' ''; do
10043 for i_systimek in '' '-DSYSTIMEKERNEL'; do
10044 for i_time in '' '-DI_TIME'; do
10045 for i_systime in '-DI_SYSTIME' ''; do
10048 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10049 if eval $compile; then
10050 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10054 $echo $n "Succeeded with $flags$c"
10066 *SYSTIMEKERNEL*) i_systimek="$define"
10067 timeincl=`./findhdr sys/time.h`
10068 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10069 *) i_systimek="$undef";;
10072 *I_TIME*) i_time="$define"
10073 timeincl=`./findhdr time.h`" $timeincl"
10074 echo "We'll include <time.h>." >&4;;
10075 *) i_time="$undef";;
10078 *I_SYSTIME*) i_systime="$define"
10079 timeincl=`./findhdr sys/time.h`" $timeincl"
10080 echo "We'll include <sys/time.h>." >&4;;
10081 *) i_systime="$undef";;
10086 : check for fd_set items
10089 Checking to see how well your C compiler handles fd_set and friends ...
10092 #$i_systime I_SYS_TIME
10093 #$i_sysselct I_SYS_SELECT
10094 #$d_socket HAS_SOCKET
10095 #include <sys/types.h>
10097 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10100 #include <sys/time.h>
10102 #ifdef I_SYS_SELECT
10103 #include <sys/select.h>
10112 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10120 if eval $compile; then
10121 d_fds_bits="$define"
10123 echo "Well, your system knows about the normal fd_set typedef..." >&4
10124 if $run ./try; then
10125 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10126 d_fd_macros="$define"
10129 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10131 d_fd_macros="$undef"
10135 Hmm, your compiler has some difficulty with fd_set. Checking further...
10138 if eval $compile; then
10139 d_fds_bits="$undef"
10141 echo "Well, your system has some sort of fd_set available..." >&4
10142 if $run ./try; then
10143 echo "and you have the normal fd_set macros." >&4
10144 d_fd_macros="$define"
10147 but not the normal fd_set macros! Gross! More work for me...
10149 d_fd_macros="$undef"
10152 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10154 d_fds_bits="$undef"
10155 d_fd_macros="$undef"
10160 : see if fgetpos exists
10161 set fgetpos d_fgetpos
10164 : see if finite exists
10165 set finite d_finite
10168 : see if finitel exists
10169 set finitel d_finitel
10172 : see if flock exists
10176 : see if this is a sys/file.h system
10181 : do we need to include sys/file.h ?
10185 if $h_sysfile; then
10187 echo "We'll be including <sys/file.h>." >&4
10190 echo "We won't be including <sys/file.h>." >&4
10200 : see if prototype for flock is available
10202 set d_flockproto flock $i_sysfile sys/file.h
10205 : see if fork exists
10209 : see if fp_class exists
10210 set fp_class d_fp_class
10213 : see if pathconf exists
10214 set pathconf d_pathconf
10217 : see if fpathconf exists
10218 set fpathconf d_fpathconf
10221 : see if fpclass exists
10222 set fpclass d_fpclass
10225 : see if fpclassify exists
10226 set fpclassify d_fpclassify
10229 : see if fpclassl exists
10230 set fpclassl d_fpclassl
10234 : check for fpos64_t
10236 echo "Checking to see if you have fpos64_t..." >&4
10239 int main() { fpos64_t x = 7; }
10242 if eval $compile; then
10244 echo "You have fpos64_t."
10247 echo "You do not have fpos64_t."
10248 case "$fpossize" in
10249 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10256 : see if frexpl exists
10257 set frexpl d_frexpl
10260 : see if this is a sys/param system
10261 set sys/param.h i_sysparam
10264 : see if this is a sys/mount.h system
10265 set sys/mount.h i_sysmount
10270 echo "Checking to see if your system supports struct fs_data..." >&4
10271 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10273 case "$d_fs_data_s" in
10274 "$define") echo "Yes, it does." ;;
10275 *) echo "No, it doesn't." ;;
10278 : see if fseeko exists
10279 set fseeko d_fseeko
10281 case "$longsize" in
10282 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10285 : see if fsetpos exists
10286 set fsetpos d_fsetpos
10290 : see if fstatfs exists
10291 set fstatfs d_fstatfs
10295 : see if statvfs exists
10296 set statvfs d_statvfs
10299 : see if fstatvfs exists
10300 set fstatvfs d_fstatvfs
10304 : see if fsync exists
10308 : see if ftello exists
10309 set ftello d_ftello
10311 case "$longsize" in
10312 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10315 : see if getcwd exists
10316 set getcwd d_getcwd
10319 : see if getespwnam exists
10320 set getespwnam d_getespwnam
10324 : see if getfsstat exists
10325 set getfsstat d_getfsstat
10328 : see if getgrent exists
10329 set getgrent d_getgrent
10332 : see if gethostbyaddr exists
10333 set gethostbyaddr d_gethbyaddr
10336 : see if gethostbyname exists
10337 set gethostbyname d_gethbyname
10340 : see if gethostent exists
10341 set gethostent d_gethent
10344 : see how we will look up host name
10347 if set gethostname val -f d_gethname; eval $csym; $val; then
10348 echo 'gethostname() found.' >&4
10349 d_gethname="$define"
10352 if set uname val -f d_uname; eval $csym; $val; then
10355 uname() was found, but you're running xenix, and older versions of xenix
10356 have a broken uname(). If you don't really know whether your xenix is old
10357 enough to have a broken system call, use the default answer.
10362 "$define") dflt=n;;
10364 rp='Is your uname() broken?'
10367 n*) d_uname="$define"; call=uname;;
10370 echo 'uname() found.' >&4
10377 case "$d_gethname" in
10378 '') d_gethname="$undef";;
10381 '') d_uname="$undef";;
10383 case "$d_uname$d_gethname" in
10388 Every now and then someone has a $call() that lies about the hostname
10389 but can't be fixed for political or economic reasons. If you wish, I can
10390 pretend $call() isn't there and maybe compute hostname at run-time
10391 thanks to the '$phostname' command.
10394 rp="Shall I ignore $call() from now on?"
10397 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10400 case "$phostname" in
10401 '') aphostname='';;
10402 *) case "$aphostname" in
10404 *) set X $phostname
10408 file=`./loc $file $file $pth`
10409 aphostname=`echo $file $*`
10414 case "$d_uname$d_gethname" in
10417 case "$phostname" in
10419 echo "There will be no way for $package to get your hostname." >&4;;
10421 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10425 case "$d_phostname" in
10426 '') d_phostname="$undef";;
10429 : see if this is a netdb.h system
10430 set netdb.h i_netdb
10433 : see if prototypes for various gethostxxx netdb.h functions are available
10435 set d_gethostprotos gethostent $i_netdb netdb.h
10438 : see if getitimer exists
10439 set getitimer d_getitimer
10442 : see if getlogin exists
10443 set getlogin d_getlogin
10446 : see if getmnt exists
10447 set getmnt d_getmnt
10450 : see if getmntent exists
10451 set getmntent d_getmntent
10454 : see if getnetbyaddr exists
10455 set getnetbyaddr d_getnbyaddr
10458 : see if getnetbyname exists
10459 set getnetbyname d_getnbyname
10462 : see if getnetent exists
10463 set getnetent d_getnent
10466 : see if prototypes for various getnetxxx netdb.h functions are available
10468 set d_getnetprotos getnetent $i_netdb netdb.h
10471 : see if getpagesize exists
10472 set getpagesize d_getpagsz
10476 : see if getprotobyname exists
10477 set getprotobyname d_getpbyname
10480 : see if getprotobynumber exists
10481 set getprotobynumber d_getpbynumber
10484 : see if getprotoent exists
10485 set getprotoent d_getpent
10488 : see if getpgid exists
10489 set getpgid d_getpgid
10492 : see if getpgrp2 exists
10493 set getpgrp2 d_getpgrp2
10496 : see if getppid exists
10497 set getppid d_getppid
10500 : see if getpriority exists
10501 set getpriority d_getprior
10504 : see if prototypes for various getprotoxxx netdb.h functions are available
10506 set d_getprotoprotos getprotoent $i_netdb netdb.h
10509 : see if getprpwnam exists
10510 set getprpwnam d_getprpwnam
10513 : see if getpwent exists
10514 set getpwent d_getpwent
10518 : see if getservbyname exists
10519 set getservbyname d_getsbyname
10522 : see if getservbyport exists
10523 set getservbyport d_getsbyport
10526 : see if getservent exists
10527 set getservent d_getsent
10530 : see if prototypes for various getservxxx netdb.h functions are available
10532 set d_getservprotos getservent $i_netdb netdb.h
10535 : see if getspnam exists
10536 set getspnam d_getspnam
10539 : see if gettimeofday or ftime exists
10540 set gettimeofday d_gettimeod
10542 case "$d_gettimeod" in
10548 val="$undef"; set d_ftime; eval $setvar
10551 case "$d_gettimeod$d_ftime" in
10554 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10558 : see if this is an grp system
10564 xxx=`./findhdr grp.h`
10565 $cppstdin $cppflags $cppminus < $xxx >$$.h
10567 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10579 set d_grpasswd; eval $setvar
10583 : see if hasmntopt exists
10584 set hasmntopt d_hasmntopt
10587 : see if this is a netinet/in.h or sys/in.h system
10588 set netinet/in.h i_niin sys/in.h i_sysin
10591 : see if arpa/inet.h has to be included
10592 set arpa/inet.h i_arpainet
10595 : see if htonl --and friends-- exists
10600 : Maybe they are macros.
10603 $cat >htonl.c <<EOM
10605 #include <sys/types.h>
10606 #$i_niin I_NETINET_IN
10608 #$i_arpainet I_ARPA_INET
10609 #ifdef I_NETINET_IN
10610 #include <netinet/in.h>
10613 #include <sys/in.h>
10616 #include <arpa/inet.h>
10619 printf("Defined as a macro.");
10622 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10623 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10625 echo "But it seems to be defined as a macro." >&4
10635 if set index val -f; eval $csym; $val; then
10636 if set strchr val -f d_strchr; eval $csym; $val; then
10637 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10640 echo "strchr() found." >&4
10644 echo "index() found." >&4
10649 echo "index() found." >&4
10652 if set strchr val -f d_strchr; eval $csym; $val; then
10655 echo "strchr() found." >&4
10657 echo "No index() or strchr() found!" >&4
10662 set d_strchr; eval $setvar
10664 set d_index; eval $setvar
10666 : check whether inet_aton exists
10667 set inet_aton d_inetaton
10672 $cat >isascii.c <<'EOCP'
10684 if eval $compile; then
10685 echo "isascii() found." >&4
10688 echo "isascii() NOT found." >&4
10695 : see if isfinite exists
10696 set isfinite d_isfinite
10699 : see if isinf exists
10703 : see if isnan exists
10707 : see if isnanl exists
10708 set isnanl d_isnanl
10711 : see if killpg exists
10712 set killpg d_killpg
10715 : see if lchown exists
10717 $cat > try.c <<'EOCP'
10718 /* System header to define __stub macros and hopefully few prototypes,
10719 which can conflict with char lchown(); below. */
10720 #include <assert.h>
10721 /* Override any gcc2 internal prototype to avoid an error. */
10722 /* We use char because int might match the return type of a gcc2
10723 builtin and then its argument prototype would still apply. */
10726 /* The GNU C library defines this for functions which it implements
10727 to always fail with ENOSYS. Some functions are actually named
10728 something starting with __ and the normal name is an alias. */
10729 #if defined (__stub_lchown) || defined (__stub___lchown)
10737 if eval $compile; then
10738 $echo "lchown() found." >&4
10741 $echo "lchown() NOT found." >&4
10747 : See if number of significant digits in a double precision number is known
10749 $cat >ldbl_dig.c <<EOM
10750 #$i_limits I_LIMITS
10753 #include <limits.h>
10759 printf("Contains LDBL_DIG");
10762 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10763 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10764 echo "LDBL_DIG found." >&4
10767 echo "LDBL_DIG NOT found." >&4
10774 : see if link exists
10778 : see if localeconv exists
10779 set localeconv d_locconv
10782 : see if lockf exists
10786 : see if prototype for lseek is available
10788 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10791 : see if lstat exists
10795 : see if madvise exists
10796 set madvise d_madvise
10799 : see if mblen exists
10803 : see if mbstowcs exists
10804 set mbstowcs d_mbstowcs
10807 : see if mbtowc exists
10808 set mbtowc d_mbtowc
10811 : see if memchr exists
10812 set memchr d_memchr
10815 : see if memcmp exists
10816 set memcmp d_memcmp
10819 : see if memcpy exists
10820 set memcpy d_memcpy
10823 : see if memmove exists
10824 set memmove d_memmove
10827 : see if memset exists
10828 set memset d_memset
10831 : see if mkdir exists
10835 : see if mkdtemp exists
10836 set mkdtemp d_mkdtemp
10839 : see if mkfifo exists
10840 set mkfifo d_mkfifo
10843 : see if mkstemp exists
10844 set mkstemp d_mkstemp
10847 : see if mkstemps exists
10848 set mkstemps d_mkstemps
10851 : see if mktime exists
10852 set mktime d_mktime
10855 : see if this is a sys/mman.h system
10856 set sys/mman.h i_sysmman
10859 : see if mmap exists
10862 : see what shmat returns
10863 : default to something harmless
10865 case "$i_sysmman$d_mmap" in
10867 $cat >mmap.c <<'END'
10868 #include <sys/mman.h>
10871 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10876 echo "and it returns ($mmaptype)." >&4
10882 : see if modfl exists
10886 d_modfl_pow32_bug="$undef"
10888 case "$d_longdbl$d_modfl" in
10891 Checking to see whether your modfl() is okay for large values...
10897 long double nv = 4294967303.15;
10903 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10907 case "$osname:$gccversion" in
10908 aix:) saveccflags="$ccflags"
10909 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10912 if eval $compile; then
10915 *" 4294967303.150000 1.150000 4294967302.000000")
10916 echo >&4 "Your modfl() is broken for large values."
10917 d_modfl_pow32_bug="$define"
10919 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10923 *" 4294967303.150000 0.150000 4294967303.000000")
10924 echo >&4 "Your modfl() seems okay for large values."
10926 *) echo >&4 "I don't understand your modfl() at all."
10930 $rm -f try.* try core core.try.*
10932 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10935 case "$osname:$gccversion" in
10936 aix:) ccflags="$saveccflags" ;; # restore
10941 : see if mprotect exists
10942 set mprotect d_mprotect
10945 : see if msgctl exists
10946 set msgctl d_msgctl
10949 : see if msgget exists
10950 set msgget d_msgget
10953 : see if msgsnd exists
10954 set msgsnd d_msgsnd
10957 : see if msgrcv exists
10958 set msgrcv d_msgrcv
10961 : see how much of the 'msg*(2)' library is present.
10964 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10965 *"$undef"*) h_msg=false;;
10969 case "`ipcs 2>&1`" in
10970 "SVID messages"*"not configured"*)
10971 echo "Your $osname does not have the msg*(2) configured." >&4
10974 set msgctl d_msgctl
10976 set msgget d_msgget
10978 set msgsnd d_msgsnd
10980 set msgrcv d_msgrcv
10986 : we could also check for sys/ipc.h ...
10987 if $h_msg && $test `./findhdr sys/msg.h`; then
10988 echo "You have the full msg*(2) library." >&4
10991 echo "You don't have the full msg*(2) library." >&4
10999 echo "Checking to see if your system supports struct msghdr..." >&4
11000 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11002 case "$d_msghdr_s" in
11003 "$define") echo "Yes, it does." ;;
11004 *) echo "No, it doesn't." ;;
11008 : see if msync exists
11012 : see if munmap exists
11013 set munmap d_munmap
11016 : see if nice exists
11020 : see if this is a langinfo.h system
11021 set langinfo.h i_langinfo
11024 : see if nl_langinfo exists
11025 set nl_langinfo d_nl_langinfo
11028 : check for length of character
11030 case "$charsize" in
11032 echo "Checking to see how big your characters are (hey, you never know)..." >&4
11033 $cat >try.c <<'EOCP'
11037 printf("%d\n", (int)sizeof(char));
11042 if eval $compile_ok; then
11046 echo "(I can't seem to compile the test program. Guessing...)"
11053 rp="What is the size of a character (in bytes)?"
11058 : check for volatile keyword
11060 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11061 $cat >try.c <<'EOCP'
11064 typedef struct _goo_struct goo_struct;
11065 goo_struct * volatile goo = ((goo_struct *)0);
11066 struct _goo_struct {
11071 typedef unsigned short foo_t;
11072 char *volatile foo;
11074 volatile foo_t blech;
11078 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11080 echo "Yup, it does."
11083 echo "Nope, it doesn't."
11091 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11093 case "$use64bitint:$d_quad:$quadtype" in
11096 uvtype="$uquadtype"
11101 uvtype="unsigned long"
11107 case "$uselongdouble:$d_longdbl" in
11109 nvtype="long double"
11110 nvsize=$longdblsize
11117 $echo "(IV will be "$ivtype", $ivsize bytes)"
11118 $echo "(UV will be "$uvtype", $uvsize bytes)"
11119 $echo "(NV will be "$nvtype", $nvsize bytes)"
11122 #$i_inttypes I_INTTYPES
11124 #include <inttypes.h>
11129 int8_t i = INT8_MAX;
11130 uint8_t u = UINT8_MAX;
11131 printf("int8_t\n");
11134 int16_t i = INT16_MAX;
11135 uint16_t i = UINT16_MAX;
11136 printf("int16_t\n");
11139 int32_t i = INT32_MAX;
11140 uint32_t u = UINT32_MAX;
11141 printf("int32_t\n");
11147 '') case "$charsize" in
11149 u8type="unsigned char"
11158 if eval $compile; then
11159 case "`$run ./try`" in
11160 int8_t) i8type=int8_t
11170 '') if $test $charsize -ge 1; then
11172 u8type="unsigned char"
11180 '') case "$shortsize" in
11182 u16type="unsigned short"
11190 '') set try -DINT16
11191 if eval $compile; then
11192 case "`$run ./try`" in
11204 '') if $test $shortsize -ge 2; then
11206 u16type="unsigned short"
11214 '') case "$longsize" in
11216 u32type="unsigned long"
11220 *) case "$intsize" in
11222 u32type="unsigned int"
11232 '') set try -DINT32
11233 if eval $compile; then
11234 case "`$run ./try`" in
11246 '') if $test $intsize -ge 4; then
11248 u32type="unsigned int"
11256 '') case "$d_quad:$quadtype" in
11258 i64type="$quadtype"
11259 u64type="$uquadtype"
11267 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11268 : volatile so that the compiler has to store it out to memory.
11269 if test X"$d_volatile" = X"$define"; then
11274 #include <sys/types.h>
11275 #include <signal.h>
11277 $volatile int bletched = 0;
11278 $signal_t blech(s) int s; { bletched = 1; }
11283 int n = 8 * $uvsize;
11286 signal(SIGFPE, blech);
11289 for (i = 0; i < n; i++) {
11290 u = u << 1 | ($uvtype)1;
11292 if (($uvtype)d != u)
11296 d = ($nvtype)(u - 1);
11297 if (($uvtype)d != (u - 1))
11305 printf("%d\n", ((i == n) ? -n : i));
11311 d_nv_preserves_uv="$undef"
11312 if eval $compile; then
11313 d_nv_preserves_uv_bits="`$run ./try`"
11315 case "$d_nv_preserves_uv_bits" in
11317 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11318 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11319 d_nv_preserves_uv="$define"
11321 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11322 d_nv_preserves_uv="$undef" ;;
11323 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11324 d_nv_preserves_uv_bits="$undef" ;;
11330 : check for off64_t
11332 echo "Checking to see if you have off64_t..." >&4
11334 #include <sys/types.h>
11335 #include <unistd.h>
11336 int main() { off64_t x = 7; }
11339 if eval $compile; then
11341 echo "You have off64_t."
11344 echo "You do not have off64_t."
11345 case "$lseeksize" in
11346 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11353 : see if POSIX threads are available
11354 set pthread.h i_pthread
11360 : how to create joinable pthreads
11361 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11363 echo "Checking what constant to use for creating joinable pthreads..." >&4
11364 $cat >try.c <<'EOCP'
11365 #include <pthread.h>
11367 int detachstate = JOINABLE;
11370 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11371 if eval $compile; then
11372 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11373 val="$undef" # Yes, undef.
11374 set d_old_pthread_create_joinable
11377 set old_pthread_create_joinable
11380 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11381 if eval $compile; then
11382 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11384 set d_old_pthread_create_joinable
11386 val=PTHREAD_CREATE_UNDETACHED
11387 set old_pthread_create_joinable
11390 set try -DJOINABLE=__UNDETACHED
11391 if eval $compile; then
11392 echo "You seem to use __UNDETACHED." >&4
11394 set d_old_pthread_create_joinable
11397 set old_pthread_create_joinable
11400 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11402 set d_old_pthread_create_joinable
11405 set old_pthread_create_joinable
11412 d_old_pthread_create_joinable="$undef"
11413 old_pthread_create_joinable=""
11416 : see if pause exists
11420 : see if pipe exists
11424 : see if poll exists
11428 : see if readlink exists
11429 set readlink d_readlink
11433 echo "Checking for /proc/self/exe ..." >&4
11435 if $test "$d_readlink" = "$define" ; then
11436 if $issymlink /proc/self/exe ; then
11437 $ls -l /proc/self/exe > reflect
11438 if $contains $ls reflect >/dev/null; then
11440 echo "You have linux-like /proc/self/exe"
11449 : see if pthread_atfork exists
11450 set pthread_atfork d_pthread_atfork
11454 : see whether the various POSIXish _yields exist
11456 #include <pthread.h>
11462 #ifdef PTHREAD_YIELD
11465 #ifdef PTHREAD_YIELD_NULL
11466 pthread_yield(NULL);
11472 : see if sched_yield exists
11473 set try -DSCHED_YIELD
11474 if eval $compile; then
11476 sched_yield='sched_yield()'
11480 case "$usethreads" in
11483 $define) echo 'sched_yield() found.' >&4 ;;
11484 *) echo 'sched_yield() NOT found.' >&4 ;;
11490 : see if pthread_yield exists
11491 set try -DPTHREAD_YIELD
11492 if eval $compile; then
11494 case "$sched_yield" in
11495 '') sched_yield='pthread_yield()' ;;
11498 set try -DPTHREAD_YIELD_NULL
11499 if eval $compile; then
11501 case "$sched_yield" in
11502 '') sched_yield='pthread_yield(NULL)' ;;
11508 case "$usethreads" in
11511 $define) echo 'pthread_yield() found.' >&4 ;;
11512 *) echo 'pthread_yield() NOT found.' >&4 ;;
11516 set d_pthread_yield
11519 case "$sched_yield" in
11520 '') sched_yield=undef ;;
11525 : see if this is a pwd.h system
11531 xxx=`./findhdr pwd.h`
11532 $cppstdin $cppflags $cppminus < $xxx >$$.h
11534 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11542 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11550 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11558 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11566 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11574 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11582 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11590 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11602 set d_pwquota; eval $setvar
11603 set d_pwage; eval $setvar
11604 set d_pwchange; eval $setvar
11605 set d_pwclass; eval $setvar
11606 set d_pwexpire; eval $setvar
11607 set d_pwcomment; eval $setvar
11608 set d_pwgecos; eval $setvar
11609 set d_pwpasswd; eval $setvar
11613 : see if readdir and friends exist
11614 set readdir d_readdir
11616 set seekdir d_seekdir
11618 set telldir d_telldir
11620 set rewinddir d_rewinddir
11623 : see if readv exists
11627 : see if recvmsg exists
11628 set recvmsg d_recvmsg
11631 : see if rename exists
11632 set rename d_rename
11635 : see if rmdir exists
11639 : see if memory.h is available.
11644 : See if it conflicts with string.h
11650 $cppstdin $cppflags $cppminus < $strings > mem.h
11651 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11653 echo "We won't be including <memory.h>."
11663 : can bcopy handle overlapping blocks?
11666 case "$d_memmove" in
11667 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11668 *) case "$d_bcopy" in
11670 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11672 #$i_memory I_MEMORY
11673 #$i_stdlib I_STDLIB
11674 #$i_string I_STRING
11675 #$i_unistd I_UNISTD
11677 $cat >>try.c <<'EOCP'
11680 # include <memory.h>
11683 # include <stdlib.h>
11686 # include <string.h>
11688 # include <strings.h>
11691 # include <unistd.h> /* Needed for NetBSD */
11695 char buf[128], abc[128];
11701 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11702 try to store the string in read-only memory. */
11703 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11705 for (align = 7; align >= 0; align--) {
11706 for (len = 36; len; len--) {
11708 bcopy(abc, b, len);
11709 for (off = 1; off <= len; off++) {
11710 bcopy(b, b+off, len);
11711 bcopy(b+off, b, len);
11712 if (bcmp(b, abc, len))
11721 if eval $compile_ok; then
11722 if ./try 2>/dev/null; then
11723 echo "Yes, it can."
11726 echo "It can't, sorry."
11729 echo "(I can't compile the test program, so we'll assume not...)"
11733 $rm -f try.* try core
11739 : can memcpy handle overlapping blocks?
11742 case "$d_memmove" in
11743 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11744 *) case "$d_memcpy" in
11746 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11748 #$i_memory I_MEMORY
11749 #$i_stdlib I_STDLIB
11750 #$i_string I_STRING
11751 #$i_unistd I_UNISTD
11753 $cat >>try.c <<'EOCP'
11756 # include <memory.h>
11759 # include <stdlib.h>
11762 # include <string.h>
11764 # include <strings.h>
11767 # include <unistd.h> /* Needed for NetBSD */
11771 char buf[128], abc[128];
11777 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11778 try to store the string in read-only memory. */
11779 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11781 for (align = 7; align >= 0; align--) {
11782 for (len = 36; len; len--) {
11784 memcpy(b, abc, len);
11785 for (off = 1; off <= len; off++) {
11786 memcpy(b+off, b, len);
11787 memcpy(b, b+off, len);
11788 if (memcmp(b, abc, len))
11797 if eval $compile_ok; then
11798 if ./try 2>/dev/null; then
11799 echo "Yes, it can."
11802 echo "It can't, sorry."
11805 echo "(I can't compile the test program, so we'll assume not...)"
11809 $rm -f try.* try core
11815 : can memcmp be trusted to compare relative magnitude?
11817 case "$d_memcmp" in
11820 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11822 #$i_memory I_MEMORY
11823 #$i_stdlib I_STDLIB
11824 #$i_string I_STRING
11825 #$i_unistd I_UNISTD
11827 $cat >>try.c <<'EOCP'
11830 # include <memory.h>
11833 # include <stdlib.h>
11836 # include <string.h>
11838 # include <strings.h>
11841 # include <unistd.h> /* Needed for NetBSD */
11847 if ((a < b) && memcmp(&a, &b, 1) < 0)
11853 if eval $compile_ok; then
11854 if $run ./try 2>/dev/null; then
11855 echo "Yes, it can."
11858 echo "No, it can't (it uses signed chars)."
11861 echo "(I can't compile the test program, so we'll assume not...)"
11865 $rm -f try.* try core
11869 : see if prototype for sbrk is available
11871 set d_sbrkproto sbrk $i_unistd unistd.h
11874 : see if select exists
11875 set select d_select
11878 : see if semctl exists
11879 set semctl d_semctl
11882 : see if semget exists
11883 set semget d_semget
11886 : see if semop exists
11890 : see how much of the 'sem*(2)' library is present.
11893 case "$d_semctl$d_semget$d_semop" in
11894 *"$undef"*) h_sem=false;;
11898 case "`ipcs 2>&1`" in
11899 "SVID messages"*"not configured"*)
11900 echo "Your $osname does not have the sem*(2) configured." >&4
11903 set semctl d_semctl
11905 set semget d_semget
11913 : we could also check for sys/ipc.h ...
11914 if $h_sem && $test `./findhdr sys/sem.h`; then
11915 echo "You have the full sem*(2) library." >&4
11918 echo "You don't have the full sem*(2) library." >&4
11924 : see whether sys/sem.h defines union semun
11926 $cat > try.c <<'END'
11927 #include <sys/types.h>
11928 #include <sys/ipc.h>
11929 #include <sys/sem.h>
11930 int main () { union semun semun; semun.buf = 0; }
11933 if eval $compile; then
11934 echo "You have union semun in <sys/sem.h>." >&4
11937 echo "You do not have union semun in <sys/sem.h>." >&4
11940 $rm -f try try.c try.h
11944 : see how to do semctl IPC_STAT
11947 : see whether semctl IPC_STAT can use union semun
11952 # define S_IRUSR S_IREAD
11953 # define S_IWUSR S_IWRITE
11954 # define S_IXUSR S_IEXEC
11956 # define S_IRUSR 0400
11957 # define S_IWUSR 0200
11958 # define S_IXUSR 0100
11960 # define S_IRGRP (S_IRUSR>>3)
11961 # define S_IWGRP (S_IWUSR>>3)
11962 # define S_IXGRP (S_IXUSR>>3)
11963 # define S_IROTH (S_IRUSR>>6)
11964 # define S_IWOTH (S_IWUSR>>6)
11965 # define S_IXOTH (S_IXUSR>>6)
11968 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11969 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11970 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11975 #include <sys/types.h>
11976 #include <sys/ipc.h>
11977 #include <sys/sem.h>
11978 #include <sys/stat.h>
11985 #$d_union_semun HAS_UNION_SEMUN
11988 #ifndef HAS_UNION_SEMUN
11991 struct semid_ds *buf;
11992 unsigned short *array;
11998 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11999 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12001 struct semid_ds argbuf;
12004 st = semctl(sem, 0, IPC_STAT, arg);
12008 # endif /* IPC_STAT */
12009 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12011 if (semctl(sem, 0, IPC_RMID, arg) != 0)
12012 # endif /* IPC_RMID */
12013 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12015 #endif /* IPC_PRIVATE && ... */
12016 printf("semget failed: errno = %d\n", errno);
12022 if eval $compile; then
12025 semun) val="$define" ;;
12031 case "$d_semctl_semun" in
12033 echo "You can use union semun for semctl IPC_STAT." >&4
12036 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
12041 : see whether semctl IPC_STAT can use struct semid_ds pointer
12042 $cat > try.c <<'END'
12043 #include <sys/types.h>
12044 #include <sys/ipc.h>
12045 #include <sys/sem.h>
12046 #include <sys/stat.h>
12054 struct semid_ds arg;
12057 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12058 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12061 st = semctl(sem, 0, IPC_STAT, &arg);
12063 printf("semid_ds\n");
12065 # endif /* IPC_STAT */
12066 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12068 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12069 # endif /* IPC_RMID */
12070 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12072 #endif /* IPC_PRIVATE && ... */
12073 printf("semget failed: errno = %d\n", errno);
12080 if eval $compile; then
12083 semid_ds) val="$define" ;;
12087 set d_semctl_semid_ds
12089 case "$d_semctl_semid_ds" in
12091 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12093 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12100 # We do not have the full sem*(2) library, so assume we can not
12106 set d_semctl_semid_ds
12111 : see if sendmsg exists
12112 set sendmsg d_sendmsg
12115 : see if setegid exists
12116 set setegid d_setegid
12119 : see if seteuid exists
12120 set seteuid d_seteuid
12123 : see if setgrent exists
12124 set setgrent d_setgrent
12127 : see if sethostent exists
12128 set sethostent d_sethent
12131 : see if setitimer exists
12132 set setitimer d_setitimer
12135 : see if setlinebuf exists
12136 set setlinebuf d_setlinebuf
12139 : see if setlocale exists
12140 set setlocale d_setlocale
12143 : see if setnetent exists
12144 set setnetent d_setnent
12147 : see if setprotoent exists
12148 set setprotoent d_setpent
12151 : see if setpgid exists
12152 set setpgid d_setpgid
12155 : see if setpgrp2 exists
12156 set setpgrp2 d_setpgrp2
12159 : see if setpriority exists
12160 set setpriority d_setprior
12163 : see if setproctitle exists
12164 set setproctitle d_setproctitle
12167 : see if setpwent exists
12168 set setpwent d_setpwent
12171 : see if setregid exists
12172 set setregid d_setregid
12174 set setresgid d_setresgid
12177 : see if setreuid exists
12178 set setreuid d_setreuid
12180 set setresuid d_setresuid
12183 : see if setrgid exists
12184 set setrgid d_setrgid
12187 : see if setruid exists
12188 set setruid d_setruid
12191 : see if setservent exists
12192 set setservent d_setsent
12195 : see if setsid exists
12196 set setsid d_setsid
12199 : see if setvbuf exists
12200 set setvbuf d_setvbuf
12203 : see if sfio.h is available
12208 : see if sfio library is available
12219 : Ok, but do we want to use it.
12223 true|$define|[yY]*) dflt='y';;
12226 echo "$package can use the sfio library, but it is experimental."
12227 case "$useperlio" in
12229 echo "For sfio also the PerlIO abstraction layer is needed."
12230 echo "Earlier you said you wouldn't want that."
12233 rp="You seem to have sfio available, do you want to try using it?"
12236 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12237 useperlio="$define"
12240 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12245 *) case "$usesfio" in
12246 true|$define|[yY]*)
12247 echo "Sorry, cannot find sfio on this machine." >&4
12248 echo "Ignoring your setting of usesfio=$usesfio." >&4
12257 $define) usesfio='true';;
12258 *) usesfio='false';;
12262 *) : Remove sfio from list of libraries to use
12265 echo "Removing unneeded -lsfio from library list" >&4
12266 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12269 echo "libs = $libs" >&4
12276 : see if shmctl exists
12277 set shmctl d_shmctl
12280 : see if shmget exists
12281 set shmget d_shmget
12284 : see if shmat exists
12287 : see what shmat returns
12290 $cat >shmat.c <<'END'
12291 #include <sys/shm.h>
12294 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12299 echo "and it returns ($shmattype)." >&4
12300 : see if a prototype for shmat is available
12301 xxx=`./findhdr sys/shm.h`
12302 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12303 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12314 set d_shmatprototype
12317 : see if shmdt exists
12321 : see how much of the 'shm*(2)' library is present.
12324 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12325 *"$undef"*) h_shm=false;;
12329 case "`ipcs 2>&1`" in
12330 "SVID shared memory"*"not configured"*)
12331 echo "Your $osname does not have the shm*(2) configured." >&4
12334 set shmctl d_shmctl
12336 set shmget d_shmget
12346 : we could also check for sys/ipc.h ...
12347 if $h_shm && $test `./findhdr sys/shm.h`; then
12348 echo "You have the full shm*(2) library." >&4
12351 echo "You don't have the full shm*(2) library." >&4
12358 : see if we have sigaction
12359 if set sigaction val -f d_sigaction; eval $csym; $val; then
12360 echo 'sigaction() found.' >&4
12361 $cat > try.c <<'EOP'
12363 #include <sys/types.h>
12364 #include <signal.h>
12367 struct sigaction act, oact;
12369 oact.sa_handler = 0;
12370 /* so that act and oact are used */
12371 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12375 if eval $compile_ok; then
12378 echo "But you don't seem to have a useable struct sigaction." >&4
12382 echo 'sigaction NOT found.' >&4
12385 set d_sigaction; eval $setvar
12386 $rm -f try try$_o try.c
12388 : see if sigprocmask exists
12389 set sigprocmask d_sigprocmask
12392 : see if sigsetjmp exists
12394 case "$d_sigsetjmp" in
12396 $cat >try.c <<'EOP'
12397 #include <setjmp.h>
12402 if (sigsetjmp(env,1))
12405 siglongjmp(env, 1);
12410 if eval $compile; then
12411 if $run ./try >/dev/null 2>&1; then
12412 echo "POSIX sigsetjmp found." >&4
12416 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12422 echo "sigsetjmp not found." >&4
12426 *) val="$d_sigsetjmp"
12427 case "$d_sigsetjmp" in
12428 $define) echo "POSIX sigsetjmp found." >&4;;
12429 $undef) echo "sigsetjmp not found." >&4;;
12437 : see if sockatmark exists
12438 set sockatmark d_sockatmark
12441 : see if prototype for sockatmark is available
12443 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12446 : see if socks5_init exists
12447 set socks5_init d_socks5_init
12450 : see if prototype for setresgid is available
12452 set d_sresgproto setresgid $i_unistd unistd.h
12455 : see if prototype for setresuid is available
12457 set d_sresuproto setresuid $i_unistd unistd.h
12460 : see if sys/stat.h is available
12461 set sys/stat.h i_sysstat
12465 : see if stat knows about block sizes
12467 echo "Checking to see if your struct stat has st_blocks field..." >&4
12468 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12472 : see if this is a sys/vfs.h system
12473 set sys/vfs.h i_sysvfs
12477 : see if this is a sys/statfs.h system
12478 set sys/statfs.h i_sysstatfs
12483 echo "Checking to see if your system supports struct statfs..." >&4
12484 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
12486 case "$d_statfs_s" in
12487 "$define") echo "Yes, it does." ;;
12488 *) echo "No, it doesn't." ;;
12493 : see if struct statfs knows about f_flags
12494 case "$d_statfs_s" in
12497 echo "Checking to see if your struct statfs has f_flags field..." >&4
12498 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
12502 set d_statfs_f_flags
12506 case "$d_statfs_f_flags" in
12507 "$define") echo "Yes, it does." ;;
12508 *) echo "No, it doesn't." ;;
12511 : see if _ptr and _cnt from stdio act std
12514 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12515 echo "(Looks like you have stdio.h from BSD.)"
12516 case "$stdio_ptr" in
12517 '') stdio_ptr='((fp)->_p)'
12520 *) ptr_lval=$d_stdio_ptr_lval;;
12522 case "$stdio_cnt" in
12523 '') stdio_cnt='((fp)->_r)'
12526 *) cnt_lval=$d_stdio_cnt_lval;;
12528 case "$stdio_base" in
12529 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12531 case "$stdio_bufsiz" in
12532 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12534 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12535 echo "(Looks like you have stdio.h from Linux.)"
12536 case "$stdio_ptr" in
12537 '') stdio_ptr='((fp)->_IO_read_ptr)'
12540 *) ptr_lval=$d_stdio_ptr_lval;;
12542 case "$stdio_cnt" in
12543 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12546 *) cnt_lval=$d_stdio_cnt_lval;;
12548 case "$stdio_base" in
12549 '') stdio_base='((fp)->_IO_read_base)';;
12551 case "$stdio_bufsiz" in
12552 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12555 case "$stdio_ptr" in
12556 '') stdio_ptr='((fp)->_ptr)'
12559 *) ptr_lval=$d_stdio_ptr_lval;;
12561 case "$stdio_cnt" in
12562 '') stdio_cnt='((fp)->_cnt)'
12565 *) cnt_lval=$d_stdio_cnt_lval;;
12567 case "$stdio_base" in
12568 '') stdio_base='((fp)->_base)';;
12570 case "$stdio_bufsiz" in
12571 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12575 : test whether _ptr and _cnt really work
12576 echo "Checking how std your stdio is..." >&4
12579 #define FILE_ptr(fp) $stdio_ptr
12580 #define FILE_cnt(fp) $stdio_cnt
12582 FILE *fp = fopen("try.c", "r");
12585 18 <= FILE_cnt(fp) &&
12586 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12594 if eval $compile && $to try.c; then
12595 if $run ./try; then
12596 echo "Your stdio acts pretty std."
12599 echo "Your stdio isn't very std."
12602 echo "Your stdio doesn't appear very std."
12608 : Can _ptr be used as an lvalue?
12609 case "$d_stdstdio$ptr_lval" in
12610 $define$define) val=$define ;;
12613 set d_stdio_ptr_lval
12616 : Can _cnt be used as an lvalue?
12617 case "$d_stdstdio$cnt_lval" in
12618 $define$define) val=$define ;;
12621 set d_stdio_cnt_lval
12625 : test whether setting _ptr sets _cnt as a side effect
12626 d_stdio_ptr_lval_sets_cnt="$undef"
12627 d_stdio_ptr_lval_nochange_cnt="$undef"
12628 case "$d_stdio_ptr_lval$d_stdstdio" in
12630 echo "Checking to see what happens if we set the stdio ptr..." >&4
12633 /* Can we scream? */
12634 /* Eat dust sed :-) */
12635 /* In the buffer space, no one can hear you scream. */
12636 #define FILE_ptr(fp) $stdio_ptr
12637 #define FILE_cnt(fp) $stdio_cnt
12638 #include <sys/types.h>
12640 FILE *fp = fopen("try.c", "r");
12645 puts("Fail even to read");
12648 c = getc(fp); /* Read away the first # */
12650 puts("Fail even to read");
12654 18 <= FILE_cnt(fp) &&
12655 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12657 puts("Fail even to read");
12660 ptr = (char*) FILE_ptr(fp);
12661 cnt = (size_t)FILE_cnt(fp);
12663 FILE_ptr(fp) += 42;
12665 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12666 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12669 if (FILE_cnt(fp) <= 20) {
12670 printf ("Fail (<20 chars to test)");
12673 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12674 puts("Fail compare");
12677 if (cnt == FILE_cnt(fp)) {
12678 puts("Pass_unchanged");
12681 if (FILE_cnt(fp) == (cnt - 42)) {
12682 puts("Pass_changed");
12685 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12691 if eval $compile && $to try.c; then
12692 case `$run ./try` in
12694 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12695 d_stdio_ptr_lval_sets_cnt="$define" ;;
12697 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12698 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12700 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12702 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12705 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12711 : see if _base is also standard
12713 case "$d_stdstdio" in
12717 #define FILE_base(fp) $stdio_base
12718 #define FILE_bufsiz(fp) $stdio_bufsiz
12720 FILE *fp = fopen("try.c", "r");
12723 19 <= FILE_bufsiz(fp) &&
12724 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12731 if eval $compile && $to try.c; then
12732 if $run ./try; then
12733 echo "And its _base field acts std."
12736 echo "But its _base field isn't std."
12739 echo "However, it seems to be lacking the _base field."
12748 Checking how to access stdio streams by file descriptor number...
12750 case "$stdio_stream_array" in
12751 '') $cat >try.c <<EOCP
12754 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12758 for s in _iob __iob __sF
12760 set try -DSTDIO_STREAM_ARRAY=$s
12761 if eval $compile; then
12762 case "`$run ./try`" in
12763 yes) stdio_stream_array=$s; break ;;
12767 $rm -f try.* try$exe_ext
12769 case "$stdio_stream_array" in
12771 I can't figure out how to access stdio streams by file descriptor number.
12773 d_stdio_stream_array="$undef"
12776 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12778 d_stdio_stream_array="$define"
12782 : see if strcoll exists
12783 set strcoll d_strcoll
12786 : check for structure copying
12788 echo "Checking to see if your C compiler can copy structs..." >&4
12789 $cat >try.c <<'EOCP'
12799 if $cc -c try.c >/dev/null 2>&1 ; then
12801 echo "Yup, it can."
12804 echo "Nope, it can't."
12810 : see if strerror and/or sys_errlist[] exist
12812 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12813 if set strerror val -f d_strerror; eval $csym; $val; then
12814 echo 'strerror() found.' >&4
12815 d_strerror="$define"
12816 d_strerrm='strerror(e)'
12817 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12818 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12819 d_syserrlst="$define"
12821 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12822 d_syserrlst="$undef"
12824 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12825 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12826 echo 'strerror() found in string header.' >&4
12827 d_strerror="$define"
12828 d_strerrm='strerror(e)'
12829 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12830 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12831 d_syserrlst="$define"
12833 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12834 d_syserrlst="$undef"
12836 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12837 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12838 d_strerror="$undef"
12839 d_syserrlst="$define"
12840 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12842 echo 'strerror() and sys_errlist[] NOT found.' >&4
12843 d_strerror="$undef"
12844 d_syserrlst="$undef"
12845 d_strerrm='"unknown"'
12849 : see if strftime exists
12850 set strftime d_strftime
12853 : see if strtod exists
12854 set strtod d_strtod
12857 : see if strtol exists
12858 set strtol d_strtol
12861 : see if strtold exists
12862 set strtold d_strtold
12865 : see if strtoll exists
12866 set strtoll d_strtoll
12869 case "$d_longlong-$d_strtoll" in
12872 Checking whether your strtoll() works okay...
12874 $cat >try.c <<'EOCP'
12877 #define strtoll __strtoll
12880 #define strtoll _strtoll
12883 extern long long int strtoll(char *s, char **, int);
12884 static int bad = 0;
12885 int check(char *s, long long ell, int een) {
12888 gll = strtoll(s, 0, 10);
12889 if (!((gll == ell) && (errno == een)))
12893 check(" 1", 1LL, 0);
12894 check(" 0", 0LL, 0);
12895 check("-1", -1LL, 0);
12896 check("-9223372036854775808", -9223372036854775808LL, 0);
12897 check("-9223372036854775808", -9223372036854775808LL, 0);
12898 check(" 9223372036854775807", 9223372036854775807LL, 0);
12899 check("-9223372036854775808", -9223372036854775808LL, 0);
12900 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12901 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12907 if eval $compile; then
12910 ok) echo "Your strtoll() seems to be working okay." ;;
12912 Your strtoll() doesn't seem to be working okay.
12918 echo "(I can't seem to compile the test program--assuming it doesn't)"
12924 : see if strtoq exists
12925 set strtoq d_strtoq
12928 : see if strtoul exists
12929 set strtoul d_strtoul
12932 case "$d_strtoul" in
12935 Checking whether your strtoul() works okay...
12937 $cat >try.c <<'EOCP'
12940 extern unsigned long int strtoul(char *s, char **, int);
12941 static int bad = 0;
12942 void check(char *s, unsigned long eul, int een) {
12945 gul = strtoul(s, 0, 10);
12946 if (!((gul == eul) && (errno == een)))
12950 check(" 1", 1L, 0);
12951 check(" 0", 0L, 0);
12953 case "$longsize" in
12955 $cat >>try.c <<'EOCP'
12956 check("18446744073709551615", 18446744073709551615UL, 0);
12957 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12958 #if 0 /* strtoul() for /^-/ strings is undefined. */
12959 check("-1", 18446744073709551615UL, 0);
12960 check("-18446744073709551614", 2, 0);
12961 check("-18446744073709551615", 1, 0);
12962 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12963 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12968 $cat >>try.c <<'EOCP'
12969 check("4294967295", 4294967295UL, 0);
12970 check("4294967296", 4294967295UL, ERANGE);
12971 #if 0 /* strtoul() for /^-/ strings is undefined. */
12972 check("-1", 4294967295UL, 0);
12973 check("-4294967294", 2, 0);
12974 check("-4294967295", 1, 0);
12975 check("-4294967296", 4294967295UL, ERANGE);
12976 check("-4294967297", 4294967295UL, ERANGE);
12981 : Should we write these tests to be more portable by sprintf-ing
12982 : ~0 and then manipulating that char string as input for strtol?
12985 $cat >>try.c <<'EOCP'
12992 if eval $compile; then
12993 case "`$run ./try`" in
12994 ok) echo "Your strtoul() seems to be working okay." ;;
12996 Your strtoul() doesn't seem to be working okay.
13005 : see if strtoull exists
13006 set strtoull d_strtoull
13009 case "$d_longlong-$d_strtoull" in
13012 Checking whether your strtoull() works okay...
13014 $cat >try.c <<'EOCP'
13017 #define strtoull __strtoull
13020 extern unsigned long long int strtoull(char *s, char **, int);
13021 static int bad = 0;
13022 int check(char *s, long long eull, int een) {
13025 gull = strtoull(s, 0, 10);
13026 if (!((gull == eull) && (errno == een)))
13030 check(" 1", 1LL, 0);
13031 check(" 0", 0LL, 0);
13032 check("18446744073709551615", 18446744073709551615ULL, 0);
13033 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
13034 #if 0 /* strtoull() for /^-/ strings is undefined. */
13035 check("-1", 18446744073709551615ULL, 0);
13036 check("-18446744073709551614", 2LL, 0);
13037 check("-18446744073709551615", 1LL, 0);
13038 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13039 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13046 if eval $compile; then
13047 case "`$run ./try`" in
13048 ok) echo "Your strtoull() seems to be working okay." ;;
13050 Your strtoull() doesn't seem to be working okay.
13052 d_strtoull="$undef"
13059 : see if strtouq exists
13060 set strtouq d_strtouq
13063 case "$d_strtouq" in
13066 Checking whether your strtouq() works okay...
13068 $cat >try.c <<'EOCP'
13071 extern unsigned long long int strtouq(char *s, char **, int);
13072 static int bad = 0;
13073 void check(char *s, unsigned long long eull, int een) {
13074 unsigned long long gull;
13076 gull = strtouq(s, 0, 10);
13077 if (!((gull == eull) && (errno == een)))
13081 check(" 1", 1LL, 0);
13082 check(" 0", 0LL, 0);
13083 check("18446744073709551615", 18446744073709551615ULL, 0);
13084 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
13085 #if 0 /* strtouq() for /^-/ strings is undefined. */
13086 check("-1", 18446744073709551615ULL, 0);
13087 check("-18446744073709551614", 2LL, 0);
13088 check("-18446744073709551615", 1LL, 0);
13089 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13090 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13098 if eval $compile; then
13099 case "`$run ./try`" in
13100 ok) echo "Your strtouq() seems to be working okay." ;;
13102 Your strtouq() doesn't seem to be working okay.
13111 : see if strxfrm exists
13112 set strxfrm d_strxfrm
13115 : see if symlink exists
13116 set symlink d_symlink
13119 : see if syscall exists
13120 set syscall d_syscall
13123 : see if prototype for syscall is available
13125 set d_syscallproto syscall $i_unistd unistd.h
13128 : see if sysconf exists
13129 set sysconf d_sysconf
13132 : see if system exists
13133 set system d_system
13136 : see if tcgetpgrp exists
13137 set tcgetpgrp d_tcgetpgrp
13140 : see if tcsetpgrp exists
13141 set tcsetpgrp d_tcsetpgrp
13144 : see if prototype for telldir is available
13146 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13149 : see if this is a sys/times.h system
13150 set sys/times.h i_systimes
13153 : see if times exists
13155 if set times val -f d_times; eval $csym; $val; then
13156 echo 'times() found.' >&4
13159 case "$i_systimes" in
13160 "$define") inc='sys/times.h';;
13162 rp="What is the type returned by times() on this system?"
13163 set clock_t clocktype long stdio.h sys/types.h $inc
13166 echo 'times() NOT found, hope that will do.' >&4
13171 : see if truncate exists
13172 set truncate d_truncate
13175 : see if tzname[] exists
13177 if set tzname val -a d_tzname; eval $csym; $val; then
13179 echo 'tzname[] found.' >&4
13182 echo 'tzname[] NOT found.' >&4
13188 next|rhapsody|darwin) multiarch="$define" ;;
13190 case "$multiarch" in
13191 ''|[nN]*) multiarch="$undef" ;;
13194 : check for ordering of bytes in a long
13196 case "$usecrosscompile$multiarch" in
13199 You seem to be either cross-compiling or doing a multiarchitecture build,
13200 skipping the byteorder check.
13206 case "$byteorder" in
13209 In the following, larger digits indicate more significance. A big-endian
13210 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13211 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13212 machines may have weird orders like 3412. A Cray will report 87654321,
13213 an Alpha will report 12345678. If the test program works the default is
13215 I'm now running the test program...
13217 $cat >try.c <<'EOCP'
13224 char c[sizeof(long)];
13227 if (sizeof(long) > 4)
13228 u.l = (0x08070605L << 32) | 0x04030201L;
13231 for (i = 0; i < sizeof(long); i++)
13232 printf("%c", u.c[i]+'0');
13239 if eval $compile && ./try > /dev/null; then
13242 [1-4][1-4][1-4][1-4]|12345678|87654321)
13243 echo "(The test program ran ok.)"
13244 echo "byteorder=$dflt"
13247 ????|????????) echo "(The test program ran ok.)" ;;
13248 *) echo "(The test program didn't run right for some reason.)" ;;
13253 (I can't seem to compile the test program. Guessing big-endian...)
13256 case "$xxx_prompt" in
13258 rp="What is the order of bytes in a long?"
13274 Checking to see whether you can access character data unalignedly...
13278 #define U32 $u32type
13279 #define BYTEORDER $byteorder
13281 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13282 U8 buf[] = "\0\0\0\1\0\0\0\0";
13286 if (sizeof(U32) != 4) {
13287 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13293 for (i = 0; i < 4; i++) {
13294 up = (U32*)(buf + i);
13295 if (! ((*up == 1 << (8*i)) || /* big-endian */
13296 (*up == 1 << (8*(3-i))) /* little-endian */
13300 printf("read failed (%x)\n", *up);
13306 for (i = 0; i < 4; i++) {
13307 up = (U32*)(buf + i);
13309 if (*up != 0xBeef) {
13310 printf("write failed (%x)\n", *up);
13324 if eval $compile_ok; then
13325 echo "(Testing for character data alignment may dump core.)" >&4
13326 $run ./try 2>&1 >/dev/null
13329 You can access character data pretty unalignedly.
13331 d_u32align="$undef"
13334 It seems that you must access character data in an aligned manner.
13336 d_u32align="$define"
13339 $rm -f core core.try.* try.core
13341 rp='Can you access character data at unaligned addresses?'
13345 [yY]*) d_u32align="$undef" ;;
13346 *) d_u32align="$define" ;;
13350 : see if ualarm exists
13351 set ualarm d_ualarm
13354 : see if umask exists
13358 : see if unordered exists
13359 set unordered d_unordered
13362 : see if usleep exists
13363 set usleep d_usleep
13366 : see if prototype for usleep is available
13368 set d_usleepproto usleep $i_unistd unistd.h
13371 : see if ustat exists
13375 : backward compatibility for d_hvfork
13376 if test X$d_hvfork != X; then
13377 d_vfork="$d_hvfork"
13380 : see if there is a vfork
13385 : Ok, but do we want to use it. vfork is reportedly unreliable in
13386 : perl on Solaris 2.x, and probably elsewhere.
13390 case "$usevfork" in
13396 Perl can only use a vfork() that doesn't suffer from strict
13397 restrictions on calling functions or modifying global data in
13398 the child. For example, glibc-2.1 contains such a vfork()
13399 that is unsuitable. If your system provides a proper fork()
13400 call, chances are that you do NOT want perl to use vfork().
13403 rp="Do you still want to use vfork()?"
13408 echo "Ok, we won't use vfork()."
13417 $define) usevfork='true';;
13418 *) usevfork='false';;
13421 : see if this is an sysdir system
13422 set sys/dir.h i_sysdir
13425 : see if this is an sysndir system
13426 set sys/ndir.h i_sysndir
13429 : see if closedir exists
13430 set closedir d_closedir
13433 case "$d_closedir" in
13436 echo "Checking whether closedir() returns a status..." >&4
13438 #$i_dirent I_DIRENT /**/
13439 #$i_sysdir I_SYS_DIR /**/
13440 #$i_sysndir I_SYS_NDIR /**/
13441 #$i_systypes I_SYS_TYPES /**/
13443 #if defined(I_SYS_TYPES)
13444 #include <sys/types.h>
13446 #if defined(I_DIRENT)
13447 #include <dirent.h>
13448 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13449 #include <sys/dir.h>
13453 #include <sys/ndir.h>
13457 #include <ndir.h> /* may be wrong in the future */
13459 #include <sys/dir.h>
13464 int main() { return closedir(opendir(".")); }
13467 if eval $compile_ok; then
13468 if $run ./try > /dev/null 2>&1 ; then
13469 echo "Yes, it does."
13472 echo "No, it doesn't."
13476 echo "(I can't seem to compile the test program--assuming it doesn't)"
13484 set d_void_closedir
13487 : see if there is a wait4
13491 : see if waitpid exists
13492 set waitpid d_waitpid
13495 : see if wcstombs exists
13496 set wcstombs d_wcstombs
13499 : see if wctomb exists
13500 set wctomb d_wctomb
13503 : see if writev exists
13504 set writev d_writev
13507 : preserve RCS keywords in files with variable substitution, grrr
13512 Revision='$Revision'
13514 : check for alignment requirements
13516 case "$usecrosscompile$multiarch" in
13519 You seem to be either cross-compiling or doing a multiarchitecture build,
13520 skipping the memory alignment check.
13523 case "$alignbytes" in
13524 '') alignbytes=8 ;;
13528 case "$alignbytes" in
13529 '') echo "Checking alignment constraints..." >&4
13530 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13531 $cat >try.c <<'EOCP'
13532 typedef long double NV;
13535 $cat >try.c <<'EOCP'
13539 $cat >>try.c <<'EOCP'
13547 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13552 if eval $compile_ok; then
13556 echo "(I can't seem to compile the test program...)"
13559 *) dflt="$alignbytes"
13562 rp="Doubles must be aligned on a how-many-byte boundary?"
13570 : set the base revision
13573 : how do we catenate cpp tokens here?
13575 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13576 $cat >cpp_stuff.c <<'EOCP'
13577 #define RCAT(a,b)a/**/b
13578 #define ACAT(a,b)a ## b
13582 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13583 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13584 echo "Oh! Smells like ANSI's been here." >&4
13585 echo "We can catify or stringify, separately or together!"
13587 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13588 echo "Ah, yes! The good old days!" >&4
13589 echo "However, in the good old days we don't know how to stringify and"
13590 echo "catify at the same time."
13594 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13595 to have to edit the values of CAT[2-5] in config.h...
13597 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13601 : see if this is a db.h system
13607 : Check db version.
13609 echo "Checking Berkeley DB version ..." >&4
13615 #include <sys/types.h>
13618 int main(int argc, char *argv[])
13620 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13621 int Major, Minor, Patch ;
13622 unsigned long Version ;
13623 (void)db_version(&Major, &Minor, &Patch) ;
13625 printf("%d %d %d %d %d %d\n",
13626 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13627 Major, Minor, Patch);
13630 printf("You have Berkeley DB Version 2 or greater.\n");
13632 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13633 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13634 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13635 Major, Minor, Patch) ;
13637 /* check that db.h & libdb are compatible */
13638 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13639 printf("db.h and libdb are incompatible.\n") ;
13643 printf("db.h and libdb are compatible.\n") ;
13645 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13646 + DB_VERSION_PATCH ;
13648 /* needs to be >= 2.3.4 */
13649 if (Version < 2003004) {
13650 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13651 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13657 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13662 printf("You have Berkeley DB Version 1.\n");
13663 exit(0); /* DB version < 2: the coast is clear. */
13665 exit(1); /* <db.h> not Berkeley DB? */
13671 if eval $compile_ok && $run ./try; then
13672 echo 'Looks OK.' >&4
13674 db_version_major=$1
13675 db_version_minor=$2
13676 db_version_patch=$3
13678 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13682 : Remove db from list of libraries to use
13683 echo "Removing unusable -ldb from library list" >&4
13684 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13687 echo "libs = $libs" >&4
13697 : Check the return type needed for hash
13699 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13705 #include <sys/types.h>
13708 #ifndef DB_VERSION_MAJOR
13709 u_int32_t hash_cb (ptr, size)
13717 info.hash = hash_cb;
13721 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13722 if $contains warning try.out >>/dev/null 2>&1 ; then
13725 db_hashtype='u_int32_t'
13728 : XXX Maybe we should just give up here.
13729 db_hashtype=u_int32_t
13731 echo "Help: I can't seem to compile the db test program." >&4
13732 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13735 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13737 *) db_hashtype=u_int32_t
13742 : Check the return type needed for prefix
13744 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13750 #include <sys/types.h>
13753 #ifndef DB_VERSION_MAJOR
13754 size_t prefix_cb (key1, key2)
13762 info.prefix = prefix_cb;
13766 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13767 if $contains warning try.out >>/dev/null 2>&1 ; then
13768 db_prefixtype='int'
13770 db_prefixtype='size_t'
13773 db_prefixtype='size_t'
13774 : XXX Maybe we should just give up here.
13776 echo "Help: I can't seem to compile the db test program." >&4
13777 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13780 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13782 *) db_prefixtype='size_t'
13787 : How can we generate normalized random numbers ?
13789 echo "Looking for a random number function..." >&4
13790 case "$randfunc" in
13792 if set drand48 val -f; eval $csym; $val; then
13794 echo "Good, found drand48()." >&4
13795 elif set random val -f; eval $csym; $val; then
13797 echo "OK, found random()." >&4
13800 echo "Yick, looks like I have to use rand()." >&4
13811 *-Dmy_rand=*|*-Dmy_srand=*)
13812 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13813 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13814 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13815 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13819 while $test "$cont"; do
13820 rp="Use which function to generate random numbers?"
13822 if $test "$ans" = "$dflt"; then
13828 if set $ans val -f; eval $csym; $val; then
13832 rp="I cannot find function $ans. Use that name anyway?"
13841 case "$randfunc" in
13843 drand01="drand48()"
13849 case "$randbits" in
13851 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13853 #$i_unistd I_UNISTD
13854 #$i_stdlib I_STDLIB
13857 # include <unistd.h>
13860 # include <stdlib.h>
13865 register unsigned long tmp;
13866 register unsigned long max = 0L;
13868 for (i = 1000; i; i--) {
13869 tmp = (unsigned long) $randfunc();
13870 if (tmp > max) max = tmp;
13872 for (i = 0; max; i++)
13878 if eval $compile_ok; then
13882 echo "(I can't seem to compile the test program...)"
13889 rp="How many bits does your $randfunc() function produce?"
13893 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13894 seedfunc="s$randfunc"
13895 randseedtype=unsigned
13899 rp="How many bits does your $randfunc() function produce?"
13902 seedfunc="s$randfunc"
13903 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13904 if set $seedfunc val -f; eval $csym; $val; then
13905 echo "(Using $seedfunc() to seed random generator)"
13907 echo "(Warning: no $seedfunc() to seed random generator)"
13910 randseedtype=unsigned
13918 echo "Determining whether or not we are on an EBCDIC system..." >&4
13919 $cat >try.c <<'EOM'
13922 if ('M'==0xd4) return 0;
13929 if eval $compile_ok; then
13930 if $run ./try; then
13931 echo "You seem to speak EBCDIC." >&4
13934 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13937 echo "I'm unable to compile the test program." >&4
13938 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13946 Checking how to flush all pending stdio output...
13948 # I only know how to find the first 32 possibly open files on SunOS.
13949 # See also hints/sunos_4_1.sh and util.c --AD
13951 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13953 $cat >>try.c <<EOCP
13955 #$i_unistd I_UNISTD
13957 # include <unistd.h>
13959 #$d_sysconf HAS_SYSCONF
13960 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13961 #ifdef HAS_STDIO_STREAM_ARRAY
13962 # define STDIO_STREAM_ARRAY $stdio_stream_array
13967 p = fopen("try.out", "w");
13971 # ifdef TRY_FPRINTF
13975 #ifdef TRY_FFLUSH_NULL
13978 #ifdef TRY_FFLUSH_ALL
13980 long open_max = -1;
13981 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13982 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13984 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13985 open_max = sysconf(_SC_OPEN_MAX);
13988 open_max = FOPEN_MAX;
13991 open_max = OPEN_MAX;
14000 # ifdef HAS_STDIO_STREAM_ARRAY
14001 if (open_max > 0) {
14003 for (i = 0; i < open_max; i++)
14004 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14005 STDIO_STREAM_ARRAY[i]._file < open_max &&
14006 STDIO_STREAM_ARRAY[i]._flag)
14007 fflush(&STDIO_STREAM_ARRAY[i]);
14015 : first we have to find out how _not_ to flush
14017 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14019 set try -DTRY_FPUTC
14020 if eval $compile; then
14021 $run ./try 2>/dev/null
14024 if $test ! -s try.out -a "X$code" = X42; then
14030 set try -DTRY_FPRINTF
14031 if eval $compile; then
14032 $run ./try 2>/dev/null
14035 if $test ! -s try.out -a "X$code" = X42; then
14036 output=-DTRY_FPRINTF
14042 : check for fflush NULL behaviour
14043 case "$fflushNULL" in
14044 '') set try -DTRY_FFLUSH_NULL $output
14045 if eval $compile; then
14046 $run ./try 2>/dev/null
14049 if $test -s try.out -a "X$code" = X42; then
14050 fflushNULL="`$cat try.out`"
14052 if $test "X$code" != X42; then
14054 (If this test failed, don't worry, we'll try another method shortly.)
14059 $rm -f core try.core core.try.*
14060 case "$fflushNULL" in
14062 Your fflush(NULL) works okay for output streams.
14063 Let's see if it clobbers input pipes...
14065 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14066 # bug that improperly flushes the input end of pipes. So we avoid the
14067 # autoflush on fork/system/exec support for now. :-(
14068 $cat >tryp.c <<EOCP
14071 main(int argc, char **argv)
14077 while ((i = getc(stdin)) != -1
14078 && (*bp++ = i) != '\n'
14079 && bp < &buf[1024])
14082 fprintf(stdout, "%s", buf);
14090 fflushNULL="$define"
14092 if eval $compile; then
14094 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14095 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14097 fflush(NULL) seems to behave okay with input streams.
14099 fflushNULL="$define"
14102 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
14104 fflushNULL="$undef"
14107 $rm -f core tryp.c tryp.core core.tryp.*
14110 Your fflush(NULL) isn't working (contrary to ANSI C).
14112 fflushNULL="$undef"
14115 Cannot figure out whether your fflush(NULL) works or not.
14116 I'm assuming it doesn't (contrary to ANSI C).
14118 fflushNULL="$undef"
14122 $define|true|[yY]*)
14123 fflushNULL="$define"
14126 fflushNULL="$undef"
14129 : check explicit looping only if NULL did not work, and if the pipe
14130 : bug does not show up on an explicit flush too
14131 case "$fflushNULL" in
14133 $cat >tryp.c <<EOCP
14136 main(int argc, char **argv)
14142 while ((i = getc(stdin)) != -1
14143 && (*bp++ = i) != '\n'
14144 && bp < &buf[1024])
14147 fprintf(stdout, "%s", buf);
14156 if eval $compile; then
14158 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14159 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14161 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14163 : now check for fflushall behaviour
14164 case "$fflushall" in
14165 '') set try -DTRY_FFLUSH_ALL $output
14166 if eval $compile; then
14168 (Now testing the other method--but note that this also may fail.)
14170 $run ./try 2>/dev/null
14173 if $test -s try.out -a "X$code" = X42; then
14174 fflushall="`$cat try.out`"
14177 $rm -f core try.core core.try.*
14178 case "$fflushall" in
14180 Whew. Flushing explicitly all the stdio streams works.
14182 fflushall="$define"
14185 Sigh. Flushing explicitly all the stdio streams doesn't work.
14190 Cannot figure out whether flushing stdio streams explicitly works or not.
14191 I'm assuming it doesn't.
14197 "$define"|true|[yY]*)
14198 fflushall="$define"
14206 All is futile. Even fflush(stdin) clobbers input pipes!
14213 $rm -f core tryp.c tryp.core core.tryp.*
14215 *) fflushall="$undef"
14219 case "$fflushNULL$fflushall" in
14222 OK, I give up. I cannot figure out how to flush pending stdio output.
14223 We won't be flushing handles at all before fork/exec/popen.
14227 $rm -f try.* try$exe_ext
14229 : Store the full pathname to the ar program for use in the C program
14230 : Respect a hint or command line value for full_ar.
14235 : Store the full pathname to the sed program for use in the C program
14238 : see what type gids are declared as in the kernel
14240 echo "Looking for the type for group ids returned by getgid()."
14241 set gid_t gidtype xxx stdio.h sys/types.h
14245 xxx=`./findhdr sys/user.h`
14246 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14248 unsigned) dflt="$1 $2" ;;
14252 *) dflt="$gidtype";;
14255 gid_t) echo "gid_t found." ;;
14256 *) rp="What is the type for group ids returned by getgid()?"
14264 *_t) zzz="$gidtype" ;;
14267 echo "Checking the size of $zzz..." >&4
14269 #include <sys/types.h>
14272 printf("%d\n", (int)sizeof($gidtype));
14277 if eval $compile_ok; then
14281 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14284 echo "Your $zzz is $gidsize bytes long."
14289 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14295 *_t) zzz="$gidtype" ;;
14298 echo "Checking the sign of $zzz..." >&4
14300 #include <sys/types.h>
14311 if eval $compile; then
14315 echo "(I can't execute the test program--guessing unsigned.)" >&4
14319 1) echo "Your $zzz is unsigned." ;;
14320 -1) echo "Your $zzz is signed." ;;
14326 echo "(I can't compile the test program--guessing unsigned.)" >&4
14332 if $test X"$quadtype" != X; then
14334 echo "Checking how to print 64-bit integers..." >&4
14336 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14337 $cat >try.c <<'EOCP'
14338 #include <sys/types.h>
14341 int q = 12345678901;
14342 printf("%ld\n", q);
14346 if eval $compile; then
14350 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14351 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14352 echo "We will use %d."
14358 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14359 $cat >try.c <<'EOCP'
14360 #include <sys/types.h>
14363 long q = 12345678901;
14364 printf("%ld\n", q);
14368 if eval $compile; then
14372 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14373 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14374 echo "We will use %ld."
14380 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14381 $cat >try.c <<'EOCP'
14382 #include <sys/types.h>
14383 #include <inttypes.h>
14386 int64_t q = 12345678901;
14387 printf("%" PRId64 "\n", q);
14391 if eval $compile; then
14395 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14396 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14397 echo "We will use the C9X style."
14403 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14405 #include <sys/types.h>
14408 $quadtype q = 12345678901;
14409 printf("%Ld\n", q);
14413 if eval $compile; then
14417 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14418 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14419 echo "We will use %Ld."
14425 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14426 $cat >try.c <<'EOCP'
14427 #include <sys/types.h>
14430 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14431 printf("%lld\n", q);
14435 if eval $compile; then
14439 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14440 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14441 echo "We will use the %lld style."
14447 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14449 #include <sys/types.h>
14452 $quadtype q = 12345678901;
14453 printf("%qd\n", q);
14457 if eval $compile; then
14461 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14462 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14463 echo "We will use %qd."
14469 if $test X"$sPRId64" = X; then
14470 echo "Cannot figure out how to print 64-bit integers." >&4
14478 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14479 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14481 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14482 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14488 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14490 if $test X"$ivsize" = X8; then
14491 ivdformat="$sPRId64"
14492 uvuformat="$sPRIu64"
14493 uvoformat="$sPRIo64"
14494 uvxformat="$sPRIx64"
14495 uvXUformat="$sPRIXU64"
14497 if $test X"$ivsize" = X"$longsize"; then
14504 if $test X"$ivsize" = X"$intsize"; then
14512 if $test X"$ivsize" = X"$shortsize"; then
14523 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14524 nveformat="$sPRIeldbl"
14525 nvfformat="$sPRIfldbl"
14526 nvgformat="$sPRIgldbl"
14527 nvEUformat="$sPRIEUldbl"
14528 nvFUformat="$sPRIFUldbl"
14529 nvGUformat="$sPRIGUldbl"
14539 case "$ivdformat" in
14540 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14547 $echo "Checking the format string to be used for gids..." >&4
14550 -1) if $test X"$gidsize" = X"$ivsize"; then
14551 gidformat="$ivdformat"
14553 if $test X"$gidsize" = X"$longsize"; then
14556 if $test X"$gidsize" = X"$intsize"; then
14559 if $test X"$gidsize" = X"$shortsize"; then
14566 *) if $test X"$gidsize" = X"$uvsize"; then
14567 gidformat="$uvuformat"
14569 if $test X"$gidsize" = X"$longsize"; then
14572 if $test X"$gidsize" = X"$intsize"; then
14575 if $test X"$gidsize" = X"$shortsize"; then
14584 : see if getgroups exists
14585 set getgroups d_getgrps
14588 : see if setgroups exists
14589 set setgroups d_setgrps
14593 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14595 case "$d_getgrps$d_setgrps" in
14597 case "$groupstype" in
14598 '') dflt="$gidtype" ;;
14599 *) dflt="$groupstype" ;;
14602 What type of pointer is the second argument to getgroups() and setgroups()?
14603 Usually this is the same as group ids, $gidtype, but not always.
14606 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14610 *) groupstype="$gidtype";;
14614 echo "Checking if your $make program sets \$(MAKE)..." >&4
14615 case "$make_set_make" in
14617 $sed 's/^X //' > testmake.mak << 'EOF'
14619 X @echo 'maketemp="$(MAKE)"'
14621 case "`$make -f testmake.mak 2>/dev/null`" in
14622 *maketemp=*) make_set_make='#' ;;
14623 *) make_set_make="MAKE=$make" ;;
14625 $rm -f testmake.mak
14628 case "$make_set_make" in
14629 '#') echo "Yup, it does.";;
14630 *) echo "Nope, it doesn't.";;
14633 : see what type is used for mode_t
14634 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14635 set mode_t modetype int stdio.h sys/types.h
14638 : see if stdarg is available
14640 if $test `./findhdr stdarg.h`; then
14641 echo "<stdarg.h> found." >&4
14644 echo "<stdarg.h> NOT found." >&4
14648 : see if varags is available
14650 if $test `./findhdr varargs.h`; then
14651 echo "<varargs.h> found." >&4
14653 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14656 : set up the varargs testing programs
14657 $cat > varargs.c <<EOP
14659 #include <stdarg.h>
14662 #include <varargs.h>
14666 int f(char *p, ...)
14680 p = va_arg(ap, char *);
14685 $cat > varargs <<EOP
14687 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14696 : now check which varargs header should be included
14701 if `./varargs I_STDARG`; then
14703 elif `./varargs I_VARARGS`; then
14708 if `./varargs I_VARARGS`; then
14715 echo "I could not find the definition for va_dcl... You have problems..." >&4
14716 val="$undef"; set i_stdarg; eval $setvar
14717 val="$undef"; set i_varargs; eval $setvar
14722 case "$i_varhdr" in
14724 val="$define"; set i_stdarg; eval $setvar
14725 val="$undef"; set i_varargs; eval $setvar
14728 val="$undef"; set i_stdarg; eval $setvar
14729 val="$define"; set i_varargs; eval $setvar
14732 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14736 : see if we need va_copy
14738 case "$i_stdarg" in
14741 #include <stdarg.h>
14743 #$i_stdlib I_STDLIB
14745 #include <stdlib.h>
14747 #include <signal.h>
14750 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14752 return vfprintf(f, fmt, *valp);
14756 myvfprintf(FILE *f, const char *fmt, va_list val)
14758 return ivfprintf(f, fmt, &val);
14762 myprintf(char *fmt, ...)
14765 va_start(val, fmt);
14766 return myvfprintf(stdout, fmt, val);
14770 main(int ac, char **av)
14772 signal(SIGSEGV, exit);
14774 myprintf("%s%cs all right, then\n", "that", '\'');
14779 if eval $compile && $run ./try 2>&1 >/dev/null; then
14780 case "`$run ./try`" in
14781 "that's all right, then")
14787 yes) echo "It seems that you don't need va_copy()." >&4
14788 need_va_copy="$undef"
14790 *) echo "It seems that va_copy() or similar will be needed." >&4
14791 need_va_copy="$define"
14794 $rm -f try.* core core.* *.core *.core.*
14796 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14800 : define a fucntion to check prototypes
14801 $cat > protochk <<EOSH
14804 optimize="$optimize"
14806 prototype="$prototype"
14811 $cat >> protochk <<'EOSH'
14816 while test $# -ge 2; do
14818 $define) echo "#include <$2>" >> try.c ;;
14819 literal) echo "$2" >> try.c ;;
14823 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14824 cat >> try.c <<'EOCP'
14825 #ifdef CAN_PROTOTYPE
14826 #define _(args) args
14831 echo "$foo" >> try.c
14832 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14833 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14839 $eunicefix protochk
14841 : see what type is used for size_t
14842 rp="What is the type used for the length parameter for string functions?"
14843 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14846 : check for type of arguments to gethostbyaddr.
14847 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14848 case "$d_gethbyaddr" in
14852 Checking to see what type of arguments are accepted by gethostbyaddr().
14854 hdrs="$define sys/types.h
14855 $d_socket sys/socket.h
14856 $i_niin netinet/in.h
14858 $i_unistd unistd.h"
14859 : The first arg can 'char *' or 'void *'
14860 : The second arg is some of integral type
14861 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14862 for yyy in size_t long int; do
14863 case "$netdb_host_type" in
14864 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14865 if ./protochk "$try" $hdrs; then
14866 echo "Your system accepts $xxx for the first arg."
14867 echo "...and $yyy for the second arg."
14868 netdb_host_type="$xxx"
14869 netdb_hlen_type="$yyy"
14875 : In case none of those worked, prompt the user.
14876 case "$netdb_host_type" in
14877 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14880 netdb_host_type=$ans
14881 rp='What is the type for the 2nd argument to gethostbyaddr?'
14884 netdb_hlen_type=$ans
14888 *) : no gethostbyaddr, so pick harmless defaults
14889 netdb_host_type='char *'
14890 netdb_hlen_type="$sizetype"
14893 # Remove the "const" if needed. -- but then we'll have a
14895 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14898 : check for type of argument to gethostbyname.
14899 if test "X$netdb_name_type" = X ; then
14900 case "$d_gethbyname" in
14904 Checking to see what type of argument is accepted by gethostbyname().
14906 hdrs="$define sys/types.h
14907 $d_socket sys/socket.h
14908 $i_niin netinet/in.h
14910 $i_unistd unistd.h"
14911 for xxx in "const char *" "char *"; do
14912 case "$netdb_name_type" in
14913 '') try="extern struct hostent *gethostbyname($xxx);"
14914 if ./protochk "$try" $hdrs; then
14915 echo "Your system accepts $xxx."
14916 netdb_name_type="$xxx"
14921 : In case none of those worked, prompt the user.
14922 case "$netdb_name_type" in
14923 '') rp='What is the type for the 1st argument to gethostbyname?'
14926 netdb_name_type=$ans
14930 *) : no gethostbyname, so pick harmless default
14931 netdb_name_type='char *'
14936 : check for type of 1st argument to getnetbyaddr.
14937 if test "X$netdb_net_type" = X ; then
14938 case "$d_getnbyaddr" in
14942 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14944 hdrs="$define sys/types.h
14945 $d_socket sys/socket.h
14946 $i_niin netinet/in.h
14948 $i_unistd unistd.h"
14949 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14950 case "$netdb_net_type" in
14951 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14952 if ./protochk "$try" $hdrs; then
14953 echo "Your system accepts $xxx."
14954 netdb_net_type="$xxx"
14959 : In case none of those worked, prompt the user.
14960 case "$netdb_net_type" in
14961 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14964 netdb_net_type=$ans
14968 *) : no getnetbyaddr, so pick harmless default
14969 netdb_net_type='long'
14973 : locate the preferred pager for this system
14979 [a-zA-Z]:/*) dflt=$pg;;
14983 [a-zA-Z]:/*) dflt=$more;;
14987 [a-zA-Z]:/*) dflt=$less;;
14990 '') dflt=/usr/ucb/more;;
14997 rp='What pager is used on your system?'
15001 : see what type pids are declared as in the kernel
15002 rp="What is the type of process ids on this system?"
15003 set pid_t pidtype int stdio.h sys/types.h
15006 : Find earliest binary compatible site_perl subdirectory perl can use.
15007 case "$bincompat5005" in
15008 "$define") xs_apiversion='5.005' ;;
15009 *) xs_apiversion=$version ;; # The current site_perl version.
15011 : Find earliest pure perl site_perl subdirectory perl can use.
15012 : The versioned directories started at 5.005.
15013 pm_apiversion='5.005'
15015 : see if ar generates random libraries by itself
15017 echo "Checking how to generate random libraries on your machine..." >&4
15018 echo 'int bar1() { return bar2(); }' > bar1.c
15019 echo 'int bar2() { return 2; }' > bar2.c
15020 $cat > foo.c <<'EOP'
15021 int main() { printf("%d\n", bar1()); exit(0); }
15023 $cc $ccflags -c bar1.c >/dev/null 2>&1
15024 $cc $ccflags -c bar2.c >/dev/null 2>&1
15025 $cc $ccflags -c foo.c >/dev/null 2>&1
15026 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15027 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15028 $run ./foobar >/dev/null 2>&1; then
15029 echo "$ar appears to generate random libraries itself."
15032 elif $ar ts bar$_a >/dev/null 2>&1 &&
15033 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15034 $run ./foobar >/dev/null 2>&1; then
15035 echo "a table of contents needs to be added with '$ar ts'."
15042 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15043 $test -f $ranlib || ranlib=''
15046 if $test -n "$ranlib"; then
15047 echo "your system has '$ranlib'; we'll use that."
15050 echo "your system doesn't seem to support random libraries"
15051 echo "so we'll use lorder and tsort to order the libraries."
15058 : check for type of arguments to select.
15059 case "$selecttype" in
15060 '') case "$d_select" in
15064 Checking to see what type of arguments are accepted by select().
15066 hdrs="$define sys/types.h
15067 $i_systime sys/time.h
15068 $i_sysselct sys/select.h
15069 $d_socket sys/socket.h"
15070 : The first arg can be int, unsigned, or size_t
15071 : The last arg may or may not be 'const'
15073 : void pointer has been seen but using that
15074 : breaks the selectminbits test
15075 for xxx in 'fd_set *' 'int *'; do
15076 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15077 for tmo in 'struct timeval *' 'const struct timeval *'; do
15079 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15080 if ./protochk "$try" $hdrs; then
15081 echo "Your system accepts $xxx."
15090 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15091 case "$d_fd_set" in
15092 $define) dflt="fd_set *" ;;
15101 *) : no select, so pick a harmless default
15108 : check for the select 'width'
15109 case "$selectminbits" in
15110 '') case "$d_select" in
15114 Checking to see on how many bits at a time your select() operates...
15117 #include <sys/types.h>
15119 #$i_systime I_SYS_TIME
15120 #$i_systimek I_SYS_TIME_KERNEL
15125 # ifdef I_SYS_TIME_KERNEL
15128 # include <sys/time.h>
15129 # ifdef I_SYS_TIME_KERNEL
15133 #$i_sysselct I_SYS_SELECT
15134 #ifdef I_SYS_SELECT
15135 #include <sys/select.h>
15137 #$d_socket HAS_SOCKET
15139 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15143 #define S sizeof(*(b))
15145 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15146 #define NBITS (NBYTES * 8)
15155 fp = fopen("try.c", "r");
15161 b = ($selecttype)s;
15162 for (i = 0; i < NBITS; i++)
15166 select(fd + 1, b, 0, 0, &t);
15167 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15168 printf("%d\n", i + 1);
15173 if eval $compile_ok; then
15174 selectminbits=`$run ./try`
15175 case "$selectminbits" in
15177 Cannot figure out on how many bits at a time your select() operates.
15178 I'll play safe and guess it is 32 bits.
15184 *) bits="$selectminbits bits" ;;
15186 echo "Your select() operates on $bits at a time." >&4
15188 rp='What is the minimum number of bits your select() operates on?'
15189 case "$byteorder" in
15190 1234|12345678) dflt=32 ;;
15195 selectminbits="$val"
15199 *) : no select, so pick a harmless default
15206 : Trace out the files included by signal.h, then look for SIGxxx names.
15207 : Remove SIGARRAYSIZE used by HPUX.
15208 : Remove SIGSTKSIZE used by Linux.
15209 : Remove SIGSTKSZ used by Posix.
15210 : Remove SIGTYP void lines used by OS2.
15211 : Some cpps, like os390, dont give the file name anywhere
15212 if [ "X$fieldn" = X ]; then
15213 : Just make some guesses. We check them later.
15214 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15216 xxx=`echo '#include <signal.h>' |
15217 $cppstdin $cppminus $cppflags 2>/dev/null |
15218 $grep '^[ ]*#.*include' |
15219 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15221 : Check this list of files to be sure we have parsed the cpp output ok.
15222 : This will also avoid potentially non-existent files, such
15225 for xx in $xxx /dev/null ; do
15226 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15228 : If we have found no files, at least try signal.h
15229 case "$xxxfiles" in
15230 '') xxxfiles=`./findhdr signal.h` ;;
15233 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15234 print substr($2, 4, 20)
15236 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15237 print substr($3, 4, 20)
15239 : Append some common names just in case the awk scan failed.
15240 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15241 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15242 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15243 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15244 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15246 : generate a few handy files for later
15247 $cat > signal.c <<'EOCP'
15248 #include <sys/types.h>
15249 #include <signal.h>
15253 /* Strange style to avoid deeply-nested #if/#else/#endif */
15256 # define NSIG (_NSIG)
15262 # define NSIG (SIGMAX+1)
15268 # define NSIG (SIG_MAX+1)
15274 # define NSIG (MAXSIG+1)
15280 # define NSIG (MAX_SIG+1)
15285 # ifdef SIGARRAYSIZE
15286 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15292 # define NSIG (_sys_nsig) /* Solaris 2.5 */
15296 /* Default to some arbitrary number that's big enough to get most
15297 of the common signals.
15303 printf("NSIG %d\n", NSIG);
15309 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15311 printf "#ifdef SIG"; printf $1; printf "\n"
15312 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15313 printf $1; printf ");\n"
15317 printf "#endif /* JUST_NSIG */\n";
15318 printf "exit(0);\n}\n";
15321 $cat >signal.awk <<'EOP'
15322 BEGIN { ndups = 0 }
15323 $1 ~ /^NSIG$/ { nsig = $2 }
15324 ($1 !~ /^NSIG$/) && (NF == 2) {
15325 if ($2 > maxsig) { maxsig = $2 }
15326 if (sig_name[$2]) {
15327 dup_name[ndups] = $1
15328 dup_num[ndups] = $2
15340 printf("NSIG %d\n", nsig);
15341 for (n = 1; n < nsig; n++) {
15343 printf("%s %d\n", sig_name[n], sig_num[n])
15346 printf("NUM%d %d\n", n, n)
15349 for (n = 0; n < ndups; n++) {
15350 printf("%s %d\n", dup_name[n], dup_num[n])
15354 $cat >signal_cmd <<EOS
15356 if $test -s signal.lst; then
15357 echo "Using your existing signal.lst file"
15362 $cat >>signal_cmd <<'EOS'
15365 if eval $compile_ok; then
15366 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15368 echo "(I can't seem be able to compile the whole test program)" >&4
15369 echo "(I'll try it in little pieces.)" >&4
15370 set signal -DJUST_NSIG
15371 if eval $compile_ok; then
15372 $run ./signal$_exe > signal.nsg
15375 echo "I can't seem to figure out how many signals you have." >&4
15376 echo "Guessing 50." >&4
15377 echo 'NSIG 50' > signal.nsg
15379 : Now look at all the signal names, one at a time.
15380 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15381 $cat > signal.c <<EOCP
15382 #include <sys/types.h>
15383 #include <signal.h>
15386 printf("$xx %d\n", SIG${xx});
15391 if eval $compile; then
15392 echo "SIG${xx} found."
15393 $run ./signal$_exe >> signal.ls1
15395 echo "SIG${xx} NOT found."
15398 if $test -s signal.ls1; then
15399 $cat signal.nsg signal.ls1 |
15400 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15404 if $test -s signal.lst; then
15407 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15408 echo 'kill -l' >signal
15409 set X `csh -f <signal`
15413 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15415 echo $@ | $tr ' ' $trnl | \
15416 $awk '{ printf "%s %d\n", $1, ++s; }
15417 END { printf "NSIG %d\n", ++s }' >signal.lst
15419 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15421 chmod a+x signal_cmd
15422 $eunicefix signal_cmd
15424 : generate list of signal names
15426 case "$sig_name_init" in
15428 *) case "$sig_num_init" in
15429 ''|*,*) doinit=yes ;;
15434 echo "Generating a list of signal names and numbers..." >&4
15436 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15437 sig_name=`$awk 'BEGIN { printf "ZERO " }
15438 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15439 sig_num=`$awk 'BEGIN { printf "0 " }
15440 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15441 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15442 !/^NSIG/ { printf "\"%s\", ", $1 }
15443 END { printf "0\n" }' signal.lst`
15444 sig_num_init=`$awk 'BEGIN { printf "0, " }
15445 !/^NSIG/ { printf "%d, ", $2}
15446 END { printf "0\n"}' signal.lst`
15449 echo "The following $sig_count signals are available:"
15451 echo $sig_name | $awk \
15452 'BEGIN { linelen = 0 }
15454 for (i = 1; i <= NF; i++) {
15455 name = "SIG" $i " "
15456 linelen = linelen + length(name)
15457 if (linelen > 70) {
15459 linelen = length(name)
15465 sig_size=`echo $sig_name | awk '{print NF}'`
15466 $rm -f signal signal.c signal.awk signal.lst signal_cmd
15469 case "$sizetype" in
15470 *_t) zzz="$sizetype" ;;
15471 *) zzz="filesize" ;;
15473 echo "Checking the size of $zzz..." >&4
15475 #include <sys/types.h>
15478 printf("%d\n", (int)sizeof($sizetype));
15483 if eval $compile_ok; then
15487 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15490 echo "Your $zzz size is $sizesize bytes."
15495 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15499 : check for socklen_t
15501 echo "Checking to see if you have socklen_t..." >&4
15503 #include <sys/types.h>
15504 #$d_socket HAS_SOCKET
15506 #include <sys/socket.h>
15508 int main() { socklen_t x = 16; }
15511 if eval $compile; then
15513 echo "You have socklen_t."
15516 echo "You do not have socklen_t."
15517 case "$sizetype" in
15518 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15525 : see if this is a socks.h system
15526 set socks.h i_socks
15529 : check for type of the size argument to socket calls
15530 case "$d_socket" in
15534 Checking to see what type is the last argument of accept().
15537 case "$d_socklen_t" in
15538 "$define") yyy="$yyy socklen_t"
15540 yyy="$yyy $sizetype int long unsigned"
15541 for xxx in $yyy; do
15542 case "$socksizetype" in
15543 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
15544 case "$usesocks" in
15546 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15547 echo "Your system accepts '$xxx *' for the last argument of accept()."
15548 socksizetype="$xxx"
15551 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15552 echo "Your system accepts '$xxx *' for the last argument of accept()."
15553 socksizetype="$xxx"
15560 : In case none of those worked, prompt the user.
15561 case "$socksizetype" in
15562 '') rp='What is the type for socket address structure sizes?'
15569 *) : no sockets, so pick relatively harmless default
15574 : see what type is used for signed size_t
15575 set ssize_t ssizetype int stdio.h sys/types.h
15580 #include <sys/types.h>
15581 #define Size_t $sizetype
15582 #define SSize_t $dflt
15585 if (sizeof(Size_t) == sizeof(SSize_t))
15587 else if (sizeof(Size_t) == sizeof(int))
15596 if eval $compile_ok && $run ./try > /dev/null; then
15597 ssizetype=`$run ./try`
15598 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15601 Help! I can't compile and run the ssize_t test program: please enlighten me!
15602 (This is probably a misconfiguration in your system or libraries, and
15603 you really ought to fix it. Still, I'll try anyway.)
15605 I need a type that is the same size as $sizetype, but is guaranteed to
15606 be signed. Common values are ssize_t, int and long.
15609 rp="What signed type is the same size as $sizetype?"
15615 : see what type of char stdio uses.
15617 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15618 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15619 echo "Your stdio uses unsigned chars." >&4
15620 stdchar="unsigned char"
15622 echo "Your stdio uses signed chars." >&4
15629 : see if time exists
15631 if test "X$d_time" = X -o X"$timetype" = X; then
15632 if set time val -f d_time; eval $csym; $val; then
15633 echo 'time() found.' >&4
15635 rp="What is the type returned by time() on this system?"
15636 set time_t timetype long stdio.h sys/types.h
15639 echo 'time() not found, hope that will do.' >&4
15647 : see what type uids are declared as in the kernel
15649 echo "Looking for the type for user ids returned by getuid()."
15650 set uid_t uidtype xxx stdio.h sys/types.h
15654 xxx=`./findhdr sys/user.h`
15655 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15657 unsigned) dflt="$1 $2" ;;
15661 *) dflt="$uidtype";;
15664 uid_t) echo "uid_t found." ;;
15665 *) rp="What is the type for user ids returned by getuid()?"
15673 *_t) zzz="$uidtype" ;;
15676 echo "Checking the size of $zzz..." >&4
15678 #include <sys/types.h>
15681 printf("%d\n", (int)sizeof($uidtype));
15686 if eval $compile_ok; then
15690 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15693 echo "Your $zzz is $uidsize bytes long."
15698 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15703 *_t) zzz="$uidtype" ;;
15706 echo "Checking the sign of $zzz..." >&4
15708 #include <sys/types.h>
15719 if eval $compile; then
15723 echo "(I can't execute the test program--guessing unsigned.)" >&4
15727 1) echo "Your $zzz is unsigned." ;;
15728 -1) echo "Your $zzz is signed." ;;
15734 echo "(I can't compile the test program--guessing unsigned.)" >&4
15740 $echo "Checking the format string to be used for uids..." >&4
15743 -1) if $test X"$uidsize" = X"$ivsize"; then
15744 uidformat="$ivdformat"
15746 if $test X"$uidsize" = X"$longsize"; then
15749 if $test X"$uidsize" = X"$intsize"; then
15752 if $test X"$uidsize" = X"$shortsize"; then
15759 *) if $test X"$uidsize" = X"$uvsize"; then
15760 uidformat="$uvuformat"
15762 if $test X"$uidsize" = X"$longsize"; then
15765 if $test X"$uidsize" = X"$intsize"; then
15768 if $test X"$uidsize" = X"$shortsize"; then
15777 : determine compiler compiler
15786 if $test -f "$byacc"; then
15788 comp="byacc or $comp"
15790 if $test -f "$bison"; then
15791 comp="$comp or bison -y"
15793 rp="Which compiler compiler ($comp) shall I use?"
15802 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15808 : see if fcntl.h is there
15813 : see if we can include fcntl.h
15819 echo "We'll be including <fcntl.h>." >&4
15822 if $h_sysfile; then
15823 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15825 echo "We won't be including <fcntl.h>." >&4
15837 : see if this is a fp.h system
15841 : see if this is a fp_class.h system
15842 set fp_class.h i_fp_class
15845 : see if this is a ieeefp.h system
15846 set ieeefp.h i_ieeefp
15849 : see if this is a libutil.h system
15850 set libutil.h i_libutil
15853 : see if locale.h is available
15854 set locale.h i_locale
15857 : see if mach cthreads are available
15858 if test "X$usethreads" = "X$define"; then
15859 set mach/cthreads.h i_machcthr
15862 i_machcthr="$undef"
15867 : see if this is a math.h system
15871 : see if this is a mntent.h system
15872 set mntent.h i_mntent
15875 : see if ndbm.h is available
15880 : see if dbm_open exists
15881 set dbm_open d_dbm_open
15883 case "$d_dbm_open" in
15886 echo "We won't be including <ndbm.h>"
15895 : see if net/errno.h is available
15897 set net/errno.h val
15900 : Unfortunately, it causes problems on some systems. Arrgh.
15903 cat > try.c <<'EOM'
15906 #include <net/errno.h>
15912 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15913 echo "We'll be including <net/errno.h>." >&4
15915 echo "We won't be including <net/errno.h>." >&4
15924 : see if netinet/tcp.h is available
15925 set netinet/tcp.h i_netinettcp
15928 : see if this is a poll.h system
15932 : see if this is a prot.h system
15937 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15938 $cat <<'EOSH' > Cppsym.know
15939 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15940 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15941 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15942 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15943 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15944 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15945 bull c cadmus clipper CMU COFF COMPILER_VERSION
15946 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15947 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15948 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
15949 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15951 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
15952 H3050R H3050RX hbullx20 hcx host_mips
15953 hp200 hp300 hp700 HP700 hp800 hp9000
15954 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15955 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15956 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15957 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15958 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15959 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15960 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15961 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15962 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15963 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15964 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15965 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15966 MATH_HAS_NO_SIDE_EFFECTS
15967 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15968 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15969 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15970 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15971 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15972 NetBSD news1500 news1700 news1800 news1900 news3700
15973 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15974 ns32016 ns32332 ns32k nsc32000
15975 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15976 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15977 pc532 pdp11 PGC PIC plexus PORTAR posix
15978 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15979 POSIX_C_SOURCE POSIX_SOURCE POWER
15980 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15981 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15982 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15983 sony sony_news sonyrisc sparc sparclite spectrum
15984 stardent stdc STDC_EXT stratos sun sun3 sun386
15985 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15986 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15987 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15988 sysV68 sysV88 Tek4132 Tek4300 titan
15989 TM3200 TM5400 TM5600
15990 tower tower32 tower32_200 tower32_600 tower32_700
15991 tower32_800 tower32_850 tss
15992 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15993 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15994 unix UNIX95 UNIX99 unixpc unos
15995 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
15996 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
15997 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
15999 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16000 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16001 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16004 # Maybe put other stuff here too.
16005 cat <<EOSH >>Cppsym.know
16008 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16009 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16010 $cat Cppsym.know > Cppsym.c
16011 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
16012 $rm -f Cppsym.a Cppsym.b Cppsym.c
16013 cat <<EOSH > Cppsym
16015 if $test \$# -gt 0; then
16016 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16017 if $test -s Cppsym.got; then
16024 $tr " " "$trnl" | ./Cppsym.try
16030 cat <<EOSH > Cppsym.try
16032 cat <<'EOCP' > try.c
16038 cat <<'EOSH' >> Cppsym.try
16040 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16041 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16042 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16043 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
16045 echo 'return 0;}' >> try.c
16047 cat <<EOSH >> Cppsym.try
16049 case "$osname-$gccversion" in
16050 irix-) ccflags="\$ccflags -woff 1178" ;;
16051 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16053 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16055 chmod +x Cppsym.try
16056 $eunicefix Cppsym.try
16057 ./Cppsym < Cppsym.know > Cppsym.true
16058 : now check the C compiler for additional symbols
16059 postprocess_cc_v=''
16061 aix) postprocess_cc_v="|$tr , ' '" ;;
16068 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16071 -D*) echo "\$i" | $sed 's/^-D//';;
16072 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16077 postprocess_cc_v=''
16080 ./ccsym > ccsym1.raw
16081 if $test -s ccsym1.raw; then
16082 $sort ccsym1.raw | $uniq >ccsym.raw
16084 mv ccsym1.raw ccsym.raw
16087 $awk '/\=/ { print $0; next }
16088 { print $0"=1" }' ccsym.raw >ccsym.list
16089 $awk '/\=/ { print $0; next }
16090 { print $0"=1" }' Cppsym.true >ccsym.true
16091 $comm -13 ccsym.true ccsym.list >ccsym.own
16092 $comm -12 ccsym.true ccsym.list >ccsym.com
16093 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16095 if $test -z ccsym.raw; then
16096 echo "Your C compiler doesn't seem to define any symbols!" >&4
16098 echo "However, your C preprocessor defines the following symbols:"
16101 cppsymbols=`$cat Cppsym.true`
16102 cppsymbols=`echo $cppsymbols`
16103 cppccsymbols="$cppsymbols"
16105 if $test -s ccsym.com; then
16106 echo "Your C compiler and pre-processor define these symbols:"
16107 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16110 cppccsymbols=`$cat ccsym.com`
16111 cppccsymbols=`echo $cppccsymbols`
16112 $test "$silent" || sleep 1
16114 if $test -s ccsym.cpp; then
16115 $test "$also" && echo " "
16116 echo "Your C pre-processor ${also}defines the following symbols:"
16117 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16119 cppsymbols=`$cat ccsym.cpp`
16120 cppsymbols=`echo $cppsymbols`
16121 $test "$silent" || sleep 1
16123 if $test -s ccsym.own; then
16124 $test "$also" && echo " "
16125 echo "Your C compiler ${also}defines the following cpp symbols:"
16126 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16127 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16128 ccsymbols=`$cat ccsym.own`
16129 ccsymbols=`echo $ccsymbols`
16130 $test "$silent" || sleep 1
16134 : see if this is a termio system
16138 if $test `./findhdr termios.h`; then
16139 set tcsetattr i_termios
16145 "$define") echo "You have POSIX termios.h... good!" >&4;;
16146 *) if ./Cppsym pyr; then
16147 case "`/bin/universe`" in
16148 ucb) if $test `./findhdr sgtty.h`; then
16150 echo "<sgtty.h> found." >&4
16152 echo "System is pyramid with BSD universe."
16153 echo "<sgtty.h> not found--you could have problems." >&4
16155 *) if $test `./findhdr termio.h`; then
16157 echo "<termio.h> found." >&4
16159 echo "System is pyramid with USG universe."
16160 echo "<termio.h> not found--you could have problems." >&4
16164 if $test `./findhdr termio.h`; then
16165 echo "<termio.h> found." >&4
16167 elif $test `./findhdr sgtty.h`; then
16168 echo "<sgtty.h> found." >&4
16171 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16174 if $test `./findhdr sgtty.h`; then
16175 echo "<sgtty.h> found." >&4
16177 elif $test `./findhdr termio.h`; then
16178 echo "<termio.h> found." >&4
16181 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16185 set i_termio; eval $setvar
16186 val=$val2; set i_sgtty; eval $setvar
16187 val=$val3; set i_termios; eval $setvar
16189 : see if this is a shadow.h system
16190 set shadow.h i_shadow
16193 : see if stddef is available
16194 set stddef.h i_stddef
16197 : see if this is a sunmath.h system
16198 set sunmath.h i_sunmath
16201 : see if sys/access.h is available
16202 set sys/access.h i_sysaccess
16205 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16206 set sys/filio.h i_sysfilio
16209 if $test `./findhdr sys/ioctl.h`; then
16211 echo '<sys/ioctl.h> found.' >&4
16214 if $test $i_sysfilio = "$define"; then
16215 echo '<sys/ioctl.h> NOT found.' >&4
16217 $test $i_sgtty = "$define" && xxx="sgtty.h"
16218 $test $i_termio = "$define" && xxx="termio.h"
16219 $test $i_termios = "$define" && xxx="termios.h"
16220 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16226 : see if socket ioctl defs are in sys/sockio.h
16228 xxx=`./findhdr sys/sockio.h`
16229 if $test "$xxx"; then
16230 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16232 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16235 echo "No socket ioctls found in <sys/sockio.h>." >&4
16240 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16247 : see if this is a syslog.h system
16248 set syslog.h i_syslog
16252 : see if this is a sys/mode.h system
16253 set sys/mode.h i_sysmode
16256 : see if sys/resource.h has to be included
16257 set sys/resource.h i_sysresrc
16260 : see if sys/security.h is available
16261 set sys/security.h i_syssecrt
16264 : see if this is a sys/statvfs.h system
16265 set sys/statvfs.h i_sysstatvfs
16268 : see if this is a sys/un.h system
16269 set sys/un.h i_sysun
16273 : see if this is a sys/utsname.h system
16274 set sys/utsname.h i_sysutsname
16277 : see if this is a syswait system
16278 set sys/wait.h i_syswait
16281 : see if this is a ustat.h system
16282 set ustat.h i_ustat
16285 : see if this is an utime system
16286 set utime.h i_utime
16289 : see if this is a values.h system
16290 set values.h i_values
16293 : see if this is a vfork system
16296 set vfork.h i_vfork
16304 : see if gdbm.h is available
16309 : see if gdbm_open exists
16310 set gdbm_open d_gdbm_open
16312 case "$d_gdbm_open" in
16315 echo "We won't be including <gdbm.h>"
16325 echo "Looking for extensions..." >&4
16326 : If we are using the old config.sh, known_extensions may contain
16327 : old or inaccurate or duplicate values.
16328 known_extensions=''
16329 nonxs_extensions=''
16330 : We do not use find because it might not be available.
16331 : We do not just use MANIFEST because the user may have dropped
16332 : some additional extensions into the source tree and expect them
16335 : Function to recursively find available extensions, ignoring DynaLoader
16336 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16340 DynaLoader|dynaload) ;;
16342 if $test -f $xxx/$xxx.xs; then
16343 known_extensions="$known_extensions $1$xxx";
16344 elif $test -f $xxx/Makefile.PL; then
16345 nonxs_extensions="$nonxs_extensions $1$xxx";
16347 if $test -d $xxx -a $# -lt 10; then
16350 eval $find_extensions;
16362 eval $find_extensions
16363 # Special case: Add in threads/shared since it is not picked up by the
16364 # recursive find above (and adding in general recursive finding breaks
16365 # SDBM_File/sdbm). A.D. 10/25/2001.
16366 known_extensions="$known_extensions threads/shared"
16367 set X $nonxs_extensions
16369 nonxs_extensions="$*"
16370 set X $known_extensions
16372 known_extensions="$*"
16375 : Now see which are supported on this system.
16377 for xxx in $known_extensions ; do
16381 $define) avail_ext="$avail_ext $xxx" ;;
16384 GDBM_File|gdbm_fil)
16386 $define) avail_ext="$avail_ext $xxx" ;;
16389 I18N/Langinfo|i18n_lan)
16390 case "$i_langinfo$d_nl_langinfo" in
16391 $define$define) avail_ext="$avail_ext $xxx" ;;
16394 NDBM_File|ndbm_fil)
16397 case "$osname-$use64bitint" in
16398 cygwin-*|hpux-define)
16400 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16403 *) avail_ext="$avail_ext $xxx" ;;
16408 ODBM_File|odbm_fil)
16409 case "${i_dbm}${i_rpcsvcdbm}" in
16411 case "$osname-$use64bitint" in
16412 cygwin-*|hpux-define)
16414 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16417 *) avail_ext="$avail_ext $xxx" ;;
16423 case "$useposix" in
16424 true|define|y) avail_ext="$avail_ext $xxx" ;;
16428 case "$useopcode" in
16429 true|define|y) avail_ext="$avail_ext $xxx" ;;
16433 case "$d_socket" in
16434 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16437 Sys/Syslog|sys/syslog)
16438 : XXX syslog requires socket
16439 case "$d_socket" in
16440 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16444 case "$usethreads" in
16446 case "$useithreads" in
16447 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16451 threads|threads/shared)
16452 case "$usethreads" in
16454 case "$useithreads" in
16455 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16460 : XXX Do we need a useipcsysv variable here
16461 case "${d_msg}${d_sem}${d_shm}" in
16462 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16465 *) avail_ext="$avail_ext $xxx"
16474 : Now see which nonxs extensions are supported on this system.
16475 : For now assume all are.
16477 for xxx in $nonxs_extensions ; do
16479 *) nonxs_ext="$nonxs_ext $xxx"
16491 A number of extensions are supplied with $package. You may choose to
16492 compile these extensions for dynamic loading (the default), compile
16493 them into the $package executable (static loading), or not include
16494 them at all. Answer "none" to include no extensions.
16495 Note that DynaLoader is always built and need not be mentioned here.
16498 case "$dynamic_ext" in
16499 '') dflt="$avail_ext" ;;
16500 *) dflt="$dynamic_ext"
16501 # Perhaps we are reusing an old out-of-date config.sh.
16504 if test X"$dynamic_ext" != X"$avail_ext"; then
16506 NOTICE: Your previous config.sh list may be incorrect.
16507 The extensions now available to you are
16509 but the default list from your previous config.sh is
16521 rp="What extensions do you wish to load dynamically?"
16524 none) dynamic_ext=' ' ;;
16525 *) dynamic_ext="$ans" ;;
16528 case "$static_ext" in
16530 : Exclude those already listed in dynamic linking
16532 for xxx in $avail_ext; do
16533 case " $dynamic_ext " in
16535 *) dflt="$dflt $xxx" ;;
16542 *) dflt="$static_ext"
16549 rp="What extensions do you wish to load statically?"
16552 none) static_ext=' ' ;;
16553 *) static_ext="$ans" ;;
16558 A number of extensions are supplied with $package. Answer "none"
16559 to include no extensions.
16560 Note that DynaLoader is always built and need not be mentioned here.
16563 case "$static_ext" in
16564 '') dflt="$avail_ext" ;;
16565 *) dflt="$static_ext"
16566 # Perhaps we are reusing an old out-of-date config.sh.
16569 if test X"$static_ext" != X"$avail_ext"; then
16571 NOTICE: Your previous config.sh list may be incorrect.
16572 The extensions now available to you are
16574 but the default list from your previous config.sh is
16583 : Exclude those that are not xs extensions
16587 rp="What extensions do you wish to include?"
16590 none) static_ext=' ' ;;
16591 *) static_ext="$ans" ;;
16596 set X $dynamic_ext $static_ext $nonxs_ext
16600 : Remove libraries needed only for extensions
16601 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16602 : The exception is SunOS 4.x, which needs them.
16603 case "${osname}X${osvers}" in
16607 *) case "$usedl" in
16608 $define|true|[yY]*)
16609 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16613 *) perllibs="$libs"
16619 : Remove build directory name from cppstdin so it can be used from
16620 : either the present location or the final installed location.
16622 : Get out of the UU directory to get correct path name.
16624 case "$cppstdin" in
16626 echo "Stripping down cppstdin path name"
16632 : end of configuration questions
16634 echo "End of configuration questions."
16637 : back to where it started
16638 if test -d ../UU; then
16642 : configuration may be patched via a 'config.arch' file
16643 if $test -f config.arch; then
16644 echo "I see a config.arch file, loading it."
16648 : configuration may be patched via a 'config.over' file
16649 if $test -f config.over; then
16652 rp='I see a config.over file. Do you wish to load it?'
16655 n*) echo "OK, I'll ignore it.";;
16657 echo "Configuration override changes have been loaded."
16662 : in case they want portability, strip down executable paths
16663 case "$d_portable" in
16666 echo "Stripping down executable paths..." >&4
16667 for file in $loclist $trylist; do
16669 eval $file=`basename $temp`
16674 : create config.sh file
16676 echo "Creating config.sh..." >&4
16677 $spitshell <<EOT >config.sh
16680 # This file was produced by running the Configure script. It holds all the
16681 # definitions figured out by Configure. Should you modify one of these values,
16682 # do not forget to propagate your changes by running "Configure -der". You may
16683 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16686 # Package name : $package
16687 # Source directory : $src
16688 # Configuration time: $cf_time
16689 # Configured by : $cf_by
16690 # Target system : $myuname
16700 Revision='$Revision'
16708 alignbytes='$alignbytes'
16709 ansi2knr='$ansi2knr'
16710 aphostname='$aphostname'
16711 api_revision='$api_revision'
16712 api_subversion='$api_subversion'
16713 api_version='$api_version'
16714 api_versionstring='$api_versionstring'
16717 archlibexp='$archlibexp'
16718 archname64='$archname64'
16719 archname='$archname'
16720 archobjs='$archobjs'
16725 bincompat5005='$bincompat5005'
16729 byteorder='$byteorder'
16731 castflags='$castflags'
16734 cccdlflags='$cccdlflags'
16735 ccdlflags='$ccdlflags'
16737 ccflags_uselargefiles='$ccflags_uselargefiles'
16739 ccsymbols='$ccsymbols'
16740 ccversion='$ccversion'
16742 cf_email='$cf_email'
16744 charsize='$charsize'
16748 clocktype='$clocktype'
16750 compress='$compress'
16751 contains='$contains'
16755 cpp_stuff='$cpp_stuff'
16756 cppccsymbols='$cppccsymbols'
16757 cppflags='$cppflags'
16759 cppminus='$cppminus'
16761 cppstdin='$cppstdin'
16762 cppsymbols='$cppsymbols'
16763 cryptlib='$cryptlib'
16765 d_Gconvert='$d_Gconvert'
16766 d_PRIEUldbl='$d_PRIEUldbl'
16767 d_PRIFUldbl='$d_PRIFUldbl'
16768 d_PRIGUldbl='$d_PRIGUldbl'
16769 d_PRIXU64='$d_PRIXU64'
16770 d_PRId64='$d_PRId64'
16771 d_PRIeldbl='$d_PRIeldbl'
16772 d_PRIfldbl='$d_PRIfldbl'
16773 d_PRIgldbl='$d_PRIgldbl'
16774 d_PRIi64='$d_PRIi64'
16775 d_PRIo64='$d_PRIo64'
16776 d_PRIu64='$d_PRIu64'
16777 d_PRIx64='$d_PRIx64'
16778 d_SCNfldbl='$d_SCNfldbl'
16779 d__fwalk='$d__fwalk'
16780 d_access='$d_access'
16781 d_accessx='$d_accessx'
16783 d_archlib='$d_archlib'
16786 d_attribut='$d_attribut'
16789 d_bincompat5005='$d_bincompat5005'
16791 d_bsdgetpgrp='$d_bsdgetpgrp'
16792 d_bsdsetpgrp='$d_bsdsetpgrp'
16794 d_casti32='$d_casti32'
16795 d_castneg='$d_castneg'
16796 d_charvspr='$d_charvspr'
16798 d_chroot='$d_chroot'
16799 d_chsize='$d_chsize'
16801 d_closedir='$d_closedir'
16802 d_cmsghdr_s='$d_cmsghdr_s'
16806 d_cuserid='$d_cuserid'
16807 d_dbl_dig='$d_dbl_dig'
16808 d_dbminitproto='$d_dbminitproto'
16809 d_difftime='$d_difftime'
16810 d_dirnamlen='$d_dirnamlen'
16811 d_dlerror='$d_dlerror'
16812 d_dlopen='$d_dlopen'
16813 d_dlsymun='$d_dlsymun'
16814 d_dosuid='$d_dosuid'
16815 d_drand48proto='$d_drand48proto'
16817 d_eaccess='$d_eaccess'
16818 d_endgrent='$d_endgrent'
16819 d_endhent='$d_endhent'
16820 d_endnent='$d_endnent'
16821 d_endpent='$d_endpent'
16822 d_endpwent='$d_endpwent'
16823 d_endsent='$d_endsent'
16824 d_eofnblk='$d_eofnblk'
16825 d_eunice='$d_eunice'
16826 d_fchdir='$d_fchdir'
16827 d_fchmod='$d_fchmod'
16828 d_fchown='$d_fchown'
16830 d_fcntl_can_lock='$d_fcntl_can_lock'
16831 d_fd_macros='$d_fd_macros'
16832 d_fd_set='$d_fd_set'
16833 d_fds_bits='$d_fds_bits'
16834 d_fgetpos='$d_fgetpos'
16835 d_finite='$d_finite'
16836 d_finitel='$d_finitel'
16837 d_flexfnam='$d_flexfnam'
16839 d_flockproto='$d_flockproto'
16841 d_fp_class='$d_fp_class'
16842 d_fpathconf='$d_fpathconf'
16843 d_fpclass='$d_fpclass'
16844 d_fpclassify='$d_fpclassify'
16845 d_fpclassl='$d_fpclassl'
16846 d_fpos64_t='$d_fpos64_t'
16847 d_frexpl='$d_frexpl'
16848 d_fs_data_s='$d_fs_data_s'
16849 d_fseeko='$d_fseeko'
16850 d_fsetpos='$d_fsetpos'
16851 d_fstatfs='$d_fstatfs'
16852 d_fstatvfs='$d_fstatvfs'
16854 d_ftello='$d_ftello'
16856 d_getcwd='$d_getcwd'
16857 d_getespwnam='$d_getespwnam'
16858 d_getfsstat='$d_getfsstat'
16859 d_getgrent='$d_getgrent'
16860 d_getgrps='$d_getgrps'
16861 d_gethbyaddr='$d_gethbyaddr'
16862 d_gethbyname='$d_gethbyname'
16863 d_gethent='$d_gethent'
16864 d_gethname='$d_gethname'
16865 d_gethostprotos='$d_gethostprotos'
16866 d_getitimer='$d_getitimer'
16867 d_getlogin='$d_getlogin'
16868 d_getmnt='$d_getmnt'
16869 d_getmntent='$d_getmntent'
16870 d_getnbyaddr='$d_getnbyaddr'
16871 d_getnbyname='$d_getnbyname'
16872 d_getnent='$d_getnent'
16873 d_getnetprotos='$d_getnetprotos'
16874 d_getpagsz='$d_getpagsz'
16875 d_getpbyname='$d_getpbyname'
16876 d_getpbynumber='$d_getpbynumber'
16877 d_getpent='$d_getpent'
16878 d_getpgid='$d_getpgid'
16879 d_getpgrp2='$d_getpgrp2'
16880 d_getpgrp='$d_getpgrp'
16881 d_getppid='$d_getppid'
16882 d_getprior='$d_getprior'
16883 d_getprotoprotos='$d_getprotoprotos'
16884 d_getprpwnam='$d_getprpwnam'
16885 d_getpwent='$d_getpwent'
16886 d_getsbyname='$d_getsbyname'
16887 d_getsbyport='$d_getsbyport'
16888 d_getsent='$d_getsent'
16889 d_getservprotos='$d_getservprotos'
16890 d_getspnam='$d_getspnam'
16891 d_gettimeod='$d_gettimeod'
16892 d_gnulibc='$d_gnulibc'
16893 d_grpasswd='$d_grpasswd'
16894 d_hasmntopt='$d_hasmntopt'
16897 d_inetaton='$d_inetaton'
16898 d_int64_t='$d_int64_t'
16899 d_isascii='$d_isascii'
16900 d_isfinite='$d_isfinite'
16903 d_isnanl='$d_isnanl'
16904 d_killpg='$d_killpg'
16905 d_lchown='$d_lchown'
16906 d_ldbl_dig='$d_ldbl_dig'
16908 d_locconv='$d_locconv'
16910 d_longdbl='$d_longdbl'
16911 d_longlong='$d_longlong'
16912 d_lseekproto='$d_lseekproto'
16914 d_madvise='$d_madvise'
16916 d_mbstowcs='$d_mbstowcs'
16917 d_mbtowc='$d_mbtowc'
16918 d_memchr='$d_memchr'
16919 d_memcmp='$d_memcmp'
16920 d_memcpy='$d_memcpy'
16921 d_memmove='$d_memmove'
16922 d_memset='$d_memset'
16924 d_mkdtemp='$d_mkdtemp'
16925 d_mkfifo='$d_mkfifo'
16926 d_mkstemp='$d_mkstemp'
16927 d_mkstemps='$d_mkstemps'
16928 d_mktime='$d_mktime'
16931 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16932 d_mprotect='$d_mprotect'
16934 d_msg_ctrunc='$d_msg_ctrunc'
16935 d_msg_dontroute='$d_msg_dontroute'
16936 d_msg_oob='$d_msg_oob'
16937 d_msg_peek='$d_msg_peek'
16938 d_msg_proxy='$d_msg_proxy'
16939 d_msgctl='$d_msgctl'
16940 d_msgget='$d_msgget'
16941 d_msghdr_s='$d_msghdr_s'
16942 d_msgrcv='$d_msgrcv'
16943 d_msgsnd='$d_msgsnd'
16945 d_munmap='$d_munmap'
16946 d_mymalloc='$d_mymalloc'
16948 d_nl_langinfo='$d_nl_langinfo'
16949 d_nv_preserves_uv='$d_nv_preserves_uv'
16950 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16951 d_off64_t='$d_off64_t'
16952 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16953 d_oldpthreads='$d_oldpthreads'
16954 d_oldsock='$d_oldsock'
16956 d_pathconf='$d_pathconf'
16958 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16959 d_phostname='$d_phostname'
16962 d_portable='$d_portable'
16963 d_procselfexe='$d_procselfexe'
16964 d_pthread_atfork='$d_pthread_atfork'
16965 d_pthread_yield='$d_pthread_yield'
16967 d_pwchange='$d_pwchange'
16968 d_pwclass='$d_pwclass'
16969 d_pwcomment='$d_pwcomment'
16970 d_pwexpire='$d_pwexpire'
16971 d_pwgecos='$d_pwgecos'
16972 d_pwpasswd='$d_pwpasswd'
16973 d_pwquota='$d_pwquota'
16976 d_readdir='$d_readdir'
16977 d_readlink='$d_readlink'
16979 d_recvmsg='$d_recvmsg'
16980 d_rename='$d_rename'
16981 d_rewinddir='$d_rewinddir'
16983 d_safebcpy='$d_safebcpy'
16984 d_safemcpy='$d_safemcpy'
16985 d_sanemcmp='$d_sanemcmp'
16986 d_sbrkproto='$d_sbrkproto'
16987 d_sched_yield='$d_sched_yield'
16988 d_scm_rights='$d_scm_rights'
16989 d_seekdir='$d_seekdir'
16990 d_select='$d_select'
16992 d_semctl='$d_semctl'
16993 d_semctl_semid_ds='$d_semctl_semid_ds'
16994 d_semctl_semun='$d_semctl_semun'
16995 d_semget='$d_semget'
16997 d_sendmsg='$d_sendmsg'
16998 d_setegid='$d_setegid'
16999 d_seteuid='$d_seteuid'
17000 d_setgrent='$d_setgrent'
17001 d_setgrps='$d_setgrps'
17002 d_sethent='$d_sethent'
17003 d_setitimer='$d_setitimer'
17004 d_setlinebuf='$d_setlinebuf'
17005 d_setlocale='$d_setlocale'
17006 d_setnent='$d_setnent'
17007 d_setpent='$d_setpent'
17008 d_setpgid='$d_setpgid'
17009 d_setpgrp2='$d_setpgrp2'
17010 d_setpgrp='$d_setpgrp'
17011 d_setprior='$d_setprior'
17012 d_setproctitle='$d_setproctitle'
17013 d_setpwent='$d_setpwent'
17014 d_setregid='$d_setregid'
17015 d_setresgid='$d_setresgid'
17016 d_setresuid='$d_setresuid'
17017 d_setreuid='$d_setreuid'
17018 d_setrgid='$d_setrgid'
17019 d_setruid='$d_setruid'
17020 d_setsent='$d_setsent'
17021 d_setsid='$d_setsid'
17022 d_setvbuf='$d_setvbuf'
17026 d_shmatprototype='$d_shmatprototype'
17027 d_shmctl='$d_shmctl'
17029 d_shmget='$d_shmget'
17030 d_sigaction='$d_sigaction'
17031 d_sigprocmask='$d_sigprocmask'
17032 d_sigsetjmp='$d_sigsetjmp'
17033 d_sockatmark='$d_sockatmark'
17034 d_sockatmarkproto='$d_sockatmarkproto'
17035 d_socket='$d_socket'
17036 d_socklen_t='$d_socklen_t'
17037 d_sockpair='$d_sockpair'
17038 d_socks5_init='$d_socks5_init'
17040 d_sresgproto='$d_sresgproto'
17041 d_sresuproto='$d_sresuproto'
17042 d_statblks='$d_statblks'
17043 d_statfs_f_flags='$d_statfs_f_flags'
17044 d_statfs_s='$d_statfs_s'
17045 d_statvfs='$d_statvfs'
17046 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17047 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17048 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17049 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17050 d_stdio_stream_array='$d_stdio_stream_array'
17051 d_stdiobase='$d_stdiobase'
17052 d_stdstdio='$d_stdstdio'
17053 d_strchr='$d_strchr'
17054 d_strcoll='$d_strcoll'
17055 d_strctcpy='$d_strctcpy'
17056 d_strerrm='$d_strerrm'
17057 d_strerror='$d_strerror'
17058 d_strftime='$d_strftime'
17059 d_strtod='$d_strtod'
17060 d_strtol='$d_strtol'
17061 d_strtold='$d_strtold'
17062 d_strtoll='$d_strtoll'
17063 d_strtoq='$d_strtoq'
17064 d_strtoul='$d_strtoul'
17065 d_strtoull='$d_strtoull'
17066 d_strtouq='$d_strtouq'
17067 d_strxfrm='$d_strxfrm'
17068 d_suidsafe='$d_suidsafe'
17069 d_symlink='$d_symlink'
17070 d_syscall='$d_syscall'
17071 d_syscallproto='$d_syscallproto'
17072 d_sysconf='$d_sysconf'
17073 d_sysernlst='$d_sysernlst'
17074 d_syserrlst='$d_syserrlst'
17075 d_system='$d_system'
17076 d_tcgetpgrp='$d_tcgetpgrp'
17077 d_tcsetpgrp='$d_tcsetpgrp'
17078 d_telldir='$d_telldir'
17079 d_telldirproto='$d_telldirproto'
17082 d_truncate='$d_truncate'
17083 d_tzname='$d_tzname'
17084 d_u32align='$d_u32align'
17085 d_ualarm='$d_ualarm'
17088 d_union_semun='$d_union_semun'
17089 d_unordered='$d_unordered'
17090 d_usleep='$d_usleep'
17091 d_usleepproto='$d_usleepproto'
17093 d_vendorarch='$d_vendorarch'
17094 d_vendorbin='$d_vendorbin'
17095 d_vendorlib='$d_vendorlib'
17097 d_void_closedir='$d_void_closedir'
17098 d_voidsig='$d_voidsig'
17099 d_voidtty='$d_voidtty'
17100 d_volatile='$d_volatile'
17101 d_vprintf='$d_vprintf'
17103 d_waitpid='$d_waitpid'
17104 d_wcstombs='$d_wcstombs'
17105 d_wctomb='$d_wctomb'
17106 d_writev='$d_writev'
17109 db_hashtype='$db_hashtype'
17110 db_prefixtype='$db_prefixtype'
17111 db_version_major='$db_version_major'
17112 db_version_minor='$db_version_minor'
17113 db_version_patch='$db_version_patch'
17114 defvoidused='$defvoidused'
17115 direntrytype='$direntrytype'
17118 doublesize='$doublesize'
17120 dynamic_ext='$dynamic_ext'
17126 eunicefix='$eunicefix'
17129 extensions='$extensions'
17131 fflushNULL='$fflushNULL'
17132 fflushall='$fflushall'
17134 firstmakefile='$firstmakefile'
17136 fpossize='$fpossize'
17137 fpostype='$fpostype'
17138 freetype='$freetype'
17141 full_csh='$full_csh'
17142 full_sed='$full_sed'
17143 gccosandvers='$gccosandvers'
17144 gccversion='$gccversion'
17145 gidformat='$gidformat'
17151 groupcat='$groupcat'
17152 groupstype='$groupstype'
17155 h_sysfile='$h_sysfile'
17166 i_arpainet='$i_arpainet'
17167 i_bsdioctl='$i_bsdioctl'
17170 i_dirent='$i_dirent'
17176 i_fp_class='$i_fp_class'
17179 i_ieeefp='$i_ieeefp'
17180 i_inttypes='$i_inttypes'
17181 i_langinfo='$i_langinfo'
17182 i_libutil='$i_libutil'
17183 i_limits='$i_limits'
17184 i_locale='$i_locale'
17185 i_machcthr='$i_machcthr'
17186 i_malloc='$i_malloc'
17188 i_memory='$i_memory'
17189 i_mntent='$i_mntent'
17192 i_neterrno='$i_neterrno'
17193 i_netinettcp='$i_netinettcp'
17197 i_pthread='$i_pthread'
17199 i_rpcsvcdbm='$i_rpcsvcdbm'
17202 i_shadow='$i_shadow'
17204 i_stdarg='$i_stdarg'
17205 i_stddef='$i_stddef'
17206 i_stdlib='$i_stdlib'
17207 i_string='$i_string'
17208 i_sunmath='$i_sunmath'
17209 i_sysaccess='$i_sysaccess'
17210 i_sysdir='$i_sysdir'
17211 i_sysfile='$i_sysfile'
17212 i_sysfilio='$i_sysfilio'
17214 i_sysioctl='$i_sysioctl'
17215 i_syslog='$i_syslog'
17216 i_sysmman='$i_sysmman'
17217 i_sysmode='$i_sysmode'
17218 i_sysmount='$i_sysmount'
17219 i_sysndir='$i_sysndir'
17220 i_sysparam='$i_sysparam'
17221 i_sysresrc='$i_sysresrc'
17222 i_syssecrt='$i_syssecrt'
17223 i_sysselct='$i_sysselct'
17224 i_syssockio='$i_syssockio'
17225 i_sysstat='$i_sysstat'
17226 i_sysstatfs='$i_sysstatfs'
17227 i_sysstatvfs='$i_sysstatvfs'
17228 i_systime='$i_systime'
17229 i_systimek='$i_systimek'
17230 i_systimes='$i_systimes'
17231 i_systypes='$i_systypes'
17232 i_sysuio='$i_sysuio'
17234 i_sysutsname='$i_sysutsname'
17235 i_sysvfs='$i_sysvfs'
17236 i_syswait='$i_syswait'
17237 i_termio='$i_termio'
17238 i_termios='$i_termios'
17240 i_unistd='$i_unistd'
17243 i_values='$i_values'
17244 i_varargs='$i_varargs'
17245 i_varhdr='$i_varhdr'
17247 ignore_versioned_solibs='$ignore_versioned_solibs'
17248 inc_version_list='$inc_version_list'
17249 inc_version_list_init='$inc_version_list_init'
17252 installarchlib='$installarchlib'
17253 installbin='$installbin'
17254 installman1dir='$installman1dir'
17255 installman3dir='$installman3dir'
17256 installprefix='$installprefix'
17257 installprefixexp='$installprefixexp'
17258 installprivlib='$installprivlib'
17259 installscript='$installscript'
17260 installsitearch='$installsitearch'
17261 installsitebin='$installsitebin'
17262 installsitelib='$installsitelib'
17263 installstyle='$installstyle'
17264 installusrbinperl='$installusrbinperl'
17265 installvendorarch='$installvendorarch'
17266 installvendorbin='$installvendorbin'
17267 installvendorlib='$installvendorlib'
17269 issymlink='$issymlink'
17270 ivdformat='$ivdformat'
17273 known_extensions='$known_extensions'
17276 lddlflags='$lddlflags'
17278 ldflags_uselargefiles='$ldflags_uselargefiles'
17279 ldlibpthname='$ldlibpthname'
17286 libsdirs='$libsdirs'
17287 libsfiles='$libsfiles'
17288 libsfound='$libsfound'
17289 libspath='$libspath'
17290 libswanted='$libswanted'
17291 libswanted_uselargefiles='$libswanted_uselargefiles'
17297 locincpth='$locincpth'
17298 loclibpth='$loclibpth'
17299 longdblsize='$longdblsize'
17300 longlongsize='$longlongsize'
17301 longsize='$longsize'
17305 lseeksize='$lseeksize'
17306 lseektype='$lseektype'
17310 make_set_make='$make_set_make'
17311 mallocobj='$mallocobj'
17312 mallocsrc='$mallocsrc'
17313 malloctype='$malloctype'
17315 man1direxp='$man1direxp'
17318 man3direxp='$man3direxp'
17320 mips_type='$mips_type'
17322 mmaptype='$mmaptype'
17323 modetype='$modetype'
17325 multiarch='$multiarch'
17327 myarchname='$myarchname'
17328 mydomain='$mydomain'
17329 myhostname='$myhostname'
17332 need_va_copy='$need_va_copy'
17333 netdb_hlen_type='$netdb_hlen_type'
17334 netdb_host_type='$netdb_host_type'
17335 netdb_name_type='$netdb_name_type'
17336 netdb_net_type='$netdb_net_type'
17339 nm_so_opt='$nm_so_opt'
17340 nonxs_ext='$nonxs_ext'
17342 nvEUformat='$nvEUformat'
17343 nvFUformat='$nvFUformat'
17344 nvGUformat='$nvGUformat'
17345 nveformat='$nveformat'
17346 nvfformat='$nvfformat'
17347 nvgformat='$nvgformat'
17350 o_nonblock='$o_nonblock'
17352 old_pthread_create_joinable='$old_pthread_create_joinable'
17353 optimize='$optimize'
17354 orderlib='$orderlib'
17357 otherlibdirs='$otherlibdirs'
17361 patchlevel='$patchlevel'
17362 path_sep='$path_sep'
17365 perl_patchlevel='$perl_patchlevel'
17366 perladmin='$perladmin'
17367 perllibs='$perllibs'
17368 perlpath='$perlpath'
17370 phostname='$phostname'
17373 pm_apiversion='$pm_apiversion'
17377 prefixexp='$prefixexp'
17379 privlibexp='$privlibexp'
17380 prototype='$prototype'
17382 quadkind='$quadkind'
17383 quadtype='$quadtype'
17384 randbits='$randbits'
17385 randfunc='$randfunc'
17386 randseedtype='$randseedtype'
17388 rd_nodata='$rd_nodata'
17389 revision='$revision'
17394 sPRIEUldbl='$sPRIEUldbl'
17395 sPRIFUldbl='$sPRIFUldbl'
17396 sPRIGUldbl='$sPRIGUldbl'
17397 sPRIXU64='$sPRIXU64'
17399 sPRIeldbl='$sPRIeldbl'
17400 sPRIfldbl='$sPRIfldbl'
17401 sPRIgldbl='$sPRIgldbl'
17406 sSCNfldbl='$sSCNfldbl'
17407 sched_yield='$sched_yield'
17408 scriptdir='$scriptdir'
17409 scriptdirexp='$scriptdirexp'
17411 seedfunc='$seedfunc'
17412 selectminbits='$selectminbits'
17413 selecttype='$selecttype'
17414 sendmail='$sendmail'
17417 sharpbang='$sharpbang'
17418 shmattype='$shmattype'
17419 shortsize='$shortsize'
17422 sig_count='$sig_count'
17423 sig_name='$sig_name'
17424 sig_name_init='$sig_name_init'
17426 sig_num_init='$sig_num_init'
17427 sig_size='$sig_size'
17428 signal_t='$signal_t'
17429 sitearch='$sitearch'
17430 sitearchexp='$sitearchexp'
17432 sitebinexp='$sitebinexp'
17434 sitelib_stem='$sitelib_stem'
17435 sitelibexp='$sitelibexp'
17436 siteprefix='$siteprefix'
17437 siteprefixexp='$siteprefixexp'
17438 sizesize='$sizesize'
17439 sizetype='$sizetype'
17443 sockethdr='$sockethdr'
17444 socketlib='$socketlib'
17445 socksizetype='$socksizetype'
17447 spackage='$spackage'
17448 spitshell='$spitshell'
17450 ssizetype='$ssizetype'
17451 startperl='$startperl'
17453 static_ext='$static_ext'
17455 stdio_base='$stdio_base'
17456 stdio_bufsiz='$stdio_bufsiz'
17457 stdio_cnt='$stdio_cnt'
17458 stdio_filbuf='$stdio_filbuf'
17459 stdio_ptr='$stdio_ptr'
17460 stdio_stream_array='$stdio_stream_array'
17463 subversion='$subversion'
17467 targetarch='$targetarch'
17471 timeincl='$timeincl'
17472 timetype='$timetype'
17486 uidformat='$uidformat'
17492 uquadtype='$uquadtype'
17493 use5005threads='$use5005threads'
17494 use64bitall='$use64bitall'
17495 use64bitint='$use64bitint'
17496 usecrosscompile='$usecrosscompile'
17498 useithreads='$useithreads'
17499 uselargefiles='$uselargefiles'
17500 uselongdouble='$uselongdouble'
17501 usemorebits='$usemorebits'
17502 usemultiplicity='$usemultiplicity'
17503 usemymalloc='$usemymalloc'
17505 useopcode='$useopcode'
17506 useperlio='$useperlio'
17507 useposix='$useposix'
17508 usereentrant='$usereentrant'
17510 useshrplib='$useshrplib'
17511 usesocks='$usesocks'
17512 usethreads='$usethreads'
17513 usevendorprefix='$usevendorprefix'
17514 usevfork='$usevfork'
17517 uvXUformat='$uvXUformat'
17518 uvoformat='$uvoformat'
17521 uvuformat='$uvuformat'
17522 uvxformat='$uvxformat'
17523 vendorarch='$vendorarch'
17524 vendorarchexp='$vendorarchexp'
17525 vendorbin='$vendorbin'
17526 vendorbinexp='$vendorbinexp'
17527 vendorlib='$vendorlib'
17528 vendorlib_stem='$vendorlib_stem'
17529 vendorlibexp='$vendorlibexp'
17530 vendorprefix='$vendorprefix'
17531 vendorprefixexp='$vendorprefixexp'
17533 version_patchlevel_string='$version_patchlevel_string'
17534 versiononly='$versiononly'
17536 voidflags='$voidflags'
17538 xs_apiversion='$xs_apiversion'
17540 yaccflags='$yaccflags'
17545 : Add in command line options if available
17546 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17548 : add special variables
17549 $test -f $src/patchlevel.h && \
17550 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17551 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17552 echo "PERL_CONFIG_SH=true" >>config.sh
17554 : propagate old symbols
17555 if $test -f UU/config.sh; then
17556 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17557 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17558 $sort | $uniq -u >UU/oldsyms
17559 set X `cat UU/oldsyms`
17565 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17567 echo "# Variables propagated from previous config.sh file." >>config.sh
17568 for sym in `cat UU/oldsyms`; do
17569 echo " Propagating $hint variable "'$'"$sym..."
17570 eval 'tmp="$'"${sym}"'"'
17572 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17578 : Finish up by extracting the .SH files
17582 echo "Extraction done."
17592 If you'd like to make any changes to the config.sh file before I begin
17593 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17596 rp="Press return or use a shell escape to edit config.sh:"
17601 *) : in case they cannot read
17602 sh 1>&4 -c "$ans";;
17607 : if this fails, just run all the .SH files by hand
17616 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17623 Now you need to generate make dependencies by running "$make depend".
17624 You might prefer to run it in background: "$make depend > makedepend.out &"
17625 It can take a while, so you might not want to run it right now.
17630 rp="Run $make depend now?"
17634 $make depend && echo "Now you must run '$make'."
17637 echo "You must run '$make depend' then '$make'."
17640 elif test -f [Mm]akefile; then
17642 echo "Now you must run a $make."
17644 echo "Configure done."
17647 if $test -f Policy.sh; then
17650 If you compile $package on a different machine or from a different object
17651 directory, copy the Policy.sh file from this object directory to the
17652 new one before you run Configure -- this will help you with most of
17653 the policy defaults.
17657 if $test -f config.msg; then
17658 echo "Hmm. I also noted the following information while running:"
17660 $cat config.msg >&4
17663 $rm -f kit*isdone ark*isdone