3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Wed Nov 21 19:00:54 EET 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
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
491 d_old_pthread_create_joinable=''
492 old_pthread_create_joinable=''
580 d_stdio_ptr_lval_nochange_cnt=''
581 d_stdio_ptr_lval_sets_cnt=''
766 inc_version_list_init=''
785 ignore_versioned_solibs=''
844 d_perl_otherlibdirs=''
858 version_patchlevel_string=''
863 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
1037 : set useposix=false in your hint file to disable the POSIX extension.
1039 : set useopcode=false in your hint file to disable the Opcode extension.
1041 : Trailing extension. Override this in a hint file, if needed.
1043 : Extra object files, if any, needed on this platform.
1046 : Possible local include directories to search.
1047 : Set locincpth to "" in a hint file to defeat local include searches.
1048 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1049 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1051 : no include file wanted by default
1056 : change the next line if compiling for Xenix/286 on Xenix/386
1057 xlibpth='/usr/lib/386 /lib/386'
1058 : Possible local library directories to search.
1059 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1060 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1062 : general looking path for locating libraries
1063 glibpth="/lib /usr/lib $xlibpth"
1064 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1065 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1066 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1068 : Private path used by Configure to find libraries. Its value
1069 : is prepended to libpth. This variable takes care of special
1070 : machines, like the mips. Usually, it should be empty.
1073 : default library list
1075 : some systems want to use only the non-versioned libso:s
1076 ignore_versioned_solibs=''
1078 ccflags_uselargefiles=''
1079 ldflags_uselargefiles=''
1080 libswanted_uselargefiles=''
1081 : set usemultiplicity on the Configure command line to enable multiplicity.
1082 : set usesocks on the Configure command line to enable socks.
1083 : set usethreads on the Configure command line to enable threads.
1084 usereentrant='undef'
1085 : full support for void wanted by default
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 case "$d_readlink" in
11437 if $issymlink /proc/self/exe ; then
11438 $ls -l /proc/self/exe > reflect
11439 if $contains $ls reflect >/dev/null 2>&1; then
11441 echo "You have Linux-like /proc/self/exe."
11450 : see if pthread_atfork exists
11451 set pthread_atfork d_pthread_atfork
11455 : see whether the various POSIXish _yields exist
11457 #include <pthread.h>
11463 #ifdef PTHREAD_YIELD
11466 #ifdef PTHREAD_YIELD_NULL
11467 pthread_yield(NULL);
11473 : see if sched_yield exists
11474 set try -DSCHED_YIELD
11475 if eval $compile; then
11477 sched_yield='sched_yield()'
11481 case "$usethreads" in
11484 $define) echo 'sched_yield() found.' >&4 ;;
11485 *) echo 'sched_yield() NOT found.' >&4 ;;
11491 : see if pthread_yield exists
11492 set try -DPTHREAD_YIELD
11493 if eval $compile; then
11495 case "$sched_yield" in
11496 '') sched_yield='pthread_yield()' ;;
11499 set try -DPTHREAD_YIELD_NULL
11500 if eval $compile; then
11502 case "$sched_yield" in
11503 '') sched_yield='pthread_yield(NULL)' ;;
11509 case "$usethreads" in
11512 $define) echo 'pthread_yield() found.' >&4 ;;
11513 *) echo 'pthread_yield() NOT found.' >&4 ;;
11517 set d_pthread_yield
11520 case "$sched_yield" in
11521 '') sched_yield=undef ;;
11526 : see if this is a pwd.h system
11532 xxx=`./findhdr pwd.h`
11533 $cppstdin $cppflags $cppminus < $xxx >$$.h
11535 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11543 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11551 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11559 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11567 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11575 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11583 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11591 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11603 set d_pwquota; eval $setvar
11604 set d_pwage; eval $setvar
11605 set d_pwchange; eval $setvar
11606 set d_pwclass; eval $setvar
11607 set d_pwexpire; eval $setvar
11608 set d_pwcomment; eval $setvar
11609 set d_pwgecos; eval $setvar
11610 set d_pwpasswd; eval $setvar
11614 : see if readdir and friends exist
11615 set readdir d_readdir
11617 set seekdir d_seekdir
11619 set telldir d_telldir
11621 set rewinddir d_rewinddir
11624 : see if readv exists
11628 : see if recvmsg exists
11629 set recvmsg d_recvmsg
11632 : see if rename exists
11633 set rename d_rename
11636 : see if rmdir exists
11640 : see if memory.h is available.
11645 : See if it conflicts with string.h
11651 $cppstdin $cppflags $cppminus < $strings > mem.h
11652 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11654 echo "We won't be including <memory.h>."
11664 : can bcopy handle overlapping blocks?
11667 case "$d_memmove" in
11668 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11669 *) case "$d_bcopy" in
11671 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11673 #$i_memory I_MEMORY
11674 #$i_stdlib I_STDLIB
11675 #$i_string I_STRING
11676 #$i_unistd I_UNISTD
11678 $cat >>try.c <<'EOCP'
11681 # include <memory.h>
11684 # include <stdlib.h>
11687 # include <string.h>
11689 # include <strings.h>
11692 # include <unistd.h> /* Needed for NetBSD */
11696 char buf[128], abc[128];
11702 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11703 try to store the string in read-only memory. */
11704 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11706 for (align = 7; align >= 0; align--) {
11707 for (len = 36; len; len--) {
11709 bcopy(abc, b, len);
11710 for (off = 1; off <= len; off++) {
11711 bcopy(b, b+off, len);
11712 bcopy(b+off, b, len);
11713 if (bcmp(b, abc, len))
11722 if eval $compile_ok; then
11723 if ./try 2>/dev/null; then
11724 echo "Yes, it can."
11727 echo "It can't, sorry."
11730 echo "(I can't compile the test program, so we'll assume not...)"
11734 $rm -f try.* try core
11740 : can memcpy handle overlapping blocks?
11743 case "$d_memmove" in
11744 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11745 *) case "$d_memcpy" in
11747 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11749 #$i_memory I_MEMORY
11750 #$i_stdlib I_STDLIB
11751 #$i_string I_STRING
11752 #$i_unistd I_UNISTD
11754 $cat >>try.c <<'EOCP'
11757 # include <memory.h>
11760 # include <stdlib.h>
11763 # include <string.h>
11765 # include <strings.h>
11768 # include <unistd.h> /* Needed for NetBSD */
11772 char buf[128], abc[128];
11778 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11779 try to store the string in read-only memory. */
11780 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11782 for (align = 7; align >= 0; align--) {
11783 for (len = 36; len; len--) {
11785 memcpy(b, abc, len);
11786 for (off = 1; off <= len; off++) {
11787 memcpy(b+off, b, len);
11788 memcpy(b, b+off, len);
11789 if (memcmp(b, abc, len))
11798 if eval $compile_ok; then
11799 if ./try 2>/dev/null; then
11800 echo "Yes, it can."
11803 echo "It can't, sorry."
11806 echo "(I can't compile the test program, so we'll assume not...)"
11810 $rm -f try.* try core
11816 : can memcmp be trusted to compare relative magnitude?
11818 case "$d_memcmp" in
11821 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11823 #$i_memory I_MEMORY
11824 #$i_stdlib I_STDLIB
11825 #$i_string I_STRING
11826 #$i_unistd I_UNISTD
11828 $cat >>try.c <<'EOCP'
11831 # include <memory.h>
11834 # include <stdlib.h>
11837 # include <string.h>
11839 # include <strings.h>
11842 # include <unistd.h> /* Needed for NetBSD */
11848 if ((a < b) && memcmp(&a, &b, 1) < 0)
11854 if eval $compile_ok; then
11855 if $run ./try 2>/dev/null; then
11856 echo "Yes, it can."
11859 echo "No, it can't (it uses signed chars)."
11862 echo "(I can't compile the test program, so we'll assume not...)"
11866 $rm -f try.* try core
11870 : see if prototype for sbrk is available
11872 set d_sbrkproto sbrk $i_unistd unistd.h
11875 : see if select exists
11876 set select d_select
11879 : see if semctl exists
11880 set semctl d_semctl
11883 : see if semget exists
11884 set semget d_semget
11887 : see if semop exists
11891 : see how much of the 'sem*(2)' library is present.
11894 case "$d_semctl$d_semget$d_semop" in
11895 *"$undef"*) h_sem=false;;
11899 case "`ipcs 2>&1`" in
11900 "SVID messages"*"not configured"*)
11901 echo "Your $osname does not have the sem*(2) configured." >&4
11904 set semctl d_semctl
11906 set semget d_semget
11914 : we could also check for sys/ipc.h ...
11915 if $h_sem && $test `./findhdr sys/sem.h`; then
11916 echo "You have the full sem*(2) library." >&4
11919 echo "You don't have the full sem*(2) library." >&4
11925 : see whether sys/sem.h defines union semun
11927 $cat > try.c <<'END'
11928 #include <sys/types.h>
11929 #include <sys/ipc.h>
11930 #include <sys/sem.h>
11931 int main () { union semun semun; semun.buf = 0; }
11934 if eval $compile; then
11935 echo "You have union semun in <sys/sem.h>." >&4
11938 echo "You do not have union semun in <sys/sem.h>." >&4
11941 $rm -f try try.c try.h
11945 : see how to do semctl IPC_STAT
11948 : see whether semctl IPC_STAT can use union semun
11953 # define S_IRUSR S_IREAD
11954 # define S_IWUSR S_IWRITE
11955 # define S_IXUSR S_IEXEC
11957 # define S_IRUSR 0400
11958 # define S_IWUSR 0200
11959 # define S_IXUSR 0100
11961 # define S_IRGRP (S_IRUSR>>3)
11962 # define S_IWGRP (S_IWUSR>>3)
11963 # define S_IXGRP (S_IXUSR>>3)
11964 # define S_IROTH (S_IRUSR>>6)
11965 # define S_IWOTH (S_IWUSR>>6)
11966 # define S_IXOTH (S_IXUSR>>6)
11969 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11970 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11971 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11976 #include <sys/types.h>
11977 #include <sys/ipc.h>
11978 #include <sys/sem.h>
11979 #include <sys/stat.h>
11986 #$d_union_semun HAS_UNION_SEMUN
11989 #ifndef HAS_UNION_SEMUN
11992 struct semid_ds *buf;
11993 unsigned short *array;
11999 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12000 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12002 struct semid_ds argbuf;
12005 st = semctl(sem, 0, IPC_STAT, arg);
12009 # endif /* IPC_STAT */
12010 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12012 if (semctl(sem, 0, IPC_RMID, arg) != 0)
12013 # endif /* IPC_RMID */
12014 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12016 #endif /* IPC_PRIVATE && ... */
12017 printf("semget failed: errno = %d\n", errno);
12023 if eval $compile; then
12026 semun) val="$define" ;;
12032 case "$d_semctl_semun" in
12034 echo "You can use union semun for semctl IPC_STAT." >&4
12037 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
12042 : see whether semctl IPC_STAT can use struct semid_ds pointer
12043 $cat > try.c <<'END'
12044 #include <sys/types.h>
12045 #include <sys/ipc.h>
12046 #include <sys/sem.h>
12047 #include <sys/stat.h>
12055 struct semid_ds arg;
12058 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12059 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12062 st = semctl(sem, 0, IPC_STAT, &arg);
12064 printf("semid_ds\n");
12066 # endif /* IPC_STAT */
12067 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12069 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12070 # endif /* IPC_RMID */
12071 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12073 #endif /* IPC_PRIVATE && ... */
12074 printf("semget failed: errno = %d\n", errno);
12081 if eval $compile; then
12084 semid_ds) val="$define" ;;
12088 set d_semctl_semid_ds
12090 case "$d_semctl_semid_ds" in
12092 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12094 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12101 # We do not have the full sem*(2) library, so assume we can not
12107 set d_semctl_semid_ds
12112 : see if sendmsg exists
12113 set sendmsg d_sendmsg
12116 : see if setegid exists
12117 set setegid d_setegid
12120 : see if seteuid exists
12121 set seteuid d_seteuid
12124 : see if setgrent exists
12125 set setgrent d_setgrent
12128 : see if sethostent exists
12129 set sethostent d_sethent
12132 : see if setitimer exists
12133 set setitimer d_setitimer
12136 : see if setlinebuf exists
12137 set setlinebuf d_setlinebuf
12140 : see if setlocale exists
12141 set setlocale d_setlocale
12144 : see if setnetent exists
12145 set setnetent d_setnent
12148 : see if setprotoent exists
12149 set setprotoent d_setpent
12152 : see if setpgid exists
12153 set setpgid d_setpgid
12156 : see if setpgrp2 exists
12157 set setpgrp2 d_setpgrp2
12160 : see if setpriority exists
12161 set setpriority d_setprior
12164 : see if setproctitle exists
12165 set setproctitle d_setproctitle
12168 : see if setpwent exists
12169 set setpwent d_setpwent
12172 : see if setregid exists
12173 set setregid d_setregid
12175 set setresgid d_setresgid
12178 : see if setreuid exists
12179 set setreuid d_setreuid
12181 set setresuid d_setresuid
12184 : see if setrgid exists
12185 set setrgid d_setrgid
12188 : see if setruid exists
12189 set setruid d_setruid
12192 : see if setservent exists
12193 set setservent d_setsent
12196 : see if setsid exists
12197 set setsid d_setsid
12200 : see if setvbuf exists
12201 set setvbuf d_setvbuf
12204 : see if sfio.h is available
12209 : see if sfio library is available
12220 : Ok, but do we want to use it.
12224 true|$define|[yY]*) dflt='y';;
12227 echo "$package can use the sfio library, but it is experimental."
12228 case "$useperlio" in
12230 echo "For sfio also the PerlIO abstraction layer is needed."
12231 echo "Earlier you said you wouldn't want that."
12234 rp="You seem to have sfio available, do you want to try using it?"
12237 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12238 useperlio="$define"
12241 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12246 *) case "$usesfio" in
12247 true|$define|[yY]*)
12248 echo "Sorry, cannot find sfio on this machine." >&4
12249 echo "Ignoring your setting of usesfio=$usesfio." >&4
12258 $define) usesfio='true';;
12259 *) usesfio='false';;
12263 *) : Remove sfio from list of libraries to use
12266 echo "Removing unneeded -lsfio from library list" >&4
12267 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12270 echo "libs = $libs" >&4
12277 : see if shmctl exists
12278 set shmctl d_shmctl
12281 : see if shmget exists
12282 set shmget d_shmget
12285 : see if shmat exists
12288 : see what shmat returns
12291 $cat >shmat.c <<'END'
12292 #include <sys/shm.h>
12295 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12300 echo "and it returns ($shmattype)." >&4
12301 : see if a prototype for shmat is available
12302 xxx=`./findhdr sys/shm.h`
12303 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12304 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12315 set d_shmatprototype
12318 : see if shmdt exists
12322 : see how much of the 'shm*(2)' library is present.
12325 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12326 *"$undef"*) h_shm=false;;
12330 case "`ipcs 2>&1`" in
12331 "SVID shared memory"*"not configured"*)
12332 echo "Your $osname does not have the shm*(2) configured." >&4
12335 set shmctl d_shmctl
12337 set shmget d_shmget
12347 : we could also check for sys/ipc.h ...
12348 if $h_shm && $test `./findhdr sys/shm.h`; then
12349 echo "You have the full shm*(2) library." >&4
12352 echo "You don't have the full shm*(2) library." >&4
12359 : see if we have sigaction
12360 if set sigaction val -f d_sigaction; eval $csym; $val; then
12361 echo 'sigaction() found.' >&4
12362 $cat > try.c <<'EOP'
12364 #include <sys/types.h>
12365 #include <signal.h>
12368 struct sigaction act, oact;
12370 oact.sa_handler = 0;
12371 /* so that act and oact are used */
12372 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12376 if eval $compile_ok; then
12379 echo "But you don't seem to have a useable struct sigaction." >&4
12383 echo 'sigaction NOT found.' >&4
12386 set d_sigaction; eval $setvar
12387 $rm -f try try$_o try.c
12389 : see if sigprocmask exists
12390 set sigprocmask d_sigprocmask
12393 : see if sigsetjmp exists
12395 case "$d_sigsetjmp" in
12397 $cat >try.c <<'EOP'
12398 #include <setjmp.h>
12403 if (sigsetjmp(env,1))
12406 siglongjmp(env, 1);
12411 if eval $compile; then
12412 if $run ./try >/dev/null 2>&1; then
12413 echo "POSIX sigsetjmp found." >&4
12417 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12423 echo "sigsetjmp not found." >&4
12427 *) val="$d_sigsetjmp"
12428 case "$d_sigsetjmp" in
12429 $define) echo "POSIX sigsetjmp found." >&4;;
12430 $undef) echo "sigsetjmp not found." >&4;;
12438 : see if sockatmark exists
12439 set sockatmark d_sockatmark
12442 : see if prototype for sockatmark is available
12444 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12447 : see if socks5_init exists
12448 set socks5_init d_socks5_init
12451 : see if prototype for setresgid is available
12453 set d_sresgproto setresgid $i_unistd unistd.h
12456 : see if prototype for setresuid is available
12458 set d_sresuproto setresuid $i_unistd unistd.h
12461 : see if sys/stat.h is available
12462 set sys/stat.h i_sysstat
12466 : see if stat knows about block sizes
12468 echo "Checking to see if your struct stat has st_blocks field..." >&4
12469 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12473 : see if this is a sys/vfs.h system
12474 set sys/vfs.h i_sysvfs
12478 : see if this is a sys/statfs.h system
12479 set sys/statfs.h i_sysstatfs
12484 echo "Checking to see if your system supports struct statfs..." >&4
12485 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
12487 case "$d_statfs_s" in
12488 "$define") echo "Yes, it does." ;;
12489 *) echo "No, it doesn't." ;;
12494 : see if struct statfs knows about f_flags
12495 case "$d_statfs_s" in
12498 echo "Checking to see if your struct statfs has f_flags field..." >&4
12499 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
12503 set d_statfs_f_flags
12507 case "$d_statfs_f_flags" in
12508 "$define") echo "Yes, it does." ;;
12509 *) echo "No, it doesn't." ;;
12512 : see if _ptr and _cnt from stdio act std
12515 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12516 echo "(Looks like you have stdio.h from BSD.)"
12517 case "$stdio_ptr" in
12518 '') stdio_ptr='((fp)->_p)'
12521 *) ptr_lval=$d_stdio_ptr_lval;;
12523 case "$stdio_cnt" in
12524 '') stdio_cnt='((fp)->_r)'
12527 *) cnt_lval=$d_stdio_cnt_lval;;
12529 case "$stdio_base" in
12530 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12532 case "$stdio_bufsiz" in
12533 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12535 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12536 echo "(Looks like you have stdio.h from Linux.)"
12537 case "$stdio_ptr" in
12538 '') stdio_ptr='((fp)->_IO_read_ptr)'
12541 *) ptr_lval=$d_stdio_ptr_lval;;
12543 case "$stdio_cnt" in
12544 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12547 *) cnt_lval=$d_stdio_cnt_lval;;
12549 case "$stdio_base" in
12550 '') stdio_base='((fp)->_IO_read_base)';;
12552 case "$stdio_bufsiz" in
12553 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12556 case "$stdio_ptr" in
12557 '') stdio_ptr='((fp)->_ptr)'
12560 *) ptr_lval=$d_stdio_ptr_lval;;
12562 case "$stdio_cnt" in
12563 '') stdio_cnt='((fp)->_cnt)'
12566 *) cnt_lval=$d_stdio_cnt_lval;;
12568 case "$stdio_base" in
12569 '') stdio_base='((fp)->_base)';;
12571 case "$stdio_bufsiz" in
12572 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12576 : test whether _ptr and _cnt really work
12577 echo "Checking how std your stdio is..." >&4
12580 #define FILE_ptr(fp) $stdio_ptr
12581 #define FILE_cnt(fp) $stdio_cnt
12583 FILE *fp = fopen("try.c", "r");
12586 18 <= FILE_cnt(fp) &&
12587 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12595 if eval $compile && $to try.c; then
12596 if $run ./try; then
12597 echo "Your stdio acts pretty std."
12600 echo "Your stdio isn't very std."
12603 echo "Your stdio doesn't appear very std."
12609 : Can _ptr be used as an lvalue?
12610 case "$d_stdstdio$ptr_lval" in
12611 $define$define) val=$define ;;
12614 set d_stdio_ptr_lval
12617 : Can _cnt be used as an lvalue?
12618 case "$d_stdstdio$cnt_lval" in
12619 $define$define) val=$define ;;
12622 set d_stdio_cnt_lval
12626 : test whether setting _ptr sets _cnt as a side effect
12627 d_stdio_ptr_lval_sets_cnt="$undef"
12628 d_stdio_ptr_lval_nochange_cnt="$undef"
12629 case "$d_stdio_ptr_lval$d_stdstdio" in
12631 echo "Checking to see what happens if we set the stdio ptr..." >&4
12634 /* Can we scream? */
12635 /* Eat dust sed :-) */
12636 /* In the buffer space, no one can hear you scream. */
12637 #define FILE_ptr(fp) $stdio_ptr
12638 #define FILE_cnt(fp) $stdio_cnt
12639 #include <sys/types.h>
12641 FILE *fp = fopen("try.c", "r");
12646 puts("Fail even to read");
12649 c = getc(fp); /* Read away the first # */
12651 puts("Fail even to read");
12655 18 <= FILE_cnt(fp) &&
12656 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12658 puts("Fail even to read");
12661 ptr = (char*) FILE_ptr(fp);
12662 cnt = (size_t)FILE_cnt(fp);
12664 FILE_ptr(fp) += 42;
12666 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12667 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12670 if (FILE_cnt(fp) <= 20) {
12671 printf ("Fail (<20 chars to test)");
12674 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12675 puts("Fail compare");
12678 if (cnt == FILE_cnt(fp)) {
12679 puts("Pass_unchanged");
12682 if (FILE_cnt(fp) == (cnt - 42)) {
12683 puts("Pass_changed");
12686 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12692 if eval $compile && $to try.c; then
12693 case `$run ./try` in
12695 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12696 d_stdio_ptr_lval_sets_cnt="$define" ;;
12698 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12699 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12701 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12703 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12706 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12712 : see if _base is also standard
12714 case "$d_stdstdio" in
12718 #define FILE_base(fp) $stdio_base
12719 #define FILE_bufsiz(fp) $stdio_bufsiz
12721 FILE *fp = fopen("try.c", "r");
12724 19 <= FILE_bufsiz(fp) &&
12725 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12732 if eval $compile && $to try.c; then
12733 if $run ./try; then
12734 echo "And its _base field acts std."
12737 echo "But its _base field isn't std."
12740 echo "However, it seems to be lacking the _base field."
12749 Checking how to access stdio streams by file descriptor number...
12751 case "$stdio_stream_array" in
12752 '') $cat >try.c <<EOCP
12755 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12759 for s in _iob __iob __sF
12761 set try -DSTDIO_STREAM_ARRAY=$s
12762 if eval $compile; then
12763 case "`$run ./try`" in
12764 yes) stdio_stream_array=$s; break ;;
12768 $rm -f try.* try$exe_ext
12770 case "$stdio_stream_array" in
12772 I can't figure out how to access stdio streams by file descriptor number.
12774 d_stdio_stream_array="$undef"
12777 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12779 d_stdio_stream_array="$define"
12783 : see if strcoll exists
12784 set strcoll d_strcoll
12787 : check for structure copying
12789 echo "Checking to see if your C compiler can copy structs..." >&4
12790 $cat >try.c <<'EOCP'
12800 if $cc -c try.c >/dev/null 2>&1 ; then
12802 echo "Yup, it can."
12805 echo "Nope, it can't."
12811 : see if strerror and/or sys_errlist[] exist
12813 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12814 if set strerror val -f d_strerror; eval $csym; $val; then
12815 echo 'strerror() found.' >&4
12816 d_strerror="$define"
12817 d_strerrm='strerror(e)'
12818 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12819 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12820 d_syserrlst="$define"
12822 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12823 d_syserrlst="$undef"
12825 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12826 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12827 echo 'strerror() found in string header.' >&4
12828 d_strerror="$define"
12829 d_strerrm='strerror(e)'
12830 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12831 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12832 d_syserrlst="$define"
12834 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12835 d_syserrlst="$undef"
12837 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12838 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12839 d_strerror="$undef"
12840 d_syserrlst="$define"
12841 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12843 echo 'strerror() and sys_errlist[] NOT found.' >&4
12844 d_strerror="$undef"
12845 d_syserrlst="$undef"
12846 d_strerrm='"unknown"'
12850 : see if strftime exists
12851 set strftime d_strftime
12854 : see if strtod exists
12855 set strtod d_strtod
12858 : see if strtol exists
12859 set strtol d_strtol
12862 : see if strtold exists
12863 set strtold d_strtold
12866 : see if strtoll exists
12867 set strtoll d_strtoll
12870 case "$d_longlong-$d_strtoll" in
12873 Checking whether your strtoll() works okay...
12875 $cat >try.c <<'EOCP'
12878 #define strtoll __strtoll
12881 #define strtoll _strtoll
12884 extern long long int strtoll(char *s, char **, int);
12885 static int bad = 0;
12886 int check(char *s, long long ell, int een) {
12889 gll = strtoll(s, 0, 10);
12890 if (!((gll == ell) && (errno == een)))
12894 check(" 1", 1LL, 0);
12895 check(" 0", 0LL, 0);
12896 check("-1", -1LL, 0);
12897 check("-9223372036854775808", -9223372036854775808LL, 0);
12898 check("-9223372036854775808", -9223372036854775808LL, 0);
12899 check(" 9223372036854775807", 9223372036854775807LL, 0);
12900 check("-9223372036854775808", -9223372036854775808LL, 0);
12901 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12902 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12908 if eval $compile; then
12911 ok) echo "Your strtoll() seems to be working okay." ;;
12913 Your strtoll() doesn't seem to be working okay.
12919 echo "(I can't seem to compile the test program--assuming it doesn't)"
12925 : see if strtoq exists
12926 set strtoq d_strtoq
12929 : see if strtoul exists
12930 set strtoul d_strtoul
12933 case "$d_strtoul" in
12936 Checking whether your strtoul() works okay...
12938 $cat >try.c <<'EOCP'
12941 extern unsigned long int strtoul(char *s, char **, int);
12942 static int bad = 0;
12943 void check(char *s, unsigned long eul, int een) {
12946 gul = strtoul(s, 0, 10);
12947 if (!((gul == eul) && (errno == een)))
12951 check(" 1", 1L, 0);
12952 check(" 0", 0L, 0);
12954 case "$longsize" in
12956 $cat >>try.c <<'EOCP'
12957 check("18446744073709551615", 18446744073709551615UL, 0);
12958 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12959 #if 0 /* strtoul() for /^-/ strings is undefined. */
12960 check("-1", 18446744073709551615UL, 0);
12961 check("-18446744073709551614", 2, 0);
12962 check("-18446744073709551615", 1, 0);
12963 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12964 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12969 $cat >>try.c <<'EOCP'
12970 check("4294967295", 4294967295UL, 0);
12971 check("4294967296", 4294967295UL, ERANGE);
12972 #if 0 /* strtoul() for /^-/ strings is undefined. */
12973 check("-1", 4294967295UL, 0);
12974 check("-4294967294", 2, 0);
12975 check("-4294967295", 1, 0);
12976 check("-4294967296", 4294967295UL, ERANGE);
12977 check("-4294967297", 4294967295UL, ERANGE);
12982 : Should we write these tests to be more portable by sprintf-ing
12983 : ~0 and then manipulating that char string as input for strtol?
12986 $cat >>try.c <<'EOCP'
12993 if eval $compile; then
12994 case "`$run ./try`" in
12995 ok) echo "Your strtoul() seems to be working okay." ;;
12997 Your strtoul() doesn't seem to be working okay.
13006 : see if strtoull exists
13007 set strtoull d_strtoull
13010 case "$d_longlong-$d_strtoull" in
13013 Checking whether your strtoull() works okay...
13015 $cat >try.c <<'EOCP'
13018 #define strtoull __strtoull
13021 extern unsigned long long int strtoull(char *s, char **, int);
13022 static int bad = 0;
13023 int check(char *s, long long eull, int een) {
13026 gull = strtoull(s, 0, 10);
13027 if (!((gull == eull) && (errno == een)))
13031 check(" 1", 1LL, 0);
13032 check(" 0", 0LL, 0);
13033 check("18446744073709551615", 18446744073709551615ULL, 0);
13034 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
13035 #if 0 /* strtoull() for /^-/ strings is undefined. */
13036 check("-1", 18446744073709551615ULL, 0);
13037 check("-18446744073709551614", 2LL, 0);
13038 check("-18446744073709551615", 1LL, 0);
13039 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13040 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13047 if eval $compile; then
13048 case "`$run ./try`" in
13049 ok) echo "Your strtoull() seems to be working okay." ;;
13051 Your strtoull() doesn't seem to be working okay.
13053 d_strtoull="$undef"
13060 : see if strtouq exists
13061 set strtouq d_strtouq
13064 case "$d_strtouq" in
13067 Checking whether your strtouq() works okay...
13069 $cat >try.c <<'EOCP'
13072 extern unsigned long long int strtouq(char *s, char **, int);
13073 static int bad = 0;
13074 void check(char *s, unsigned long long eull, int een) {
13075 unsigned long long gull;
13077 gull = strtouq(s, 0, 10);
13078 if (!((gull == eull) && (errno == een)))
13082 check(" 1", 1LL, 0);
13083 check(" 0", 0LL, 0);
13084 check("18446744073709551615", 18446744073709551615ULL, 0);
13085 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
13086 #if 0 /* strtouq() for /^-/ strings is undefined. */
13087 check("-1", 18446744073709551615ULL, 0);
13088 check("-18446744073709551614", 2LL, 0);
13089 check("-18446744073709551615", 1LL, 0);
13090 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13091 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13099 if eval $compile; then
13100 case "`$run ./try`" in
13101 ok) echo "Your strtouq() seems to be working okay." ;;
13103 Your strtouq() doesn't seem to be working okay.
13112 : see if strxfrm exists
13113 set strxfrm d_strxfrm
13116 : see if symlink exists
13117 set symlink d_symlink
13120 : see if syscall exists
13121 set syscall d_syscall
13124 : see if prototype for syscall is available
13126 set d_syscallproto syscall $i_unistd unistd.h
13129 : see if sysconf exists
13130 set sysconf d_sysconf
13133 : see if system exists
13134 set system d_system
13137 : see if tcgetpgrp exists
13138 set tcgetpgrp d_tcgetpgrp
13141 : see if tcsetpgrp exists
13142 set tcsetpgrp d_tcsetpgrp
13145 : see if prototype for telldir is available
13147 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13150 : see if this is a sys/times.h system
13151 set sys/times.h i_systimes
13154 : see if times exists
13156 if set times val -f d_times; eval $csym; $val; then
13157 echo 'times() found.' >&4
13160 case "$i_systimes" in
13161 "$define") inc='sys/times.h';;
13163 rp="What is the type returned by times() on this system?"
13164 set clock_t clocktype long stdio.h sys/types.h $inc
13167 echo 'times() NOT found, hope that will do.' >&4
13172 : see if truncate exists
13173 set truncate d_truncate
13176 : see if tzname[] exists
13178 if set tzname val -a d_tzname; eval $csym; $val; then
13180 echo 'tzname[] found.' >&4
13183 echo 'tzname[] NOT found.' >&4
13189 next|rhapsody|darwin) multiarch="$define" ;;
13191 case "$multiarch" in
13192 ''|[nN]*) multiarch="$undef" ;;
13195 : check for ordering of bytes in a long
13197 case "$usecrosscompile$multiarch" in
13200 You seem to be either cross-compiling or doing a multiarchitecture build,
13201 skipping the byteorder check.
13207 case "$byteorder" in
13210 In the following, larger digits indicate more significance. A big-endian
13211 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13212 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13213 machines may have weird orders like 3412. A Cray will report 87654321,
13214 an Alpha will report 12345678. If the test program works the default is
13216 I'm now running the test program...
13218 $cat >try.c <<'EOCP'
13225 char c[sizeof(long)];
13228 if (sizeof(long) > 4)
13229 u.l = (0x08070605L << 32) | 0x04030201L;
13232 for (i = 0; i < sizeof(long); i++)
13233 printf("%c", u.c[i]+'0');
13240 if eval $compile && ./try > /dev/null; then
13243 [1-4][1-4][1-4][1-4]|12345678|87654321)
13244 echo "(The test program ran ok.)"
13245 echo "byteorder=$dflt"
13248 ????|????????) echo "(The test program ran ok.)" ;;
13249 *) echo "(The test program didn't run right for some reason.)" ;;
13254 (I can't seem to compile the test program. Guessing big-endian...)
13257 case "$xxx_prompt" in
13259 rp="What is the order of bytes in a long?"
13275 Checking to see whether you can access character data unalignedly...
13279 #define U32 $u32type
13280 #define BYTEORDER $byteorder
13282 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13283 U8 buf[] = "\0\0\0\1\0\0\0\0";
13287 if (sizeof(U32) != 4) {
13288 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13294 for (i = 0; i < 4; i++) {
13295 up = (U32*)(buf + i);
13296 if (! ((*up == 1 << (8*i)) || /* big-endian */
13297 (*up == 1 << (8*(3-i))) /* little-endian */
13301 printf("read failed (%x)\n", *up);
13307 for (i = 0; i < 4; i++) {
13308 up = (U32*)(buf + i);
13310 if (*up != 0xBeef) {
13311 printf("write failed (%x)\n", *up);
13325 if eval $compile_ok; then
13326 echo "(Testing for character data alignment may dump core.)" >&4
13327 $run ./try 2>&1 >/dev/null
13330 You can access character data pretty unalignedly.
13332 d_u32align="$undef"
13335 It seems that you must access character data in an aligned manner.
13337 d_u32align="$define"
13340 $rm -f core core.try.* try.core
13342 rp='Can you access character data at unaligned addresses?'
13346 [yY]*) d_u32align="$undef" ;;
13347 *) d_u32align="$define" ;;
13351 : see if ualarm exists
13352 set ualarm d_ualarm
13355 : see if umask exists
13359 : see if unordered exists
13360 set unordered d_unordered
13363 : see if usleep exists
13364 set usleep d_usleep
13367 : see if prototype for usleep is available
13369 set d_usleepproto usleep $i_unistd unistd.h
13372 : see if ustat exists
13376 : backward compatibility for d_hvfork
13377 if test X$d_hvfork != X; then
13378 d_vfork="$d_hvfork"
13381 : see if there is a vfork
13386 : Ok, but do we want to use it. vfork is reportedly unreliable in
13387 : perl on Solaris 2.x, and probably elsewhere.
13391 case "$usevfork" in
13397 Perl can only use a vfork() that doesn't suffer from strict
13398 restrictions on calling functions or modifying global data in
13399 the child. For example, glibc-2.1 contains such a vfork()
13400 that is unsuitable. If your system provides a proper fork()
13401 call, chances are that you do NOT want perl to use vfork().
13404 rp="Do you still want to use vfork()?"
13409 echo "Ok, we won't use vfork()."
13418 $define) usevfork='true';;
13419 *) usevfork='false';;
13422 : see if this is an sysdir system
13423 set sys/dir.h i_sysdir
13426 : see if this is an sysndir system
13427 set sys/ndir.h i_sysndir
13430 : see if closedir exists
13431 set closedir d_closedir
13434 case "$d_closedir" in
13437 echo "Checking whether closedir() returns a status..." >&4
13439 #$i_dirent I_DIRENT /**/
13440 #$i_sysdir I_SYS_DIR /**/
13441 #$i_sysndir I_SYS_NDIR /**/
13442 #$i_systypes I_SYS_TYPES /**/
13444 #if defined(I_SYS_TYPES)
13445 #include <sys/types.h>
13447 #if defined(I_DIRENT)
13448 #include <dirent.h>
13449 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13450 #include <sys/dir.h>
13454 #include <sys/ndir.h>
13458 #include <ndir.h> /* may be wrong in the future */
13460 #include <sys/dir.h>
13465 int main() { return closedir(opendir(".")); }
13468 if eval $compile_ok; then
13469 if $run ./try > /dev/null 2>&1 ; then
13470 echo "Yes, it does."
13473 echo "No, it doesn't."
13477 echo "(I can't seem to compile the test program--assuming it doesn't)"
13485 set d_void_closedir
13488 : see if there is a wait4
13492 : see if waitpid exists
13493 set waitpid d_waitpid
13496 : see if wcstombs exists
13497 set wcstombs d_wcstombs
13500 : see if wctomb exists
13501 set wctomb d_wctomb
13504 : see if writev exists
13505 set writev d_writev
13508 : preserve RCS keywords in files with variable substitution, grrr
13513 Revision='$Revision'
13515 : check for alignment requirements
13517 case "$usecrosscompile$multiarch" in
13520 You seem to be either cross-compiling or doing a multiarchitecture build,
13521 skipping the memory alignment check.
13524 case "$alignbytes" in
13525 '') alignbytes=8 ;;
13529 case "$alignbytes" in
13530 '') echo "Checking alignment constraints..." >&4
13531 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13532 $cat >try.c <<'EOCP'
13533 typedef long double NV;
13536 $cat >try.c <<'EOCP'
13540 $cat >>try.c <<'EOCP'
13548 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13553 if eval $compile_ok; then
13557 echo "(I can't seem to compile the test program...)"
13560 *) dflt="$alignbytes"
13563 rp="Doubles must be aligned on a how-many-byte boundary?"
13571 : set the base revision
13574 : how do we catenate cpp tokens here?
13576 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13577 $cat >cpp_stuff.c <<'EOCP'
13578 #define RCAT(a,b)a/**/b
13579 #define ACAT(a,b)a ## b
13583 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13584 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13585 echo "Oh! Smells like ANSI's been here." >&4
13586 echo "We can catify or stringify, separately or together!"
13588 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13589 echo "Ah, yes! The good old days!" >&4
13590 echo "However, in the good old days we don't know how to stringify and"
13591 echo "catify at the same time."
13595 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13596 to have to edit the values of CAT[2-5] in config.h...
13598 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13602 : see if this is a db.h system
13608 : Check db version.
13610 echo "Checking Berkeley DB version ..." >&4
13616 #include <sys/types.h>
13619 int main(int argc, char *argv[])
13621 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13622 int Major, Minor, Patch ;
13623 unsigned long Version ;
13624 (void)db_version(&Major, &Minor, &Patch) ;
13626 printf("%d %d %d %d %d %d\n",
13627 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13628 Major, Minor, Patch);
13631 printf("You have Berkeley DB Version 2 or greater.\n");
13633 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13634 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13635 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13636 Major, Minor, Patch) ;
13638 /* check that db.h & libdb are compatible */
13639 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13640 printf("db.h and libdb are incompatible.\n") ;
13644 printf("db.h and libdb are compatible.\n") ;
13646 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13647 + DB_VERSION_PATCH ;
13649 /* needs to be >= 2.3.4 */
13650 if (Version < 2003004) {
13651 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13652 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13658 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13663 printf("You have Berkeley DB Version 1.\n");
13664 exit(0); /* DB version < 2: the coast is clear. */
13666 exit(1); /* <db.h> not Berkeley DB? */
13672 if eval $compile_ok && $run ./try; then
13673 echo 'Looks OK.' >&4
13675 db_version_major=$1
13676 db_version_minor=$2
13677 db_version_patch=$3
13679 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13683 : Remove db from list of libraries to use
13684 echo "Removing unusable -ldb from library list" >&4
13685 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13688 echo "libs = $libs" >&4
13698 : Check the return type needed for hash
13700 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13706 #include <sys/types.h>
13709 #ifndef DB_VERSION_MAJOR
13710 u_int32_t hash_cb (ptr, size)
13718 info.hash = hash_cb;
13722 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13723 if $contains warning try.out >>/dev/null 2>&1 ; then
13726 db_hashtype='u_int32_t'
13729 : XXX Maybe we should just give up here.
13730 db_hashtype=u_int32_t
13732 echo "Help: I can't seem to compile the db test program." >&4
13733 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13736 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13738 *) db_hashtype=u_int32_t
13743 : Check the return type needed for prefix
13745 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13751 #include <sys/types.h>
13754 #ifndef DB_VERSION_MAJOR
13755 size_t prefix_cb (key1, key2)
13763 info.prefix = prefix_cb;
13767 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13768 if $contains warning try.out >>/dev/null 2>&1 ; then
13769 db_prefixtype='int'
13771 db_prefixtype='size_t'
13774 db_prefixtype='size_t'
13775 : XXX Maybe we should just give up here.
13777 echo "Help: I can't seem to compile the db test program." >&4
13778 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13781 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13783 *) db_prefixtype='size_t'
13788 : How can we generate normalized random numbers ?
13790 echo "Looking for a random number function..." >&4
13791 case "$randfunc" in
13793 if set drand48 val -f; eval $csym; $val; then
13795 echo "Good, found drand48()." >&4
13796 elif set random val -f; eval $csym; $val; then
13798 echo "OK, found random()." >&4
13801 echo "Yick, looks like I have to use rand()." >&4
13812 *-Dmy_rand=*|*-Dmy_srand=*)
13813 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13814 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13815 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13816 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13820 while $test "$cont"; do
13821 rp="Use which function to generate random numbers?"
13823 if $test "$ans" = "$dflt"; then
13829 if set $ans val -f; eval $csym; $val; then
13833 rp="I cannot find function $ans. Use that name anyway?"
13842 case "$randfunc" in
13844 drand01="drand48()"
13850 case "$randbits" in
13852 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13854 #$i_unistd I_UNISTD
13855 #$i_stdlib I_STDLIB
13858 # include <unistd.h>
13861 # include <stdlib.h>
13866 register unsigned long tmp;
13867 register unsigned long max = 0L;
13869 for (i = 1000; i; i--) {
13870 tmp = (unsigned long) $randfunc();
13871 if (tmp > max) max = tmp;
13873 for (i = 0; max; i++)
13879 if eval $compile_ok; then
13883 echo "(I can't seem to compile the test program...)"
13890 rp="How many bits does your $randfunc() function produce?"
13894 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13895 seedfunc="s$randfunc"
13896 randseedtype=unsigned
13900 rp="How many bits does your $randfunc() function produce?"
13903 seedfunc="s$randfunc"
13904 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13905 if set $seedfunc val -f; eval $csym; $val; then
13906 echo "(Using $seedfunc() to seed random generator)"
13908 echo "(Warning: no $seedfunc() to seed random generator)"
13911 randseedtype=unsigned
13919 echo "Determining whether or not we are on an EBCDIC system..." >&4
13920 $cat >try.c <<'EOM'
13923 if ('M'==0xd4) return 0;
13930 if eval $compile_ok; then
13931 if $run ./try; then
13932 echo "You seem to speak EBCDIC." >&4
13935 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13938 echo "I'm unable to compile the test program." >&4
13939 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13947 Checking how to flush all pending stdio output...
13949 # I only know how to find the first 32 possibly open files on SunOS.
13950 # See also hints/sunos_4_1.sh and util.c --AD
13952 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13954 $cat >>try.c <<EOCP
13956 #$i_unistd I_UNISTD
13958 # include <unistd.h>
13960 #$d_sysconf HAS_SYSCONF
13961 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13962 #ifdef HAS_STDIO_STREAM_ARRAY
13963 # define STDIO_STREAM_ARRAY $stdio_stream_array
13968 p = fopen("try.out", "w");
13972 # ifdef TRY_FPRINTF
13976 #ifdef TRY_FFLUSH_NULL
13979 #ifdef TRY_FFLUSH_ALL
13981 long open_max = -1;
13982 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13983 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13985 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13986 open_max = sysconf(_SC_OPEN_MAX);
13989 open_max = FOPEN_MAX;
13992 open_max = OPEN_MAX;
14001 # ifdef HAS_STDIO_STREAM_ARRAY
14002 if (open_max > 0) {
14004 for (i = 0; i < open_max; i++)
14005 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14006 STDIO_STREAM_ARRAY[i]._file < open_max &&
14007 STDIO_STREAM_ARRAY[i]._flag)
14008 fflush(&STDIO_STREAM_ARRAY[i]);
14016 : first we have to find out how _not_ to flush
14018 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14020 set try -DTRY_FPUTC
14021 if eval $compile; then
14022 $run ./try 2>/dev/null
14025 if $test ! -s try.out -a "X$code" = X42; then
14031 set try -DTRY_FPRINTF
14032 if eval $compile; then
14033 $run ./try 2>/dev/null
14036 if $test ! -s try.out -a "X$code" = X42; then
14037 output=-DTRY_FPRINTF
14043 : check for fflush NULL behaviour
14044 case "$fflushNULL" in
14045 '') set try -DTRY_FFLUSH_NULL $output
14046 if eval $compile; then
14047 $run ./try 2>/dev/null
14050 if $test -s try.out -a "X$code" = X42; then
14051 fflushNULL="`$cat try.out`"
14053 if $test "X$code" != X42; then
14055 (If this test failed, don't worry, we'll try another method shortly.)
14060 $rm -f core try.core core.try.*
14061 case "$fflushNULL" in
14063 Your fflush(NULL) works okay for output streams.
14064 Let's see if it clobbers input pipes...
14066 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14067 # bug that improperly flushes the input end of pipes. So we avoid the
14068 # autoflush on fork/system/exec support for now. :-(
14069 $cat >tryp.c <<EOCP
14072 main(int argc, char **argv)
14078 while ((i = getc(stdin)) != -1
14079 && (*bp++ = i) != '\n'
14080 && bp < &buf[1024])
14083 fprintf(stdout, "%s", buf);
14091 fflushNULL="$define"
14093 if eval $compile; then
14095 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14096 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14098 fflush(NULL) seems to behave okay with input streams.
14100 fflushNULL="$define"
14103 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
14105 fflushNULL="$undef"
14108 $rm -f core tryp.c tryp.core core.tryp.*
14111 Your fflush(NULL) isn't working (contrary to ANSI C).
14113 fflushNULL="$undef"
14116 Cannot figure out whether your fflush(NULL) works or not.
14117 I'm assuming it doesn't (contrary to ANSI C).
14119 fflushNULL="$undef"
14123 $define|true|[yY]*)
14124 fflushNULL="$define"
14127 fflushNULL="$undef"
14130 : check explicit looping only if NULL did not work, and if the pipe
14131 : bug does not show up on an explicit flush too
14132 case "$fflushNULL" in
14134 $cat >tryp.c <<EOCP
14137 main(int argc, char **argv)
14143 while ((i = getc(stdin)) != -1
14144 && (*bp++ = i) != '\n'
14145 && bp < &buf[1024])
14148 fprintf(stdout, "%s", buf);
14157 if eval $compile; then
14159 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14160 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14162 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14164 : now check for fflushall behaviour
14165 case "$fflushall" in
14166 '') set try -DTRY_FFLUSH_ALL $output
14167 if eval $compile; then
14169 (Now testing the other method--but note that this also may fail.)
14171 $run ./try 2>/dev/null
14174 if $test -s try.out -a "X$code" = X42; then
14175 fflushall="`$cat try.out`"
14178 $rm -f core try.core core.try.*
14179 case "$fflushall" in
14181 Whew. Flushing explicitly all the stdio streams works.
14183 fflushall="$define"
14186 Sigh. Flushing explicitly all the stdio streams doesn't work.
14191 Cannot figure out whether flushing stdio streams explicitly works or not.
14192 I'm assuming it doesn't.
14198 "$define"|true|[yY]*)
14199 fflushall="$define"
14207 All is futile. Even fflush(stdin) clobbers input pipes!
14214 $rm -f core tryp.c tryp.core core.tryp.*
14216 *) fflushall="$undef"
14220 case "$fflushNULL$fflushall" in
14223 OK, I give up. I cannot figure out how to flush pending stdio output.
14224 We won't be flushing handles at all before fork/exec/popen.
14228 $rm -f try.* try$exe_ext
14230 : Store the full pathname to the ar program for use in the C program
14231 : Respect a hint or command line value for full_ar.
14236 : Store the full pathname to the sed program for use in the C program
14239 : see what type gids are declared as in the kernel
14241 echo "Looking for the type for group ids returned by getgid()."
14242 set gid_t gidtype xxx stdio.h sys/types.h
14246 xxx=`./findhdr sys/user.h`
14247 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14249 unsigned) dflt="$1 $2" ;;
14253 *) dflt="$gidtype";;
14256 gid_t) echo "gid_t found." ;;
14257 *) rp="What is the type for group ids returned by getgid()?"
14265 *_t) zzz="$gidtype" ;;
14268 echo "Checking the size of $zzz..." >&4
14270 #include <sys/types.h>
14273 printf("%d\n", (int)sizeof($gidtype));
14278 if eval $compile_ok; then
14282 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14285 echo "Your $zzz is $gidsize bytes long."
14290 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14296 *_t) zzz="$gidtype" ;;
14299 echo "Checking the sign of $zzz..." >&4
14301 #include <sys/types.h>
14312 if eval $compile; then
14316 echo "(I can't execute the test program--guessing unsigned.)" >&4
14320 1) echo "Your $zzz is unsigned." ;;
14321 -1) echo "Your $zzz is signed." ;;
14327 echo "(I can't compile the test program--guessing unsigned.)" >&4
14333 if $test X"$quadtype" != X; then
14335 echo "Checking how to print 64-bit integers..." >&4
14337 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14338 $cat >try.c <<'EOCP'
14339 #include <sys/types.h>
14342 int q = 12345678901;
14343 printf("%ld\n", q);
14347 if eval $compile; then
14351 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14352 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14353 echo "We will use %d."
14359 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14360 $cat >try.c <<'EOCP'
14361 #include <sys/types.h>
14364 long q = 12345678901;
14365 printf("%ld\n", q);
14369 if eval $compile; then
14373 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14374 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14375 echo "We will use %ld."
14381 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14382 $cat >try.c <<'EOCP'
14383 #include <sys/types.h>
14384 #include <inttypes.h>
14387 int64_t q = 12345678901;
14388 printf("%" PRId64 "\n", q);
14392 if eval $compile; then
14396 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14397 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14398 echo "We will use the C9X style."
14404 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14406 #include <sys/types.h>
14409 $quadtype q = 12345678901;
14410 printf("%Ld\n", q);
14414 if eval $compile; then
14418 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14419 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14420 echo "We will use %Ld."
14426 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14427 $cat >try.c <<'EOCP'
14428 #include <sys/types.h>
14431 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14432 printf("%lld\n", q);
14436 if eval $compile; then
14440 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14441 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14442 echo "We will use the %lld style."
14448 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14450 #include <sys/types.h>
14453 $quadtype q = 12345678901;
14454 printf("%qd\n", q);
14458 if eval $compile; then
14462 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14463 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14464 echo "We will use %qd."
14470 if $test X"$sPRId64" = X; then
14471 echo "Cannot figure out how to print 64-bit integers." >&4
14479 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14480 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14482 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14483 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14489 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14491 if $test X"$ivsize" = X8; then
14492 ivdformat="$sPRId64"
14493 uvuformat="$sPRIu64"
14494 uvoformat="$sPRIo64"
14495 uvxformat="$sPRIx64"
14496 uvXUformat="$sPRIXU64"
14498 if $test X"$ivsize" = X"$longsize"; then
14505 if $test X"$ivsize" = X"$intsize"; then
14513 if $test X"$ivsize" = X"$shortsize"; then
14524 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14525 nveformat="$sPRIeldbl"
14526 nvfformat="$sPRIfldbl"
14527 nvgformat="$sPRIgldbl"
14528 nvEUformat="$sPRIEUldbl"
14529 nvFUformat="$sPRIFUldbl"
14530 nvGUformat="$sPRIGUldbl"
14540 case "$ivdformat" in
14541 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14548 $echo "Checking the format string to be used for gids..." >&4
14551 -1) if $test X"$gidsize" = X"$ivsize"; then
14552 gidformat="$ivdformat"
14554 if $test X"$gidsize" = X"$longsize"; then
14557 if $test X"$gidsize" = X"$intsize"; then
14560 if $test X"$gidsize" = X"$shortsize"; then
14567 *) if $test X"$gidsize" = X"$uvsize"; then
14568 gidformat="$uvuformat"
14570 if $test X"$gidsize" = X"$longsize"; then
14573 if $test X"$gidsize" = X"$intsize"; then
14576 if $test X"$gidsize" = X"$shortsize"; then
14585 : see if getgroups exists
14586 set getgroups d_getgrps
14589 : see if setgroups exists
14590 set setgroups d_setgrps
14594 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14596 case "$d_getgrps$d_setgrps" in
14598 case "$groupstype" in
14599 '') dflt="$gidtype" ;;
14600 *) dflt="$groupstype" ;;
14603 What type of pointer is the second argument to getgroups() and setgroups()?
14604 Usually this is the same as group ids, $gidtype, but not always.
14607 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14611 *) groupstype="$gidtype";;
14615 echo "Checking if your $make program sets \$(MAKE)..." >&4
14616 case "$make_set_make" in
14618 $sed 's/^X //' > testmake.mak << 'EOF'
14620 X @echo 'maketemp="$(MAKE)"'
14622 case "`$make -f testmake.mak 2>/dev/null`" in
14623 *maketemp=*) make_set_make='#' ;;
14624 *) make_set_make="MAKE=$make" ;;
14626 $rm -f testmake.mak
14629 case "$make_set_make" in
14630 '#') echo "Yup, it does.";;
14631 *) echo "Nope, it doesn't.";;
14634 : see what type is used for mode_t
14635 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14636 set mode_t modetype int stdio.h sys/types.h
14639 : see if stdarg is available
14641 if $test `./findhdr stdarg.h`; then
14642 echo "<stdarg.h> found." >&4
14645 echo "<stdarg.h> NOT found." >&4
14649 : see if varags is available
14651 if $test `./findhdr varargs.h`; then
14652 echo "<varargs.h> found." >&4
14654 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14657 : set up the varargs testing programs
14658 $cat > varargs.c <<EOP
14660 #include <stdarg.h>
14663 #include <varargs.h>
14667 int f(char *p, ...)
14681 p = va_arg(ap, char *);
14686 $cat > varargs <<EOP
14688 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14697 : now check which varargs header should be included
14702 if `./varargs I_STDARG`; then
14704 elif `./varargs I_VARARGS`; then
14709 if `./varargs I_VARARGS`; then
14716 echo "I could not find the definition for va_dcl... You have problems..." >&4
14717 val="$undef"; set i_stdarg; eval $setvar
14718 val="$undef"; set i_varargs; eval $setvar
14723 case "$i_varhdr" in
14725 val="$define"; set i_stdarg; eval $setvar
14726 val="$undef"; set i_varargs; eval $setvar
14729 val="$undef"; set i_stdarg; eval $setvar
14730 val="$define"; set i_varargs; eval $setvar
14733 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14737 : see if we need va_copy
14739 case "$i_stdarg" in
14742 #include <stdarg.h>
14744 #$i_stdlib I_STDLIB
14746 #include <stdlib.h>
14748 #include <signal.h>
14751 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14753 return vfprintf(f, fmt, *valp);
14757 myvfprintf(FILE *f, const char *fmt, va_list val)
14759 return ivfprintf(f, fmt, &val);
14763 myprintf(char *fmt, ...)
14766 va_start(val, fmt);
14767 return myvfprintf(stdout, fmt, val);
14771 main(int ac, char **av)
14773 signal(SIGSEGV, exit);
14775 myprintf("%s%cs all right, then\n", "that", '\'');
14780 if eval $compile && $run ./try 2>&1 >/dev/null; then
14781 case "`$run ./try`" in
14782 "that's all right, then")
14788 yes) echo "It seems that you don't need va_copy()." >&4
14789 need_va_copy="$undef"
14791 *) echo "It seems that va_copy() or similar will be needed." >&4
14792 need_va_copy="$define"
14795 $rm -f try.* core core.* *.core *.core.*
14797 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14801 : define a fucntion to check prototypes
14802 $cat > protochk <<EOSH
14805 optimize="$optimize"
14807 prototype="$prototype"
14812 $cat >> protochk <<'EOSH'
14817 while test $# -ge 2; do
14819 $define) echo "#include <$2>" >> try.c ;;
14820 literal) echo "$2" >> try.c ;;
14824 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14825 cat >> try.c <<'EOCP'
14826 #ifdef CAN_PROTOTYPE
14827 #define _(args) args
14832 echo "$foo" >> try.c
14833 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14834 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14840 $eunicefix protochk
14842 : see what type is used for size_t
14843 rp="What is the type used for the length parameter for string functions?"
14844 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14847 : check for type of arguments to gethostbyaddr.
14848 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14849 case "$d_gethbyaddr" in
14853 Checking to see what type of arguments are accepted by gethostbyaddr().
14855 hdrs="$define sys/types.h
14856 $d_socket sys/socket.h
14857 $i_niin netinet/in.h
14859 $i_unistd unistd.h"
14860 : The first arg can 'char *' or 'void *'
14861 : The second arg is some of integral type
14862 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14863 for yyy in size_t long int; do
14864 case "$netdb_host_type" in
14865 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14866 if ./protochk "$try" $hdrs; then
14867 echo "Your system accepts $xxx for the first arg."
14868 echo "...and $yyy for the second arg."
14869 netdb_host_type="$xxx"
14870 netdb_hlen_type="$yyy"
14876 : In case none of those worked, prompt the user.
14877 case "$netdb_host_type" in
14878 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14881 netdb_host_type=$ans
14882 rp='What is the type for the 2nd argument to gethostbyaddr?'
14885 netdb_hlen_type=$ans
14889 *) : no gethostbyaddr, so pick harmless defaults
14890 netdb_host_type='char *'
14891 netdb_hlen_type="$sizetype"
14894 # Remove the "const" if needed. -- but then we'll have a
14896 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14899 : check for type of argument to gethostbyname.
14900 if test "X$netdb_name_type" = X ; then
14901 case "$d_gethbyname" in
14905 Checking to see what type of argument is accepted by gethostbyname().
14907 hdrs="$define sys/types.h
14908 $d_socket sys/socket.h
14909 $i_niin netinet/in.h
14911 $i_unistd unistd.h"
14912 for xxx in "const char *" "char *"; do
14913 case "$netdb_name_type" in
14914 '') try="extern struct hostent *gethostbyname($xxx);"
14915 if ./protochk "$try" $hdrs; then
14916 echo "Your system accepts $xxx."
14917 netdb_name_type="$xxx"
14922 : In case none of those worked, prompt the user.
14923 case "$netdb_name_type" in
14924 '') rp='What is the type for the 1st argument to gethostbyname?'
14927 netdb_name_type=$ans
14931 *) : no gethostbyname, so pick harmless default
14932 netdb_name_type='char *'
14937 : check for type of 1st argument to getnetbyaddr.
14938 if test "X$netdb_net_type" = X ; then
14939 case "$d_getnbyaddr" in
14943 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14945 hdrs="$define sys/types.h
14946 $d_socket sys/socket.h
14947 $i_niin netinet/in.h
14949 $i_unistd unistd.h"
14950 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14951 case "$netdb_net_type" in
14952 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14953 if ./protochk "$try" $hdrs; then
14954 echo "Your system accepts $xxx."
14955 netdb_net_type="$xxx"
14960 : In case none of those worked, prompt the user.
14961 case "$netdb_net_type" in
14962 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14965 netdb_net_type=$ans
14969 *) : no getnetbyaddr, so pick harmless default
14970 netdb_net_type='long'
14974 : locate the preferred pager for this system
14980 [a-zA-Z]:/*) dflt=$pg;;
14984 [a-zA-Z]:/*) dflt=$more;;
14988 [a-zA-Z]:/*) dflt=$less;;
14991 '') dflt=/usr/ucb/more;;
14998 rp='What pager is used on your system?'
15002 : see what type pids are declared as in the kernel
15003 rp="What is the type of process ids on this system?"
15004 set pid_t pidtype int stdio.h sys/types.h
15007 : Find earliest binary compatible site_perl subdirectory perl can use.
15008 case "$bincompat5005" in
15009 "$define") xs_apiversion='5.005' ;;
15010 *) xs_apiversion=$version ;; # The current site_perl version.
15012 : Find earliest pure perl site_perl subdirectory perl can use.
15013 : The versioned directories started at 5.005.
15014 pm_apiversion='5.005'
15016 : see if ar generates random libraries by itself
15018 echo "Checking how to generate random libraries on your machine..." >&4
15019 echo 'int bar1() { return bar2(); }' > bar1.c
15020 echo 'int bar2() { return 2; }' > bar2.c
15021 $cat > foo.c <<'EOP'
15022 int main() { printf("%d\n", bar1()); exit(0); }
15024 $cc $ccflags -c bar1.c >/dev/null 2>&1
15025 $cc $ccflags -c bar2.c >/dev/null 2>&1
15026 $cc $ccflags -c foo.c >/dev/null 2>&1
15027 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15028 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15029 $run ./foobar >/dev/null 2>&1; then
15030 echo "$ar appears to generate random libraries itself."
15033 elif $ar ts bar$_a >/dev/null 2>&1 &&
15034 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15035 $run ./foobar >/dev/null 2>&1; then
15036 echo "a table of contents needs to be added with '$ar ts'."
15043 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15044 $test -f $ranlib || ranlib=''
15047 if $test -n "$ranlib"; then
15048 echo "your system has '$ranlib'; we'll use that."
15051 echo "your system doesn't seem to support random libraries"
15052 echo "so we'll use lorder and tsort to order the libraries."
15059 : check for type of arguments to select.
15060 case "$selecttype" in
15061 '') case "$d_select" in
15065 Checking to see what type of arguments are accepted by select().
15067 hdrs="$define sys/types.h
15068 $i_systime sys/time.h
15069 $i_sysselct sys/select.h
15070 $d_socket sys/socket.h"
15071 : The first arg can be int, unsigned, or size_t
15072 : The last arg may or may not be 'const'
15074 : void pointer has been seen but using that
15075 : breaks the selectminbits test
15076 for xxx in 'fd_set *' 'int *'; do
15077 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15078 for tmo in 'struct timeval *' 'const struct timeval *'; do
15080 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15081 if ./protochk "$try" $hdrs; then
15082 echo "Your system accepts $xxx."
15091 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15092 case "$d_fd_set" in
15093 $define) dflt="fd_set *" ;;
15102 *) : no select, so pick a harmless default
15109 : check for the select 'width'
15110 case "$selectminbits" in
15111 '') case "$d_select" in
15115 Checking to see on how many bits at a time your select() operates...
15118 #include <sys/types.h>
15120 #$i_systime I_SYS_TIME
15121 #$i_systimek I_SYS_TIME_KERNEL
15126 # ifdef I_SYS_TIME_KERNEL
15129 # include <sys/time.h>
15130 # ifdef I_SYS_TIME_KERNEL
15134 #$i_sysselct I_SYS_SELECT
15135 #ifdef I_SYS_SELECT
15136 #include <sys/select.h>
15138 #$d_socket HAS_SOCKET
15140 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15144 #define S sizeof(*(b))
15146 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15147 #define NBITS (NBYTES * 8)
15156 fp = fopen("try.c", "r");
15162 b = ($selecttype)s;
15163 for (i = 0; i < NBITS; i++)
15167 select(fd + 1, b, 0, 0, &t);
15168 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15169 printf("%d\n", i + 1);
15174 if eval $compile_ok; then
15175 selectminbits=`$run ./try`
15176 case "$selectminbits" in
15178 Cannot figure out on how many bits at a time your select() operates.
15179 I'll play safe and guess it is 32 bits.
15185 *) bits="$selectminbits bits" ;;
15187 echo "Your select() operates on $bits at a time." >&4
15189 rp='What is the minimum number of bits your select() operates on?'
15190 case "$byteorder" in
15191 1234|12345678) dflt=32 ;;
15196 selectminbits="$val"
15200 *) : no select, so pick a harmless default
15207 : Trace out the files included by signal.h, then look for SIGxxx names.
15208 : Remove SIGARRAYSIZE used by HPUX.
15209 : Remove SIGSTKSIZE used by Linux.
15210 : Remove SIGSTKSZ used by Posix.
15211 : Remove SIGTYP void lines used by OS2.
15212 : Some cpps, like os390, dont give the file name anywhere
15213 if [ "X$fieldn" = X ]; then
15214 : Just make some guesses. We check them later.
15215 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15217 xxx=`echo '#include <signal.h>' |
15218 $cppstdin $cppminus $cppflags 2>/dev/null |
15219 $grep '^[ ]*#.*include' |
15220 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15222 : Check this list of files to be sure we have parsed the cpp output ok.
15223 : This will also avoid potentially non-existent files, such
15226 for xx in $xxx /dev/null ; do
15227 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15229 : If we have found no files, at least try signal.h
15230 case "$xxxfiles" in
15231 '') xxxfiles=`./findhdr signal.h` ;;
15234 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15235 print substr($2, 4, 20)
15237 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15238 print substr($3, 4, 20)
15240 : Append some common names just in case the awk scan failed.
15241 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15242 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15243 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15244 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15245 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15247 : generate a few handy files for later
15248 $cat > signal.c <<'EOCP'
15249 #include <sys/types.h>
15250 #include <signal.h>
15254 /* Strange style to avoid deeply-nested #if/#else/#endif */
15257 # define NSIG (_NSIG)
15263 # define NSIG (SIGMAX+1)
15269 # define NSIG (SIG_MAX+1)
15275 # define NSIG (MAXSIG+1)
15281 # define NSIG (MAX_SIG+1)
15286 # ifdef SIGARRAYSIZE
15287 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15293 # define NSIG (_sys_nsig) /* Solaris 2.5 */
15297 /* Default to some arbitrary number that's big enough to get most
15298 of the common signals.
15304 printf("NSIG %d\n", NSIG);
15310 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15312 printf "#ifdef SIG"; printf $1; printf "\n"
15313 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15314 printf $1; printf ");\n"
15318 printf "#endif /* JUST_NSIG */\n";
15319 printf "exit(0);\n}\n";
15322 $cat >signal.awk <<'EOP'
15323 BEGIN { ndups = 0 }
15324 $1 ~ /^NSIG$/ { nsig = $2 }
15325 ($1 !~ /^NSIG$/) && (NF == 2) {
15326 if ($2 > maxsig) { maxsig = $2 }
15327 if (sig_name[$2]) {
15328 dup_name[ndups] = $1
15329 dup_num[ndups] = $2
15341 printf("NSIG %d\n", nsig);
15342 for (n = 1; n < nsig; n++) {
15344 printf("%s %d\n", sig_name[n], sig_num[n])
15347 printf("NUM%d %d\n", n, n)
15350 for (n = 0; n < ndups; n++) {
15351 printf("%s %d\n", dup_name[n], dup_num[n])
15355 $cat >signal_cmd <<EOS
15357 if $test -s signal.lst; then
15358 echo "Using your existing signal.lst file"
15363 $cat >>signal_cmd <<'EOS'
15366 if eval $compile_ok; then
15367 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15369 echo "(I can't seem be able to compile the whole test program)" >&4
15370 echo "(I'll try it in little pieces.)" >&4
15371 set signal -DJUST_NSIG
15372 if eval $compile_ok; then
15373 $run ./signal$_exe > signal.nsg
15376 echo "I can't seem to figure out how many signals you have." >&4
15377 echo "Guessing 50." >&4
15378 echo 'NSIG 50' > signal.nsg
15380 : Now look at all the signal names, one at a time.
15381 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15382 $cat > signal.c <<EOCP
15383 #include <sys/types.h>
15384 #include <signal.h>
15387 printf("$xx %d\n", SIG${xx});
15392 if eval $compile; then
15393 echo "SIG${xx} found."
15394 $run ./signal$_exe >> signal.ls1
15396 echo "SIG${xx} NOT found."
15399 if $test -s signal.ls1; then
15400 $cat signal.nsg signal.ls1 |
15401 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15405 if $test -s signal.lst; then
15408 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15409 echo 'kill -l' >signal
15410 set X `csh -f <signal`
15414 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15416 echo $@ | $tr ' ' $trnl | \
15417 $awk '{ printf "%s %d\n", $1, ++s; }
15418 END { printf "NSIG %d\n", ++s }' >signal.lst
15420 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15422 chmod a+x signal_cmd
15423 $eunicefix signal_cmd
15425 : generate list of signal names
15427 case "$sig_name_init" in
15429 *) case "$sig_num_init" in
15430 ''|*,*) doinit=yes ;;
15435 echo "Generating a list of signal names and numbers..." >&4
15437 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15438 sig_name=`$awk 'BEGIN { printf "ZERO " }
15439 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15440 sig_num=`$awk 'BEGIN { printf "0 " }
15441 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15442 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15443 !/^NSIG/ { printf "\"%s\", ", $1 }
15444 END { printf "0\n" }' signal.lst`
15445 sig_num_init=`$awk 'BEGIN { printf "0, " }
15446 !/^NSIG/ { printf "%d, ", $2}
15447 END { printf "0\n"}' signal.lst`
15450 echo "The following $sig_count signals are available:"
15452 echo $sig_name | $awk \
15453 'BEGIN { linelen = 0 }
15455 for (i = 1; i <= NF; i++) {
15456 name = "SIG" $i " "
15457 linelen = linelen + length(name)
15458 if (linelen > 70) {
15460 linelen = length(name)
15466 sig_size=`echo $sig_name | awk '{print NF}'`
15467 $rm -f signal signal.c signal.awk signal.lst signal_cmd
15470 case "$sizetype" in
15471 *_t) zzz="$sizetype" ;;
15472 *) zzz="filesize" ;;
15474 echo "Checking the size of $zzz..." >&4
15476 #include <sys/types.h>
15479 printf("%d\n", (int)sizeof($sizetype));
15484 if eval $compile_ok; then
15488 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15491 echo "Your $zzz size is $sizesize bytes."
15496 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15500 : check for socklen_t
15502 echo "Checking to see if you have socklen_t..." >&4
15504 #include <sys/types.h>
15505 #$d_socket HAS_SOCKET
15507 #include <sys/socket.h>
15509 int main() { socklen_t x = 16; }
15512 if eval $compile; then
15514 echo "You have socklen_t."
15517 echo "You do not have socklen_t."
15518 case "$sizetype" in
15519 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15526 : see if this is a socks.h system
15527 set socks.h i_socks
15530 : check for type of the size argument to socket calls
15531 case "$d_socket" in
15535 Checking to see what type is the last argument of accept().
15538 case "$d_socklen_t" in
15539 "$define") yyy="$yyy socklen_t"
15541 yyy="$yyy $sizetype int long unsigned"
15542 for xxx in $yyy; do
15543 case "$socksizetype" in
15544 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
15545 case "$usesocks" in
15547 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15548 echo "Your system accepts '$xxx *' for the last argument of accept()."
15549 socksizetype="$xxx"
15552 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15553 echo "Your system accepts '$xxx *' for the last argument of accept()."
15554 socksizetype="$xxx"
15561 : In case none of those worked, prompt the user.
15562 case "$socksizetype" in
15563 '') rp='What is the type for socket address structure sizes?'
15570 *) : no sockets, so pick relatively harmless default
15575 : see what type is used for signed size_t
15576 set ssize_t ssizetype int stdio.h sys/types.h
15581 #include <sys/types.h>
15582 #define Size_t $sizetype
15583 #define SSize_t $dflt
15586 if (sizeof(Size_t) == sizeof(SSize_t))
15588 else if (sizeof(Size_t) == sizeof(int))
15597 if eval $compile_ok && $run ./try > /dev/null; then
15598 ssizetype=`$run ./try`
15599 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15602 Help! I can't compile and run the ssize_t test program: please enlighten me!
15603 (This is probably a misconfiguration in your system or libraries, and
15604 you really ought to fix it. Still, I'll try anyway.)
15606 I need a type that is the same size as $sizetype, but is guaranteed to
15607 be signed. Common values are ssize_t, int and long.
15610 rp="What signed type is the same size as $sizetype?"
15616 : see what type of char stdio uses.
15618 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15619 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15620 echo "Your stdio uses unsigned chars." >&4
15621 stdchar="unsigned char"
15623 echo "Your stdio uses signed chars." >&4
15630 : see if time exists
15632 if test "X$d_time" = X -o X"$timetype" = X; then
15633 if set time val -f d_time; eval $csym; $val; then
15634 echo 'time() found.' >&4
15636 rp="What is the type returned by time() on this system?"
15637 set time_t timetype long stdio.h sys/types.h
15640 echo 'time() not found, hope that will do.' >&4
15648 : see what type uids are declared as in the kernel
15650 echo "Looking for the type for user ids returned by getuid()."
15651 set uid_t uidtype xxx stdio.h sys/types.h
15655 xxx=`./findhdr sys/user.h`
15656 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15658 unsigned) dflt="$1 $2" ;;
15662 *) dflt="$uidtype";;
15665 uid_t) echo "uid_t found." ;;
15666 *) rp="What is the type for user ids returned by getuid()?"
15674 *_t) zzz="$uidtype" ;;
15677 echo "Checking the size of $zzz..." >&4
15679 #include <sys/types.h>
15682 printf("%d\n", (int)sizeof($uidtype));
15687 if eval $compile_ok; then
15691 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15694 echo "Your $zzz is $uidsize bytes long."
15699 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15704 *_t) zzz="$uidtype" ;;
15707 echo "Checking the sign of $zzz..." >&4
15709 #include <sys/types.h>
15720 if eval $compile; then
15724 echo "(I can't execute the test program--guessing unsigned.)" >&4
15728 1) echo "Your $zzz is unsigned." ;;
15729 -1) echo "Your $zzz is signed." ;;
15735 echo "(I can't compile the test program--guessing unsigned.)" >&4
15741 $echo "Checking the format string to be used for uids..." >&4
15744 -1) if $test X"$uidsize" = X"$ivsize"; then
15745 uidformat="$ivdformat"
15747 if $test X"$uidsize" = X"$longsize"; then
15750 if $test X"$uidsize" = X"$intsize"; then
15753 if $test X"$uidsize" = X"$shortsize"; then
15760 *) if $test X"$uidsize" = X"$uvsize"; then
15761 uidformat="$uvuformat"
15763 if $test X"$uidsize" = X"$longsize"; then
15766 if $test X"$uidsize" = X"$intsize"; then
15769 if $test X"$uidsize" = X"$shortsize"; then
15778 : determine compiler compiler
15787 if $test -f "$byacc"; then
15789 comp="byacc or $comp"
15791 if $test -f "$bison"; then
15792 comp="$comp or bison -y"
15794 rp="Which compiler compiler ($comp) shall I use?"
15803 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15809 : see if fcntl.h is there
15814 : see if we can include fcntl.h
15820 echo "We'll be including <fcntl.h>." >&4
15823 if $h_sysfile; then
15824 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15826 echo "We won't be including <fcntl.h>." >&4
15838 : see if this is a fp.h system
15842 : see if this is a fp_class.h system
15843 set fp_class.h i_fp_class
15846 : see if this is a ieeefp.h system
15847 set ieeefp.h i_ieeefp
15850 : see if this is a libutil.h system
15851 set libutil.h i_libutil
15854 : see if locale.h is available
15855 set locale.h i_locale
15858 : see if mach cthreads are available
15859 if test "X$usethreads" = "X$define"; then
15860 set mach/cthreads.h i_machcthr
15863 i_machcthr="$undef"
15868 : see if this is a math.h system
15872 : see if this is a mntent.h system
15873 set mntent.h i_mntent
15876 : see if ndbm.h is available
15881 : see if dbm_open exists
15882 set dbm_open d_dbm_open
15884 case "$d_dbm_open" in
15887 echo "We won't be including <ndbm.h>"
15896 : see if net/errno.h is available
15898 set net/errno.h val
15901 : Unfortunately, it causes problems on some systems. Arrgh.
15904 cat > try.c <<'EOM'
15907 #include <net/errno.h>
15913 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15914 echo "We'll be including <net/errno.h>." >&4
15916 echo "We won't be including <net/errno.h>." >&4
15925 : see if netinet/tcp.h is available
15926 set netinet/tcp.h i_netinettcp
15929 : see if this is a poll.h system
15933 : see if this is a prot.h system
15938 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15939 $cat <<'EOSH' > Cppsym.know
15940 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15941 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15942 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15943 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15944 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15945 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15946 bull c cadmus clipper CMU COFF COMPILER_VERSION
15947 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15948 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15949 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
15950 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15952 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
15953 H3050R H3050RX hbullx20 hcx host_mips
15954 hp200 hp300 hp700 HP700 hp800 hp9000
15955 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15956 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15957 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15958 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15959 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15960 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15961 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15962 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15963 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15964 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15965 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15966 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15967 MATH_HAS_NO_SIDE_EFFECTS
15968 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15969 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15970 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15971 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15972 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15973 NetBSD news1500 news1700 news1800 news1900 news3700
15974 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15975 ns32016 ns32332 ns32k nsc32000
15976 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15977 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15978 pc532 pdp11 PGC PIC plexus PORTAR posix
15979 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15980 POSIX_C_SOURCE POSIX_SOURCE POWER
15981 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15982 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15983 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15984 sony sony_news sonyrisc sparc sparclite spectrum
15985 stardent stdc STDC_EXT stratos sun sun3 sun386
15986 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15987 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15988 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15989 sysV68 sysV88 Tek4132 Tek4300 titan
15990 TM3200 TM5400 TM5600
15991 tower tower32 tower32_200 tower32_600 tower32_700
15992 tower32_800 tower32_850 tss
15993 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15994 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15995 unix UNIX95 UNIX99 unixpc unos
15996 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
15997 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
15998 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
16000 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16001 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16002 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16005 # Maybe put other stuff here too.
16006 cat <<EOSH >>Cppsym.know
16009 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16010 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16011 $cat Cppsym.know > Cppsym.c
16012 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
16013 $rm -f Cppsym.a Cppsym.b Cppsym.c
16014 cat <<EOSH > Cppsym
16016 if $test \$# -gt 0; then
16017 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16018 if $test -s Cppsym.got; then
16025 $tr " " "$trnl" | ./Cppsym.try
16031 cat <<EOSH > Cppsym.try
16033 cat <<'EOCP' > try.c
16039 cat <<'EOSH' >> Cppsym.try
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
16044 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
16046 echo 'return 0;}' >> try.c
16048 cat <<EOSH >> Cppsym.try
16050 case "$osname-$gccversion" in
16051 irix-) ccflags="\$ccflags -woff 1178" ;;
16052 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16054 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16056 chmod +x Cppsym.try
16057 $eunicefix Cppsym.try
16058 ./Cppsym < Cppsym.know > Cppsym.true
16059 : now check the C compiler for additional symbols
16060 postprocess_cc_v=''
16062 aix) postprocess_cc_v="|$tr , ' '" ;;
16069 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16072 -D*) echo "\$i" | $sed 's/^-D//';;
16073 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16078 postprocess_cc_v=''
16081 ./ccsym > ccsym1.raw
16082 if $test -s ccsym1.raw; then
16083 $sort ccsym1.raw | $uniq >ccsym.raw
16085 mv ccsym1.raw ccsym.raw
16088 $awk '/\=/ { print $0; next }
16089 { print $0"=1" }' ccsym.raw >ccsym.list
16090 $awk '/\=/ { print $0; next }
16091 { print $0"=1" }' Cppsym.true >ccsym.true
16092 $comm -13 ccsym.true ccsym.list >ccsym.own
16093 $comm -12 ccsym.true ccsym.list >ccsym.com
16094 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16096 if $test -z ccsym.raw; then
16097 echo "Your C compiler doesn't seem to define any symbols!" >&4
16099 echo "However, your C preprocessor defines the following symbols:"
16102 cppsymbols=`$cat Cppsym.true`
16103 cppsymbols=`echo $cppsymbols`
16104 cppccsymbols="$cppsymbols"
16106 if $test -s ccsym.com; then
16107 echo "Your C compiler and pre-processor define these symbols:"
16108 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16111 cppccsymbols=`$cat ccsym.com`
16112 cppccsymbols=`echo $cppccsymbols`
16113 $test "$silent" || sleep 1
16115 if $test -s ccsym.cpp; then
16116 $test "$also" && echo " "
16117 echo "Your C pre-processor ${also}defines the following symbols:"
16118 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16120 cppsymbols=`$cat ccsym.cpp`
16121 cppsymbols=`echo $cppsymbols`
16122 $test "$silent" || sleep 1
16124 if $test -s ccsym.own; then
16125 $test "$also" && echo " "
16126 echo "Your C compiler ${also}defines the following cpp symbols:"
16127 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16128 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16129 ccsymbols=`$cat ccsym.own`
16130 ccsymbols=`echo $ccsymbols`
16131 $test "$silent" || sleep 1
16135 : see if this is a termio system
16139 if $test `./findhdr termios.h`; then
16140 set tcsetattr i_termios
16146 "$define") echo "You have POSIX termios.h... good!" >&4;;
16147 *) if ./Cppsym pyr; then
16148 case "`/bin/universe`" in
16149 ucb) if $test `./findhdr sgtty.h`; then
16151 echo "<sgtty.h> found." >&4
16153 echo "System is pyramid with BSD universe."
16154 echo "<sgtty.h> not found--you could have problems." >&4
16156 *) if $test `./findhdr termio.h`; then
16158 echo "<termio.h> found." >&4
16160 echo "System is pyramid with USG universe."
16161 echo "<termio.h> not found--you could have problems." >&4
16165 if $test `./findhdr termio.h`; then
16166 echo "<termio.h> found." >&4
16168 elif $test `./findhdr sgtty.h`; then
16169 echo "<sgtty.h> found." >&4
16172 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16175 if $test `./findhdr sgtty.h`; then
16176 echo "<sgtty.h> found." >&4
16178 elif $test `./findhdr termio.h`; then
16179 echo "<termio.h> found." >&4
16182 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16186 set i_termio; eval $setvar
16187 val=$val2; set i_sgtty; eval $setvar
16188 val=$val3; set i_termios; eval $setvar
16190 : see if this is a shadow.h system
16191 set shadow.h i_shadow
16194 : see if stddef is available
16195 set stddef.h i_stddef
16198 : see if this is a sunmath.h system
16199 set sunmath.h i_sunmath
16202 : see if sys/access.h is available
16203 set sys/access.h i_sysaccess
16206 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16207 set sys/filio.h i_sysfilio
16210 if $test `./findhdr sys/ioctl.h`; then
16212 echo '<sys/ioctl.h> found.' >&4
16215 if $test $i_sysfilio = "$define"; then
16216 echo '<sys/ioctl.h> NOT found.' >&4
16218 $test $i_sgtty = "$define" && xxx="sgtty.h"
16219 $test $i_termio = "$define" && xxx="termio.h"
16220 $test $i_termios = "$define" && xxx="termios.h"
16221 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16227 : see if socket ioctl defs are in sys/sockio.h
16229 xxx=`./findhdr sys/sockio.h`
16230 if $test "$xxx"; then
16231 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16233 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16236 echo "No socket ioctls found in <sys/sockio.h>." >&4
16241 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16248 : see if this is a syslog.h system
16249 set syslog.h i_syslog
16253 : see if this is a sys/mode.h system
16254 set sys/mode.h i_sysmode
16257 : see if sys/resource.h has to be included
16258 set sys/resource.h i_sysresrc
16261 : see if sys/security.h is available
16262 set sys/security.h i_syssecrt
16265 : see if this is a sys/statvfs.h system
16266 set sys/statvfs.h i_sysstatvfs
16269 : see if this is a sys/un.h system
16270 set sys/un.h i_sysun
16274 : see if this is a sys/utsname.h system
16275 set sys/utsname.h i_sysutsname
16278 : see if this is a syswait system
16279 set sys/wait.h i_syswait
16282 : see if this is a ustat.h system
16283 set ustat.h i_ustat
16286 : see if this is an utime system
16287 set utime.h i_utime
16290 : see if this is a values.h system
16291 set values.h i_values
16294 : see if this is a vfork system
16297 set vfork.h i_vfork
16305 : see if gdbm.h is available
16310 : see if gdbm_open exists
16311 set gdbm_open d_gdbm_open
16313 case "$d_gdbm_open" in
16316 echo "We won't be including <gdbm.h>"
16326 echo "Looking for extensions..." >&4
16327 : If we are using the old config.sh, known_extensions may contain
16328 : old or inaccurate or duplicate values.
16329 known_extensions=''
16330 nonxs_extensions=''
16331 : We do not use find because it might not be available.
16332 : We do not just use MANIFEST because the user may have dropped
16333 : some additional extensions into the source tree and expect them
16336 : Function to recursively find available extensions, ignoring DynaLoader
16337 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16341 DynaLoader|dynaload) ;;
16343 if $test -f $xxx/$xxx.xs; then
16344 known_extensions="$known_extensions $1$xxx";
16345 elif $test -f $xxx/Makefile.PL; then
16346 nonxs_extensions="$nonxs_extensions $1$xxx";
16348 if $test -d $xxx -a $# -lt 10; then
16351 eval $find_extensions;
16363 eval $find_extensions
16364 # Special case: Add in threads/shared since it is not picked up by the
16365 # recursive find above (and adding in general recursive finding breaks
16366 # SDBM_File/sdbm). A.D. 10/25/2001.
16367 known_extensions="$known_extensions threads/shared"
16368 set X $nonxs_extensions
16370 nonxs_extensions="$*"
16371 set X $known_extensions
16373 known_extensions="$*"
16376 : Now see which are supported on this system.
16378 for xxx in $known_extensions ; do
16382 $define) avail_ext="$avail_ext $xxx" ;;
16385 GDBM_File|gdbm_fil)
16387 $define) avail_ext="$avail_ext $xxx" ;;
16390 I18N/Langinfo|i18n_lan)
16391 case "$i_langinfo$d_nl_langinfo" in
16392 $define$define) avail_ext="$avail_ext $xxx" ;;
16395 NDBM_File|ndbm_fil)
16398 case "$osname-$use64bitint" in
16399 cygwin-*|hpux-define)
16401 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16404 *) avail_ext="$avail_ext $xxx" ;;
16409 ODBM_File|odbm_fil)
16410 case "${i_dbm}${i_rpcsvcdbm}" in
16412 case "$osname-$use64bitint" in
16413 cygwin-*|hpux-define)
16415 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16418 *) avail_ext="$avail_ext $xxx" ;;
16424 case "$useposix" in
16425 true|define|y) avail_ext="$avail_ext $xxx" ;;
16429 case "$useopcode" in
16430 true|define|y) avail_ext="$avail_ext $xxx" ;;
16434 case "$d_socket" in
16435 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16438 Sys/Syslog|sys/syslog)
16439 : XXX syslog requires socket
16440 case "$d_socket" in
16441 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16445 case "$usethreads" in
16447 case "$useithreads" in
16448 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16452 threads|threads/shared)
16453 case "$usethreads" in
16455 case "$useithreads" in
16456 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16461 : XXX Do we need a useipcsysv variable here
16462 case "${d_msg}${d_sem}${d_shm}" in
16463 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16466 *) avail_ext="$avail_ext $xxx"
16475 : Now see which nonxs extensions are supported on this system.
16476 : For now assume all are.
16478 for xxx in $nonxs_extensions ; do
16480 *) nonxs_ext="$nonxs_ext $xxx"
16492 A number of extensions are supplied with $package. You may choose to
16493 compile these extensions for dynamic loading (the default), compile
16494 them into the $package executable (static loading), or not include
16495 them at all. Answer "none" to include no extensions.
16496 Note that DynaLoader is always built and need not be mentioned here.
16499 case "$dynamic_ext" in
16500 '') dflt="$avail_ext" ;;
16501 *) dflt="$dynamic_ext"
16502 # Perhaps we are reusing an old out-of-date config.sh.
16505 if test X"$dynamic_ext" != X"$avail_ext"; then
16507 NOTICE: Your previous config.sh list may be incorrect.
16508 The extensions now available to you are
16510 but the default list from your previous config.sh is
16522 rp="What extensions do you wish to load dynamically?"
16525 none) dynamic_ext=' ' ;;
16526 *) dynamic_ext="$ans" ;;
16529 case "$static_ext" in
16531 : Exclude those already listed in dynamic linking
16533 for xxx in $avail_ext; do
16534 case " $dynamic_ext " in
16536 *) dflt="$dflt $xxx" ;;
16543 *) dflt="$static_ext"
16550 rp="What extensions do you wish to load statically?"
16553 none) static_ext=' ' ;;
16554 *) static_ext="$ans" ;;
16559 A number of extensions are supplied with $package. Answer "none"
16560 to include no extensions.
16561 Note that DynaLoader is always built and need not be mentioned here.
16564 case "$static_ext" in
16565 '') dflt="$avail_ext" ;;
16566 *) dflt="$static_ext"
16567 # Perhaps we are reusing an old out-of-date config.sh.
16570 if test X"$static_ext" != X"$avail_ext"; then
16572 NOTICE: Your previous config.sh list may be incorrect.
16573 The extensions now available to you are
16575 but the default list from your previous config.sh is
16584 : Exclude those that are not xs extensions
16588 rp="What extensions do you wish to include?"
16591 none) static_ext=' ' ;;
16592 *) static_ext="$ans" ;;
16597 set X $dynamic_ext $static_ext $nonxs_ext
16601 : Remove libraries needed only for extensions
16602 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16603 : The exception is SunOS 4.x, which needs them.
16604 case "${osname}X${osvers}" in
16608 *) case "$usedl" in
16609 $define|true|[yY]*)
16610 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16614 *) perllibs="$libs"
16620 : Remove build directory name from cppstdin so it can be used from
16621 : either the present location or the final installed location.
16623 : Get out of the UU directory to get correct path name.
16625 case "$cppstdin" in
16627 echo "Stripping down cppstdin path name"
16633 : end of configuration questions
16635 echo "End of configuration questions."
16638 : back to where it started
16639 if test -d ../UU; then
16643 : configuration may be patched via a 'config.arch' file
16644 if $test -f config.arch; then
16645 echo "I see a config.arch file, loading it."
16649 : configuration may be patched via a 'config.over' file
16650 if $test -f config.over; then
16653 rp='I see a config.over file. Do you wish to load it?'
16656 n*) echo "OK, I'll ignore it.";;
16658 echo "Configuration override changes have been loaded."
16663 : in case they want portability, strip down executable paths
16664 case "$d_portable" in
16667 echo "Stripping down executable paths..." >&4
16668 for file in $loclist $trylist; do
16670 eval $file=`basename $temp`
16675 : create config.sh file
16677 echo "Creating config.sh..." >&4
16678 $spitshell <<EOT >config.sh
16681 # This file was produced by running the Configure script. It holds all the
16682 # definitions figured out by Configure. Should you modify one of these values,
16683 # do not forget to propagate your changes by running "Configure -der". You may
16684 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16687 # Package name : $package
16688 # Source directory : $src
16689 # Configuration time: $cf_time
16690 # Configured by : $cf_by
16691 # Target system : $myuname
16701 Revision='$Revision'
16709 alignbytes='$alignbytes'
16710 ansi2knr='$ansi2knr'
16711 aphostname='$aphostname'
16712 api_revision='$api_revision'
16713 api_subversion='$api_subversion'
16714 api_version='$api_version'
16715 api_versionstring='$api_versionstring'
16718 archlibexp='$archlibexp'
16719 archname64='$archname64'
16720 archname='$archname'
16721 archobjs='$archobjs'
16726 bincompat5005='$bincompat5005'
16730 byteorder='$byteorder'
16732 castflags='$castflags'
16735 cccdlflags='$cccdlflags'
16736 ccdlflags='$ccdlflags'
16738 ccflags_uselargefiles='$ccflags_uselargefiles'
16740 ccsymbols='$ccsymbols'
16741 ccversion='$ccversion'
16743 cf_email='$cf_email'
16745 charsize='$charsize'
16749 clocktype='$clocktype'
16751 compress='$compress'
16752 contains='$contains'
16756 cpp_stuff='$cpp_stuff'
16757 cppccsymbols='$cppccsymbols'
16758 cppflags='$cppflags'
16760 cppminus='$cppminus'
16762 cppstdin='$cppstdin'
16763 cppsymbols='$cppsymbols'
16764 cryptlib='$cryptlib'
16766 d_Gconvert='$d_Gconvert'
16767 d_PRIEUldbl='$d_PRIEUldbl'
16768 d_PRIFUldbl='$d_PRIFUldbl'
16769 d_PRIGUldbl='$d_PRIGUldbl'
16770 d_PRIXU64='$d_PRIXU64'
16771 d_PRId64='$d_PRId64'
16772 d_PRIeldbl='$d_PRIeldbl'
16773 d_PRIfldbl='$d_PRIfldbl'
16774 d_PRIgldbl='$d_PRIgldbl'
16775 d_PRIi64='$d_PRIi64'
16776 d_PRIo64='$d_PRIo64'
16777 d_PRIu64='$d_PRIu64'
16778 d_PRIx64='$d_PRIx64'
16779 d_SCNfldbl='$d_SCNfldbl'
16780 d__fwalk='$d__fwalk'
16781 d_access='$d_access'
16782 d_accessx='$d_accessx'
16784 d_archlib='$d_archlib'
16787 d_attribut='$d_attribut'
16790 d_bincompat5005='$d_bincompat5005'
16792 d_bsdgetpgrp='$d_bsdgetpgrp'
16793 d_bsdsetpgrp='$d_bsdsetpgrp'
16795 d_casti32='$d_casti32'
16796 d_castneg='$d_castneg'
16797 d_charvspr='$d_charvspr'
16799 d_chroot='$d_chroot'
16800 d_chsize='$d_chsize'
16802 d_closedir='$d_closedir'
16803 d_cmsghdr_s='$d_cmsghdr_s'
16807 d_cuserid='$d_cuserid'
16808 d_dbl_dig='$d_dbl_dig'
16809 d_dbminitproto='$d_dbminitproto'
16810 d_difftime='$d_difftime'
16811 d_dirnamlen='$d_dirnamlen'
16812 d_dlerror='$d_dlerror'
16813 d_dlopen='$d_dlopen'
16814 d_dlsymun='$d_dlsymun'
16815 d_dosuid='$d_dosuid'
16816 d_drand48proto='$d_drand48proto'
16818 d_eaccess='$d_eaccess'
16819 d_endgrent='$d_endgrent'
16820 d_endhent='$d_endhent'
16821 d_endnent='$d_endnent'
16822 d_endpent='$d_endpent'
16823 d_endpwent='$d_endpwent'
16824 d_endsent='$d_endsent'
16825 d_eofnblk='$d_eofnblk'
16826 d_eunice='$d_eunice'
16827 d_fchdir='$d_fchdir'
16828 d_fchmod='$d_fchmod'
16829 d_fchown='$d_fchown'
16831 d_fcntl_can_lock='$d_fcntl_can_lock'
16832 d_fd_macros='$d_fd_macros'
16833 d_fd_set='$d_fd_set'
16834 d_fds_bits='$d_fds_bits'
16835 d_fgetpos='$d_fgetpos'
16836 d_finite='$d_finite'
16837 d_finitel='$d_finitel'
16838 d_flexfnam='$d_flexfnam'
16840 d_flockproto='$d_flockproto'
16842 d_fp_class='$d_fp_class'
16843 d_fpathconf='$d_fpathconf'
16844 d_fpclass='$d_fpclass'
16845 d_fpclassify='$d_fpclassify'
16846 d_fpclassl='$d_fpclassl'
16847 d_fpos64_t='$d_fpos64_t'
16848 d_frexpl='$d_frexpl'
16849 d_fs_data_s='$d_fs_data_s'
16850 d_fseeko='$d_fseeko'
16851 d_fsetpos='$d_fsetpos'
16852 d_fstatfs='$d_fstatfs'
16853 d_fstatvfs='$d_fstatvfs'
16855 d_ftello='$d_ftello'
16857 d_getcwd='$d_getcwd'
16858 d_getespwnam='$d_getespwnam'
16859 d_getfsstat='$d_getfsstat'
16860 d_getgrent='$d_getgrent'
16861 d_getgrps='$d_getgrps'
16862 d_gethbyaddr='$d_gethbyaddr'
16863 d_gethbyname='$d_gethbyname'
16864 d_gethent='$d_gethent'
16865 d_gethname='$d_gethname'
16866 d_gethostprotos='$d_gethostprotos'
16867 d_getitimer='$d_getitimer'
16868 d_getlogin='$d_getlogin'
16869 d_getmnt='$d_getmnt'
16870 d_getmntent='$d_getmntent'
16871 d_getnbyaddr='$d_getnbyaddr'
16872 d_getnbyname='$d_getnbyname'
16873 d_getnent='$d_getnent'
16874 d_getnetprotos='$d_getnetprotos'
16875 d_getpagsz='$d_getpagsz'
16876 d_getpbyname='$d_getpbyname'
16877 d_getpbynumber='$d_getpbynumber'
16878 d_getpent='$d_getpent'
16879 d_getpgid='$d_getpgid'
16880 d_getpgrp2='$d_getpgrp2'
16881 d_getpgrp='$d_getpgrp'
16882 d_getppid='$d_getppid'
16883 d_getprior='$d_getprior'
16884 d_getprotoprotos='$d_getprotoprotos'
16885 d_getprpwnam='$d_getprpwnam'
16886 d_getpwent='$d_getpwent'
16887 d_getsbyname='$d_getsbyname'
16888 d_getsbyport='$d_getsbyport'
16889 d_getsent='$d_getsent'
16890 d_getservprotos='$d_getservprotos'
16891 d_getspnam='$d_getspnam'
16892 d_gettimeod='$d_gettimeod'
16893 d_gnulibc='$d_gnulibc'
16894 d_grpasswd='$d_grpasswd'
16895 d_hasmntopt='$d_hasmntopt'
16898 d_inetaton='$d_inetaton'
16899 d_int64_t='$d_int64_t'
16900 d_isascii='$d_isascii'
16901 d_isfinite='$d_isfinite'
16904 d_isnanl='$d_isnanl'
16905 d_killpg='$d_killpg'
16906 d_lchown='$d_lchown'
16907 d_ldbl_dig='$d_ldbl_dig'
16909 d_locconv='$d_locconv'
16911 d_longdbl='$d_longdbl'
16912 d_longlong='$d_longlong'
16913 d_lseekproto='$d_lseekproto'
16915 d_madvise='$d_madvise'
16917 d_mbstowcs='$d_mbstowcs'
16918 d_mbtowc='$d_mbtowc'
16919 d_memchr='$d_memchr'
16920 d_memcmp='$d_memcmp'
16921 d_memcpy='$d_memcpy'
16922 d_memmove='$d_memmove'
16923 d_memset='$d_memset'
16925 d_mkdtemp='$d_mkdtemp'
16926 d_mkfifo='$d_mkfifo'
16927 d_mkstemp='$d_mkstemp'
16928 d_mkstemps='$d_mkstemps'
16929 d_mktime='$d_mktime'
16932 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16933 d_mprotect='$d_mprotect'
16935 d_msg_ctrunc='$d_msg_ctrunc'
16936 d_msg_dontroute='$d_msg_dontroute'
16937 d_msg_oob='$d_msg_oob'
16938 d_msg_peek='$d_msg_peek'
16939 d_msg_proxy='$d_msg_proxy'
16940 d_msgctl='$d_msgctl'
16941 d_msgget='$d_msgget'
16942 d_msghdr_s='$d_msghdr_s'
16943 d_msgrcv='$d_msgrcv'
16944 d_msgsnd='$d_msgsnd'
16946 d_munmap='$d_munmap'
16947 d_mymalloc='$d_mymalloc'
16949 d_nl_langinfo='$d_nl_langinfo'
16950 d_nv_preserves_uv='$d_nv_preserves_uv'
16951 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16952 d_off64_t='$d_off64_t'
16953 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16954 d_oldpthreads='$d_oldpthreads'
16955 d_oldsock='$d_oldsock'
16957 d_pathconf='$d_pathconf'
16959 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16960 d_phostname='$d_phostname'
16963 d_portable='$d_portable'
16964 d_procselfexe='$d_procselfexe'
16965 d_pthread_atfork='$d_pthread_atfork'
16966 d_pthread_yield='$d_pthread_yield'
16968 d_pwchange='$d_pwchange'
16969 d_pwclass='$d_pwclass'
16970 d_pwcomment='$d_pwcomment'
16971 d_pwexpire='$d_pwexpire'
16972 d_pwgecos='$d_pwgecos'
16973 d_pwpasswd='$d_pwpasswd'
16974 d_pwquota='$d_pwquota'
16977 d_readdir='$d_readdir'
16978 d_readlink='$d_readlink'
16980 d_recvmsg='$d_recvmsg'
16981 d_rename='$d_rename'
16982 d_rewinddir='$d_rewinddir'
16984 d_safebcpy='$d_safebcpy'
16985 d_safemcpy='$d_safemcpy'
16986 d_sanemcmp='$d_sanemcmp'
16987 d_sbrkproto='$d_sbrkproto'
16988 d_sched_yield='$d_sched_yield'
16989 d_scm_rights='$d_scm_rights'
16990 d_seekdir='$d_seekdir'
16991 d_select='$d_select'
16993 d_semctl='$d_semctl'
16994 d_semctl_semid_ds='$d_semctl_semid_ds'
16995 d_semctl_semun='$d_semctl_semun'
16996 d_semget='$d_semget'
16998 d_sendmsg='$d_sendmsg'
16999 d_setegid='$d_setegid'
17000 d_seteuid='$d_seteuid'
17001 d_setgrent='$d_setgrent'
17002 d_setgrps='$d_setgrps'
17003 d_sethent='$d_sethent'
17004 d_setitimer='$d_setitimer'
17005 d_setlinebuf='$d_setlinebuf'
17006 d_setlocale='$d_setlocale'
17007 d_setnent='$d_setnent'
17008 d_setpent='$d_setpent'
17009 d_setpgid='$d_setpgid'
17010 d_setpgrp2='$d_setpgrp2'
17011 d_setpgrp='$d_setpgrp'
17012 d_setprior='$d_setprior'
17013 d_setproctitle='$d_setproctitle'
17014 d_setpwent='$d_setpwent'
17015 d_setregid='$d_setregid'
17016 d_setresgid='$d_setresgid'
17017 d_setresuid='$d_setresuid'
17018 d_setreuid='$d_setreuid'
17019 d_setrgid='$d_setrgid'
17020 d_setruid='$d_setruid'
17021 d_setsent='$d_setsent'
17022 d_setsid='$d_setsid'
17023 d_setvbuf='$d_setvbuf'
17027 d_shmatprototype='$d_shmatprototype'
17028 d_shmctl='$d_shmctl'
17030 d_shmget='$d_shmget'
17031 d_sigaction='$d_sigaction'
17032 d_sigprocmask='$d_sigprocmask'
17033 d_sigsetjmp='$d_sigsetjmp'
17034 d_sockatmark='$d_sockatmark'
17035 d_sockatmarkproto='$d_sockatmarkproto'
17036 d_socket='$d_socket'
17037 d_socklen_t='$d_socklen_t'
17038 d_sockpair='$d_sockpair'
17039 d_socks5_init='$d_socks5_init'
17041 d_sresgproto='$d_sresgproto'
17042 d_sresuproto='$d_sresuproto'
17043 d_statblks='$d_statblks'
17044 d_statfs_f_flags='$d_statfs_f_flags'
17045 d_statfs_s='$d_statfs_s'
17046 d_statvfs='$d_statvfs'
17047 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17048 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17049 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17050 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17051 d_stdio_stream_array='$d_stdio_stream_array'
17052 d_stdiobase='$d_stdiobase'
17053 d_stdstdio='$d_stdstdio'
17054 d_strchr='$d_strchr'
17055 d_strcoll='$d_strcoll'
17056 d_strctcpy='$d_strctcpy'
17057 d_strerrm='$d_strerrm'
17058 d_strerror='$d_strerror'
17059 d_strftime='$d_strftime'
17060 d_strtod='$d_strtod'
17061 d_strtol='$d_strtol'
17062 d_strtold='$d_strtold'
17063 d_strtoll='$d_strtoll'
17064 d_strtoq='$d_strtoq'
17065 d_strtoul='$d_strtoul'
17066 d_strtoull='$d_strtoull'
17067 d_strtouq='$d_strtouq'
17068 d_strxfrm='$d_strxfrm'
17069 d_suidsafe='$d_suidsafe'
17070 d_symlink='$d_symlink'
17071 d_syscall='$d_syscall'
17072 d_syscallproto='$d_syscallproto'
17073 d_sysconf='$d_sysconf'
17074 d_sysernlst='$d_sysernlst'
17075 d_syserrlst='$d_syserrlst'
17076 d_system='$d_system'
17077 d_tcgetpgrp='$d_tcgetpgrp'
17078 d_tcsetpgrp='$d_tcsetpgrp'
17079 d_telldir='$d_telldir'
17080 d_telldirproto='$d_telldirproto'
17083 d_truncate='$d_truncate'
17084 d_tzname='$d_tzname'
17085 d_u32align='$d_u32align'
17086 d_ualarm='$d_ualarm'
17089 d_union_semun='$d_union_semun'
17090 d_unordered='$d_unordered'
17091 d_usleep='$d_usleep'
17092 d_usleepproto='$d_usleepproto'
17094 d_vendorarch='$d_vendorarch'
17095 d_vendorbin='$d_vendorbin'
17096 d_vendorlib='$d_vendorlib'
17098 d_void_closedir='$d_void_closedir'
17099 d_voidsig='$d_voidsig'
17100 d_voidtty='$d_voidtty'
17101 d_volatile='$d_volatile'
17102 d_vprintf='$d_vprintf'
17104 d_waitpid='$d_waitpid'
17105 d_wcstombs='$d_wcstombs'
17106 d_wctomb='$d_wctomb'
17107 d_writev='$d_writev'
17110 db_hashtype='$db_hashtype'
17111 db_prefixtype='$db_prefixtype'
17112 db_version_major='$db_version_major'
17113 db_version_minor='$db_version_minor'
17114 db_version_patch='$db_version_patch'
17115 defvoidused='$defvoidused'
17116 direntrytype='$direntrytype'
17119 doublesize='$doublesize'
17121 dynamic_ext='$dynamic_ext'
17127 eunicefix='$eunicefix'
17130 extensions='$extensions'
17132 fflushNULL='$fflushNULL'
17133 fflushall='$fflushall'
17135 firstmakefile='$firstmakefile'
17137 fpossize='$fpossize'
17138 fpostype='$fpostype'
17139 freetype='$freetype'
17142 full_csh='$full_csh'
17143 full_sed='$full_sed'
17144 gccosandvers='$gccosandvers'
17145 gccversion='$gccversion'
17146 gidformat='$gidformat'
17152 groupcat='$groupcat'
17153 groupstype='$groupstype'
17156 h_sysfile='$h_sysfile'
17167 i_arpainet='$i_arpainet'
17168 i_bsdioctl='$i_bsdioctl'
17171 i_dirent='$i_dirent'
17177 i_fp_class='$i_fp_class'
17180 i_ieeefp='$i_ieeefp'
17181 i_inttypes='$i_inttypes'
17182 i_langinfo='$i_langinfo'
17183 i_libutil='$i_libutil'
17184 i_limits='$i_limits'
17185 i_locale='$i_locale'
17186 i_machcthr='$i_machcthr'
17187 i_malloc='$i_malloc'
17189 i_memory='$i_memory'
17190 i_mntent='$i_mntent'
17193 i_neterrno='$i_neterrno'
17194 i_netinettcp='$i_netinettcp'
17198 i_pthread='$i_pthread'
17200 i_rpcsvcdbm='$i_rpcsvcdbm'
17203 i_shadow='$i_shadow'
17205 i_stdarg='$i_stdarg'
17206 i_stddef='$i_stddef'
17207 i_stdlib='$i_stdlib'
17208 i_string='$i_string'
17209 i_sunmath='$i_sunmath'
17210 i_sysaccess='$i_sysaccess'
17211 i_sysdir='$i_sysdir'
17212 i_sysfile='$i_sysfile'
17213 i_sysfilio='$i_sysfilio'
17215 i_sysioctl='$i_sysioctl'
17216 i_syslog='$i_syslog'
17217 i_sysmman='$i_sysmman'
17218 i_sysmode='$i_sysmode'
17219 i_sysmount='$i_sysmount'
17220 i_sysndir='$i_sysndir'
17221 i_sysparam='$i_sysparam'
17222 i_sysresrc='$i_sysresrc'
17223 i_syssecrt='$i_syssecrt'
17224 i_sysselct='$i_sysselct'
17225 i_syssockio='$i_syssockio'
17226 i_sysstat='$i_sysstat'
17227 i_sysstatfs='$i_sysstatfs'
17228 i_sysstatvfs='$i_sysstatvfs'
17229 i_systime='$i_systime'
17230 i_systimek='$i_systimek'
17231 i_systimes='$i_systimes'
17232 i_systypes='$i_systypes'
17233 i_sysuio='$i_sysuio'
17235 i_sysutsname='$i_sysutsname'
17236 i_sysvfs='$i_sysvfs'
17237 i_syswait='$i_syswait'
17238 i_termio='$i_termio'
17239 i_termios='$i_termios'
17241 i_unistd='$i_unistd'
17244 i_values='$i_values'
17245 i_varargs='$i_varargs'
17246 i_varhdr='$i_varhdr'
17248 ignore_versioned_solibs='$ignore_versioned_solibs'
17249 inc_version_list='$inc_version_list'
17250 inc_version_list_init='$inc_version_list_init'
17253 installarchlib='$installarchlib'
17254 installbin='$installbin'
17255 installman1dir='$installman1dir'
17256 installman3dir='$installman3dir'
17257 installprefix='$installprefix'
17258 installprefixexp='$installprefixexp'
17259 installprivlib='$installprivlib'
17260 installscript='$installscript'
17261 installsitearch='$installsitearch'
17262 installsitebin='$installsitebin'
17263 installsitelib='$installsitelib'
17264 installstyle='$installstyle'
17265 installusrbinperl='$installusrbinperl'
17266 installvendorarch='$installvendorarch'
17267 installvendorbin='$installvendorbin'
17268 installvendorlib='$installvendorlib'
17270 issymlink='$issymlink'
17271 ivdformat='$ivdformat'
17274 known_extensions='$known_extensions'
17277 lddlflags='$lddlflags'
17279 ldflags_uselargefiles='$ldflags_uselargefiles'
17280 ldlibpthname='$ldlibpthname'
17287 libsdirs='$libsdirs'
17288 libsfiles='$libsfiles'
17289 libsfound='$libsfound'
17290 libspath='$libspath'
17291 libswanted='$libswanted'
17292 libswanted_uselargefiles='$libswanted_uselargefiles'
17298 locincpth='$locincpth'
17299 loclibpth='$loclibpth'
17300 longdblsize='$longdblsize'
17301 longlongsize='$longlongsize'
17302 longsize='$longsize'
17306 lseeksize='$lseeksize'
17307 lseektype='$lseektype'
17311 make_set_make='$make_set_make'
17312 mallocobj='$mallocobj'
17313 mallocsrc='$mallocsrc'
17314 malloctype='$malloctype'
17316 man1direxp='$man1direxp'
17319 man3direxp='$man3direxp'
17321 mips_type='$mips_type'
17323 mmaptype='$mmaptype'
17324 modetype='$modetype'
17326 multiarch='$multiarch'
17328 myarchname='$myarchname'
17329 mydomain='$mydomain'
17330 myhostname='$myhostname'
17333 need_va_copy='$need_va_copy'
17334 netdb_hlen_type='$netdb_hlen_type'
17335 netdb_host_type='$netdb_host_type'
17336 netdb_name_type='$netdb_name_type'
17337 netdb_net_type='$netdb_net_type'
17340 nm_so_opt='$nm_so_opt'
17341 nonxs_ext='$nonxs_ext'
17343 nvEUformat='$nvEUformat'
17344 nvFUformat='$nvFUformat'
17345 nvGUformat='$nvGUformat'
17346 nveformat='$nveformat'
17347 nvfformat='$nvfformat'
17348 nvgformat='$nvgformat'
17351 o_nonblock='$o_nonblock'
17353 old_pthread_create_joinable='$old_pthread_create_joinable'
17354 optimize='$optimize'
17355 orderlib='$orderlib'
17358 otherlibdirs='$otherlibdirs'
17362 patchlevel='$patchlevel'
17363 path_sep='$path_sep'
17366 perl_patchlevel='$perl_patchlevel'
17367 perladmin='$perladmin'
17368 perllibs='$perllibs'
17369 perlpath='$perlpath'
17371 phostname='$phostname'
17374 pm_apiversion='$pm_apiversion'
17378 prefixexp='$prefixexp'
17380 privlibexp='$privlibexp'
17381 prototype='$prototype'
17383 quadkind='$quadkind'
17384 quadtype='$quadtype'
17385 randbits='$randbits'
17386 randfunc='$randfunc'
17387 randseedtype='$randseedtype'
17389 rd_nodata='$rd_nodata'
17390 revision='$revision'
17395 sPRIEUldbl='$sPRIEUldbl'
17396 sPRIFUldbl='$sPRIFUldbl'
17397 sPRIGUldbl='$sPRIGUldbl'
17398 sPRIXU64='$sPRIXU64'
17400 sPRIeldbl='$sPRIeldbl'
17401 sPRIfldbl='$sPRIfldbl'
17402 sPRIgldbl='$sPRIgldbl'
17407 sSCNfldbl='$sSCNfldbl'
17408 sched_yield='$sched_yield'
17409 scriptdir='$scriptdir'
17410 scriptdirexp='$scriptdirexp'
17412 seedfunc='$seedfunc'
17413 selectminbits='$selectminbits'
17414 selecttype='$selecttype'
17415 sendmail='$sendmail'
17418 sharpbang='$sharpbang'
17419 shmattype='$shmattype'
17420 shortsize='$shortsize'
17423 sig_count='$sig_count'
17424 sig_name='$sig_name'
17425 sig_name_init='$sig_name_init'
17427 sig_num_init='$sig_num_init'
17428 sig_size='$sig_size'
17429 signal_t='$signal_t'
17430 sitearch='$sitearch'
17431 sitearchexp='$sitearchexp'
17433 sitebinexp='$sitebinexp'
17435 sitelib_stem='$sitelib_stem'
17436 sitelibexp='$sitelibexp'
17437 siteprefix='$siteprefix'
17438 siteprefixexp='$siteprefixexp'
17439 sizesize='$sizesize'
17440 sizetype='$sizetype'
17444 sockethdr='$sockethdr'
17445 socketlib='$socketlib'
17446 socksizetype='$socksizetype'
17448 spackage='$spackage'
17449 spitshell='$spitshell'
17451 ssizetype='$ssizetype'
17452 startperl='$startperl'
17454 static_ext='$static_ext'
17456 stdio_base='$stdio_base'
17457 stdio_bufsiz='$stdio_bufsiz'
17458 stdio_cnt='$stdio_cnt'
17459 stdio_filbuf='$stdio_filbuf'
17460 stdio_ptr='$stdio_ptr'
17461 stdio_stream_array='$stdio_stream_array'
17464 subversion='$subversion'
17468 targetarch='$targetarch'
17472 timeincl='$timeincl'
17473 timetype='$timetype'
17487 uidformat='$uidformat'
17493 uquadtype='$uquadtype'
17494 use5005threads='$use5005threads'
17495 use64bitall='$use64bitall'
17496 use64bitint='$use64bitint'
17497 usecrosscompile='$usecrosscompile'
17499 useithreads='$useithreads'
17500 uselargefiles='$uselargefiles'
17501 uselongdouble='$uselongdouble'
17502 usemorebits='$usemorebits'
17503 usemultiplicity='$usemultiplicity'
17504 usemymalloc='$usemymalloc'
17506 useopcode='$useopcode'
17507 useperlio='$useperlio'
17508 useposix='$useposix'
17509 usereentrant='$usereentrant'
17511 useshrplib='$useshrplib'
17512 usesocks='$usesocks'
17513 usethreads='$usethreads'
17514 usevendorprefix='$usevendorprefix'
17515 usevfork='$usevfork'
17518 uvXUformat='$uvXUformat'
17519 uvoformat='$uvoformat'
17522 uvuformat='$uvuformat'
17523 uvxformat='$uvxformat'
17524 vendorarch='$vendorarch'
17525 vendorarchexp='$vendorarchexp'
17526 vendorbin='$vendorbin'
17527 vendorbinexp='$vendorbinexp'
17528 vendorlib='$vendorlib'
17529 vendorlib_stem='$vendorlib_stem'
17530 vendorlibexp='$vendorlibexp'
17531 vendorprefix='$vendorprefix'
17532 vendorprefixexp='$vendorprefixexp'
17534 version_patchlevel_string='$version_patchlevel_string'
17535 versiononly='$versiononly'
17537 voidflags='$voidflags'
17539 xs_apiversion='$xs_apiversion'
17541 yaccflags='$yaccflags'
17546 : Add in command line options if available
17547 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17549 : add special variables
17550 $test -f $src/patchlevel.h && \
17551 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17552 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17553 echo "PERL_CONFIG_SH=true" >>config.sh
17555 : propagate old symbols
17556 if $test -f UU/config.sh; then
17557 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17558 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17559 $sort | $uniq -u >UU/oldsyms
17560 set X `cat UU/oldsyms`
17566 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17568 echo "# Variables propagated from previous config.sh file." >>config.sh
17569 for sym in `cat UU/oldsyms`; do
17570 echo " Propagating $hint variable "'$'"$sym..."
17571 eval 'tmp="$'"${sym}"'"'
17573 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17579 : Finish up by extracting the .SH files
17583 echo "Extraction done."
17593 If you'd like to make any changes to the config.sh file before I begin
17594 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17597 rp="Press return or use a shell escape to edit config.sh:"
17602 *) : in case they cannot read
17603 sh 1>&4 -c "$ans";;
17608 : if this fails, just run all the .SH files by hand
17617 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17624 Now you need to generate make dependencies by running "$make depend".
17625 You might prefer to run it in background: "$make depend > makedepend.out &"
17626 It can take a while, so you might not want to run it right now.
17631 rp="Run $make depend now?"
17635 $make depend && echo "Now you must run '$make'."
17638 echo "You must run '$make depend' then '$make'."
17641 elif test -f [Mm]akefile; then
17643 echo "Now you must run a $make."
17645 echo "Configure done."
17648 if $test -f Policy.sh; then
17651 If you compile $package on a different machine or from a different object
17652 directory, copy the Policy.sh file from this object directory to the
17653 new one before you run Configure -- this will help you with most of
17654 the policy defaults.
17658 if $test -f config.msg; then
17659 echo "Hmm. I also noted the following information while running:"
17661 $cat config.msg >&4
17664 $rm -f kit*isdone ark*isdone