3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Mon Jul 30 05:36:10 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
118 case "$inksh/$needksh" in
125 case "$inksh/$avoidksh" in
131 case "$inksh/$needksh-$avoidksh-" in
134 (I see you are using the Korn shell. Some ksh's blow up on $me,
135 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
141 echo "(Feeding myself to $newsh $reason.)"
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
154 *bash*) CDPATH='.' ;;
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
479 d_old_pthread_create_joinable=''
480 old_pthread_create_joinable=''
568 d_stdio_ptr_lval_nochange_cnt=''
569 d_stdio_ptr_lval_sets_cnt=''
752 inc_version_list_init=''
771 ignore_versioned_solibs=''
830 d_perl_otherlibdirs=''
844 version_patchlevel_string=''
849 d_nv_preserves_uv_bits=''
948 d_stdio_stream_array=''
949 stdio_stream_array=''
959 ccflags_uselargefiles=''
960 ldflags_uselargefiles=''
961 libswanted_uselargefiles=''
1007 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1010 : We must find out about Eunice early
1012 if test -f /etc/unixtovms; then
1013 eunicefix=/etc/unixtovms
1015 if test -f /etc/unixtovms.exe; then
1016 eunicefix=/etc/unixtovms.exe
1023 : set useposix=false in your hint file to disable the POSIX extension.
1025 : set useopcode=false in your hint file to disable the Opcode extension.
1027 : Trailing extension. Override this in a hint file, if needed.
1029 : Extra object files, if any, needed on this platform.
1032 : Possible local include directories to search.
1033 : Set locincpth to "" in a hint file to defeat local include searches.
1034 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1035 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1037 : no include file wanted by default
1042 : change the next line if compiling for Xenix/286 on Xenix/386
1043 xlibpth='/usr/lib/386 /lib/386'
1044 : Possible local library directories to search.
1045 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1046 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1048 : general looking path for locating libraries
1049 glibpth="/lib /usr/lib $xlibpth"
1050 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1051 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1052 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1054 : Private path used by Configure to find libraries. Its value
1055 : is prepended to libpth. This variable takes care of special
1056 : machines, like the mips. Usually, it should be empty.
1059 : default library list
1061 : some systems want to use only the non-versioned libso:s
1062 ignore_versioned_solibs=''
1064 ccflags_uselargefiles=''
1065 ldflags_uselargefiles=''
1066 libswanted_uselargefiles=''
1067 : set usemultiplicity on the Configure command line to enable multiplicity.
1068 : set usesocks on the Configure command line to enable socks.
1069 : set usethreads on the Configure command line to enable threads.
1070 usereentrant='undef'
1071 : full support for void wanted by default
1074 : List of libraries we want.
1075 : If anyone needs -lnet, put it in a hint file.
1076 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1077 libswanted="$libswanted dld ld sun m c cposix posix"
1078 libswanted="$libswanted ndir dir crypt sec"
1079 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1080 : We probably want to search /usr/shlib before most other libraries.
1081 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1082 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1083 glibpth="/usr/shlib $glibpth"
1084 : Do not use vfork unless overridden by a hint file.
1087 : Find the basic shell for Bourne shell scripts
1091 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1094 if test -f "$xxx"; then
1097 : Build up a list and do a single loop so we can 'break' out.
1098 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1099 for xxx in sh bash ksh pdksh ash; do
1101 try="$try ${p}/${xxx}"
1105 if test -f "$xxx"; then
1108 elif test -f "$xxx.exe"; then
1119 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1121 Usually it's in /bin/sh. How did you even get this far?
1122 Please contact me (Perl Maintainers) at perlbug@perl.org and
1123 we'll try to straighten this all out.
1129 : see if sh knows # comments
1130 if `$sh -c '#' >/dev/null 2>&1`; then
1134 test -f $xcat || xcat=/usr/bin/cat
1135 echo "#!$xcat" >sharp
1139 if test -s today; then
1142 echo "#! $xcat" > sharp
1146 if test -s today; then
1154 echo "Your $sh doesn't grok # comments--I will strip them later on."
1157 echo "exec grep -v '^[ ]*#'" >spitshell
1159 $eunicefix spitshell
1160 spitshell=`pwd`/spitshell
1162 echo "I presume that if # doesn't work, #! won't work either!"
1167 : figure out how to guarantee sh startup
1169 '') startsh=${sharpbang}${sh} ;;
1181 : echo "Yup, it does."
1183 echo "Hmm... '$startsh' does not guarantee sh startup..."
1184 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1189 : Save command line options in file UU/cmdline.opt for later use in
1190 : generating config.sh.
1191 cat > cmdline.opt <<EOSH
1192 # Configure command line arguments.
1201 cat >>cmdline.opt <<EOSH
1202 config_arg$argn='$arg'
1204 # Extreme backslashitis: replace each ' by '"'"'
1205 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1208 arg_exp=`cat cmdl.opt`
1209 args_exp="$args_exp$args_sep'$arg_exp'"
1210 argn=`expr $argn + 1`
1213 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1214 # used by ./hints/os2.sh
1217 : produce awk script to parse command line options
1218 cat >options.awk <<'EOF'
1220 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1222 len = length(optstr);
1223 for (i = 1; i <= len; i++) {
1224 c = substr(optstr, i, 1);
1225 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1236 if (substr(str, 1, 1) != "-") {
1237 printf("'%s'\n", str);
1241 for (i = 2; i <= len; i++) {
1242 c = substr(str, i, 1);
1244 printf("-%s\n", substr(str, i));
1250 printf("'%s'\n", substr(str, i + 1));
1263 : process the command line options
1264 set X `for arg in "$@"; do echo "X$arg"; done |
1265 sed -e s/X// | awk -f options.awk`
1270 : set up default values
1280 rm -f optdef.sh posthint.sh
1281 cat >optdef.sh <<EOS
1287 while test $# -gt 0; do
1289 -d) shift; fastread=yes;;
1290 -e) shift; alldone=cont;;
1294 if test -r "$1"; then
1297 echo "$me: cannot read config file $1." >&2
1302 -h) shift; error=true;;
1303 -r) shift; reuseval=true;;
1304 -s) shift; silent=true; realsilent=true;;
1305 -E) shift; alldone=exit;;
1306 -K) shift; knowitall=true;;
1307 -O) shift; override=true;;
1308 -S) shift; silent=true; extractsh=true;;
1313 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1314 echo "$me: ignoring -D $1" >&2
1317 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1318 *) echo "$1='define'" >> optdef.sh;;
1325 *=) echo "$1" >> optdef.sh;;
1327 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1328 echo "$me: ignoring -U $1" >&2
1330 *) echo "$1='undef'" >> optdef.sh;;
1341 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1345 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1346 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1352 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1353 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1354 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1355 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1356 *) xxx=`echo $yyy|sed 's!:.*!!'`
1357 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1363 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1365 echo "$yyy=''" >> posthint.sh ;;
1370 echo "$yyy='$zzz'" >> posthint.sh ;;
1372 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1374 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1379 echo "$yyy=$zzz" >> posthint.sh ;;
1380 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1384 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1387 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1395 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1396 [-U symbol] [-U symbol=] [-A command:symbol...]
1397 -d : use defaults for all answers.
1398 -e : go on without questioning past the production of config.sh.
1399 -f : specify an alternate default configuration file.
1400 -h : print this help message and exit (with an error status).
1401 -r : reuse C symbols value if possible (skips costly nm extraction).
1402 -s : silent mode, only echoes questions and essential information.
1403 -D : define symbol to have some value:
1404 -D symbol symbol gets the value 'define'
1405 -D symbol=value symbol gets the value 'value'
1406 -E : stop at the end of questions, after having produced config.sh.
1407 -K : do not use unless you know what you are doing.
1408 -O : let -D and -U override definitions from loaded configuration file.
1409 -S : perform variable substitutions on all .SH files (can mix with -f)
1410 -U : undefine symbol:
1411 -U symbol symbol gets the value 'undef'
1412 -U symbol= symbol gets completely empty
1413 -A : manipulate symbol after the platform specific hints have been applied:
1414 -A symbol=value append " "value to symbol
1415 -A append:symbol=value append value to symbol
1416 -A define:symbol=value define symbol to have value
1417 -A clear:symbol define symbol to be ''
1418 -A define:symbol define symbol to be 'define'
1419 -A eval:symbol=value define symbol to be eval of value
1420 -A prepend:symbol=value prepend value to symbol
1421 -A undef:symbol define symbol to be 'undef'
1422 -A undef:symbol= define symbol to be ''
1423 -V : print version number and exit (with a zero status).
1430 case "$fastread$alldone" in
1433 case "$extractsh" in
1436 if test ! -t 0; then
1437 echo "Say 'sh Configure', not 'sh <Configure'"
1447 true) exec 1>/dev/null;;
1450 : run the defines and the undefines, if any, but leave the file out there...
1453 : create the posthint manipulation script and leave the file out there...
1458 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1459 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1460 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1461 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1462 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1465 : Some greps do not return status, grrr.
1466 echo "grimblepritz" >grimble
1467 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1469 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1475 : the following should work in any shell
1479 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1480 cat >contains <<'EOSS'
1481 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1486 : Find the path to the source tree
1489 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1493 *) src=`cd ../$src && pwd` ;;
1506 if test -f $rsrc/Configure && \
1507 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1509 : found it, so we are ok.
1512 for src in . .. ../.. ../../.. ../../../..; do
1513 if test -f ../$src/Configure && \
1514 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1525 Sorry, I can't seem to locate the source dir for $package. Please start
1526 Configure with an explicit path -- i.e. /some/path/Configure.
1534 echo "Sources for $package found in \"$src\"." >&4
1538 : script used to extract .SH files with variable substitutions
1539 cat >extract <<'EOS'
1541 echo "Doing variable substitutions on .SH files..."
1542 if test -f MANIFEST; then
1543 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1545 echo "(Looking for .SH files under the source directory.)"
1546 set x `(cd $src; find . -name "*.SH" -print)`
1550 0) set x `(cd $src; echo *.SH)`; shift;;
1552 if test ! -f $src/$1; then
1558 while test $name; do
1559 if test ! -d "$name"; then
1560 create="$name $create";
1561 name=`echo $name | sed -e "s|^[^/]*$||"`;
1562 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1567 for file in $create; do
1576 dir=`expr X$file : 'X\(.*\)/'`
1577 file=`expr X$file : 'X.*/\(.*\)'`
1578 (cd $dir && . ./$file)
1588 dir=`expr X$file : 'X\(.*\)/'`
1589 file=`expr X$file : 'X.*/\(.*\)'`
1590 (set x $dir; shift; eval $mkdir_p)
1600 if test -f $src/config_h.SH; then
1601 if test ! -f config.h; then
1602 : oops, they left it out of MANIFEST, probably, so do it anyway.
1608 : extract files and exit if asked to do so
1609 case "$extractsh" in
1611 case "$realsilent" in
1615 case "$config_sh" in
1616 '') config_sh='config.sh';;
1619 echo "Fetching answers from $config_sh..."
1622 test "$override" && . ./optdef.sh
1626 echo "Extraction done."
1631 : Eunice requires " " instead of "", can you believe it
1634 echo "Beginning of configuration questions for $package."
1636 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1638 : first determine how to suppress newline on echo command
1640 echo "Checking echo to see how to suppress newlines..."
1641 (echo "hi there\c" ; echo " ") >.echotmp
1642 if $contains c .echotmp >/dev/null 2>&1 ; then
1653 echo $n "The star should be here-->$c"
1657 : Now test for existence of everything in MANIFEST
1659 if test -f $rsrc/MANIFEST; then
1660 echo "First let's make sure your kit is complete. Checking..." >&4
1661 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1664 for filelist in x??; do
1665 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1667 if test -s missing; then
1671 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1673 You have the option of continuing the configuration process, despite the
1674 distinct possibility that your kit is damaged, by typing 'y'es. If you
1675 do, don't blame me if something goes wrong. I advise you to type 'n'o
1676 and contact the author (perlbug@perl.org).
1679 echo $n "Continue? [n] $c" >&4
1683 echo "Continuing..." >&4
1687 echo "ABORTING..." >&4
1692 echo "Looks good..."
1695 echo "There is no MANIFEST file. I hope your kit is complete !"
1700 : Find the appropriate value for a newline for tr
1701 if test -n "$DJGPP"; then
1704 if test X"$trnl" = X; then
1705 case "`echo foo|tr '\n' x 2>/dev/null`" in
1709 if test X"$trnl" = X; then
1710 case "`echo foo|tr '\012' x 2>/dev/null`" in
1711 foox) trnl='\012' ;;
1714 if test X"$trnl" = X; then
1717 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1723 : compute the number of columns on the terminal for proper question formatting
1728 : set up the echo used in my read
1729 myecho="case \"\$xxxm\" in
1730 '') echo $n \"\$rp $c\" >&4;;
1732 '') echo $n \"[\$xxxm] $c\";;
1734 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1736 echo $n \"[\$xxxm] $c\" >&4
1738 echo $n \"\$rp [\$xxxm] $c\" >&4
1744 : now set up to do reads with possible shell escape and default assignment
1750 case "\$fastread" in
1751 yes) case "\$dflt" in
1754 case "\$silent-\$rp" in
1759 *) case "\$silent" in
1760 true) case "\$rp" in
1765 while expr "X\$ans" : "X!" >/dev/null; do
1769 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1777 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1786 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1791 echo "(OK, I'll run with -d after this question.)" >&4
1794 echo "*** Sorry, \$1 not supported yet." >&4
1804 echo "*** Substitution done -- please confirm."
1806 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1811 echo "*** Error -- try again."
1818 case "\$ans\$xxxm\$nostick" in
1830 : create .config dir to save info across Configure sessions
1831 test -d ../.config || mkdir ../.config
1832 cat >../.config/README <<EOF
1833 This directory created by Configure to save information that should
1834 persist across sessions for $package.
1836 You may safely delete it if you wish.
1839 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1841 $define|true|[yY]*) ;;
1842 *) case "$xversion" in
1845 *** WHOA THERE!!! ***
1847 This is an UNSTABLE DEVELOPMENT release.
1848 The version of this $package distribution is $xversion, that is, odd,
1849 (as opposed to even) and that signifies a development release.
1850 If you want a maintenance release, you want an even-numbered version.
1852 Do ***NOT*** install this into production use.
1853 Data corruption and crashes are possible.
1855 It is most seriously suggested that you do not continue any further
1856 unless you want to help in developing and debugging Perl.
1858 If you *still* want to build perl, you can answer 'y' now,
1859 or pass -Dusedevel to Configure.
1862 rp='Do you really want to continue?'
1866 [yY]) echo >&4 "Okay, continuing."
1867 usedevel="$define" ;;
1868 *) echo >&4 "Okay, bye."
1878 case "$versiononly" in
1879 '') versiononly="$define" ;;
1881 case "$installusrbinperl" in
1882 '') installusrbinperl="$undef" ;;
1887 : general instructions
1890 user=`(logname) 2>/dev/null`
1892 '') user=`whoami 2>&1`;;
1894 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1897 rp='Would you like to see the instructions?'
1908 This installation shell script will examine your system and ask you questions
1909 to determine how the perl5 package should be installed. If you get
1910 stuck on a question, you may use a ! shell escape to start a subshell or
1911 execute a command. Many of the questions will have default answers in square
1912 brackets; typing carriage return will give you the default.
1914 On some of the questions which ask for file or directory names you are allowed
1915 to use the ~name construct to specify the login directory belonging to "name",
1916 even if you don't have a shell which knows about that. Questions where this is
1917 allowed will be marked "(~name ok)".
1921 dflt='Type carriage return to continue'
1925 The prompter used in this script allows you to use shell variables and
1926 backticks in your answers. You may use $1, $2, etc... to refer to the words
1927 in the default answer, as if the default line was a set of arguments given to a
1928 script shell. This means you may also use $* to repeat the whole default line,
1929 so you do not have to re-type everything to add something to the default.
1931 Everytime there is a substitution, you will have to confirm. If there is an
1932 error (e.g. an unmatched backtick), the default answer will remain unchanged
1933 and you will be prompted again.
1935 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1936 the questions and use the computed defaults (or the previous answers if there
1937 was already a config.sh file). Type 'Configure -h' for a list of options.
1938 You may also start interactively and then answer '& -d' at any prompt to turn
1939 on the non-interactive behaviour for the remainder of the execution.
1945 Much effort has been expended to ensure that this shell script will run on any
1946 Unix system. If despite that it blows up on yours, your best bet is to edit
1947 Configure and run it again. If you can't run Configure for some reason,
1948 you'll have to generate a config.sh file by hand. Whatever problems you
1949 have, let me (perlbug@perl.org) know how I blew it.
1951 This installation script affects things in two ways:
1953 1) it may do direct variable substitutions on some of the files included
1955 2) it builds a config.h file for inclusion in C programs. You may edit
1956 any of these files as the need arises after running this script.
1958 If you make a mistake on a question, there is no easy way to back up to it
1959 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1960 files. Configure will offer to let you do this before it runs the SH files.
1963 dflt='Type carriage return to continue'
1965 case "$firsttime" in
1966 true) echo $user >>../.config/instruct;;
1970 : find out where common programs are
1972 echo "Locating common programs..." >&4
1985 if test -d \$dir/\$thing; then
1991 for thisthing in \$dir/\$thing; do
1992 : just loop through to pick last item
1994 if test -f \$thisthing; then
1997 elif test -f \$dir/\$thing.exe; then
1998 if test -n "$DJGPP"; then
1999 echo \$dir/\$thing.exe
2001 : on Eunice apparently
2053 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2054 pth="$pth /lib /usr/lib"
2055 for file in $loclist; do
2059 if test -f "$xxx"; then
2062 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2063 xxx=`./loc $file $file $pth`
2066 '') xxx=`./loc $file $file $pth`;;
2067 *) xxx=`./loc $xxx $xxx $pth`;;
2073 echo $file is in $xxx.
2076 echo $file is in $xxx.
2079 echo "I don't know where '$file' is, and my life depends on it." >&4
2080 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2086 echo "Don't worry if any of the following aren't found..."
2088 for file in $trylist; do
2092 if test -f "$xxx"; then
2095 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2096 xxx=`./loc $file $file $pth`
2099 '') xxx=`./loc $file $file $pth`;;
2100 *) xxx=`./loc $xxx $xxx $pth`;;
2106 echo $file is in $xxx.
2109 echo $file is in $xxx.
2112 echo "I don't see $file out there, $say."
2119 echo "Substituting grep for egrep."
2125 echo "Substituting cp for ln."
2131 echo "Hopefully test is built into your sh."
2134 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2135 echo "Using the test built into your sh."
2143 echo "Hopefully echo is built into your sh."
2148 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2149 $echo $n "hi there$c" >foo1
2150 echo $n "hi there$c" >foo2
2151 if cmp foo1 foo2 >/dev/null 2>&1; then
2152 echo "They are compatible. In fact, they may be identical."
2159 They are not compatible! You are probably running ksh on a non-USG system.
2160 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2161 have echo built in and we may have to run some Bourne shell scripts. That
2162 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2165 $echo $n "The star should be here-->$c"
2175 cat <<'EOSC' >>checkcc
2180 int main(int argc, char *argv[]) {
2184 if $cc -o try $ccflags $ldflags try.c; then
2187 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2193 case "`$cc -v -c try.c 2>&1`" in
2196 if $test X"$trygcc" = Xyes; then
2197 if gcc -o try -c try.c; then
2199 echo "You seem to have a working gcc, though." >&4
2200 rp="Would you like to use it?"
2202 if $test -f myread; then
2205 if $test -f UU/myread; then
2208 echo "Cannot find myread, sorry. Aborting." >&2
2213 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2217 if $test X"$despair" = Xyes; then
2219 You need to find a working C compiler.
2220 Either (purchase and) install the C compiler supplied by your OS vendor,
2221 or for a free C compiler try http://gcc.gnu.org/
2222 I cannot continue any further, aborting.
2232 : determine whether symbolic links are supported
2235 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2236 echo "Symbolic links are supported." >&4
2239 echo "Symbolic links are NOT supported." >&4
2244 : determine whether symbolic links are supported
2248 echo "Checking how to test for symbolic links..." >&4
2250 if $test "X$issymlink" = X; then
2251 sh -c "PATH= test -h sym" >/dev/null 2>&1
2252 if test $? = 0; then
2256 if $test "X$issymlink" = X; then
2257 if $test -h >/dev/null 2>&1; then
2258 issymlink="$test -h"
2259 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2262 if $test "X$issymlink" = X; then
2263 if $test -L sym 2>/dev/null; then
2264 issymlink="$test -L"
2267 if $test "X$issymlink" != X; then
2268 echo "You can test for symbolic links with '$issymlink'." >&4
2270 echo "I do not know how you can test for symbolic links." >&4
2274 *) echo "No symbolic links, so not testing for their testing..." >&4
2280 case "$mksymlinks" in
2283 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2286 *) case "$lns:$issymlink" in
2287 *"ln -s:"*"test -"?)
2288 echo "Creating the symbolic links..." >&4
2289 echo "(First creating the subdirectories...)" >&4
2291 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2293 test -z "$directory" && break
2297 if test ! -d t/base; then
2298 echo "Failed to create the subdirectories. Aborting." >&4
2301 echo "(Then creating the symlinks...)" >&4
2302 awk '{print $1}' $src/MANIFEST | while true; do
2304 test -z "$filename" && break
2305 if test -f $filename; then
2306 if $issymlink $filename; then
2310 if test -f $filename; then
2311 echo "$filename already exists, not symlinking."
2313 ln -s $src/$filename $filename
2317 if test ! -f t/base/lex.t; then
2318 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2323 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2332 case "$usecrosscompile" in
2334 $echo "Cross-compiling..."
2337 *-*-gcc) # A cross-compiling gcc, probably.
2338 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2340 # leave out ld, choosing it is more complex
2342 ranlib=$targetarch-ranlib
2343 $echo 'extern int foo;' > try.c
2344 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2346 if $test $# -gt 0; then
2348 incpth="`$echo $incpth|$sed 's/^ //'`"
2349 echo "Guessing incpth '$incpth'." >&4
2351 j="`$echo $i|$sed 's,/include$,/lib,'`"
2352 if $test -d $j; then
2356 libpth="`$echo $libpth|$sed 's/^ //'`"
2357 echo "Guessing libpth '$libpth'." >&4
2362 case "$targetarch" in
2363 '') echo "Targetarch not defined." >&4; croak=y ;;
2364 *) echo "Using targetarch $targetarch." >&4 ;;
2367 '') echo "Incpth not defined." >&4; croak=y ;;
2368 *) echo "Using incpth '$incpth'." >&4 ;;
2371 '') echo "Libpth not defined." >&4; croak=y ;;
2372 *) echo "Using libpth '$libpth'." >&4 ;;
2375 '') for i in $incpth; do
2376 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2378 echo "Guessing usrinc $usrinc." >&4
2383 '') echo "Usrinc not defined." >&4; croak=y ;;
2386 *) echo "Using usrinc $usrinc." >&4 ;;
2388 case "$targethost" in
2389 '') echo "Targethost not defined." >&4; croak=y ;;
2390 *) echo "Using targethost $targethost." >&4
2395 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2398 /*) run=$src/Cross/run
2399 targetmkdir=$src/Cross/mkdir
2401 from=$src/Cross/from
2403 *) pwd=`$test -f ../Configure & cd ..; pwd`
2405 targetmkdir=$pwd/Cross/mkdir
2407 from=$pwd/Cross/from
2410 case "$targetrun" in
2411 '') targetrun=ssh ;;
2416 case "$targetfrom" in
2417 '') targetfrom=scp ;;
2421 from=$from-$targetfrom
2422 case "$targetdir" in
2424 echo "Guessing targetdir $targetdir." >&4
2427 case "$targetuser" in
2429 echo "Guessing targetuser $targetuser." >&4
2432 case "$targetfrom" in
2436 case "$targetrun" in
2448 '') cwd=$targetdir ;;
2452 if $test ! -f \$exe.xok; then
2456 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2459 *) echo "Unknown targetrun '$targetrun'" >&4
2463 case "$targetmkdir" in
2465 cat >$targetmkdir <<EOF
2467 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2469 $chmod a+rx $targetmkdir
2471 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2483 $targetmkdir \`dirname \$f\`
2484 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2487 $targetmkdir $targetdir/\`dirname \$f\`
2488 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2501 $mkdir -p $targetdir/\`dirname \$f\`
2502 $cp \$f $targetdir/\$f || exit 1
2505 $targetmkdir $targetdir/\`dirname \$f\`
2506 $cp \$f $targetdir/\$f || exit 1
2513 *) echo "Unknown targetto '$targetto'" >&4
2517 case "$targetfrom" in
2524 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2529 cp) cat >$from <<EOF
2534 cp $targetdir/\$f . || exit 1
2539 *) echo "Unknown targetfrom '$targetfrom'" >&4
2543 if $test ! -f $run; then
2544 echo "Target 'run' script '$run' not found." >&4
2548 if $test ! -f $to; then
2549 echo "Target 'to' script '$to' not found." >&4
2553 if $test ! -f $from; then
2554 echo "Target 'from' script '$from' not found." >&4
2558 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2562 Using '$run' for remote execution,
2563 and '$from' and '$to'
2564 for remote file transfer.
2570 usecrosscompile='undef'
2575 : see whether [:lower:] and [:upper:] are supported character classes
2577 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2579 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2583 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2584 # (0xc9 and 0xd1), therefore that is a nice testing point.
2585 if test "X$up" = X -o "X$low" = X; then
2586 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2592 if test "X$up" = X -o "X$low" = X; then
2593 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2599 if test "X$up" = X -o "X$low" = X; then
2600 case "`echo IJ | od -x 2>/dev/null`" in
2602 echo "Hey, this might be EBCDIC." >&4
2603 if test "X$up" = X -o "X$low" = X; then
2604 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2605 ij) up='[A-IJ-RS-Z]'
2610 if test "X$up" = X -o "X$low" = X; then
2611 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2621 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2623 echo "Using $up and $low to convert case." >&4
2626 echo "I don't know how to translate letters from upper to lower case." >&4
2627 echo "Your tr is not acting any way I know of." >&4
2631 : set up the translation script tr, must be called with ./tr of course
2635 '[A-Z][a-z]') exec $tr '$up' '$low';;
2636 '[a-z][A-Z]') exec $tr '$low' '$up';;
2643 : Try to determine whether config.sh was made on this system
2644 case "$config_sh" in
2646 myuname=`$uname -a 2>/dev/null`
2647 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2648 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2649 # because the A-Z/a-z are not consecutive.
2650 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2651 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2652 newmyuname="$myuname"
2654 case "$knowitall" in
2656 if test -f ../config.sh; then
2657 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2658 eval "`grep myuname= ../config.sh`"
2660 if test "X$myuname" = "X$newmyuname"; then
2668 : Get old answers from old config file if Configure was run on the
2669 : same system, otherwise use the hints.
2672 if test -f config.sh; then
2674 rp="I see a config.sh file. Shall I use it to set the defaults?"
2677 n*|N*) echo "OK, I'll ignore it."
2678 mv config.sh config.sh.old
2679 myuname="$newmyuname"
2681 *) echo "Fetching default answers from your old config.sh file..." >&4
2689 : Older versions did not always set $sh. Catch re-use of such
2699 if test ! -f config.sh; then
2702 First time through, eh? I have some defaults handy for some systems
2703 that need some extra help getting the Configure answers right:
2706 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2708 : Half the following guesses are probably wrong... If you have better
2709 : tests or hints, please send them to perlbug@perl.org
2710 : The metaconfig authors would also appreciate a copy...
2711 $test -f /irix && osname=irix
2712 $test -f /xenix && osname=sco_xenix
2713 $test -f /dynix && osname=dynix
2714 $test -f /dnix && osname=dnix
2715 $test -f /lynx.os && osname=lynxos
2716 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2717 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2718 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2719 $test -f /bin/mips && /bin/mips && osname=mips
2720 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2721 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2722 $test -d /usr/apollo/bin && osname=apollo
2723 $test -f /etc/saf/_sactab && osname=svr4
2724 $test -d /usr/include/minix && osname=minix
2725 if $test -d /MachTen -o -d /MachTen_Folder; then
2727 if $test -x /sbin/version; then
2728 osvers=`/sbin/version | $awk '{print $2}' |
2729 $sed -e 's/[A-Za-z]$//'`
2730 elif $test -x /usr/etc/version; then
2731 osvers=`/usr/etc/version | $awk '{print $2}' |
2732 $sed -e 's/[A-Za-z]$//'`
2738 $test -f /sys/posix.dll &&
2739 $test -f /usr/bin/what &&
2740 set X `/usr/bin/what /sys/posix.dll` &&
2741 $test "$3" = UWIN &&
2745 if $test -f $uname; then
2753 umips) osname=umips ;;
2756 [23]100) osname=mips ;;
2757 next*) osname=next ;;
2759 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2760 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2763 elif $test -f /etc/kconfig; then
2765 if test "$lns" = "$ln -s"; then
2767 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2769 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2776 if test -n "$DJGPP"; then
2785 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2787 'not found') osvers="$4"."$3" ;;
2788 '<3240'|'<>3240') osvers=3.2.0 ;;
2789 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2790 '=3250'|'>3250') osvers=3.2.5 ;;
2794 bsd386) osname=bsd386
2797 cygwin*) osname=cygwin
2800 *dc.osx) osname=dcosx
2806 domainos) osname=apollo
2812 dynixptx*) osname=dynixptx
2813 osvers=`echo "$4"|sed 's/^v//'`
2815 freebsd) osname=freebsd
2817 genix) osname=genix ;;
2819 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2835 netbsd*) osname=netbsd
2838 news-os) osvers="$3"
2840 4*) osname=newsos4 ;;
2844 next*) osname=next ;;
2845 nonstop-ux) osname=nonstopux ;;
2846 POSIX-BC | posix-bc ) osname=posix-bc
2849 powerux | power_ux | powermax_os | powermaxos | \
2850 powerunix | power_unix) osname=powerux
2856 solaris) osname=solaris
2858 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2865 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2869 titanos) osname=titanos
2878 ultrix) osname=ultrix
2881 osf1|mls+) case "$5" in
2884 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2887 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2890 hp*) osname=hp_osf1 ;;
2891 mips) osname=mips_osf1 ;;
2894 unixware) osname=svr5
2900 $2) case "$osname" in
2904 : svr4.x or possibly later
2914 if test -f /stand/boot ; then
2915 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2916 if test -n "$INITPROG" -a -f "$INITPROG"; then
2917 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2918 if test -n "$isesix"; then
2926 *) if test -f /etc/systemid; then
2928 set `echo $3 | $sed 's/\./ /g'` $4
2929 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2931 elif $test -f $src/hints/sco_$1_$2.sh; then
2933 elif $test -f $src/hints/sco_$1.sh; then
2938 '') : Still unknown. Probably a generic Sys V.
2947 *) case "$osname" in
2948 '') : Still unknown. Probably a generic BSD.
2956 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2957 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2958 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2961 $rm -f UU/kernel.what
2962 elif test -d c:/.; then
2969 case "$targetarch" in
2972 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2977 : Now look for a hint file osname_osvers, unless one has been
2978 : specified already.
2981 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2982 : Also try without trailing minor version numbers.
2983 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2984 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2985 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2986 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2989 *) case "$osvers" in
2992 *) if $test -f $src/hints/$file.sh ; then
2994 elif $test -f $src/hints/$xfile.sh ; then
2996 elif $test -f $src/hints/$xxfile.sh ; then
2998 elif $test -f $src/hints/$xxxfile.sh ; then
3000 elif $test -f $src/hints/$xxxxfile.sh ; then
3002 elif $test -f "$src/hints/${osname}.sh" ; then
3011 if $test -f Policy.sh ; then
3014 none) dflt="Policy" ;;
3015 *) dflt="Policy $dflt" ;;
3020 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3024 if $test -f Policy.sh ; then
3027 There's also a Policy hint file available, which should make the
3028 site-specific (policy) questions easier to answer.
3035 You may give one or more space-separated answers, or "none" if appropriate.
3036 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3037 is a good thing. DO NOT give a wrong version or a wrong OS.
3041 rp="Which of these apply, if any?"
3044 for file in $tans; do
3045 if $test X$file = XPolicy -a -f Policy.sh; then
3047 $cat Policy.sh >> UU/config.sh
3048 elif $test -f $src/hints/$file.sh; then
3049 . $src/hints/$file.sh
3050 $cat $src/hints/$file.sh >> UU/config.sh
3051 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3054 : Give one chance to correct a possible typo.
3055 echo "$file.sh does not exist"
3057 rp="hint to use instead?"
3059 for file in $ans; do
3060 if $test -f "$src/hints/$file.sh"; then
3061 . $src/hints/$file.sh
3062 $cat $src/hints/$file.sh >> UU/config.sh
3063 elif $test X$ans = X -o X$ans = Xnone ; then
3066 echo "$file.sh does not exist -- ignored."
3073 : Remember our hint file for later.
3074 if $test -f "$src/hints/$file.sh" ; then
3084 echo "Fetching default answers from $config_sh..." >&4
3088 cp $config_sh config.sh 2>/dev/null
3098 test "$override" && . ./optdef.sh
3100 : Restore computed paths
3101 for file in $loclist $trylist; do
3102 eval $file="\$_$file"
3107 Configure uses the operating system name and version to set some defaults.
3108 The default value is probably right if the name rings a bell. Otherwise,
3109 since spelling matters for me, either accept the default or answer "none"
3116 ''|' '|none) dflt=none ;;
3117 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3120 *) dflt="$osname" ;;
3122 rp="Operating system name?"
3126 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3132 ''|' '|none) dflt=none ;;
3133 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3134 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3136 ''|' ') dflt=none ;;
3141 *) dflt="$osvers" ;;
3143 rp="Operating system version?"
3153 : who configured the system
3154 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3155 cf_by=`(logname) 2>/dev/null`
3158 cf_by=`(whoami) 2>/dev/null`
3160 "") cf_by=unknown ;;
3164 : set up the script used to warn in case of inconsistency
3171 echo "*** WHOA THERE!!! ***" >&4
3172 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3173 rp=" Keep the $hint value?"
3176 y) td=$was; tu=$was;;
3180 : function used to set $1 to $val
3181 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3183 $define$undef) . ./whoa; eval "$var=\$td";;
3184 $undef$define) . ./whoa; eval "$var=\$tu";;
3185 *) eval "$var=$val";;
3188 case "$usethreads" in
3189 $define|true|[yY]*) dflt='y';;
3194 Perl can be built to take advantage of threads on some systems.
3195 To do so, Configure can be run with -Dusethreads.
3197 Note that threading is a highly experimental feature, and
3198 some known race conditions still remain. If you choose to try
3199 it, be very sure to not actually deploy it for production
3200 purposes. README.threads has more details, and is required
3201 reading if you enable threads.
3203 If this doesn't make any sense to you, just accept the default '$dflt'.
3205 rp='Build a threading Perl?'
3208 y|Y) val="$define" ;;
3214 case "$usethreads" in
3218 As of 5.5.640, Perl has two different internal threading implementations,
3219 the 5.005 version (5005threads) and an interpreter-based version
3220 (ithreads) that has one interpreter per thread. Both are very
3221 experimental. This arrangement exists to help developers work out
3222 which one is better.
3224 If you're a casual user, you probably don't want interpreter-threads
3225 at this time. There doesn't yet exist a way to create threads from
3226 within Perl in this model, i.e., "use Thread;" will NOT work.
3228 : Default to ithreads unless overridden on command line or with
3231 case "$use5005threads" in
3232 $define|true|[yY]*) dflt='n';;
3234 case "$useithreads" in
3235 $undef|false|[nN]*) dflt='n';;
3237 rp='Use interpreter-based ithreads?'
3240 y|Y) val="$define" ;;
3245 : Now set use5005threads to the opposite value.
3246 case "$useithreads" in
3247 $define) val="$undef" ;;
3254 useithreads="$undef"
3255 use5005threads="$undef"
3259 case "$useithreads$use5005threads" in
3263 You cannot have both the ithreads and the 5.005 threads enabled
3264 at the same time. Disabling the 5.005 threads since they are
3265 much less stable than the ithreads.
3268 use5005threads="$undef"
3272 case "$d_oldpthreads" in
3273 '') : Configure tests would be welcome here. For now, assume undef.
3275 *) val="$d_oldpthreads" ;;
3281 case "$usethreads" in
3282 "$define"|true|[yY]*)
3283 : Look for a hint-file generated 'call-back-unit'. If the
3284 : user has specified that a threading perl is to be built,
3285 : we may need to set or change some other defaults.
3286 if $test -f usethreads.cbu; then
3287 echo "Your platform has some specific hints for threaded builds, using them..."
3291 (Your platform doesn't have any specific hints for threaded builds.
3292 Assuming POSIX threads, then.)
3300 Perl can be built so that multiple Perl interpreters can coexist
3301 within the same Perl executable.
3304 case "$useithreads" in
3307 This multiple interpreter support is required for interpreter-based threads.
3311 *) case "$usemultiplicity" in
3312 $define|true|[yY]*) dflt='y';;
3316 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3317 rp='Build Perl for multiplicity?'
3320 y|Y) val="$define" ;;
3329 case "$usemorebits" in
3330 "$define"|true|[yY]*)
3331 use64bitint="$define"
3332 uselongdouble="$define"
3333 usemorebits="$define"
3335 *) usemorebits="$undef"
3339 : make some quick guesses about what we are up against
3341 $echo $n "Hmm... $c"
3351 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3352 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3354 echo "Looks kind of like an OSF/1 system, but we'll see..."
3356 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3357 xxx=`./loc addbib blurfl $pth`
3358 if $test -f $xxx; then
3359 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3363 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3364 echo "Looks kind of like an extended USG system, but we'll see..."
3366 echo "Looks kind of like a USG system, but we'll see..."
3370 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3371 echo "Looks kind of like a BSD system, but we'll see..."
3375 echo "Looks kind of like a Version 7 system, but we'll see..."
3378 case "$eunicefix" in
3381 There is, however, a strange, musty smell in the air that reminds me of
3382 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3386 : it so happens the Eunice I know will not run shell scripts in Unix format
3390 echo "Congratulations. You aren't running Eunice."
3394 : Detect OS2. The p_ variable is set above in the Head.U unit.
3395 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3396 : semicolon as a patch separator
3401 I have the feeling something is not exactly right, however...don't tell me...
3402 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3403 (Or you may be running DOS with DJGPP.)
3408 if test -f /xenix; then
3409 echo "Actually, this looks more like a XENIX system..."
3414 echo "It's not Xenix..."
3419 if test -f /venix; then
3420 echo "Actually, this looks more like a VENIX system..."
3427 echo "Nor is it Venix..."
3430 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3431 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3438 rp="Use which C compiler?"
3441 : Look for a hint-file generated 'call-back-unit'. Now that the
3442 : user has specified the compiler, we may need to set or change some
3444 if $test -f cc.cbu; then
3450 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3456 printf("%s\n", __VERSION__);
3458 printf("%s\n", "1");
3464 if $cc -o try $ccflags $ldflags try.c; then
3465 gccversion=`$run ./try`
3466 case "$gccversion" in
3467 '') echo "You are not using GNU cc." ;;
3468 *) echo "You are using GNU cc $gccversion."
3474 echo "*** WHOA THERE!!! ***" >&4
3475 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3476 case "$knowitall" in
3478 echo " You'd better start hunting for one and let me know about it." >&4
3484 case "$gccversion" in
3485 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3487 case "$gccversion" in
3488 '') gccosandvers='' ;;
3489 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3490 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3492 case "$gccosandvers" in
3493 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3494 $osname$osvers) ;; # looking good
3495 $osname*) cat <<EOM >&4
3497 *** WHOA THERE!!! ***
3499 Your gcc has not been compiled for the exact release of
3500 your operating system ($gccosandvers versus $osname$osvers).
3502 In general it is a good idea to keep gcc synchronized with
3503 the operating system because otherwise serious problems
3504 may ensue when trying to compile software, like Perl.
3506 I'm trying to be optimistic here, though, and will continue.
3507 If later during the configuration and build icky compilation
3508 problems appear (headerfile conflicts being the most common
3509 manifestation), I suggest reinstalling the gcc to match
3510 your operating system release.
3514 *) gccosandvers='' ;; # failed to parse, better be silent
3522 case "$gccversion" in
3524 *) case "$ccflags" in
3526 *) ccflags="$ccflags -Wall" ;;
3531 : decide how portable to be. Allow command line overrides.
3532 case "$d_portable" in
3534 *) d_portable="$define" ;;
3537 : set up shell script to do ~ expansion
3543 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3546 if $test -f /bin/csh; then
3547 /bin/csh -f -c "glob \$1"
3552 name=\`$expr x\$1 : '..\([^/]*\)'\`
3553 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3554 if $test ! -d "\$dir"; then
3556 echo "\$me: can't locate home directory for: \$name" >&2
3561 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3577 : now set up to get a file name
3581 cat <<'EOSC' >>getfile
3597 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3598 fn=`echo $fn | sed 's/(.*)//'`
3604 loc_file=`expr $fn : '.*:\(.*\)'`
3605 fn=`expr $fn : '\(.*\):.*'`
3613 */*) fullpath=true;;
3622 *e*) exp_file=true;;
3625 *p*) nopath_ok=true;;
3630 *d*) type='Directory';;
3631 *l*) type='Locate';;
3636 Locate) what='File';;
3641 case "$d_portable" in
3649 while test "$type"; do
3654 true) rp="$rp (~name ok)";;
3657 if test -f UU/getfile.ok && \
3658 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3677 value=`UU/filexp $ans`
3680 if test "$ans" != "$value"; then
3681 echo "(That expands to $value on this system.)"
3695 /*) value="$ansexp" ;;
3696 [a-zA-Z]:/*) value="$ansexp" ;;
3701 echo "I shall only accept a full path name, as in /bin/ls." >&4
3702 echo "Use a ! shell escape if you wish to check pathnames." >&4
3705 echo "Please give a full path name, starting with slash." >&4
3708 echo "Note that using ~name is ok provided it expands well." >&4
3721 for fp in $gfpth; do
3722 if test "X$fp" = X.; then
3727 if test -f "$pf"; then
3729 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3731 echo "($value is not a plain file, but that's ok.)"
3734 if test X"$type" = X; then
3741 for fp in $gfpth; do
3742 if test "X$fp" = X.; then
3747 direxp="$fp/$ansexp"
3749 if test -d "$direxp"; then
3757 if test -d "$ansexp"; then
3758 echo "(Looking for $loc_file in directory $value.)"
3759 value="$value/$loc_file"
3760 ansexp="$ansexp/$loc_file"
3762 if test -f "$ansexp"; then
3765 case "$nopath_ok" in
3766 true) case "$value" in
3768 *) echo "Assuming $value will be in people's path."
3784 if test "$fastread" = yes; then
3789 rp="$what $value doesn't exist. Use that name anyway?"
3808 test "X$gfpthkeep" != Xy && gfpth=""
3811 : What should the include directory be ?
3813 $echo $n "Hmm... $c"
3817 if $test -f /bin/mips && /bin/mips; then
3818 echo "Looks like a MIPS system..."
3819 $cat >usr.c <<'EOCP'
3820 #ifdef SYSTYPE_BSD43
3824 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3825 dflt='/bsd43/usr/include'
3829 mips_type='System V'
3831 $rm -f usr.c usr.out
3832 echo "and you're compiling with the $mips_type compiler and libraries."
3836 echo "Doesn't look like a MIPS system."
3846 case "$xxx_prompt" in
3849 rp='Where are the include files you want to use?'
3857 : see how we invoke the C preprocessor
3859 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3860 cat <<'EOT' >testcpp.c
3866 if test ! -f cppstdin; then
3867 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3868 # AIX cc -E doesn't show the absolute headerfile
3869 # locations but we'll cheat by using the -M flag.
3870 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
3872 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3875 echo "Keeping your $hint cppstdin wrapper."
3878 wrapper=`pwd`/cppstdin
3882 if $test "X$cppstdin" != "X" && \
3883 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3884 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3886 echo "You used to use $cppstdin $cppminus so we'll use that again."
3888 '') echo "But let's see if we can live without a wrapper..." ;;
3890 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3891 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3893 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3896 echo "(However, $cpprun $cpplast does not work, let's see...)"
3904 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3911 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3912 $cc -E <testcpp.c >testcpp.out 2>&1; \
3913 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3914 echo "Yup, it does."
3917 elif echo 'Nope...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"' -P" will work...'; \
3924 $cc -P <testcpp.c >testcpp.out 2>&1; \
3925 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3926 echo "Yipee, that works!"
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 "At long last!"
3935 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3936 $cpp <testcpp.c >testcpp.out 2>&1; \
3937 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3941 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3942 $cpp - <testcpp.c >testcpp.out 2>&1; \
3943 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3944 echo "Hooray, it works! I was beginning to wonder."
3947 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3948 $wrapper <testcpp.c >testcpp.out 2>&1; \
3949 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3955 rp="No dice. I can't find a C preprocessor. Name one:"
3959 $x_cpp <testcpp.c >testcpp.out 2>&1
3960 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3961 echo "OK, that will do." >&4
3963 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3978 echo "Perhaps can we force $cc -E using a wrapper..."
3979 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3980 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3986 echo "Nope, we'll have to live without it..."
4000 "$wrapper"|'cppstdin') ;;
4001 *) $rm -f $wrapper;;
4003 $rm -f testcpp.c testcpp.out
4005 : Set private lib path
4008 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4013 '') dlist="$loclibpth $plibpth $glibpth";;
4014 *) dlist="$libpth";;
4017 : Now check and see which directories actually exist, avoiding duplicates
4021 if $test -d $xxx; then
4024 *) libpth="$libpth $xxx";;
4030 Some systems have incompatible or broken versions of libraries. Among
4031 the directories listed in the question below, please remove any you
4032 know not to be holding relevant libraries, and add any that are needed.
4033 Say "none" for none.
4044 rp="Directories to use for library searches?"
4051 : compute shared library extension
4054 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4064 On some systems, shared libraries may be available. Answer 'none' if
4065 you want to suppress searching of shared libraries for the remainder
4066 of this configuration.
4069 rp='What is the file extension used for shared libraries?'
4073 : Define several unixisms.
4074 : Hints files or command line option can be used to override them.
4075 : The convoluted testing is in case hints files set either the old
4078 '') case "$exe_ext" in
4080 *) _exe="$exe_ext" ;;
4085 '') case "$lib_ext" in
4092 '') case "$obj_ext" in
4099 '') case "$path_sep" in
4110 : Which makefile gets called first. This is used by make depend.
4111 case "$firstmakefile" in
4112 '') firstmakefile='makefile';;
4116 $define|true|[yY]*) dflt='y';;
4121 Perl can be built to use the SOCKS proxy protocol library. To do so,
4122 Configure must be run with -Dusesocks. If you use SOCKS you also need
4123 to use the PerlIO abstraction layer, this will be implicitly selected.
4125 If this doesn't make any sense to you, just accept the default '$dflt'.
4127 rp='Build Perl for SOCKS?'
4130 y|Y) val="$define" ;;
4137 $define|true|[yY]*) useperlio="$define";;
4140 : Looking for optional libraries
4142 echo "Checking for optional libraries..." >&4
4147 case "$libswanted" in
4148 '') libswanted='c_s';;
4151 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4157 for thisdir in $libpth $xlibpth; do
4158 test -d $thisdir && libspath="$libspath $thisdir"
4160 for thislib in $libswanted; do
4161 for thisdir in $libspath; do
4163 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4164 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4165 $test -f "$xxx" && eval $libscheck
4166 $test -f "$xxx" && libstyle=shared
4168 if test ! -f "$xxx"; then
4169 xxx=$thisdir/lib$thislib.$so
4170 $test -f "$xxx" && eval $libscheck
4171 $test -f "$xxx" && libstyle=shared
4173 if test ! -f "$xxx"; then
4174 xxx=$thisdir/lib$thislib$_a
4175 $test -f "$xxx" && eval $libscheck
4176 $test -f "$xxx" && libstyle=static
4178 if test ! -f "$xxx"; then
4179 xxx=$thisdir/$thislib$_a
4180 $test -f "$xxx" && eval $libscheck
4181 $test -f "$xxx" && libstyle=static
4183 if test ! -f "$xxx"; then
4184 xxx=$thisdir/lib${thislib}_s$_a
4185 $test -f "$xxx" && eval $libscheck
4186 $test -f "$xxx" && libstyle=static
4187 $test -f "$xxx" && thislib=${thislib}_s
4189 if test ! -f "$xxx"; then
4190 xxx=$thisdir/Slib$thislib$_a
4191 $test -f "$xxx" && eval $libscheck
4192 $test -f "$xxx" && libstyle=static
4194 if $test -f "$xxx"; then
4196 shared) echo "Found -l$thislib (shared)." ;;
4197 static) echo "Found -l$thislib." ;;
4198 *) echo "Found -l$thislib ($libstyle)." ;;
4202 *) dflt="$dflt -l$thislib"
4203 libsfound="$libsfound $xxx"
4205 libsfiles="$libsfiles $yyy"
4206 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4207 case " $libsdirs " in
4209 *) libsdirs="$libsdirs $yyy" ;;
4216 if $test ! -f "$xxx"; then
4217 echo "No -l$thislib."
4228 ' '|'') dflt='none';;
4233 In order to compile $package on your machine, a number of libraries
4234 are usually needed. Include any other special libraries here as well.
4235 Say "none" for none. The default list is almost always right.
4239 rp="What libraries to use?"
4246 : determine optimization, if desired, or use for debug flag also
4248 ' '|$undef) dflt='none';;
4250 *) dflt="$optimize";;
4254 By default, $package compiles with the -O flag to use the optimizer.
4255 Alternately, you might want to use the symbolic debugger, which uses
4256 the -g flag (on traditional Unix systems). Either flag can be
4257 specified here. To use neither flag, specify the word "none".
4260 rp="What optimizer/debugger flag should be used?"
4264 'none') optimize=" ";;
4268 : We will not override a previous value, but we might want to
4269 : augment a hint file
4271 default|recommended)
4272 case "$gccversion" in
4273 1*) dflt='-fpcc-struct-return' ;;
4276 *-g*) dflt="$dflt -DDEBUGGING";;
4278 case "$gccversion" in
4279 2*) if test -d /etc/conf/kconfig.d &&
4280 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4286 case "$gccversion" in
4290 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4291 echo 'int main(void) { return 0; }' > gcctest.c
4292 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4293 echo "Yes, it does." 2>&1
4296 echo "Leaving current flags $ccflags alone." 2>&1
4298 *) dflt="$dflt -fno-strict-aliasing" ;;
4301 echo "Nope, it doesn't, but that's ok." 2>&1
4308 case "$mips_type" in
4309 *BSD*|'') inclwanted="$locincpth $usrinc";;
4310 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4312 for thisincl in $inclwanted; do
4313 if $test -d $thisincl; then
4314 if $test x$thisincl != x$usrinc; then
4316 *" -I$thisincl "*);;
4317 *) dflt="$dflt -I$thisincl ";;
4323 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4325 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4333 *) dflt="$dflt -D$2";;
4337 set signal.h LANGUAGE_C; eval $inctest
4341 ccflags="$ccflags -DSOCKS"
4346 default|recommended) dflt="$ccflags $dflt" ;;
4347 *) dflt="$ccflags";;
4356 Your C compiler may want other flags. For this question you should include
4357 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4358 but you should NOT include libraries or ld flags like -lwhatever. If you
4359 want $package to honor its debug switch, you should include -DDEBUGGING here.
4360 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4362 To use no flags, specify the word "none".
4368 rp="Any additional cc flags?"
4375 : the following weeds options from ccflags that are of no interest to cpp
4377 '') cppflags="$ccflags" ;;
4378 *) cppflags="$cppflags $ccflags" ;;
4380 case "$gccversion" in
4381 1*) cppflags="$cppflags -D__GNUC__"
4383 case "$mips_type" in
4385 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4391 echo "Let me guess what the preprocessor flags are..." >&4
4405 *) ftry="$previous $flag";;
4407 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4408 >cpp1.out 2>/dev/null && \
4409 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4410 >cpp2.out 2>/dev/null && \
4411 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4412 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4414 cppflags="$cppflags $ftry"
4424 *-*) echo "They appear to be: $cppflags";;
4426 $rm -f cpp.c cpp?.out
4430 : flags used in final linking phase
4432 '') if ./venix; then
4438 *-posix*) dflt="$dflt -posix" ;;
4441 *) dflt="$ldflags";;
4444 : Try to guess additional flags to pick up local libraries.
4445 for thislibdir in $libpth; do
4446 case " $loclibpth " in
4449 *"-L$thislibdir "*) ;;
4450 *) dflt="$dflt -L$thislibdir" ;;
4462 Your C linker may need flags. For this question you should
4463 include -L/whatever and any other flags used by the C linker, but you
4464 should NOT include libraries like -lwhatever.
4466 Make sure you include the appropriate -L/path flags if your C linker
4467 does not normally search all of the directories you specified above,
4470 To use no flags, specify the word "none".
4474 rp="Any additional ld flags (NOT including libraries)?"
4480 rmlist="$rmlist pdp11"
4484 echo "Checking your choice of C compiler and flags for coherency..." >&4
4485 $cat > try.c <<'EOF'
4487 int main() { printf("Ok\n"); exit(0); }
4489 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4491 $cat >try.msg <<'EOM'
4492 I've tried to compile and run the following simple program:
4495 $cat try.c >> try.msg
4497 $cat >> try.msg <<EOM
4504 and I got the following output:
4508 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4509 if $sh -c "$run ./try" >>try.msg 2>&1; then
4513 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4516 cat >> try.msg <<'EOQS'
4517 If $libs contains -lsfio, and sfio is mis-configured, then it
4518 sometimes (apparently) runs and exits with a 0 status, but with no
4519 output! It may have to do with sfio's use of _exit vs. exit.
4522 rp="You have a big problem. Shall I abort Configure"
4529 echo "The program compiled OK, but exited with status $?." >>try.msg
4530 rp="You have a problem. Shall I abort Configure"
4534 echo "I can't compile the test program." >>try.msg
4535 rp="You have a BIG problem. Shall I abort Configure"
4541 case "$knowitall" in
4543 echo "(The supplied flags or libraries might be incorrect.)"
4551 *) echo "Ok. Stopping Configure." >&4
4556 n) echo "OK, that should do.";;
4558 $rm -f try try.* core
4560 : define a shorthand compile call
4564 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4565 : define a shorthand compile call for compilations that should be ok.
4569 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4571 : check for lengths of integral types
4575 echo "Checking to see how big your integers are..." >&4
4576 $cat >try.c <<'EOCP'
4580 printf("intsize=%d;\n", (int)sizeof(int));
4581 printf("longsize=%d;\n", (int)sizeof(long));
4582 printf("shortsize=%d;\n", (int)sizeof(short));
4587 if eval $compile_ok && $run ./try > /dev/null; then
4589 echo "Your integers are $intsize bytes long."
4590 echo "Your long integers are $longsize bytes long."
4591 echo "Your short integers are $shortsize bytes long."
4595 Help! I can't compile and run the intsize test program: please enlighten me!
4596 (This is probably a misconfiguration in your system or libraries, and
4597 you really ought to fix it. Still, I'll try anyway.)
4601 rp="What is the size of an integer (in bytes)?"
4605 rp="What is the size of a long integer (in bytes)?"
4609 rp="What is the size of a short integer (in bytes)?"
4617 : check for void type
4619 echo "Checking to see how well your C compiler groks the void type..." >&4
4620 case "$voidflags" in
4622 $cat >try.c <<'EOCP'
4628 extern void moo(); /* function returning void */
4629 void (*goo)(); /* ptr to func returning void */
4631 void *hue; /* generic ptr */
4644 int main() { sub(); }
4646 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4647 voidflags=$defvoidused
4648 echo "Good. It appears to support void to the level $package wants.">&4
4649 if $contains warning .out >/dev/null 2>&1; then
4650 echo "However, you might get some warnings that look like this:"
4654 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4655 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4656 echo "It supports 1..."
4657 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4658 echo "It also supports 2..."
4659 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4661 echo "And it supports 4 but not 8 definitely."
4663 echo "It doesn't support 4..."
4664 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4666 echo "But it supports 8."
4669 echo "Neither does it support 8."
4673 echo "It does not support 2..."
4674 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4676 echo "But it supports 4 and 8."
4678 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4680 echo "And it supports 4 but has not heard about 8."
4682 echo "However it supports 8 but not 4."
4687 echo "There is no support at all for void."
4692 case "$voidflags" in
4695 Support flag bits are:
4696 1: basic void declarations.
4697 2: arrays of pointers to functions returning void.
4698 4: operations between pointers to and addresses of void functions.
4699 8: generic void pointers.
4702 rp="Your void support flags add up to what?"
4709 : check for length of pointer
4713 echo "Checking to see how big your pointers are..." >&4
4714 if test "$voidflags" -gt 7; then
4715 echo '#define VOID_PTR char *' > try.c
4717 echo '#define VOID_PTR void *' > try.c
4719 $cat >>try.c <<'EOCP'
4723 printf("%d\n", (int)sizeof(VOID_PTR));
4728 if eval $compile_ok; then
4729 ptrsize=`$run ./try`
4730 echo "Your pointers are $ptrsize bytes long."
4733 echo "(I can't seem to compile the test program. Guessing...)" >&4
4734 rp="What is the size of a pointer (in bytes)?"
4742 : check for long long
4744 echo "Checking to see if you have long long..." >&4
4745 echo 'int main() { long long x = 7; return 0; }' > try.c
4747 if eval $compile; then
4749 echo "You have long long."
4752 echo "You do not have long long."
4758 : check for length of long long
4759 case "${d_longlong}${longlongsize}" in
4762 echo "Checking to see how big your long longs are..." >&4
4763 $cat >try.c <<'EOCP'
4767 printf("%d\n", (int)sizeof(long long));
4772 if eval $compile_ok; then
4773 longlongsize=`$run ./try`
4774 echo "Your long longs are $longlongsize bytes long."
4778 echo "(I can't seem to compile the test program. Guessing...)"
4779 rp="What is the size of a long long (in bytes)?"
4783 if $test "X$longsize" = "X$longlongsize"; then
4784 echo "(That isn't any different from an ordinary long.)"
4790 : determine filename position in cpp output
4792 echo "Computing filename position in cpp output for #include directives..." >&4
4793 echo '#include <stdio.h>' > foo.c
4796 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4797 $grep '^[ ]*#.*stdio\.h' | \
4798 while read cline; do
4801 while $test \$# -gt 0; do
4802 if $test -r \`echo \$1 | $tr -d '"'\`; then
4807 pos=\`expr \$pos + 1\`
4819 *) pos="${fieldn}th";;
4821 echo "Your cpp writes the filename in the $pos field of the line."
4823 : locate header file
4828 for usrincdir in $usrinc
4830 if test -f \$usrincdir/\$wanted; then
4831 echo "\$usrincdir/\$wanted"
4835 awkprg='{ print \$$fieldn }'
4836 echo "#include <\$wanted>" > foo\$\$.c
4837 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4838 $grep "^[ ]*#.*\$wanted" | \
4839 while read cline; do
4840 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4842 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4843 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4848 # status = 0: grep returned 0 lines, case statement not executed
4849 # status = 1: headerfile found
4850 # status = 2: while loop executed, no headerfile found
4854 if test \$status -eq 1; then
4861 : define an alternate in-header-list? function
4862 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4863 cont=true; xxf="echo \"<\$1> found.\" >&4";
4864 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4865 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4867 case $# in 4) instead=instead;; *) instead="at last";; esac;
4868 while $test "$cont"; do
4870 var=$2; eval "was=\$$2";
4871 if $test "$xxx" && $test -r "$xxx";
4873 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4876 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4877 set $yyy; shift; shift; yyy=$@;
4878 case $# in 0) cont="";;
4879 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4880 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4881 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4882 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4886 do set $yyy; var=$2; eval "was=\$$2";
4887 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4888 set $yyy; shift; shift; yyy=$@;
4891 : see if inttypes.h is available
4892 : we want a real compile instead of Inhdr because some systems
4893 : have an inttypes.h which includes non-existent headers
4896 #include <inttypes.h>
4898 static int32_t foo32 = 0x12345678;
4902 if eval $compile; then
4903 echo "<inttypes.h> found." >&4
4906 echo "<inttypes.h> NOT found." >&4
4915 echo "Checking to see if you have int64_t..." >&4
4917 #include <sys/types.h>
4918 #$i_inttypes I_INTTYPES
4920 #include <inttypes.h>
4922 int main() { int64_t x = 7; }
4925 if eval $compile; then
4927 echo "You have int64_t."
4930 echo "You do not have int64_t."
4938 echo "Checking which 64-bit integer type we could use..." >&4
4944 val='"unsigned int"'
4949 *) case "$longsize" in
4953 val='"unsigned long"'
4958 *) case "$d_longlong:$longlongsize" in
4963 val='"unsigned long long"'
4968 *) case "$d_int64_t" in
4987 '') echo "Alas, no 64-bit integer types in sight." >&4
4990 *) echo "We could use '$quadtype' for 64-bit integers." >&4
4996 case "$uselonglong" in
4997 "$define"|true|[yY]*)
5000 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5002 use64bitint="$define"
5005 case "$use64bits" in
5006 "$define"|true|[yY]*)
5009 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5011 use64bitint="$define"
5014 case "$use64bitints" in
5015 "$define"|true|[yY]*)
5018 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5020 use64bitint="$define"
5023 case "$use64bitsint" in
5024 "$define"|true|[yY]*)
5027 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5029 use64bitint="$define"
5032 case "$uselonglongs" in
5033 "$define"|true|[yY]*)
5036 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5038 use64bitint="$define"
5041 case "$use64bitsall" in
5042 "$define"|true|[yY]*)
5045 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5047 use64bitall="$define"
5052 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5054 case "$use64bitall" in
5055 "$define"|true|[yY]*) use64bitint="$define" ;;
5061 You have natively 64-bit long integers.
5065 *) case "$use64bitint" in
5066 "$define"|true|[yY]*) dflt='y';;
5075 Perl can be built to take advantage of 64-bit integer types
5076 on some systems. To do so, Configure can be run with -Duse64bitint.
5077 Choosing this option will most probably introduce binary incompatibilities.
5079 If this doesn't make any sense to you, just accept the default '$dflt'.
5080 (The default has been chosen based on your configuration.)
5082 rp='Try to use 64-bit integers, if available?'
5085 [yY]*) val="$define" ;;
5093 case "$use64bitall" in
5094 "$define"|true|[yY]*) dflt='y' ;;
5095 *) case "$longsize" in
5103 You may also choose to try maximal 64-bitness. It means using as much
5104 64-bitness as possible on the platform. This in turn means even more
5105 binary incompatibilities. On the other hand, your platform may not
5106 have any more 64-bitness available than what you already have chosen.
5108 If this doesn't make any sense to you, just accept the default '$dflt'.
5109 (The default has been chosen based on your configuration.)
5111 rp='Try to use maximal 64-bit support, if available?'
5114 [yY]*) val="$define" ;;
5119 case "$use64bitall" in
5121 case "$use64bitint" in
5125 Since you have chosen a maximally 64-bit build, I'm also turning on
5126 the use of 64-bit integers.
5128 use64bitint="$define" ;;
5133 case "$use64bitall" in
5134 "$define"|true|[yY]*)
5138 *** You have chosen a maximally 64-bit build, but your pointers
5139 *** are only 4 bytes wide, disabling maximal 64-bitness.
5142 use64bitall="$undef"
5143 case "$use64bitint" in
5144 "$define"|true|[yY]*) ;;
5147 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5150 use64bitint="$define"
5158 case "$use64bitint" in
5159 "$define"|true|[yY]*)
5160 : Look for a hint-file generated 'call-back-unit'. If the
5161 : user has specified that a 64-bit perl is to be built,
5162 : we may need to set or change some other defaults.
5163 if $test -f use64bitint.cbu; then
5164 echo "Your platform has some specific hints for 64-bit integers, using them..."
5168 4) case "$archname64" in
5169 '') archname64=64int ;;
5176 case "$use64bitall" in
5177 "$define"|true|[yY]*)
5178 : Look for a hint-file generated 'call-back-unit'. If the
5179 : user has specified that a maximally 64-bit perl is to be built,
5180 : we may need to set or change some other defaults.
5181 if $test -f use64bitall.cbu; then
5182 echo "Your platform has some specific hints for 64-bit builds, using them..."
5186 4) case "$archname64" in
5187 ''|64int) archname64=64all ;;
5195 echo "Checking for GNU C Library..." >&4
5208 if eval $compile_ok && $run ./try; then
5210 echo "You are using the GNU C Library"
5213 echo "You are not using the GNU C Library"
5219 : see if nm is to be used to determine whether a symbol is defined or not
5223 case "$d_gnulibc" in
5226 echo "nm probably won't work on the GNU C Library." >&4
5232 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5234 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5235 echo "'nm' won't be sufficient on this sytem." >&4
5241 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5242 if $test $dflt -gt 20; then
5252 true|$define) dflt=y;;
5259 I can use $nm to extract the symbols from your C libraries. This
5260 is a time consuming task which may generate huge output on the disk (up
5261 to 3 megabytes) but that should make the symbols extraction faster. The
5262 alternative is to skip the 'nm' extraction part and to compile a small
5263 test program instead to determine whether each symbol is present. If
5264 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5265 this may be the best solution.
5267 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5270 rp="Shall I use $nm to extract C symbols from the libraries?"
5273 [Nn]*) usenm=false;;
5282 : nm options which may be necessary
5284 '') if $test -f /mach_boot; then
5286 elif $test -d /usr/ccs/lib; then
5287 nm_opt='-p' # Solaris (and SunOS?)
5288 elif $test -f /dgux; then
5290 elif $test -f /lib64/rld; then
5291 nm_opt='-p' # 64-bit Irix
5297 : nm options which may be necessary for shared libraries but illegal
5298 : for archive libraries. Thank you, Linux.
5299 case "$nm_so_opt" in
5300 '') case "$myuname" in
5302 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5303 nm_so_opt='--dynamic'
5312 : get list of predefined functions in a handy place
5317 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5323 *) for thislib in $libs; do
5326 : Handle C library specially below.
5329 thislib=`echo $thislib | $sed -e 's/^-l//'`
5330 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5332 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5334 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5336 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5338 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5340 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5342 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5347 libnames="$libnames $try"
5349 *) libnames="$libnames $thislib" ;;
5358 for xxx in $libpth; do
5359 $test -r $1 || set $xxx/libc.$so
5360 : The messy sed command sorts on library version numbers.
5362 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5363 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5365 s/[0-9][0-9]*/0000&/g
5366 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5369 $sort | $sed -e 's/^.* //'`
5372 $test -r $1 || set /usr/ccs/lib/libc.$so
5373 $test -r $1 || set /lib/libsys_s$_a
5379 if $test -r "$1"; then
5380 echo "Your (shared) C library seems to be in $1."
5382 elif $test -r /lib/libc && $test -r /lib/clib; then
5383 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5385 libc='/lib/clib /lib/libc'
5386 if $test -r /lib/syslib; then
5387 echo "(Your math library is in /lib/syslib.)"
5388 libc="$libc /lib/syslib"
5390 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5391 echo "Your C library seems to be in $libc, as you said before."
5392 elif $test -r $incpath/usr/lib/libc$_a; then
5393 libc=$incpath/usr/lib/libc$_a;
5394 echo "Your C library seems to be in $libc. That's fine."
5395 elif $test -r /lib/libc$_a; then
5397 echo "Your C library seems to be in $libc. You're normal."
5399 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5401 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5402 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5403 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5405 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5407 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5410 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5412 if $test -r "$tans"; then
5413 echo "Your C library seems to be in $tans, of all places."
5419 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5423 If the guess above is wrong (which it might be if you're using a strange
5424 compiler, or your machine supports multiple models), you can override it here.
5429 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5431 I can't seem to find your C library. I've looked in the following places:
5434 $sed 's/^/ /' libpath
5437 None of these seems to contain your C library. I need to get its name...
5442 rp='Where is your C library?'
5447 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5448 set X `cat libnames`
5451 case $# in 1) xxx=file; esac
5452 echo "Extracting names from the following $xxx for later perusal:" >&4
5454 $sed 's/^/ /' libnames >&4
5456 $echo $n "This may take a while...$c" >&4
5460 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5461 *) $nm $nm_opt $file 2>/dev/null;;
5466 $grep fprintf libc.tmp > libc.ptf
5467 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5468 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5470 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5472 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5474 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5476 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5478 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5480 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5482 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5484 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5486 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5488 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5490 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5492 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5494 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5495 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5497 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5499 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5501 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5503 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5505 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5507 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5509 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5511 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5513 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5515 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5517 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5519 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5521 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5523 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5525 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5528 $nm -p $* 2>/dev/null >libc.tmp
5529 $grep fprintf libc.tmp > libc.ptf
5530 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5531 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5537 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5539 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5540 for thisname in $libnames $libc; do
5541 $ar t $thisname >>libc.tmp
5543 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5545 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5546 # Repeat libc to extract forwarders to DLL entries too
5547 for thisname in $libnames $libc; do
5548 $ar tv $thisname >>libc.tmp
5549 # Revision 50 of EMX has bug in $ar.
5550 # it will not extract forwarders to DLL entries
5551 # Use emximp which will extract exactly them.
5552 emximp -o tmp.imp $thisname \
5554 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5555 < tmp.imp >>libc.tmp
5558 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5561 echo "$ar didn't seem to work right." >&4
5562 echo "Maybe this is a Cray...trying bld instead..." >&4
5563 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5565 for thisname in $libnames; do
5567 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5568 $ar t $thisname >>libc.tmp
5572 echo "That didn't work either. Giving up." >&4
5579 if $test -f /lib/syscalls.exp; then
5581 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5582 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
5586 $rm -f libnames libpath
5588 : is a C symbol defined?
5591 -v) tf=libc.tmp; tc=""; tdc="";;
5592 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5593 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5596 case "$reuseval-$4" in
5598 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5604 if $contains $tlook $tf >/dev/null 2>&1;
5609 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5610 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5618 $define) tval=true;;
5624 : define an is-in-libc? function
5625 inlibc='echo " "; td=$define; tu=$undef;
5626 sym=$1; var=$2; eval "was=\$$2";
5628 case "$reuseval$was" in
5638 echo "$sym() found." >&4;
5639 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5641 echo "$sym() NOT found." >&4;
5642 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5646 $define) echo "$sym() found." >&4;;
5647 *) echo "$sym() NOT found." >&4;;
5651 : see if sqrtl exists
5656 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5659 case "$uselongdouble" in
5660 $define|true|[yY]*) dflt='y';;
5665 Perl can be built to take advantage of long doubles which
5666 (if available) may give more accuracy and range for floating point numbers.
5668 If this doesn't make any sense to you, just accept the default '$dflt'.
5670 rp='Try to use long doubles if available?'
5673 y|Y) val="$define" ;;
5679 case "$uselongdouble" in
5680 true|[yY]*) uselongdouble="$define" ;;
5683 case "$uselongdouble" in
5685 : Look for a hint-file generated 'call-back-unit'. If the
5686 : user has specified that long doubles should be used,
5687 : we may need to set or change some other defaults.
5688 if $test -f uselongdouble.cbu; then
5689 echo "Your platform has some specific hints for long doubles, using them..."
5690 . ./uselongdouble.cbu
5693 (Your platform doesn't have any specific hints for long doubles.)
5699 case "$uselongdouble:$d_sqrtl" in
5703 *** You requested the use of long doubles but you do not seem to have
5704 *** the mathematic functions for long doubles. I'm disabling the use
5705 *** of long doubles.
5708 uselongdouble=$undef
5712 : check for length of double
5714 case "$doublesize" in
5716 echo "Checking to see how big your double precision numbers are..." >&4
5717 $cat >try.c <<'EOCP'
5721 printf("%d\n", (int)sizeof(double));
5726 if eval $compile_ok; then
5727 doublesize=`$run ./try`
5728 echo "Your double is $doublesize bytes long."
5731 echo "(I can't seem to compile the test program. Guessing...)"
5732 rp="What is the size of a double precision number (in bytes)?"
5740 : check for long doubles
5742 echo "Checking to see if you have long double..." >&4
5743 echo 'int main() { long double x = 7.0; }' > try.c
5745 if eval $compile; then
5747 echo "You have long double."
5750 echo "You do not have long double."
5756 : check for length of long double
5757 case "${d_longdbl}${longdblsize}" in
5760 echo "Checking to see how big your long doubles are..." >&4
5761 $cat >try.c <<'EOCP'
5765 printf("%d\n", sizeof(long double));
5770 if eval $compile; then
5771 longdblsize=`$run ./try`
5772 echo "Your long doubles are $longdblsize bytes long."
5776 echo "(I can't seem to compile the test program. Guessing...)" >&4
5777 rp="What is the size of a long double (in bytes)?"
5781 if $test "X$doublesize" = "X$longdblsize"; then
5782 echo "(That isn't any different from an ordinary double.)"
5788 case "$useperlio" in
5789 $define|true|[yY]*|'') dflt='y';;
5794 Previous version of $package used the standard IO mechanisms as
5795 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
5796 alternate IO mechanisms via the PerlIO abstraction layer, but the
5797 stdio mechanism is still available if needed. The abstraction layer
5798 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5799 Using PerlIO with sfio may cause problems with some extension modules.
5801 If this doesn't make any sense to you, just accept the default '$dflt'.
5803 rp='Use the PerlIO abstraction layer?'
5810 echo "Ok, doing things the stdio way."
5819 case "$useperlio" in
5820 $define|true|[yY]*) ;;
5823 You are using the SOCKS proxy protocol library which means that you
5824 should also use the PerlIO layer. You may be headed for trouble.
5833 : determine the architecture name
5835 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5836 tarch=`arch`"-$osname"
5837 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5838 if uname -m > tmparch 2>&1 ; then
5839 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5840 -e 's/$/'"-$osname/" tmparch`
5848 case "$myarchname" in
5851 echo "(Your architecture name used to be $myarchname.)"
5855 case "$targetarch" in
5857 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5862 *) dflt="$archname";;
5864 rp='What is your architecture name'
5867 case "$usethreads" in
5869 echo "Threads selected." >&4
5871 *-thread*) echo "...and architecture name already has -thread." >&4
5873 *) archname="$archname-thread"
5874 echo "...setting architecture name to $archname." >&4
5879 case "$usemultiplicity" in
5881 echo "Multiplicity selected." >&4
5883 *-multi*) echo "...and architecture name already has -multi." >&4
5885 *) archname="$archname-multi"
5886 echo "...setting architecture name to $archname." >&4
5891 case "$use64bitint$use64bitall" in
5893 case "$archname64" in
5895 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5898 case "$use64bitint" in
5899 "$define") echo "64 bit integers selected." >&4 ;;
5901 case "$use64bitall" in
5902 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5905 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5907 *) archname="$archname-$archname64"
5908 echo "...setting architecture name to $archname." >&4
5914 case "$uselongdouble" in
5916 echo "Long doubles selected." >&4
5917 case "$longdblsize" in
5919 "...but long doubles are equal to doubles, not changing architecture name." >&4
5923 *-ld*) echo "...and architecture name already has -ld." >&4
5925 *) archname="$archname-ld"
5926 echo "...setting architecture name to $archname." >&4
5933 case "$useperlio" in
5935 echo "Perlio selected." >&4
5938 echo "Perlio not selected, using stdio." >&4
5940 *-stdio*) echo "...and architecture name already has -stdio." >&4
5942 *) archname="$archname-stdio"
5943 echo "...setting architecture name to $archname." >&4
5949 : determine root of directory hierarchy where package will be installed.
5952 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5960 By default, $package will be installed in $dflt/bin, manual pages
5961 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5962 installation directories. Typically this is something like /usr/local.
5963 If you wish to have binaries under /usr/bin but other parts of the
5964 installation under /usr/local, that's ok: you will be prompted
5965 separately for each of the installation directories, the prefix being
5966 only used to set the defaults.
5970 rp='Installation prefix to use?'
5978 *) oldprefix="$prefix";;
5987 *) afsroot=$afsroot ;;
5993 $define|true) afs=true ;;
5994 $undef|false) afs=false ;;
5995 *) if test -d $afsroot; then
6003 echo "AFS may be running... I'll be extra cautious then..." >&4
6005 echo "AFS does not seem to be running..." >&4
6008 : determine installation prefix for where package is to be installed.
6012 Since you are running AFS, I need to distinguish the directory in which
6013 files will reside from the directory in which they are installed (and from
6014 which they are presumably copied to the former directory by occult means).
6017 case "$installprefix" in
6018 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6019 *) dflt="$installprefix";;
6024 In some special cases, particularly when building $package for distribution,
6025 it is convenient to distinguish between the directory in which files should
6026 be installed from the directory ($prefix) in which they
6027 will eventually reside. For most users, these two directories are the same.
6030 case "$installprefix" in
6032 *) dflt=$installprefix;;
6036 rp='What installation prefix should I use for installing files?'
6038 installprefix="$ans"
6039 installprefixexp="$ansexp"
6041 : set the prefixit variable, to compute a suitable default value
6042 prefixit='case "$3" in
6044 case "$oldprefix" in
6045 "") eval "$1=\"\$$2\"";;
6052 ""|" ") eval "$1=\"\$$2\"";;
6058 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6060 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6061 /*-$oldprefix/*|\~*-$oldprefix/*)
6062 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6063 *) eval "$1=\"\$$2\"";;
6067 : get the patchlevel
6069 echo "Getting the current patchlevel..." >&4
6070 if $test -r $rsrc/patchlevel.h;then
6071 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6072 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6073 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6074 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6075 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6076 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6077 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6086 $echo "(You do not have patchlevel.h. Eek.)"
6088 if $test -r $rsrc/.patch ; then
6089 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6090 perl_patchlevel=`cat $rsrc/.patch`
6093 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6094 version_patchlevel_string="version $patchlevel subversion $subversion"
6095 case "$perl_patchlevel" in
6097 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6100 $echo "(You have $package $version_patchlevel_string.)"
6104 : XXX Should be a Configure test for double-dots in filenames.
6105 version=`echo $revision $patchlevel $subversion | \
6106 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6107 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6108 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
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 : Special case the 5.005_xx maintenance series, which used 5.005
6118 : without any subversion label as a subdirectory in $sitelib
6119 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6120 api_versionstring='5.005'
6123 : determine installation style
6124 : For now, try to deduce it from prefix unless it is already set.
6125 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6126 case "$installstyle" in
6127 '') case "$prefix" in
6128 *perl*) dflt='lib';;
6129 *) dflt='lib/perl5' ;;
6132 *) dflt="$installstyle" ;;
6134 : Probably not worth prompting for this since we prompt for all
6135 : the directories individually, and the prompt would be too long and
6139 : determine where private library files go
6140 : Usual default is /usr/local/lib/perl5/$version.
6141 : Also allow things like /opt/perl/lib/$version, since
6142 : /opt/perl/lib/perl5... would be redundant.
6143 : The default "style" setting is made in installstyle.U
6144 case "$installstyle" in
6145 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6146 *) set dflt privlib lib/$version ;;
6151 There are some auxiliary files for $package that need to be put into a
6152 private library directory that is accessible by everyone.
6156 rp='Pathname where the private library files will reside?'
6159 privlibexp="$ansexp"
6160 : Change installation prefix, if necessary.
6161 if $test X"$prefix" != X"$installprefix"; then
6162 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6164 installprivlib="$privlibexp"
6167 : set the prefixup variable, to restore leading tilda escape
6168 prefixup='case "$prefixexp" in
6170 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6173 : determine where public architecture dependent libraries go
6176 : privlib default is /usr/local/lib/$package/$version
6177 : archlib default is /usr/local/lib/$package/$version/$archname
6178 : privlib may have an optional trailing /share.
6179 tdflt=`echo $privlib | $sed 's,/share$,,'`
6180 tdflt=$tdflt/$archname
6189 $spackage contains architecture-dependent library files. If you are
6190 sharing libraries in a heterogeneous environment, you might store
6191 these files in a separate location. Otherwise, you can just include
6192 them with the rest of the public library files.
6196 rp='Where do you want to put the public architecture-dependent libraries?'
6199 archlibexp="$ansexp"
6200 if $test X"$archlib" = X"$privlib"; then
6205 : Change installation prefix, if necessary.
6206 if $test X"$prefix" != X"$installprefix"; then
6207 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6209 installarchlib="$archlibexp"
6213 : Binary compatibility with 5.005 is not possible for builds
6214 : with advanced features
6215 case "$usethreads$usemultiplicity" in
6217 bincompat5005="$undef"
6218 d_bincompat5005="$undef"
6222 This version of Perl can be compiled for binary compatibility with 5.005.
6223 If you decide to do so, you will be able to continue using most of the
6224 extensions that were compiled for Perl 5.005.
6227 case "$bincompat5005$d_bincompat5005" in
6228 *"$undef"*) dflt=n ;;
6231 rp='Binary compatibility with Perl 5.005?'
6234 y*) val="$define" ;;
6239 case "$d_bincompat5005" in
6241 bincompat5005="$define"
6243 *) bincompat5005="$undef"
6244 d_bincompat5005="$undef"
6251 : see if setuid scripts can be secure
6254 Some kernels have a bug that prevents setuid #! scripts from being
6255 secure. Some sites have disabled setuid #! scripts because of this.
6257 First let's decide if your kernel supports secure setuid #! scripts.
6258 (If setuid #! scripts would be secure but have been disabled anyway,
6259 don't say that they are secure if asked.)
6264 if $test -d /dev/fd; then
6265 echo "#!$ls" >reflect
6266 chmod +x,u+s reflect
6267 ./reflect >flect 2>&1
6268 if $contains "/dev/fd" flect >/dev/null; then
6269 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6273 If you are not sure if they are secure, I can check but I'll need a
6274 username and password different from the one you are using right now.
6275 If you don't have such a username or don't want me to test, simply
6279 rp='Other username to test security of setuid scripts with?'
6284 case "$d_suidsafe" in
6285 '') echo "I'll assume setuid scripts are *not* secure." >&4
6288 echo "Well, the $hint value is *not* secure." >&4
6290 *) echo "Well, the $hint value *is* secure." >&4
6295 $rm -f reflect flect
6296 echo "#!$ls" >reflect
6297 chmod +x,u+s reflect
6300 echo '"su" will (probably) prompt you for '"$ans's password."
6301 su $ans -c './reflect >flect'
6302 if $contains "/dev/fd" flect >/dev/null; then
6303 echo "Okay, it looks like setuid scripts are secure." >&4
6306 echo "I don't think setuid scripts are secure." >&4
6311 rp='Does your kernel have *secure* setuid scripts?'
6314 [yY]*) val="$define";;
6319 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6320 echo "(That's for file descriptors, not floppy disks.)"
6326 $rm -f reflect flect
6328 : now see if they want to do setuid emulation
6331 case "$d_suidsafe" in
6334 echo "No need to emulate SUID scripts since they are secure here." >& 4
6338 Some systems have disabled setuid scripts, especially systems where
6339 setuid scripts cannot be secure. On systems where setuid scripts have
6340 been disabled, the setuid/setgid bits on scripts are currently
6341 useless. It is possible for $package to detect those bits and emulate
6342 setuid/setgid in a secure fashion. This emulation will only work if
6343 setuid scripts have been disabled in your kernel.
6347 "$define") dflt=y ;;
6350 rp="Do you want to do setuid/setgid emulation?"
6353 [yY]*) val="$define";;
6361 : see if this is a malloc.h system
6362 set malloc.h i_malloc
6365 : see if stdlib is available
6366 set stdlib.h i_stdlib
6369 : determine which malloc to compile in
6371 case "$usemymalloc" in
6372 [yY]*|true|$define) dflt='y' ;;
6373 [nN]*|false|$undef) dflt='n' ;;
6374 *) case "$ptrsize" in
6380 rp="Do you wish to attempt to use the malloc that comes with $package?"
6386 mallocsrc='malloc.c'
6387 mallocobj="malloc$_o"
6388 d_mymalloc="$define"
6391 : Remove malloc from list of libraries to use
6392 echo "Removing unneeded -lmalloc from library list" >&4
6393 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6396 echo "libs = $libs" >&4
6408 : compute the return types of malloc and free
6410 $cat >malloc.c <<END
6414 #include <sys/types.h>
6428 case "$malloctype" in
6430 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6437 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6441 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6448 echo "Your system uses $freetype free(), it would seem." >&4
6452 After $package is installed, you may wish to install various
6453 add-on modules and utilities. Typically, these add-ons will
6454 be installed under $prefix with the rest
6455 of this package. However, you may wish to install such add-ons
6456 elsewhere under a different prefix.
6458 If you do not wish to put everything under a single prefix, that's
6459 ok. You will be prompted for the individual locations; this siteprefix
6460 is only used to suggest the defaults.
6462 The default should be fine for most people.
6466 rp='Installation prefix to use for add-on modules and utilities?'
6467 : XXX Here might be another good place for an installstyle setting.
6468 case "$siteprefix" in
6470 *) dflt=$siteprefix ;;
6473 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6475 case "$siteprefix" in
6479 *) oldsiteprefix="$prefix";;
6484 siteprefixexp="$ansexp"
6486 : determine where site specific libraries go.
6487 : Usual default is /usr/local/lib/perl5/site_perl/$version
6488 : The default "style" setting is made in installstyle.U
6489 : XXX No longer works with Prefixit stuff.
6490 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6492 '') case "$installstyle" in
6493 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6494 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6502 The installation process will create a directory for
6503 site-specific extensions and modules. Most users find it convenient
6504 to place all site-specific files in this directory rather than in the
6505 main distribution directory.
6509 rp='Pathname for the site-specific library files?'
6512 sitelibexp="$ansexp"
6513 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6514 : Change installation prefix, if necessary.
6515 if $test X"$prefix" != X"$installprefix"; then
6516 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6518 installsitelib="$sitelibexp"
6521 : determine where site specific architecture-dependent libraries go.
6522 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6523 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6524 : sitelib may have an optional trailing /share.
6526 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6527 dflt="$dflt/$archname"
6532 set sitearch sitearch none
6536 The installation process will also create a directory for
6537 architecture-dependent site-specific extensions and modules.
6541 rp='Pathname for the site-specific architecture-dependent library files?'
6544 sitearchexp="$ansexp"
6545 : Change installation prefix, if necessary.
6546 if $test X"$prefix" != X"$installprefix"; then
6547 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6549 installsitearch="$sitearchexp"
6554 The installation process will also create a directory for
6555 vendor-supplied add-ons. Vendors who supply perl with their system
6556 may find it convenient to place all vendor-supplied files in this
6557 directory rather than in the main distribution directory. This will
6558 ease upgrades between binary-compatible maintenance versions of perl.
6560 Of course you may also use these directories in whatever way you see
6561 fit. For example, you might use them to access modules shared over a
6562 company-wide network.
6564 The default answer should be fine for most people.
6565 This causes further questions about vendor add-ons to be skipped
6566 and no vendor-specific directories will be configured for perl.
6569 rp='Do you want to configure vendor-specific add-on directories?'
6570 case "$usevendorprefix" in
6571 define|true|[yY]*) dflt=y ;;
6572 *) : User may have set vendorprefix directly on Configure command line.
6573 case "$vendorprefix" in
6582 rp='Installation prefix to use for vendor-supplied add-ons?'
6583 case "$vendorprefix" in
6585 *) dflt=$vendorprefix ;;
6588 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6590 case "$vendorprefix" in
6594 *) oldvendorprefix="$prefix";;
6598 usevendorprefix="$define"
6600 vendorprefixexp="$ansexp"
6602 *) usevendorprefix="$undef"
6608 case "$vendorprefix" in
6609 '') d_vendorlib="$undef"
6613 *) d_vendorlib="$define"
6614 : determine where vendor-supplied modules go.
6615 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6616 case "$vendorlib" in
6618 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6619 case "$installstyle" in
6620 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6621 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6624 *) dflt="$vendorlib"
6628 rp='Pathname for the vendor-supplied library files?'
6631 vendorlibexp="$ansexp"
6634 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6635 : Change installation prefix, if necessary.
6636 if $test X"$prefix" != X"$installprefix"; then
6637 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6639 installvendorlib="$vendorlibexp"
6642 case "$vendorprefix" in
6643 '') d_vendorarch="$undef"
6647 *) d_vendorarch="$define"
6648 : determine where vendor-supplied architecture-dependent libraries go.
6649 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6650 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6651 : vendorlib may have an optional trailing /share.
6652 case "$vendorarch" in
6653 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6654 dflt="$dflt/$archname"
6656 *) dflt="$vendorarch" ;;
6659 rp='Pathname for vendor-supplied architecture-dependent files?'
6662 vendorarchexp="$ansexp"
6665 : Change installation prefix, if necessary.
6666 if $test X"$prefix" != X"$installprefix"; then
6667 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6669 installvendorarch="$vendorarchexp"
6672 : Final catch-all directories to search
6675 Lastly, you can have perl look in other directories for extensions and
6676 modules in addition to those already specified.
6677 These directories will be searched after
6681 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6682 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6684 case "$otherlibdirs" in
6685 ''|' ') dflt='none' ;;
6686 *) dflt="$otherlibdirs" ;;
6689 Enter a colon-separated set of extra paths to include in perl's @INC
6690 search path, or enter 'none' for no extra paths.
6694 rp='Colon-separated list of additional directories for perl to search?'
6697 ' '|''|none) otherlibdirs=' ' ;;
6698 *) otherlibdirs="$ans" ;;
6700 case "$otherlibdirs" in
6704 set d_perl_otherlibdirs
6707 : Cruising for prototypes
6709 echo "Checking out function prototypes..." >&4
6710 $cat >prototype.c <<'EOCP'
6711 int main(int argc, char *argv[]) {
6714 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6715 echo "Your C compiler appears to support function prototypes."
6718 echo "Your C compiler doesn't seem to understand function prototypes."
6725 case "$prototype" in
6727 *) ansi2knr='ansi2knr'
6732 This version of $package can only be compiled by a compiler that
6733 understands function prototypes. Unfortunately, your C compiler
6735 doesn't seem to understand them. Sorry about that.
6737 If GNU cc is available for your system, perhaps you could try that instead.
6739 Eventually, we hope to support building Perl with pre-ANSI compilers.
6740 If you would like to help in that effort, please contact <perlbug@perl.org>.
6742 Aborting Configure now.
6748 : determine where public executables go
6753 rp='Pathname where the public executables will reside?'
6755 if $test "X$ansexp" != "X$binexp"; then
6760 : Change installation prefix, if necessary.
6761 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6762 if $test X"$prefix" != X"$installprefix"; then
6763 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6765 installbin="$binexp"
6769 echo "Any extra modules..." >&4
6775 Perl can be built with extra modules or bundles of modules which
6776 will be fetched from the CPAN and installed alongside Perl.
6778 Notice that you will need access to the CPAN; either via the Internet,
6779 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6780 be asked later to configure the CPAN.pm module which will in turn do
6781 the installation of the rest of the extra modules or bundles.)
6783 Notice also that if the modules require any external software such as
6784 libraries (the libz library for the Compress::Zlib module, for example)
6785 you *NEED* to have any such external software already installed, this
6786 configuration process will not install such things for you.
6788 If this doesn't make any sense to you, just accept the default '$dflt'.
6790 rp='Install any extra modules (y or n) ?'
6796 Please list any extra modules or bundles to be installed from CPAN,
6797 with spaces between the names. The names can be in any format the
6798 'install' command of CPAN.pm will understand. (Answer 'none' the
6799 quotes, to install no extra modules or bundles.)
6809 $rm -f ../extras.lst
6811 *) echo "(Saving the list of extras for later...)"
6812 echo $extras > ../extras.lst
6820 : Find perl5.005 or later.
6821 echo "Looking for a previously installed perl5.005 or later... "
6823 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6824 : Check if this perl is recent and can load a simple module
6825 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6828 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6838 '') echo "None found. That's ok.";;
6839 *) echo "Using $perl5." ;;
6842 : Determine list of previous versions to include in @INC
6843 $cat > getverlist <<EOPL
6846 \$api_versionstring = "$api_versionstring";
6847 \$version = "$version";
6848 \$stem = "$sitelib_stem";
6849 \$archname = "$archname";
6851 $cat >> getverlist <<'EOPL'
6852 # Can't have leading @ because metaconfig interprets it as a command!
6853 ;@inc_version_list=();
6854 # XXX Redo to do opendir/readdir?
6857 ;@candidates = glob("5.*");
6863 # XXX ToDo: These comparisons must be reworked when two-digit
6864 # subversions come along, so that 5.7.10 compares as greater than
6865 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6866 # widespread that we can use the built-in version vectors rather
6867 # than reinventing them here. For 5.6.0, however, we must
6868 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6869 foreach $d (@candidates) {
6870 if ($d lt $version) {
6871 if ($d ge $api_versionstring) {
6872 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6874 elsif ($d ge "5.005") {
6875 unshift(@inc_version_list, grep { -d } $d);
6879 # Skip newer version. I.e. don't look in
6880 # 5.7.0 if we're installing 5.6.1.
6884 if (@inc_version_list) {
6885 print join(' ', @inc_version_list);
6888 # Blank space to preserve value for next Configure run.
6893 case "$inc_version_list" in
6894 '') if test -x "$perl5$exe_ext"; then
6895 dflt=`$perl5 getverlist`
6900 $undef) dflt='none' ;;
6901 *) eval dflt=\"$inc_version_list\" ;;
6904 ''|' ') dflt=none ;;
6907 5.005) case "$bincompat5005" in
6908 $define|true|[yY]*) ;;
6915 In order to ease the process of upgrading, this version of perl
6916 can be configured to use modules built and installed with earlier
6917 versions of perl that were installed under $prefix. Specify here
6918 the list of earlier versions that this version of perl should check.
6919 If Configure detected no earlier versions of perl installed under
6920 $prefix, then the list will be empty. Answer 'none' to tell perl
6921 to not search earlier versions.
6923 The default should almost always be sensible, so if you're not sure,
6924 just accept the default.
6927 rp='List of earlier versions to include in @INC?'
6930 [Nn]one|''|' ') inc_version_list=' ' ;;
6931 *) inc_version_list="$ans" ;;
6933 case "$inc_version_list" in
6935 inc_version_list_init='0';;
6936 *) inc_version_list_init=`echo $inc_version_list |
6937 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6942 : determine whether to install perl also as /usr/bin/perl
6945 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6947 Many scripts expect perl to be installed as /usr/bin/perl.
6948 I can install the perl you are about to compile also as /usr/bin/perl
6949 (in addition to $installbin/perl).
6951 case "$installusrbinperl" in
6952 "$undef"|[nN]*) dflt='n';;
6955 rp="Do you want to install perl as /usr/bin/perl?"
6958 [yY]*) val="$define";;
6964 set installusrbinperl
6967 : see if dld is available
6971 : see if dlopen exists
6978 : determine which dynamic loading, if any, to compile in
6980 dldir="ext/DynaLoader"
6993 $define) dflt='y' ;;
6996 $define) dflt='y' ;;
6998 : Does a dl_xxx.xs file exist for this operating system
6999 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7002 rp="Do you wish to use dynamic loading?"
7009 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7010 dflt="$dldir/dl_${osname}.xs"
7011 elif $test "$d_dlopen" = "$define" ; then
7012 dflt="$dldir/dl_dlopen.xs"
7013 elif $test "$i_dld" = "$define" ; then
7014 dflt="$dldir/dl_dld.xs"
7019 *) dflt="$dldir/$dlsrc"
7022 echo "The following dynamic loading files are available:"
7023 : Can not go over to $dldir because getfile has path hard-coded in.
7024 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7025 rp="Source file to use for dynamic loading"
7031 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7035 Some systems may require passing special flags to $cc -c to
7036 compile modules that will be used to create a shared library.
7037 To use no flags, say "none".
7040 case "$cccdlflags" in
7041 '') case "$gccversion" in
7042 '') case "$osname" in
7044 next) dflt='none' ;;
7045 irix*) dflt='-KPIC' ;;
7046 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7047 sunos) dflt='-pic' ;;
7051 *) case "$osname" in
7052 darwin) dflt='none' ;;
7053 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7058 *) dflt="$cccdlflags" ;;
7060 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7063 none) cccdlflags=' ' ;;
7064 *) cccdlflags="$ans" ;;
7069 Some systems use ld to create libraries that can be dynamically loaded,
7070 while other systems (such as those using ELF) use $cc.
7074 '') $cat >try.c <<'EOM'
7075 /* Test for whether ELF binaries are produced */
7080 int i = open("a.out",O_RDONLY);
7083 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7084 exit(0); /* succeed (yes, it's ELF) */
7089 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7091 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7095 echo "I'll use ld to build dynamic libraries."
7104 rp="What command should be used to create dynamic libraries?"
7110 Some systems may require passing special flags to $ld to create a
7111 library that can be dynamically loaded. If your ld flags include
7112 -L/other/path options to locate libraries outside your loader's normal
7113 search path, you may need to specify those -L options here as well. To
7114 use no flags, say "none".
7117 case "$lddlflags" in
7118 '') case "$osname" in
7119 beos) dflt='-nostart' ;;
7121 case "$gccversion" in
7122 '') dflt="$dflt +vnocompatwarnings" ;;
7125 linux|irix*) dflt='-shared' ;;
7126 next) dflt='none' ;;
7127 solaris) dflt='-G' ;;
7128 sunos) dflt='-assert nodefinitions' ;;
7129 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7133 *) dflt="$lddlflags" ;;
7136 : Try to guess additional flags to pick up local libraries.
7137 : Be careful not to append to a plain 'none'
7141 for thisflag in $ldflags; do
7146 *) dflt="$dflt $thisflag" ;;
7153 ''|' ') dflt='none' ;;
7156 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7159 none) lddlflags=' ' ;;
7160 *) lddlflags="$ans" ;;
7165 Some systems may require passing special flags to $cc to indicate that
7166 the resulting executable will use dynamic linking. To use no flags,
7170 case "$ccdlflags" in
7171 '') case "$osname" in
7172 hpux) dflt='-Wl,-E' ;;
7173 linux) dflt='-rdynamic' ;;
7174 next) dflt='none' ;;
7175 sunos) dflt='none' ;;
7179 *) dflt="$ccdlflags" ;;
7181 rp="Any special flags to pass to $cc to use dynamic linking?"
7184 none) ccdlflags=' ' ;;
7185 *) ccdlflags="$ans" ;;
7199 # No dynamic loading being used, so don't bother even to prompt.
7202 *) case "$useshrplib" in
7203 '') case "$osname" in
7204 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7206 also='Building a shared libperl is required for dynamic loading to work on your system.'
7211 also='Building a shared libperl is needed for MAB support.'
7229 The perl executable is normally obtained by linking perlmain.c with
7230 libperl${_a}, any static extensions (usually just DynaLoader), and
7231 any other libraries needed on this system (such as -lm, etc.). Since
7232 your system supports dynamic loading, it is probably possible to build
7233 a shared libperl.$so. If you will have more than one executable linked
7234 to libperl.$so, this will significantly reduce the size of each
7235 executable, but it may have a noticeable affect on performance. The
7236 default is probably sensible for your system.
7240 rp="Build a shared libperl.$so (y/n)"
7244 useshrplib='true' ;;
7245 *) useshrplib='false' ;;
7250 case "$useshrplib" in
7254 # Figure out a good name for libperl.so. Since it gets stored in
7255 # a version-specific architecture-dependent library, the version
7256 # number isn't really that important, except for making cc/ld happy.
7258 # A name such as libperl.so.3.1
7259 majmin="libperl.$so.$patchlevel.$subversion"
7260 # A name such as libperl.so.301
7261 majonly=`echo $patchlevel $subversion |
7262 $awk '{printf "%d%02d", $1, $2}'`
7263 majonly=libperl.$so.$majonly
7264 # I'd prefer to keep the os-specific stuff here to a minimum, and
7265 # rely on figuring it out from the naming of libc.
7266 case "${osname}${osvers}" in
7269 # XXX How handle the --version stuff for MAB?
7271 linux*) # ld won't link with a bare -lperl otherwise.
7274 cygwin*) # include version
7275 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7277 *) # Try to guess based on whether libc has major.minor.
7279 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7280 *libc.$so.[0-9]*) dflt=$majonly ;;
7281 *) dflt=libperl.$so ;;
7291 I need to select a good name for the shared libperl. If your system uses
7292 library names with major and minor numbers, then you might want something
7293 like $majmin. Alternatively, if your system uses a single version
7294 number for shared libraries, then you might want to use $majonly.
7295 Or, your system might be quite happy with a simple libperl.$so.
7297 Since the shared libperl will get installed into a version-specific
7298 architecture-dependent directory, the version number of the shared perl
7299 library probably isn't important, so the default should be o.k.
7302 rp='What name do you want to give to the shared libperl?'
7305 echo "Ok, I'll use $libperl"
7308 libperl="libperl${_a}"
7312 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7316 WARNING: Use of the shrpdir variable for the installation location of
7317 the shared $libperl is not supported. It was never documented and
7318 will not work in this version. Let me (perlbug@perl.org)
7319 know of any problems this may cause.
7325 But your current setting of $shrpdir is
7326 the default anyway, so it's harmless.
7331 Further, your current attempted setting of $shrpdir
7332 conflicts with the value of $archlibexp/CORE
7333 that installperl will use.
7340 # How will the perl executable find the installed shared $libperl?
7341 # Add $xxx to ccdlflags.
7342 # If we can't figure out a command-line option, use $shrpenv to
7343 # set env LD_RUN_PATH. The main perl makefile uses this.
7344 shrpdir=$archlibexp/CORE
7347 if "$useshrplib"; then
7350 # We'll set it in Makefile.SH...
7356 xxx="-Wl,-R$shrpdir"
7358 linux|irix*|dec_osf)
7359 xxx="-Wl,-rpath,$shrpdir"
7362 # next doesn't like the default...
7365 # beos doesn't like the default, either.
7368 # hpux doesn't like the default, either.
7369 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7372 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7378 # Only add $xxx if it isn't already in ccdlflags.
7379 case " $ccdlflags " in
7381 *) ccdlflags="$ccdlflags $xxx"
7384 Adding $xxx to the flags
7385 passed to $ld so that the perl executable will find the
7386 installed shared $libperl.
7394 # Fix ccdlflags in AIX for building external extensions.
7395 # (For building Perl itself bare -bE:perl.exp is needed,
7396 # Makefile.SH takes care of this.)
7398 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7400 # Respect a hint or command-line value.
7402 '') shrpenv="$tmp_shrpenv" ;;
7404 case "$ldlibpthname" in
7405 '') ldlibpthname=LD_LIBRARY_PATH ;;
7406 none) ldlibpthname='' ;;
7409 : determine where manual pages are on this system
7413 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7414 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7415 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7416 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7417 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7418 sysman=`./loc . /usr/man/man1 $syspath`
7421 if $test -d "$sysman"; then
7422 echo "System manual is in $sysman." >&4
7424 echo "Could not find manual pages in source form." >&4
7427 : determine where manual pages go
7428 set man1dir man1dir none
7432 $spackage has manual pages available in source form.
7436 echo "However, you don't have nroff, so they're probably useless to you."
7438 '') man1dir="none";;
7441 echo "If you don't want the manual sources installed, answer 'none'."
7446 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7447 lookpath="$lookpath $prefixexp/man/p_man/man1"
7448 lookpath="$lookpath $prefixexp/man/u_man/man1"
7449 lookpath="$lookpath $prefixexp/man/man.1"
7451 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7452 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7462 rp="Where do the main $spackage manual pages (source) go?"
7464 if $test "X$man1direxp" != "X$ansexp"; then
7468 man1direxp="$ansexp"
7474 : Change installation prefix, if necessary.
7475 if $test X"$prefix" != X"$installprefix"; then
7476 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7478 installman1dir="$man1direxp"
7481 : What suffix to use on installed man pages
7488 rp="What suffix should be used for the main $spackage man pages?"
7490 '') case "$man1dir" in
7504 *) dflt="$man1ext";;
7511 : see if we can have long filenames
7513 first=123456789abcdef
7515 if (echo hi >$first) 2>/dev/null; then
7516 if $test -f 123456789abcde; then
7517 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7520 echo 'You can have filenames longer than 14 characters.'>&4
7525 You can't have filenames longer than 14 chars.
7526 You can't even think about them!
7532 $rm -rf 123456789abcde*
7534 : determine where library module manual pages go
7535 set man3dir man3dir none
7539 $spackage has manual pages for many of the library modules.
7545 However, you don't have nroff, so they're probably useless to you.
7548 '') man3dir="none";;
7552 case "$d_flexfnam" in
7555 However, your system can't handle the long file names like File::Basename.3.
7558 '') man3dir="none";;
7562 echo "If you don't want the manual sources installed, answer 'none'."
7563 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7565 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7566 if $test -d "$privlib/man/man3"; then
7569 WARNING: Previous versions of perl installed man3 pages into
7570 $privlib/man/man3. This version will suggest a
7571 new default of $dflt.
7575 rp='Do you wish to preserve the old behavior?(y/n)'
7578 y*) dflt="$privlib/man/man3" ;;
7583 *) dflt="$man3dir" ;;
7590 rp="Where do the $package library man pages (source) go?"
7593 man3direxp="$ansexp"
7599 : Change installation prefix, if necessary.
7600 if $test X"$prefix" != X"$installprefix"; then
7601 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7603 installman3dir="$man3direxp"
7606 : What suffix to use on installed man pages
7612 rp="What suffix should be used for the $package library man pages?"
7614 '') case "$man3dir" in
7628 *) dflt="$man3ext";;
7635 : see if we have to deal with yellow pages, now NIS.
7636 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7637 if $test -f /usr/etc/nibindd; then
7639 echo "I'm fairly confident you're on a NeXT."
7641 rp='Do you get the hosts file via NetInfo?'
7650 y*) hostcat='nidump hosts .';;
7651 *) case "$hostcat" in
7652 nidump*) hostcat='';;
7662 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7670 rp='Are you getting the hosts file via yellow pages?'
7673 y*) hostcat='ypcat hosts';;
7674 *) hostcat='cat /etc/hosts';;
7680 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7683 '') test -f /etc/group && groupcat='cat /etc/group';;
7686 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7689 : now get the host name
7691 echo "Figuring out host name..." >&4
7692 case "$myhostname" in
7694 echo 'Maybe "hostname" will work...'
7695 if tans=`sh -c hostname 2>&1` ; then
7703 if $test "$cont"; then
7705 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7706 if tans=`cat /etc/systemid 2>&1` ; then
7708 phostname='cat /etc/systemid'
7709 echo "Whadyaknow. Xenix always was a bit strange..."
7712 elif $test -r /etc/systemid; then
7713 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7716 if $test "$cont"; then
7717 echo 'No, maybe "uuname -l" will work...'
7718 if tans=`sh -c 'uuname -l' 2>&1` ; then
7720 phostname='uuname -l'
7722 echo 'Strange. Maybe "uname -n" will work...'
7723 if tans=`sh -c 'uname -n' 2>&1` ; then
7725 phostname='uname -n'
7727 echo 'Oh well, maybe I can mine it out of whoami.h...'
7728 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7729 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7730 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7732 case "$myhostname" in
7733 '') echo "Does this machine have an identity crisis or something?"
7736 echo "Well, you said $myhostname before..."
7737 phostname='echo $myhostname';;
7743 : you do not want to know about this
7748 if $test "$myhostname" ; then
7750 rp='Your host name appears to be "'$myhostname'".'" Right?"
7758 : bad guess or no guess
7759 while $test "X$myhostname" = X ; do
7761 rp="Please type the (one word) name of your host:"
7766 : translate upper to lower if necessary
7767 case "$myhostname" in
7769 echo "(Normalizing case in your host name)"
7770 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7774 case "$myhostname" in
7776 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7777 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7778 echo "(Trimming domain name from host name--host name is now $myhostname)"
7780 *) case "$mydomain" in
7783 test "X$hostcat" = "Xypcat hosts" &&
7784 ypmatch "$myhostname" hosts 2>/dev/null |\
7785 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7788 test "X$hostcat" != "X" &&
7789 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7790 /[ ]$myhostname[ . ]/p" > hosts
7793 if $test -f hosts; then
7794 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7795 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7796 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7797 hosts | $sort | $uniq | \
7798 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7799 case `$echo X$dflt` in
7800 X*\ *) echo "(Several hosts in the database matched hostname)"
7803 X.) echo "(You do not have fully-qualified names in the hosts database)"
7807 echo "(I cannot locate a hosts database anywhere)"
7812 tans=`./loc resolv.conf X /etc /usr/etc`
7813 if $test -f "$tans"; then
7814 echo "(Attempting domain name extraction from $tans)"
7815 dflt=.`$sed -n -e 's/ / /g' \
7816 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7817 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7819 .) dflt=.`$sed -n -e 's/ / /g' \
7820 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7821 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7828 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7829 dflt=.`sh -c domainname 2>/dev/null`
7832 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7836 case "$dflt$osname" in
7837 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7838 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7842 .) echo "(Lost all hope -- silly guess then)"
7848 *) dflt="$mydomain";;
7852 rp="What is your domain name?"
7862 : translate upper to lower if necessary
7865 echo "(Normalizing case in your domain name)"
7866 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7870 : a little sanity check here
7871 case "$phostname" in
7874 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7875 $myhostname$mydomain|$myhostname) ;;
7877 case "$phostname" in
7879 echo "(That doesn't agree with your whoami.h file, by the way.)"
7882 echo "(That doesn't agree with your $phostname command, by the way.)"
7892 I need to get your e-mail address in Internet format if possible, i.e.
7893 something like user@host.domain. Please answer accurately since I have
7894 no easy means to double check it. The default value provided below
7895 is most probably close to reality but may not be valid from outside
7896 your organization...
7900 while test "$cont"; do
7902 '') dflt="$cf_by@$myhostname$mydomain";;
7903 *) dflt="$cf_email";;
7905 rp='What is your e-mail address?'
7911 rp='Address does not look like an Internet one. Use it anyway?'
7927 If you or somebody else will be maintaining perl at your site, please
7928 fill in the correct e-mail address here so that they may be contacted
7929 if necessary. Currently, the "perlbug" program included with perl
7930 will send mail to this address in addition to perlbug@perl.org. You may
7931 enter "none" for no administrator.
7934 case "$perladmin" in
7935 '') dflt="$cf_email";;
7936 *) dflt="$perladmin";;
7938 rp='Perl administrator e-mail address'
7942 : determine whether to only install version-specific parts.
7945 Do you want to install only the version-specific parts of the perl
7946 distribution? Usually you do *not* want to do this.
7948 case "$versiononly" in
7949 "$define"|[Yy]*|true) dflt='y' ;;
7952 rp="Do you want to install only the version-specific parts of perl?"
7955 [yY]*) val="$define";;
7961 : figure out how to guarantee perl startup
7962 case "$startperl" in
7964 case "$sharpbang" in
7968 I can use the #! construct to start perl on your system. This will
7969 make startup of perl scripts faster, but may cause problems if you
7970 want to share those scripts and perl is not in a standard place
7971 ($binexp/perl) on all your platforms. The alternative is to force
7972 a shell by starting the script with a single ':' character.
7975 case "$versiononly" in
7976 "$define") dflt="$binexp/perl$version";;
7977 *) dflt="$binexp/perl";;
7979 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7982 none) startperl=": # use perl";;
7983 *) startperl="#!$ans"
7984 if $test 30 -lt `echo "$ans" | wc -c`; then
7987 WARNING: Some systems limit the #! command to 32 characters.
7988 If you experience difficulty running Perl scripts with #!, try
7989 installing Perl in a directory with a shorter pathname.
7995 *) startperl=": # use perl"
8000 echo "I'll use $startperl to start perl scripts."
8002 : figure best path for perl in scripts
8005 perlpath="$binexp/perl"
8006 case "$startperl" in
8011 I will use the "eval 'exec'" idiom to start Perl on your system.
8012 I can use the full path of your Perl binary for this purpose, but
8013 doing so may cause problems if you want to share those scripts and
8014 Perl is not always in a standard place ($binexp/perl).
8018 rp="What path shall I use in \"eval 'exec'\"?"
8025 case "$startperl" in
8027 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8030 : determine where public executable scripts go
8031 set scriptdir scriptdir
8033 case "$scriptdir" in
8036 : guess some guesses
8037 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8038 $test -d /usr/share/bin && dflt=/usr/share/bin
8039 $test -d /usr/local/script && dflt=/usr/local/script
8040 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8041 $test -d $prefixexp/script && dflt=$prefixexp/script
8045 *) dflt="$scriptdir"
8050 Some installations have a separate directory just for executable scripts so
8051 that they can mount it across multiple architectures but keep the scripts in
8052 one spot. You might, for example, have a subdirectory of /usr/share for this.
8053 Or you might just lump your scripts in with all your other executables.
8057 rp='Where do you keep publicly executable scripts?'
8059 if $test "X$ansexp" != "X$scriptdirexp"; then
8063 scriptdirexp="$ansexp"
8064 : Change installation prefix, if necessary.
8065 if $test X"$prefix" != X"$installprefix"; then
8066 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8068 installscript="$scriptdirexp"
8071 : determine where add-on public executables go
8073 '') dflt=$siteprefix/bin ;;
8077 rp='Pathname where the add-on public executables should be installed?'
8080 sitebinexp="$ansexp"
8081 : Change installation prefix, if necessary.
8082 if $test X"$prefix" != X"$installprefix"; then
8083 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8085 installsitebin="$sitebinexp"
8088 : define an is-a-typedef? function
8089 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8091 "") inclist="sys/types.h";;
8093 eval "varval=\$$var";
8097 for inc in $inclist; do
8098 echo "#include <$inc>" >>temp.c;
8100 echo "#ifdef $type" >> temp.c;
8101 echo "printf(\"We have $type\");" >> temp.c;
8102 echo "#endif" >> temp.c;
8103 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8104 if $contains $type temp.E >/dev/null 2>&1; then
8110 *) eval "$var=\$varval";;
8113 : define an is-a-typedef? function that prompts if the type is not available.
8114 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8116 "") inclist="sys/types.h";;
8118 eval "varval=\$$var";
8122 for inc in $inclist; do
8123 echo "#include <$inc>" >>temp.c;
8125 echo "#ifdef $type" >> temp.c;
8126 echo "printf(\"We have $type\");" >> temp.c;
8127 echo "#endif" >> temp.c;
8128 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8130 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8131 if $contains $type temp.E >/dev/null 2>&1; then
8132 echo "$type found." >&4;
8135 echo "$type NOT found." >&4;
8141 *) eval "$var=\$varval";;
8144 : see what type lseek is declared as in the kernel
8145 rp="What is the type used for lseek's offset on this system?"
8146 set off_t lseektype long stdio.h sys/types.h
8150 echo "Checking to see how big your file offsets are..." >&4
8152 #include <sys/types.h>
8156 printf("%d\n", (int)sizeof($lseektype));
8161 if eval $compile_ok; then
8162 lseeksize=`$run ./try`
8163 echo "Your file offsets are $lseeksize bytes long."
8167 echo "(I can't seem to compile the test program. Guessing...)"
8168 rp="What is the size of your file offsets (in bytes)?"
8174 : see what type file positions are declared as in the library
8175 rp="What is the type for file position used by fsetpos()?"
8176 set fpos_t fpostype long stdio.h sys/types.h
8181 *_t) zzz="$fpostype" ;;
8184 echo "Checking the size of $zzz..." >&4
8186 #include <sys/types.h>
8189 printf("%d\n", (int)sizeof($fpostype));
8194 if eval $compile_ok; then
8198 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8201 echo "Your $zzz is $fpossize bytes long."
8207 echo "(I can't compile the test program. Guessing...)" >&4
8208 rp="What is the size of your file positions (in bytes)?"
8215 # Backward compatibility (uselfs is deprecated).
8217 "$define"|true|[yY]*)
8220 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8222 uselargefiles="$define"
8226 case "$lseeksize:$fpossize" in
8229 You can have files larger than 2 gigabytes.
8232 *) case "$uselargefiles" in
8233 "$undef"|false|[nN]*) dflt='n' ;;
8238 Perl can be built to understand large files (files larger than 2 gigabytes)
8239 on some systems. To do so, Configure can be run with -Duselargefiles.
8241 If this doesn't make any sense to you, just accept the default '$dflt'.
8243 rp='Try to understand large files, if available?'
8246 y|Y) val="$define" ;;
8253 case "$uselargefiles" in
8255 : Look for a hint-file generated 'call-back-unit'. If the
8256 : user has specified that a large files perl is to be built,
8257 : we may need to set or change some other defaults.
8258 if $test -f uselargefiles.cbu; then
8259 echo "Your platform has some specific hints for large file builds, using them..."
8260 . ./uselargefiles.cbu
8262 echo "Rechecking to see how big your file offsets are..." >&4
8264 #include <sys/types.h>
8268 printf("%d\n", (int)sizeof($lseektype));
8273 if eval $compile_ok; then
8274 lseeksize=`$run ./try`
8275 $echo "Your file offsets are now $lseeksize bytes long."
8279 echo "(I can't seem to compile the test program. Guessing...)"
8280 rp="What is the size of your file offsets (in bytes)?"
8285 *_t) zzz="$fpostype" ;;
8288 $echo $n "Rechecking the size of $zzz...$c" >&4
8290 #include <sys/types.h>
8293 printf("%d\n", (int)sizeof($fpostype));
8298 if eval $compile_ok; then
8303 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8306 echo " $fpossize bytes." >&4
8312 echo "(I can't compile the test program. Guessing...)" >&4
8313 rp="What is the size of your file positions (in bytes)?"
8322 case "$vendorprefix" in
8323 '') d_vendorbin="$undef"
8327 *) d_vendorbin="$define"
8328 : determine where vendor-supplied executables go.
8329 case "$vendorbin" in
8330 '') dflt=$vendorprefix/bin ;;
8331 *) dflt="$vendorbin" ;;
8334 rp='Pathname for the vendor-supplied executables directory?'
8337 vendorbinexp="$ansexp"
8340 : Change installation prefix, if necessary.
8341 if $test X"$prefix" != X"$installprefix"; then
8342 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8344 installvendorbin="$vendorbinexp"
8347 : see if qgcvt exists
8353 if $test X"$d_longdbl" = X"$define"; then
8355 echo "Checking how to print long doubles..." >&4
8357 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8358 $cat >try.c <<'EOCP'
8359 #include <sys/types.h>
8363 printf("%.3f\n", d);
8367 if eval $compile; then
8371 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8372 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8373 echo "We will use %f."
8379 if $test X"$sPRIfldbl" = X; then
8380 $cat >try.c <<'EOCP'
8381 #include <sys/types.h>
8384 long double d = 123.456;
8385 printf("%.3Lf\n", d);
8389 if eval $compile; then
8393 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8394 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8395 echo "We will use %Lf."
8401 if $test X"$sPRIfldbl" = X; then
8402 $cat >try.c <<'EOCP'
8403 #include <sys/types.h>
8406 long double d = 123.456;
8407 printf("%.3llf\n", d);
8411 if eval $compile; then
8415 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8416 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8417 echo "We will use %llf."
8423 if $test X"$sPRIfldbl" = X; then
8424 $cat >try.c <<'EOCP'
8425 #include <sys/types.h>
8428 long double d = 123.456;
8429 printf("%.3lf\n", d);
8433 if eval $compile; then
8437 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8438 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8439 echo "We will use %lf."
8445 if $test X"$sPRIfldbl" = X; then
8446 echo "Cannot figure out how to print long doubles." >&4
8448 sSCNfldbl=$sPRIfldbl # expect consistency
8455 case "$sPRIfldbl" in
8456 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8457 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8458 d_SCNfldbl="$undef";
8460 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8461 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8462 d_SCNfldbl="$define";
8466 : Check how to convert floats to strings.
8468 echo "Checking for an efficient way to convert floats to strings."
8470 case "$uselongdouble" in
8471 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8473 case "$d_longdbl" in
8474 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8476 case "$d_PRIgldbl" in
8477 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8481 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8482 char *myname = "gconvert";
8485 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8486 char *myname = "gcvt";
8489 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8490 char *myname = "qgcvt";
8491 #define DOUBLETYPE long double
8494 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8495 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8497 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8499 char *myname = "sprintf";
8503 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8504 #define DOUBLETYPE long double
8506 #define DOUBLETYPE double
8512 #define I_STDLIB $i_stdlib
8518 checkit(expect, got)
8522 if (strcmp(expect, got)) {
8523 printf("%s oddity: Expected %s, got %s\n",
8524 myname, expect, got);
8534 /* This must be 1st test on (which?) platform */
8535 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8536 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8537 checkit("0.1", buf);
8539 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8542 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8543 checkit("1.1", buf);
8545 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8546 checkit("1.01", buf);
8548 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8549 checkit("1.001", buf);
8551 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8552 checkit("1.0001", buf);
8554 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8555 checkit("1.00001", buf);
8557 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8558 checkit("1.000001", buf);
8560 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8563 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8566 /* Some Linux gcvt's give 1.e+5 here. */
8567 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8568 checkit("100000", buf);
8570 /* Some Linux gcvt's give -1.e+5 here. */
8571 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8572 checkit("-100000", buf);
8574 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8575 checkit("123.456", buf);
8577 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8578 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8579 if (strlen(buf) > 5)
8580 checkit("1e+030", buf); /* for Microsoft */
8582 checkit("1e+30", buf);
8587 case "$d_Gconvert" in
8588 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8589 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8590 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8591 *) xxx_list='gconvert gcvt sprintf' ;;
8594 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8595 "$define$define$define")
8596 # for long doubles prefer first qgcvt, then sprintf
8597 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8598 xxx_list="sprintf $xxx_list"
8600 "$define") xxx_list="qgcvt $xxx_list" ;;
8605 for xxx_convert in $xxx_list; do
8606 echo "Trying $xxx_convert..."
8608 set try -DTRY_$xxx_convert
8609 if eval $compile; then
8610 echo "$xxx_convert() found." >&4
8612 echo "I'll use $xxx_convert to convert floats into a string." >&4
8615 echo "...But $xxx_convert didn't work as I expected."
8618 echo "$xxx_convert NOT found." >&4
8622 case "$xxx_convert" in
8623 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8624 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8625 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8626 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8627 "$define$define$define")
8628 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8629 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8634 : see if _fwalk exists
8638 : Initialize h_fcntl
8641 : Initialize h_sysfile
8644 : access call always available on UNIX
8648 : locate the flags for 'access()'
8652 $cat >access.c <<'EOCP'
8653 #include <sys/types.h>
8658 #include <sys/file.h>
8667 : check sys/file.h first, no particular reason here
8668 if $test `./findhdr sys/file.h` && \
8669 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8671 echo "<sys/file.h> defines the *_OK access constants." >&4
8672 elif $test `./findhdr fcntl.h` && \
8673 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8675 echo "<fcntl.h> defines the *_OK access constants." >&4
8676 elif $test `./findhdr unistd.h` && \
8677 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8678 echo "<unistd.h> defines the *_OK access constants." >&4
8680 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8686 : see if accessx exists
8687 set accessx d_accessx
8690 : see if alarm exists
8694 : see if atolf exists
8698 : see if atoll exists
8702 : Look for GNU-cc style attribute checking
8704 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8705 $cat >attrib.c <<'EOCP'
8707 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8709 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8710 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8711 echo "Your C compiler doesn't fully support __attribute__."
8714 echo "Your C compiler supports __attribute__."
8718 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8725 : see if bcmp exists
8729 : see if bcopy exists
8733 : see if this is a unistd.h system
8734 set unistd.h i_unistd
8737 : see if getpgrp exists
8738 set getpgrp d_getpgrp
8741 case "$d_getpgrp" in
8744 echo "Checking to see which flavor of getpgrp is in use..."
8747 #include <sys/types.h>
8749 # include <unistd.h>
8753 if (getuid() == 0) {
8754 printf("(I see you are running Configure as super-user...)\n");
8758 if (getpgrp(1) == 0)
8767 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8768 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8770 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8771 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8774 echo "I can't seem to compile and run the test program."
8776 xxx="a USG one, i.e. you use getpgrp()."
8778 # SVR4 systems can appear rather BSD-ish.
8781 xxx="a BSD one, i.e. you use getpgrp(pid)."
8785 xxx="probably a USG one, i.e. you use getpgrp()."
8790 echo "Assuming your getpgrp is $xxx" >&4
8799 : see if setpgrp exists
8800 set setpgrp d_setpgrp
8803 case "$d_setpgrp" in
8806 echo "Checking to see which flavor of setpgrp is in use..."
8809 #include <sys/types.h>
8811 # include <unistd.h>
8815 if (getuid() == 0) {
8816 printf("(I see you are running Configure as super-user...)\n");
8820 if (-1 == setpgrp(1, 1))
8823 if (setpgrp() != -1)
8829 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8830 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8832 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8833 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8836 echo "(I can't seem to compile and run the test program.)"
8838 xxx="a USG one, i.e. you use setpgrp()."
8840 # SVR4 systems can appear rather BSD-ish.
8843 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8847 xxx="probably a USG one, i.e. you use setpgrp()."
8852 echo "Assuming your setpgrp is $xxx" >&4
8860 : see if bzero exists
8864 : see if signal is declared as pointer to function returning int or void
8866 xxx=`./findhdr signal.h`
8867 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8868 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8869 echo "You have int (*signal())() instead of void." >&4
8871 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8872 echo "You have void (*signal())()." >&4
8874 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8875 echo "You have int (*signal())() instead of void." >&4
8877 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8878 echo "You have void (*signal())()." >&4
8881 case "$d_voidsig" in
8883 echo "I can't determine whether signal handler returns void or int..." >&4
8885 rp="What type does your signal handler return?"
8892 echo "As you already told me, signal handler returns void." >&4
8895 *) echo "As you already told me, signal handler returns int." >&4
8902 case "$d_voidsig" in
8903 "$define") signal_t="void";;
8908 : check for ability to cast large floats to 32-bit ints.
8910 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8911 if $test "$intsize" -ge 4; then
8918 #include <sys/types.h>
8920 $signal_t blech(s) int s; { exit(3); }
8927 signal(SIGFPE, blech);
8929 /* Don't let compiler optimize the test away. Store the number
8930 in a writable string for gcc to pass to sscanf under HP/UX.
8932 sprintf(str, "2147483647");
8933 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8937 /* x86 processors will probably give 0x8000 0000, which is a
8938 sign change. We don't want that. We want to mimic SPARC
8939 behavior here, which is to preserve the sign and give
8942 if (i32 != ($xxx) f)
8948 if eval $compile_ok; then
8952 echo "(I can't seem to compile the test program--assuming it can't)"
8960 echo "Nope, it can't."
8967 : check for ability to cast negative floats to unsigned
8969 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8972 #include <sys/types.h>
8974 $signal_t blech(s) int s; { exit(7); }
8975 $signal_t blech_in_list(s) int s; { exit(4); }
8976 unsigned long dummy_long(p) unsigned long p; { return p; }
8977 unsigned int dummy_int(p) unsigned int p; { return p; }
8978 unsigned short dummy_short(p) unsigned short p; { return p; }
8982 unsigned long along;
8984 unsigned short ashort;
8988 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8989 a direct f = -123. assignment. gcc-2.8.0 reportedly
8990 optimized the whole file away
8992 /* Store the number in a writable string for gcc to pass to
8995 sprintf(str, "-123");
8996 sscanf(str, "%lf", &f); /* f = -123.; */
8998 signal(SIGFPE, blech);
8999 along = (unsigned long)f;
9000 aint = (unsigned int)f;
9001 ashort = (unsigned short)f;
9002 if (along != (unsigned long)-123)
9004 if (aint != (unsigned int)-123)
9006 if (ashort != (unsigned short)-123)
9008 sprintf(str, "1073741824.");
9009 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9012 along = (unsigned long)f;
9013 if (along != 0x80000000)
9017 along = (unsigned long)f;
9018 if (along != 0x7fffffff)
9022 along = (unsigned long)f;
9023 if (along != 0x80000001)
9027 signal(SIGFPE, blech_in_list);
9028 sprintf(str, "123.");
9029 sscanf(str, "%lf", &f); /* f = 123.; */
9030 along = dummy_long((unsigned long)f);
9031 aint = dummy_int((unsigned int)f);
9032 ashort = dummy_short((unsigned short)f);
9033 if (along != (unsigned long)123)
9035 if (aint != (unsigned int)123)
9037 if (ashort != (unsigned short)123)
9044 if eval $compile_ok; then
9048 echo "(I can't seem to compile the test program--assuming it can't)"
9051 case "$castflags" in
9056 echo "Nope, it can't."
9063 : see if vprintf exists
9065 if set vprintf val -f d_vprintf; eval $csym; $val; then
9066 echo 'vprintf() found.' >&4
9069 #include <varargs.h>
9071 int main() { xxx("foo"); }
9080 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9084 if eval $compile && $run ./try; then
9085 echo "Your vsprintf() returns (int)." >&4
9088 echo "Your vsprintf() returns (char*)." >&4
9092 echo 'vprintf() NOT found.' >&4
9103 : see if chown exists
9107 : see if chroot exists
9111 : see if chsize exists
9115 hasstruct='varname=$1; struct=$2; shift; shift;
9116 while $test $# -ge 2; do
9118 $define) echo "#include <$2>";;
9122 echo "int main () { struct $struct foo; }" >> try.c;
9124 if eval $compile; then
9133 : see if sys/types.h has to be included
9134 set sys/types.h i_systypes
9137 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9138 while $test $# -ge 2; do
9140 $define) echo "#include <$2>";;
9144 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9146 if eval $compile; then
9157 : see whether socket exists
9159 $echo $n "Hmm... $c" >&4
9160 if set socket val -f d_socket; eval $csym; $val; then
9161 echo "Looks like you have Berkeley networking support." >&4
9163 if set setsockopt val -f; eval $csym; $val; then
9166 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9170 if $contains socklib libc.list >/dev/null 2>&1; then
9171 echo "Looks like you have Berkeley networking support." >&4
9173 : we will have to assume that it supports the 4.2 BSD interface
9176 echo "You don't have Berkeley networking in libc$_a..." >&4
9177 if test "X$d_socket" = "X$define"; then
9178 echo "...but you seem to believe that you have sockets." >&4
9180 for net in net socket
9182 if test -f /usr/lib/lib$net$_a; then
9183 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9184 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9185 if $contains socket libc.list >/dev/null 2>&1; then
9190 echo "...but the Wollongong group seems to have hacked it in." >&4
9191 sockethdr="-I/usr/netinclude"
9194 echo "Found Berkeley sockets interface in lib$net." >& 4
9195 if $contains setsockopt libc.list >/dev/null 2>&1; then
9198 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9205 if test "X$d_socket" != "X$define"; then
9206 echo "or anywhere else I see." >&4
9214 : see if socketpair exists
9215 set socketpair d_sockpair
9220 echo "Checking the availability of certain socket constants..." >& 4
9221 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9222 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9224 #include <sys/types.h>
9225 #include <sys/socket.h>
9231 set try; if eval $compile; then
9234 set d_${enum}; eval $setvar
9238 : see if this is a sys/uio.h system
9239 set sys/uio.h i_sysuio
9244 echo "Checking to see if your system supports struct cmsghdr..." >&4
9245 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9247 case "$d_cmsghdr_s" in
9248 "$define") echo "Yes, it does." ;;
9249 *) echo "No, it doesn't." ;;
9253 : check for const keyword
9255 echo 'Checking to see if your C compiler knows about "const"...' >&4
9256 $cat >const.c <<'EOCP'
9257 typedef struct spug { int drokk; } spug;
9264 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9266 echo "Yup, it does."
9269 echo "Nope, it doesn't."
9274 : see if crypt exists
9276 if set crypt val -f d_crypt; eval $csym; $val; then
9277 echo 'crypt() found.' >&4
9281 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9282 if $test -z "$cryptlib"; then
9283 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9287 if $test -z "$cryptlib"; then
9288 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9292 if $test -z "$cryptlib"; then
9293 cryptlib=`./loc libcrypt$_a "" $libpth`
9297 if $test -z "$cryptlib"; then
9298 echo 'crypt() NOT found.' >&4
9307 : get csh whereabouts
9309 'csh') val="$undef" ;;
9314 : Respect a hint or command line value for full_csh.
9316 '') full_csh=$csh ;;
9319 : see if cuserid exists
9320 set cuserid d_cuserid
9323 : see if this is a limits.h system
9324 set limits.h i_limits
9327 : see if this is a float.h system
9331 : See if number of significant digits in a double precision number is known
9333 $cat >dbl_dig.c <<EOM
9343 printf("Contains DBL_DIG");
9346 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9347 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9348 echo "DBL_DIG found." >&4
9351 echo "DBL_DIG NOT found." >&4
9358 hasproto='varname=$1; func=$2; shift; shift;
9359 while $test $# -ge 2; do
9361 $define) echo "#include <$2>";;
9365 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9366 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9367 echo "$func() prototype found.";
9370 echo "$func() prototype NOT found.";
9375 $rm -f try.c tryout.c'
9377 : see if dbm.h is available
9378 : see if dbmclose exists
9379 set dbmclose d_dbmclose
9382 case "$d_dbmclose" in
9392 *) set rpcsvc/dbm.h i_rpcsvcdbm
9397 *) echo "We won't be including <dbm.h>"
9407 : see if prototype for dbminit is available
9409 set d_dbminitproto dbminit $i_dbm dbm.h
9412 : see if difftime exists
9413 set difftime d_difftime
9416 : see if this is a dirent system
9418 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9420 echo "<dirent.h> found." >&4
9423 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9424 echo "<sys/dir.h> found." >&4
9427 xinc=`./findhdr sys/ndir.h`
9429 echo "<dirent.h> NOT found." >&4
9434 : Look for type of directory structure.
9436 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9438 case "$direntrytype" in
9441 $define) guess1='struct dirent' ;;
9442 *) guess1='struct direct' ;;
9445 *) guess1="$direntrytype"
9450 'struct dirent') guess2='struct direct' ;;
9451 *) guess2='struct dirent' ;;
9454 if $contains "$guess1" try.c >/dev/null 2>&1; then
9455 direntrytype="$guess1"
9456 echo "Your directory entries are $direntrytype." >&4
9457 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9458 direntrytype="$guess2"
9459 echo "Your directory entries seem to be $direntrytype." >&4
9461 echo "I don't recognize your system's directory entries." >&4
9462 rp="What type is used for directory entries on this system?"
9470 : see if the directory entry stores field length
9472 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9473 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9474 echo "Good, your directory entry keeps length information in d_namlen." >&4
9477 echo "Your directory entry does not know about the d_namlen field." >&4
9484 : see if dlerror exists
9487 set dlerror d_dlerror
9491 : see if dlfcn is available
9499 On a few systems, the dynamically loaded modules that perl generates and uses
9500 will need a different extension than shared libs. The default will probably
9508 rp='What is the extension of dynamically loaded modules'
9517 : Check if dlsym need a leading underscore
9523 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9524 $cat >dyna.c <<'EOM'
9533 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
9535 #include <sys/types.h>
9549 int mode = RTLD_LAZY ;
9551 handle = dlopen("./dyna.$dlext", mode) ;
9552 if (handle == NULL) {
9557 symbol = dlsym(handle, "fred") ;
9558 if (symbol == NULL) {
9559 /* try putting a leading underscore */
9560 symbol = dlsym(handle, "_fred") ;
9561 if (symbol == NULL) {
9574 : Call the object file tmp-dyna.o in case dlext=o.
9575 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9576 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
9577 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
9578 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9581 1) echo "Test program failed using dlopen." >&4
9582 echo "Perhaps you should not use dynamic loading." >&4;;
9583 2) echo "Test program failed using dlsym." >&4
9584 echo "Perhaps you should not use dynamic loading." >&4;;
9585 3) echo "dlsym needs a leading underscore" >&4
9587 4) echo "dlsym doesn't need a leading underscore." >&4;;
9590 echo "I can't compile and run the test program." >&4
9591 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9596 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9601 : see if prototype for drand48 is available
9603 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9606 : see if dup2 exists
9610 : see if eaccess exists
9611 set eaccess d_eaccess
9614 : see if endgrent exists
9615 set endgrent d_endgrent
9618 : see if endhostent exists
9619 set endhostent d_endhent
9622 : see if endnetent exists
9623 set endnetent d_endnent
9626 : see if endprotoent exists
9627 set endprotoent d_endpent
9630 : see if endpwent exists
9631 set endpwent d_endpwent
9634 : see if endservent exists
9635 set endservent d_endsent
9638 : Locate the flags for 'open()'
9640 $cat >try.c <<'EOCP'
9641 #include <sys/types.h>
9646 #include <sys/file.h>
9657 : check sys/file.h first to get FREAD on Sun
9658 if $test `./findhdr sys/file.h` && \
9659 set try -DI_SYS_FILE && eval $compile; then
9661 echo "<sys/file.h> defines the O_* constants..." >&4
9663 echo "and you have the 3 argument form of open()." >&4
9666 echo "but not the 3 argument form of open(). Oh, well." >&4
9669 elif $test `./findhdr fcntl.h` && \
9670 set try -DI_FCNTL && eval $compile; then
9672 echo "<fcntl.h> defines the O_* constants..." >&4
9674 echo "and you have the 3 argument form of open()." >&4
9677 echo "but not the 3 argument form of open(). Oh, well." >&4
9682 echo "I can't find the O_* constant definitions! You got problems." >&4
9688 : see which of string.h or strings.h is needed
9690 strings=`./findhdr string.h`
9691 if $test "$strings" && $test -r "$strings"; then
9692 echo "Using <string.h> instead of <strings.h>." >&4
9696 strings=`./findhdr strings.h`
9697 if $test "$strings" && $test -r "$strings"; then
9698 echo "Using <strings.h> instead of <string.h>." >&4
9700 echo "No string header found -- You'll surely have problems." >&4
9706 "$undef") strings=`./findhdr strings.h`;;
9707 *) strings=`./findhdr string.h`;;
9710 : check for non-blocking I/O stuff
9711 case "$h_sysfile" in
9712 true) echo "#include <sys/file.h>" > head.c;;
9715 true) echo "#include <fcntl.h>" > head.c;;
9716 *) echo "#include <sys/fcntl.h>" > head.c;;
9721 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9722 case "$o_nonblock" in
9725 $cat >>try.c <<'EOCP'
9730 printf("O_NONBLOCK\n");
9734 printf("O_NDELAY\n");
9738 printf("FNDELAY\n");
9745 if eval $compile_ok; then
9746 o_nonblock=`$run ./try`
9747 case "$o_nonblock" in
9748 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9749 *) echo "Seems like we can use $o_nonblock.";;
9752 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9755 *) echo "Using $hint value $o_nonblock.";;
9757 $rm -f try try.* .out core
9760 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9766 #include <sys/types.h>
9770 #define MY_O_NONBLOCK $o_nonblock
9771 #ifndef errno /* XXX need better Configure test */
9782 #include <strings.h>
9784 $signal_t blech(x) int x; { exit(3); }
9786 $cat >> try.c <<'EOCP'
9794 pipe(pd); /* Down: child -> parent */
9795 pipe(pu); /* Up: parent -> child */
9798 close(pd[1]); /* Parent reads from pd[0] */
9799 close(pu[0]); /* Parent writes (blocking) to pu[1] */
9801 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9806 signal(SIGALRM, blech);
9808 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9810 sprintf(string, "%d\n", ret);
9811 write(2, string, strlen(string));
9814 if (errno == EAGAIN) {
9820 if (errno == EWOULDBLOCK)
9821 printf("EWOULDBLOCK\n");
9824 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9825 sleep(2); /* Give it time to close our pipe */
9827 ret = read(pd[0], buf, 1); /* Should read EOF */
9829 sprintf(string, "%d\n", ret);
9830 write(3, string, strlen(string));
9834 close(pd[0]); /* We write to pd[1] */
9835 close(pu[1]); /* We read from pu[0] */
9836 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9837 close(pd[1]); /* Pipe pd is now fully closed! */
9838 exit(0); /* Bye bye, thank you for playing! */
9842 if eval $compile_ok; then
9843 echo "$startsh" >mtry
9844 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9846 ./mtry >/dev/null 2>&1
9848 0) eagain=`$cat try.out`;;
9849 1) echo "Could not perform non-blocking setting!";;
9850 2) echo "I did a successful read() for something that was not there!";;
9851 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9852 4) echo "Could not find F_SETFL!";;
9853 *) echo "Something terribly wrong happened during testing.";;
9855 rd_nodata=`$cat try.ret`
9856 echo "A read() system call with no data present returns $rd_nodata."
9857 case "$rd_nodata" in
9860 echo "(That's peculiar, fixing that to be -1.)"
9866 echo "Forcing errno EAGAIN on read() with no data available."
9870 echo "Your read() sets errno to $eagain when no data is available."
9873 status=`$cat try.err`
9875 0) echo "And it correctly returns 0 to signal EOF.";;
9876 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9877 *) echo "However, your read() returns '$status' on EOF??";;
9880 if test "$status" = "$rd_nodata"; then
9881 echo "WARNING: you can't distinguish between EOF and no data!"
9885 echo "I can't compile the test program--assuming errno EAGAIN will do."
9892 echo "Using $hint value $eagain."
9893 echo "Your read() returns $rd_nodata when no data is present."
9894 case "$d_eofnblk" in
9895 "$define") echo "And you can see EOF because read() returns 0.";;
9896 "$undef") echo "But you can't see EOF status from read() returned value.";;
9898 echo "(Assuming you can't see EOF status from read anyway.)"
9904 $rm -f try try.* .out core head.c mtry
9906 : see if fchdir exists
9910 : see if fchmod exists
9914 : see if fchown exists
9918 : see if this is an fcntl system
9923 : See if fcntl-based locking works.
9929 $signal_t blech(x) int x; { exit(3); }
9931 #if defined(F_SETLK) && defined(F_SETLKW)
9934 fd = open("try.c", O_RDONLY);
9935 flock.l_type = F_RDLCK;
9936 flock.l_whence = SEEK_SET;
9937 flock.l_start = flock.l_len = 0;
9938 signal(SIGALRM, blech);
9940 retval = fcntl(fd, F_SETLK, &flock);
9942 (retval < 0 ? exit(2) : exit(0));
9948 echo "Checking if fcntl-based file locking works... "
9952 if eval $compile_ok; then
9954 echo "Yes, it seems to work."
9957 echo "Nope, it didn't work."
9962 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9963 *** This is (almost) impossible.
9964 *** If your NFS lock daemons are not feeling well, something like
9965 *** this may happen, please investigate. Cannot continue, aborting.
9973 echo "I'm unable to compile the test program, so I'll assume not."
9978 echo "Nope, since you don't even have fcntl()."
9981 set d_fcntl_can_lock
9986 : see if sys/select.h has to be included
9987 set sys/select.h i_sysselct
9990 : see if we should include time.h, sys/time.h, or both
9992 if test "X$timeincl" = X; then
9993 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9994 $echo $n "I'm now running the test program...$c"
9995 $cat >try.c <<'EOCP'
9996 #include <sys/types.h>
10001 #ifdef SYSTIMEKERNEL
10004 #include <sys/time.h>
10007 #include <sys/select.h>
10013 struct timeval bar;
10016 struct timezone tzp;
10018 if (foo.tm_sec == foo.tm_sec)
10021 if (bar.tv_sec == bar.tv_sec)
10028 for s_timezone in '-DS_TIMEZONE' ''; do
10030 for s_timeval in '-DS_TIMEVAL' ''; do
10031 for i_systimek in '' '-DSYSTIMEKERNEL'; do
10032 for i_time in '' '-DI_TIME'; do
10033 for i_systime in '-DI_SYSTIME' ''; do
10036 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10037 if eval $compile; then
10038 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10042 $echo $n "Succeeded with $flags$c"
10054 *SYSTIMEKERNEL*) i_systimek="$define"
10055 timeincl=`./findhdr sys/time.h`
10056 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10057 *) i_systimek="$undef";;
10060 *I_TIME*) i_time="$define"
10061 timeincl=`./findhdr time.h`" $timeincl"
10062 echo "We'll include <time.h>." >&4;;
10063 *) i_time="$undef";;
10066 *I_SYSTIME*) i_systime="$define"
10067 timeincl=`./findhdr sys/time.h`" $timeincl"
10068 echo "We'll include <sys/time.h>." >&4;;
10069 *) i_systime="$undef";;
10074 : check for fd_set items
10077 Checking to see how well your C compiler handles fd_set and friends ...
10080 #$i_systime I_SYS_TIME
10081 #$i_sysselct I_SYS_SELECT
10082 #$d_socket HAS_SOCKET
10083 #include <sys/types.h>
10085 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10088 #include <sys/time.h>
10090 #ifdef I_SYS_SELECT
10091 #include <sys/select.h>
10100 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10108 if eval $compile; then
10109 d_fds_bits="$define"
10111 echo "Well, your system knows about the normal fd_set typedef..." >&4
10112 if $run ./try; then
10113 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10114 d_fd_macros="$define"
10117 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10119 d_fd_macros="$undef"
10123 Hmm, your compiler has some difficulty with fd_set. Checking further...
10126 if eval $compile; then
10127 d_fds_bits="$undef"
10129 echo "Well, your system has some sort of fd_set available..." >&4
10130 if $run ./try; then
10131 echo "and you have the normal fd_set macros." >&4
10132 d_fd_macros="$define"
10135 but not the normal fd_set macros! Gross! More work for me...
10137 d_fd_macros="$undef"
10140 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10142 d_fds_bits="$undef"
10143 d_fd_macros="$undef"
10148 : see if fgetpos exists
10149 set fgetpos d_fgetpos
10152 : see if flock exists
10156 : see if this is a sys/file.h system
10161 : do we need to include sys/file.h ?
10165 if $h_sysfile; then
10167 echo "We'll be including <sys/file.h>." >&4
10170 echo "We won't be including <sys/file.h>." >&4
10180 : see if prototype for flock is available
10182 set d_flockproto flock $i_sysfile sys/file.h
10185 : see if fork exists
10189 : see if pathconf exists
10190 set pathconf d_pathconf
10193 : see if fpathconf exists
10194 set fpathconf d_fpathconf
10198 : check for fpos64_t
10200 echo "Checking to see if you have fpos64_t..." >&4
10203 int main() { fpos64_t x = 7; }
10206 if eval $compile; then
10208 echo "You have fpos64_t."
10211 echo "You do not have fpos64_t."
10212 case "$fpossize" in
10213 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10220 : see if frexpl exists
10221 set frexpl d_frexpl
10224 : see if this is a sys/param system
10225 set sys/param.h i_sysparam
10228 : see if this is a sys/mount.h system
10229 set sys/mount.h i_sysmount
10234 echo "Checking to see if your system supports struct fs_data..." >&4
10235 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10237 case "$d_fs_data_s" in
10238 "$define") echo "Yes, it does." ;;
10239 *) echo "No, it doesn't." ;;
10242 : see if fseeko exists
10243 set fseeko d_fseeko
10245 case "$longsize" in
10246 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10249 : see if fsetpos exists
10250 set fsetpos d_fsetpos
10254 : see if fstatfs exists
10255 set fstatfs d_fstatfs
10259 : see if statvfs exists
10260 set statvfs d_statvfs
10263 : see if fstatvfs exists
10264 set fstatvfs d_fstatvfs
10268 : see if fsync exists
10272 : see if ftello exists
10273 set ftello d_ftello
10275 case "$longsize" in
10276 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10279 : see if getcwd exists
10280 set getcwd d_getcwd
10283 : see if getespwnam exists
10284 set getespwnam d_getespwnam
10288 : see if getfsstat exists
10289 set getfsstat d_getfsstat
10292 : see if getgrent exists
10293 set getgrent d_getgrent
10296 : see if gethostbyaddr exists
10297 set gethostbyaddr d_gethbyaddr
10300 : see if gethostbyname exists
10301 set gethostbyname d_gethbyname
10304 : see if gethostent exists
10305 set gethostent d_gethent
10308 : see how we will look up host name
10311 if set gethostname val -f d_gethname; eval $csym; $val; then
10312 echo 'gethostname() found.' >&4
10313 d_gethname="$define"
10316 if set uname val -f d_uname; eval $csym; $val; then
10319 uname() was found, but you're running xenix, and older versions of xenix
10320 have a broken uname(). If you don't really know whether your xenix is old
10321 enough to have a broken system call, use the default answer.
10326 "$define") dflt=n;;
10328 rp='Is your uname() broken?'
10331 n*) d_uname="$define"; call=uname;;
10334 echo 'uname() found.' >&4
10341 case "$d_gethname" in
10342 '') d_gethname="$undef";;
10345 '') d_uname="$undef";;
10347 case "$d_uname$d_gethname" in
10352 Every now and then someone has a $call() that lies about the hostname
10353 but can't be fixed for political or economic reasons. If you wish, I can
10354 pretend $call() isn't there and maybe compute hostname at run-time
10355 thanks to the '$phostname' command.
10358 rp="Shall I ignore $call() from now on?"
10361 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10364 case "$phostname" in
10365 '') aphostname='';;
10366 *) case "$aphostname" in
10368 *) set X $phostname
10372 file=`./loc $file $file $pth`
10373 aphostname=`echo $file $*`
10378 case "$d_uname$d_gethname" in
10381 case "$phostname" in
10383 echo "There will be no way for $package to get your hostname." >&4;;
10385 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10389 case "$d_phostname" in
10390 '') d_phostname="$undef";;
10393 : see if this is a netdb.h system
10394 set netdb.h i_netdb
10397 : see if prototypes for various gethostxxx netdb.h functions are available
10399 set d_gethostprotos gethostent $i_netdb netdb.h
10402 : see if getitimer exists
10403 set getitimer d_getitimer
10406 : see if getlogin exists
10407 set getlogin d_getlogin
10410 : see if getmnt exists
10411 set getmnt d_getmnt
10414 : see if getmntent exists
10415 set getmntent d_getmntent
10418 : see if getnetbyaddr exists
10419 set getnetbyaddr d_getnbyaddr
10422 : see if getnetbyname exists
10423 set getnetbyname d_getnbyname
10426 : see if getnetent exists
10427 set getnetent d_getnent
10430 : see if prototypes for various getnetxxx netdb.h functions are available
10432 set d_getnetprotos getnetent $i_netdb netdb.h
10435 : see if getpagesize exists
10436 set getpagesize d_getpagsz
10440 : see if getprotobyname exists
10441 set getprotobyname d_getpbyname
10444 : see if getprotobynumber exists
10445 set getprotobynumber d_getpbynumber
10448 : see if getprotoent exists
10449 set getprotoent d_getpent
10452 : see if getpgid exists
10453 set getpgid d_getpgid
10456 : see if getpgrp2 exists
10457 set getpgrp2 d_getpgrp2
10460 : see if getppid exists
10461 set getppid d_getppid
10464 : see if getpriority exists
10465 set getpriority d_getprior
10468 : see if prototypes for various getprotoxxx netdb.h functions are available
10470 set d_getprotoprotos getprotoent $i_netdb netdb.h
10473 : see if getprpwnam exists
10474 set getprpwnam d_getprpwnam
10477 : see if getpwent exists
10478 set getpwent d_getpwent
10482 : see if getservbyname exists
10483 set getservbyname d_getsbyname
10486 : see if getservbyport exists
10487 set getservbyport d_getsbyport
10490 : see if getservent exists
10491 set getservent d_getsent
10494 : see if prototypes for various getservxxx netdb.h functions are available
10496 set d_getservprotos getservent $i_netdb netdb.h
10499 : see if getspnam exists
10500 set getspnam d_getspnam
10503 : see if gettimeofday or ftime exists
10504 set gettimeofday d_gettimeod
10506 case "$d_gettimeod" in
10512 val="$undef"; set d_ftime; eval $setvar
10515 case "$d_gettimeod$d_ftime" in
10518 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10522 : see if this is an grp system
10528 xxx=`./findhdr grp.h`
10529 $cppstdin $cppflags $cppminus < $xxx >$$.h
10531 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10543 set d_grpasswd; eval $setvar
10547 : see if hasmntopt exists
10548 set hasmntopt d_hasmntopt
10551 : see if this is a netinet/in.h or sys/in.h system
10552 set netinet/in.h i_niin sys/in.h i_sysin
10555 : see if arpa/inet.h has to be included
10556 set arpa/inet.h i_arpainet
10559 : see if htonl --and friends-- exists
10564 : Maybe they are macros.
10567 $cat >htonl.c <<EOM
10569 #include <sys/types.h>
10570 #$i_niin I_NETINET_IN
10572 #$i_arpainet I_ARPA_INET
10573 #ifdef I_NETINET_IN
10574 #include <netinet/in.h>
10577 #include <sys/in.h>
10580 #include <arpa/inet.h>
10583 printf("Defined as a macro.");
10586 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10587 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10589 echo "But it seems to be defined as a macro." >&4
10597 : see if iconv exists
10603 if set index val -f; eval $csym; $val; then
10604 if set strchr val -f d_strchr; eval $csym; $val; then
10605 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10608 echo "strchr() found." >&4
10612 echo "index() found." >&4
10617 echo "index() found." >&4
10620 if set strchr val -f d_strchr; eval $csym; $val; then
10623 echo "strchr() found." >&4
10625 echo "No index() or strchr() found!" >&4
10630 set d_strchr; eval $setvar
10632 set d_index; eval $setvar
10634 : check whether inet_aton exists
10635 set inet_aton d_inetaton
10640 $cat >isascii.c <<'EOCP'
10652 if eval $compile; then
10653 echo "isascii() found." >&4
10656 echo "isascii() NOT found." >&4
10663 : see if isnan exists
10667 : see if isnanl exists
10668 set isnanl d_isnanl
10671 : see if killpg exists
10672 set killpg d_killpg
10675 : see if lchown exists
10677 $cat > try.c <<'EOCP'
10678 /* System header to define __stub macros and hopefully few prototypes,
10679 which can conflict with char lchown(); below. */
10680 #include <assert.h>
10681 /* Override any gcc2 internal prototype to avoid an error. */
10682 /* We use char because int might match the return type of a gcc2
10683 builtin and then its argument prototype would still apply. */
10686 /* The GNU C library defines this for functions which it implements
10687 to always fail with ENOSYS. Some functions are actually named
10688 something starting with __ and the normal name is an alias. */
10689 #if defined (__stub_lchown) || defined (__stub___lchown)
10697 if eval $compile; then
10698 $echo "lchown() found." >&4
10701 $echo "lchown() NOT found." >&4
10707 : See if number of significant digits in a double precision number is known
10709 $cat >ldbl_dig.c <<EOM
10710 #$i_limits I_LIMITS
10713 #include <limits.h>
10719 printf("Contains LDBL_DIG");
10722 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10723 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10724 echo "LDBL_DIG found." >&4
10727 echo "LDBL_DIG NOT found." >&4
10734 : see if link exists
10738 : see if localeconv exists
10739 set localeconv d_locconv
10742 : see if lockf exists
10746 : see if prototype for lseek is available
10748 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10751 : see if lstat exists
10755 : see if madvise exists
10756 set madvise d_madvise
10759 : see if mblen exists
10763 : see if mbstowcs exists
10764 set mbstowcs d_mbstowcs
10767 : see if mbtowc exists
10768 set mbtowc d_mbtowc
10771 : see if memchr exists
10772 set memchr d_memchr
10775 : see if memcmp exists
10776 set memcmp d_memcmp
10779 : see if memcpy exists
10780 set memcpy d_memcpy
10783 : see if memmove exists
10784 set memmove d_memmove
10787 : see if memset exists
10788 set memset d_memset
10791 : see if mkdir exists
10795 : see if mkdtemp exists
10796 set mkdtemp d_mkdtemp
10799 : see if mkfifo exists
10800 set mkfifo d_mkfifo
10803 : see if mkstemp exists
10804 set mkstemp d_mkstemp
10807 : see if mkstemps exists
10808 set mkstemps d_mkstemps
10811 : see if mktime exists
10812 set mktime d_mktime
10815 : see if this is a sys/mman.h system
10816 set sys/mman.h i_sysmman
10819 : see if mmap exists
10822 : see what shmat returns
10823 : default to something harmless
10825 case "$i_sysmman$d_mmap" in
10827 $cat >mmap.c <<'END'
10828 #include <sys/mman.h>
10831 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10836 echo "and it returns ($mmaptype)." >&4
10842 : see if modfl exists
10846 d_modfl_pow32_bug="$undef"
10848 case "$d_longdbl$d_modfl" in
10851 Checking to see whether your modfl() is okay for large values...
10857 long double nv = 4294967303.15;
10863 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10867 case "$osname:$gccversion" in
10868 aix:) saveccflags="$ccflags"
10869 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10872 if eval $compile; then
10875 *" 4294967303.150000 1.150000 4294967302.000000")
10876 echo >&4 "Your modfl() is broken for large values."
10877 d_modfl_pow32_bug="$define"
10879 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10883 *" 4294967303.150000 0.150000 4294967303.000000")
10884 echo >&4 "Your modfl() seems okay for large values."
10886 *) echo >&4 "I don't understand your modfl() at all."
10890 $rm -f try.* try core core.try.*
10892 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10895 case "$osname:$gccversion" in
10896 aix:) ccflags="$saveccflags" ;; # restore
10901 : see if mprotect exists
10902 set mprotect d_mprotect
10905 : see if msgctl exists
10906 set msgctl d_msgctl
10909 : see if msgget exists
10910 set msgget d_msgget
10913 : see if msgsnd exists
10914 set msgsnd d_msgsnd
10917 : see if msgrcv exists
10918 set msgrcv d_msgrcv
10921 : see how much of the 'msg*(2)' library is present.
10924 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10925 *"$undef"*) h_msg=false;;
10929 case "`ipcs 2>&1`" in
10930 "SVID messages"*"not configured"*)
10931 echo "Your $osname does not have the msg*(2) configured." >&4
10934 set msgctl d_msgctl
10936 set msgget d_msgget
10938 set msgsnd d_msgsnd
10940 set msgrcv d_msgrcv
10946 : we could also check for sys/ipc.h ...
10947 if $h_msg && $test `./findhdr sys/msg.h`; then
10948 echo "You have the full msg*(2) library." >&4
10951 echo "You don't have the full msg*(2) library." >&4
10959 echo "Checking to see if your system supports struct msghdr..." >&4
10960 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10962 case "$d_msghdr_s" in
10963 "$define") echo "Yes, it does." ;;
10964 *) echo "No, it doesn't." ;;
10968 : see if msync exists
10972 : see if munmap exists
10973 set munmap d_munmap
10976 : see if nice exists
10980 : see if this is a langinfo.h system
10981 set langinfo.h i_langinfo
10984 : see if nl_langinfo exists
10985 set nl_langinfo d_nl_langinfo
10988 : check for length of character
10990 case "$charsize" in
10992 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10993 $cat >try.c <<'EOCP'
10997 printf("%d\n", (int)sizeof(char));
11002 if eval $compile_ok; then
11006 echo "(I can't seem to compile the test program. Guessing...)"
11013 rp="What is the size of a character (in bytes)?"
11018 : check for volatile keyword
11020 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11021 $cat >try.c <<'EOCP'
11024 typedef struct _goo_struct goo_struct;
11025 goo_struct * volatile goo = ((goo_struct *)0);
11026 struct _goo_struct {
11031 typedef unsigned short foo_t;
11032 char *volatile foo;
11034 volatile foo_t blech;
11038 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11040 echo "Yup, it does."
11043 echo "Nope, it doesn't."
11051 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11053 case "$use64bitint:$d_quad:$quadtype" in
11056 uvtype="$uquadtype"
11061 uvtype="unsigned long"
11067 case "$uselongdouble:$d_longdbl" in
11069 nvtype="long double"
11070 nvsize=$longdblsize
11077 $echo "(IV will be "$ivtype", $ivsize bytes)"
11078 $echo "(UV will be "$uvtype", $uvsize bytes)"
11079 $echo "(NV will be "$nvtype", $nvsize bytes)"
11082 #$i_inttypes I_INTTYPES
11084 #include <inttypes.h>
11089 int8_t i = INT8_MAX;
11090 uint8_t u = UINT8_MAX;
11091 printf("int8_t\n");
11094 int16_t i = INT16_MAX;
11095 uint16_t i = UINT16_MAX;
11096 printf("int16_t\n");
11099 int32_t i = INT32_MAX;
11100 uint32_t u = UINT32_MAX;
11101 printf("int32_t\n");
11107 '') case "$charsize" in
11109 u8type="unsigned char"
11118 if eval $compile; then
11119 case "`$run ./try`" in
11120 int8_t) i8type=int8_t
11130 '') if $test $charsize -ge 1; then
11132 u8type="unsigned char"
11140 '') case "$shortsize" in
11142 u16type="unsigned short"
11150 '') set try -DINT16
11151 if eval $compile; then
11152 case "`$run ./try`" in
11164 '') if $test $shortsize -ge 2; then
11166 u16type="unsigned short"
11174 '') case "$longsize" in
11176 u32type="unsigned long"
11180 *) case "$intsize" in
11182 u32type="unsigned int"
11192 '') set try -DINT32
11193 if eval $compile; then
11194 case "`$run ./try`" in
11206 '') if $test $intsize -ge 4; then
11208 u32type="unsigned int"
11216 '') case "$d_quad:$quadtype" in
11218 i64type="$quadtype"
11219 u64type="$uquadtype"
11227 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11228 : volatile so that the compiler has to store it out to memory.
11229 if test X"$d_volatile" = X"$define"; then
11234 #include <sys/types.h>
11235 #include <signal.h>
11237 $volatile int bletched = 0;
11238 $signal_t blech(s) int s; { bletched = 1; }
11243 int n = 8 * $uvsize;
11246 signal(SIGFPE, blech);
11249 for (i = 0; i < n; i++) {
11250 u = u << 1 | ($uvtype)1;
11252 if (($uvtype)d != u)
11256 d = ($nvtype)(u - 1);
11257 if (($uvtype)d != (u - 1))
11265 printf("%d\n", ((i == n) ? -n : i));
11271 d_nv_preserves_uv="$undef"
11272 if eval $compile; then
11273 d_nv_preserves_uv_bits="`$run ./try`"
11275 case "$d_nv_preserves_uv_bits" in
11277 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11278 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11279 d_nv_preserves_uv="$define"
11281 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11282 d_nv_preserves_uv="$undef" ;;
11283 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11284 d_nv_preserves_uv_bits="$undef" ;;
11290 : check for off64_t
11292 echo "Checking to see if you have off64_t..." >&4
11294 #include <sys/types.h>
11295 #include <unistd.h>
11296 int main() { off64_t x = 7; }
11299 if eval $compile; then
11301 echo "You have off64_t."
11304 echo "You do not have off64_t."
11305 case "$lseeksize" in
11306 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11313 : see if POSIX threads are available
11314 set pthread.h i_pthread
11320 : how to create joinable pthreads
11321 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11323 echo "Checking what constant to use for creating joinable pthreads..." >&4
11324 $cat >try.c <<'EOCP'
11325 #include <pthread.h>
11327 int detachstate = JOINABLE;
11330 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11331 if eval $compile; then
11332 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11333 val="$undef" # Yes, undef.
11334 set d_old_pthread_create_joinable
11337 set old_pthread_create_joinable
11340 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11341 if eval $compile; then
11342 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11344 set d_old_pthread_create_joinable
11346 val=PTHREAD_CREATE_UNDETACHED
11347 set old_pthread_create_joinable
11350 set try -DJOINABLE=__UNDETACHED
11351 if eval $compile; then
11352 echo "You seem to use __UNDETACHED." >&4
11354 set d_old_pthread_create_joinable
11357 set old_pthread_create_joinable
11360 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11362 set d_old_pthread_create_joinable
11365 set old_pthread_create_joinable
11372 d_old_pthread_create_joinable="$undef"
11373 old_pthread_create_joinable=""
11376 : see if pause exists
11380 : see if pipe exists
11384 : see if poll exists
11388 : see if pthread_atfork exists
11389 set pthread_atfork d_pthread_atfork
11393 : see whether the various POSIXish _yields exist
11395 #include <pthread.h>
11401 #ifdef PTHREAD_YIELD
11404 #ifdef PTHREAD_YIELD_NULL
11405 pthread_yield(NULL);
11411 : see if sched_yield exists
11412 set try -DSCHED_YIELD
11413 if eval $compile; then
11415 sched_yield='sched_yield()'
11419 case "$usethreads" in
11422 $define) echo 'sched_yield() found.' >&4 ;;
11423 *) echo 'sched_yield() NOT found.' >&4 ;;
11429 : see if pthread_yield exists
11430 set try -DPTHREAD_YIELD
11431 if eval $compile; then
11433 case "$sched_yield" in
11434 '') sched_yield='pthread_yield()' ;;
11437 set try -DPTHREAD_YIELD_NULL
11438 if eval $compile; then
11440 case "$sched_yield" in
11441 '') sched_yield='pthread_yield(NULL)' ;;
11447 case "$usethreads" in
11450 $define) echo 'pthread_yield() found.' >&4 ;;
11451 *) echo 'pthread_yield() NOT found.' >&4 ;;
11455 set d_pthread_yield
11458 case "$sched_yield" in
11459 '') sched_yield=undef ;;
11464 : see if this is a pwd.h system
11470 xxx=`./findhdr pwd.h`
11471 $cppstdin $cppflags $cppminus < $xxx >$$.h
11473 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11481 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11489 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11497 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11505 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11513 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11521 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11529 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11541 set d_pwquota; eval $setvar
11542 set d_pwage; eval $setvar
11543 set d_pwchange; eval $setvar
11544 set d_pwclass; eval $setvar
11545 set d_pwexpire; eval $setvar
11546 set d_pwcomment; eval $setvar
11547 set d_pwgecos; eval $setvar
11548 set d_pwpasswd; eval $setvar
11552 : see if readdir and friends exist
11553 set readdir d_readdir
11555 set seekdir d_seekdir
11557 set telldir d_telldir
11559 set rewinddir d_rewinddir
11562 : see if readlink exists
11563 set readlink d_readlink
11566 : see if readv exists
11570 : see if recvmsg exists
11571 set recvmsg d_recvmsg
11574 : see if rename exists
11575 set rename d_rename
11578 : see if rmdir exists
11582 : see if memory.h is available.
11587 : See if it conflicts with string.h
11593 $cppstdin $cppflags $cppminus < $strings > mem.h
11594 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11596 echo "We won't be including <memory.h>."
11606 : can bcopy handle overlapping blocks?
11609 case "$d_memmove" in
11610 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11611 *) case "$d_bcopy" in
11613 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11615 #$i_memory I_MEMORY
11616 #$i_stdlib I_STDLIB
11617 #$i_string I_STRING
11618 #$i_unistd I_UNISTD
11620 $cat >>try.c <<'EOCP'
11623 # include <memory.h>
11626 # include <stdlib.h>
11629 # include <string.h>
11631 # include <strings.h>
11634 # include <unistd.h> /* Needed for NetBSD */
11638 char buf[128], abc[128];
11644 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11645 try to store the string in read-only memory. */
11646 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11648 for (align = 7; align >= 0; align--) {
11649 for (len = 36; len; len--) {
11651 bcopy(abc, b, len);
11652 for (off = 1; off <= len; off++) {
11653 bcopy(b, b+off, len);
11654 bcopy(b+off, b, len);
11655 if (bcmp(b, abc, len))
11664 if eval $compile_ok; then
11665 if ./try 2>/dev/null; then
11666 echo "Yes, it can."
11669 echo "It can't, sorry."
11672 echo "(I can't compile the test program, so we'll assume not...)"
11676 $rm -f try.* try core
11682 : can memcpy handle overlapping blocks?
11685 case "$d_memmove" in
11686 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11687 *) case "$d_memcpy" in
11689 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11691 #$i_memory I_MEMORY
11692 #$i_stdlib I_STDLIB
11693 #$i_string I_STRING
11694 #$i_unistd I_UNISTD
11696 $cat >>try.c <<'EOCP'
11699 # include <memory.h>
11702 # include <stdlib.h>
11705 # include <string.h>
11707 # include <strings.h>
11710 # include <unistd.h> /* Needed for NetBSD */
11714 char buf[128], abc[128];
11720 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11721 try to store the string in read-only memory. */
11722 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11724 for (align = 7; align >= 0; align--) {
11725 for (len = 36; len; len--) {
11727 memcpy(b, abc, len);
11728 for (off = 1; off <= len; off++) {
11729 memcpy(b+off, b, len);
11730 memcpy(b, b+off, len);
11731 if (memcmp(b, abc, len))
11740 if eval $compile_ok; then
11741 if ./try 2>/dev/null; then
11742 echo "Yes, it can."
11745 echo "It can't, sorry."
11748 echo "(I can't compile the test program, so we'll assume not...)"
11752 $rm -f try.* try core
11758 : can memcmp be trusted to compare relative magnitude?
11760 case "$d_memcmp" in
11763 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11765 #$i_memory I_MEMORY
11766 #$i_stdlib I_STDLIB
11767 #$i_string I_STRING
11768 #$i_unistd I_UNISTD
11770 $cat >>try.c <<'EOCP'
11773 # include <memory.h>
11776 # include <stdlib.h>
11779 # include <string.h>
11781 # include <strings.h>
11784 # include <unistd.h> /* Needed for NetBSD */
11790 if ((a < b) && memcmp(&a, &b, 1) < 0)
11796 if eval $compile_ok; then
11797 if $run ./try 2>/dev/null; then
11798 echo "Yes, it can."
11801 echo "No, it can't (it uses signed chars)."
11804 echo "(I can't compile the test program, so we'll assume not...)"
11808 $rm -f try.* try core
11812 : see if prototype for sbrk is available
11814 set d_sbrkproto sbrk $i_unistd unistd.h
11817 : see if select exists
11818 set select d_select
11821 : see if semctl exists
11822 set semctl d_semctl
11825 : see if semget exists
11826 set semget d_semget
11829 : see if semop exists
11833 : see how much of the 'sem*(2)' library is present.
11836 case "$d_semctl$d_semget$d_semop" in
11837 *"$undef"*) h_sem=false;;
11841 case "`ipcs 2>&1`" in
11842 "SVID messages"*"not configured"*)
11843 echo "Your $osname does not have the sem*(2) configured." >&4
11846 set semctl d_semctl
11848 set semget d_semget
11856 : we could also check for sys/ipc.h ...
11857 if $h_sem && $test `./findhdr sys/sem.h`; then
11858 echo "You have the full sem*(2) library." >&4
11861 echo "You don't have the full sem*(2) library." >&4
11867 : see whether sys/sem.h defines union semun
11869 $cat > try.c <<'END'
11870 #include <sys/types.h>
11871 #include <sys/ipc.h>
11872 #include <sys/sem.h>
11873 int main () { union semun semun; semun.buf = 0; }
11876 if eval $compile; then
11877 echo "You have union semun in <sys/sem.h>." >&4
11880 echo "You do not have union semun in <sys/sem.h>." >&4
11883 $rm -f try try.c try.h
11887 : see how to do semctl IPC_STAT
11890 : see whether semctl IPC_STAT can use union semun
11895 # define S_IRUSR S_IREAD
11896 # define S_IWUSR S_IWRITE
11897 # define S_IXUSR S_IEXEC
11899 # define S_IRUSR 0400
11900 # define S_IWUSR 0200
11901 # define S_IXUSR 0100
11903 # define S_IRGRP (S_IRUSR>>3)
11904 # define S_IWGRP (S_IWUSR>>3)
11905 # define S_IXGRP (S_IXUSR>>3)
11906 # define S_IROTH (S_IRUSR>>6)
11907 # define S_IWOTH (S_IWUSR>>6)
11908 # define S_IXOTH (S_IXUSR>>6)
11911 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11912 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11913 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11918 #include <sys/types.h>
11919 #include <sys/ipc.h>
11920 #include <sys/sem.h>
11921 #include <sys/stat.h>
11928 #$d_union_semun HAS_UNION_SEMUN
11931 #ifndef HAS_UNION_SEMUN
11934 struct semid_ds *buf;
11935 unsigned short *array;
11941 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11942 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11944 struct semid_ds argbuf;
11947 st = semctl(sem, 0, IPC_STAT, arg);
11951 # endif /* IPC_STAT */
11952 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11954 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11955 # endif /* IPC_RMID */
11956 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11958 #endif /* IPC_PRIVATE && ... */
11959 printf("semget failed: errno = %d\n", errno);
11965 if eval $compile; then
11968 semun) val="$define" ;;
11974 case "$d_semctl_semun" in
11976 echo "You can use union semun for semctl IPC_STAT." >&4
11979 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11984 : see whether semctl IPC_STAT can use struct semid_ds pointer
11985 $cat > try.c <<'END'
11986 #include <sys/types.h>
11987 #include <sys/ipc.h>
11988 #include <sys/sem.h>
11989 #include <sys/stat.h>
11997 struct semid_ds arg;
12000 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12001 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12004 st = semctl(sem, 0, IPC_STAT, &arg);
12006 printf("semid_ds\n");
12008 # endif /* IPC_STAT */
12009 printf("semctl IPC_STAT failed: errno = %d\n", errno);
12011 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12012 # endif /* IPC_RMID */
12013 printf("semctl IPC_RMID failed: errno = %d\n", errno);
12015 #endif /* IPC_PRIVATE && ... */
12016 printf("semget failed: errno = %d\n", errno);
12023 if eval $compile; then
12026 semid_ds) val="$define" ;;
12030 set d_semctl_semid_ds
12032 case "$d_semctl_semid_ds" in
12034 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12036 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12043 # We do not have the full sem*(2) library, so assume we can not
12049 set d_semctl_semid_ds
12054 : see if sendmsg exists
12055 set sendmsg d_sendmsg
12058 : see if setegid exists
12059 set setegid d_setegid
12062 : see if seteuid exists
12063 set seteuid d_seteuid
12066 : see if setgrent exists
12067 set setgrent d_setgrent
12070 : see if sethostent exists
12071 set sethostent d_sethent
12074 : see if setitimer exists
12075 set setitimer d_setitimer
12078 : see if setlinebuf exists
12079 set setlinebuf d_setlinebuf
12082 : see if setlocale exists
12083 set setlocale d_setlocale
12086 : see if setnetent exists
12087 set setnetent d_setnent
12090 : see if setprotoent exists
12091 set setprotoent d_setpent
12094 : see if setpgid exists
12095 set setpgid d_setpgid
12098 : see if setpgrp2 exists
12099 set setpgrp2 d_setpgrp2
12102 : see if setpriority exists
12103 set setpriority d_setprior
12106 : see if setproctitle exists
12107 set setproctitle d_setproctitle
12110 : see if setpwent exists
12111 set setpwent d_setpwent
12114 : see if setregid exists
12115 set setregid d_setregid
12117 set setresgid d_setresgid
12120 : see if setreuid exists
12121 set setreuid d_setreuid
12123 set setresuid d_setresuid
12126 : see if setrgid exists
12127 set setrgid d_setrgid
12130 : see if setruid exists
12131 set setruid d_setruid
12134 : see if setservent exists
12135 set setservent d_setsent
12138 : see if setsid exists
12139 set setsid d_setsid
12142 : see if setvbuf exists
12143 set setvbuf d_setvbuf
12146 : see if sfio.h is available
12151 : see if sfio library is available
12162 : Ok, but do we want to use it.
12166 true|$define|[yY]*) dflt='y';;
12169 echo "$package can use the sfio library, but it is experimental."
12170 case "$useperlio" in
12172 echo "For sfio also the PerlIO abstraction layer is needed."
12173 echo "Earlier you said you wouldn't want that."
12176 rp="You seem to have sfio available, do you want to try using it?"
12179 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12180 useperlio="$define"
12183 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12188 *) case "$usesfio" in
12189 true|$define|[yY]*)
12190 echo "Sorry, cannot find sfio on this machine." >&4
12191 echo "Ignoring your setting of usesfio=$usesfio." >&4
12200 $define) usesfio='true';;
12201 *) usesfio='false';;
12205 *) : Remove sfio from list of libraries to use
12208 echo "Removing unneeded -lsfio from library list" >&4
12209 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12212 echo "libs = $libs" >&4
12219 : see if shmctl exists
12220 set shmctl d_shmctl
12223 : see if shmget exists
12224 set shmget d_shmget
12227 : see if shmat exists
12230 : see what shmat returns
12233 $cat >shmat.c <<'END'
12234 #include <sys/shm.h>
12237 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12242 echo "and it returns ($shmattype)." >&4
12243 : see if a prototype for shmat is available
12244 xxx=`./findhdr sys/shm.h`
12245 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12246 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12257 set d_shmatprototype
12260 : see if shmdt exists
12264 : see how much of the 'shm*(2)' library is present.
12267 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12268 *"$undef"*) h_shm=false;;
12272 case "`ipcs 2>&1`" in
12273 "SVID shared memory"*"not configured"*)
12274 echo "Your $osname does not have the shm*(2) configured." >&4
12277 set shmctl d_shmctl
12279 set shmget d_shmget
12289 : we could also check for sys/ipc.h ...
12290 if $h_shm && $test `./findhdr sys/shm.h`; then
12291 echo "You have the full shm*(2) library." >&4
12294 echo "You don't have the full shm*(2) library." >&4
12301 : see if we have sigaction
12302 if set sigaction val -f d_sigaction; eval $csym; $val; then
12303 echo 'sigaction() found.' >&4
12304 $cat > try.c <<'EOP'
12306 #include <sys/types.h>
12307 #include <signal.h>
12310 struct sigaction act, oact;
12312 oact.sa_handler = 0;
12313 /* so that act and oact are used */
12314 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12318 if eval $compile_ok; then
12321 echo "But you don't seem to have a useable struct sigaction." >&4
12325 echo 'sigaction NOT found.' >&4
12328 set d_sigaction; eval $setvar
12329 $rm -f try try$_o try.c
12331 : see if sigprocmask exists
12332 set sigprocmask d_sigprocmask
12335 : see if sigsetjmp exists
12337 case "$d_sigsetjmp" in
12339 $cat >try.c <<'EOP'
12340 #include <setjmp.h>
12345 if (sigsetjmp(env,1))
12348 siglongjmp(env, 1);
12353 if eval $compile; then
12354 if $run ./try >/dev/null 2>&1; then
12355 echo "POSIX sigsetjmp found." >&4
12359 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12365 echo "sigsetjmp not found." >&4
12369 *) val="$d_sigsetjmp"
12370 case "$d_sigsetjmp" in
12371 $define) echo "POSIX sigsetjmp found." >&4;;
12372 $undef) echo "sigsetjmp not found." >&4;;
12380 : see if sockatmark exists
12381 set sockatmark d_sockatmark
12384 : see if prototype for sockatmark is available
12386 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12389 : see if socks5_init exists
12390 set socks5_init d_socks5_init
12393 : see if prototype for setresgid is available
12395 set d_sresgproto setresgid $i_unistd unistd.h
12398 : see if prototype for setresuid is available
12400 set d_sresuproto setresuid $i_unistd unistd.h
12403 : see if sys/stat.h is available
12404 set sys/stat.h i_sysstat
12408 : see if stat knows about block sizes
12410 echo "Checking to see if your struct stat has st_blocks field..." >&4
12411 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12415 : see if this is a sys/vfs.h system
12416 set sys/vfs.h i_sysvfs
12420 : see if this is a sys/statfs.h system
12421 set sys/statfs.h i_sysstatfs
12426 echo "Checking to see if your system supports struct statfs..." >&4
12427 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
12429 case "$d_statfs_s" in
12430 "$define") echo "Yes, it does." ;;
12431 *) echo "No, it doesn't." ;;
12436 : see if struct statfs knows about f_flags
12437 case "$d_statfs_s" in
12440 echo "Checking to see if your struct statfs has f_flags field..." >&4
12441 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
12445 set d_statfs_f_flags
12449 case "$d_statfs_f_flags" in
12450 "$define") echo "Yes, it does." ;;
12451 *) echo "No, it doesn't." ;;
12454 : see if _ptr and _cnt from stdio act std
12457 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12458 echo "(Looks like you have stdio.h from BSD.)"
12459 case "$stdio_ptr" in
12460 '') stdio_ptr='((fp)->_p)'
12463 *) ptr_lval=$d_stdio_ptr_lval;;
12465 case "$stdio_cnt" in
12466 '') stdio_cnt='((fp)->_r)'
12469 *) cnt_lval=$d_stdio_cnt_lval;;
12471 case "$stdio_base" in
12472 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12474 case "$stdio_bufsiz" in
12475 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12477 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12478 echo "(Looks like you have stdio.h from Linux.)"
12479 case "$stdio_ptr" in
12480 '') stdio_ptr='((fp)->_IO_read_ptr)'
12483 *) ptr_lval=$d_stdio_ptr_lval;;
12485 case "$stdio_cnt" in
12486 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12489 *) cnt_lval=$d_stdio_cnt_lval;;
12491 case "$stdio_base" in
12492 '') stdio_base='((fp)->_IO_read_base)';;
12494 case "$stdio_bufsiz" in
12495 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12498 case "$stdio_ptr" in
12499 '') stdio_ptr='((fp)->_ptr)'
12502 *) ptr_lval=$d_stdio_ptr_lval;;
12504 case "$stdio_cnt" in
12505 '') stdio_cnt='((fp)->_cnt)'
12508 *) cnt_lval=$d_stdio_cnt_lval;;
12510 case "$stdio_base" in
12511 '') stdio_base='((fp)->_base)';;
12513 case "$stdio_bufsiz" in
12514 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12518 : test whether _ptr and _cnt really work
12519 echo "Checking how std your stdio is..." >&4
12522 #define FILE_ptr(fp) $stdio_ptr
12523 #define FILE_cnt(fp) $stdio_cnt
12525 FILE *fp = fopen("try.c", "r");
12528 18 <= FILE_cnt(fp) &&
12529 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12537 if eval $compile && $to try.c; then
12538 if $run ./try; then
12539 echo "Your stdio acts pretty std."
12542 echo "Your stdio isn't very std."
12545 echo "Your stdio doesn't appear very std."
12551 : Can _ptr be used as an lvalue?
12552 case "$d_stdstdio$ptr_lval" in
12553 $define$define) val=$define ;;
12556 set d_stdio_ptr_lval
12559 : Can _cnt be used as an lvalue?
12560 case "$d_stdstdio$cnt_lval" in
12561 $define$define) val=$define ;;
12564 set d_stdio_cnt_lval
12568 : test whether setting _ptr sets _cnt as a side effect
12569 d_stdio_ptr_lval_sets_cnt="$undef"
12570 d_stdio_ptr_lval_nochange_cnt="$undef"
12571 case "$d_stdio_ptr_lval$d_stdstdio" in
12573 echo "Checking to see what happens if we set the stdio ptr..." >&4
12576 /* Can we scream? */
12577 /* Eat dust sed :-) */
12578 /* In the buffer space, no one can hear you scream. */
12579 #define FILE_ptr(fp) $stdio_ptr
12580 #define FILE_cnt(fp) $stdio_cnt
12581 #include <sys/types.h>
12583 FILE *fp = fopen("try.c", "r");
12588 puts("Fail even to read");
12591 c = getc(fp); /* Read away the first # */
12593 puts("Fail even to read");
12597 18 <= FILE_cnt(fp) &&
12598 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12600 puts("Fail even to read");
12603 ptr = (char*) FILE_ptr(fp);
12604 cnt = (size_t)FILE_cnt(fp);
12606 FILE_ptr(fp) += 42;
12608 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12609 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12612 if (FILE_cnt(fp) <= 20) {
12613 printf ("Fail (<20 chars to test)");
12616 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12617 puts("Fail compare");
12620 if (cnt == FILE_cnt(fp)) {
12621 puts("Pass_unchanged");
12624 if (FILE_cnt(fp) == (cnt - 42)) {
12625 puts("Pass_changed");
12628 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12634 if eval $compile && $to try.c; then
12635 case `$run ./try` in
12637 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12638 d_stdio_ptr_lval_sets_cnt="$define" ;;
12640 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12641 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12643 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12645 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12648 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12654 : see if _base is also standard
12656 case "$d_stdstdio" in
12660 #define FILE_base(fp) $stdio_base
12661 #define FILE_bufsiz(fp) $stdio_bufsiz
12663 FILE *fp = fopen("try.c", "r");
12666 19 <= FILE_bufsiz(fp) &&
12667 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12674 if eval $compile && $to try.c; then
12675 if $run ./try; then
12676 echo "And its _base field acts std."
12679 echo "But its _base field isn't std."
12682 echo "However, it seems to be lacking the _base field."
12691 Checking how to access stdio streams by file descriptor number...
12693 case "$stdio_stream_array" in
12694 '') $cat >try.c <<EOCP
12697 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12701 for s in _iob __iob __sF
12703 set try -DSTDIO_STREAM_ARRAY=$s
12704 if eval $compile; then
12705 case "`$run ./try`" in
12706 yes) stdio_stream_array=$s; break ;;
12710 $rm -f try.* try$exe_ext
12712 case "$stdio_stream_array" in
12714 I can't figure out how to access stdio streams by file descriptor number.
12716 d_stdio_stream_array="$undef"
12719 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12721 d_stdio_stream_array="$define"
12725 : see if strcoll exists
12726 set strcoll d_strcoll
12729 : check for structure copying
12731 echo "Checking to see if your C compiler can copy structs..." >&4
12732 $cat >try.c <<'EOCP'
12742 if $cc -c try.c >/dev/null 2>&1 ; then
12744 echo "Yup, it can."
12747 echo "Nope, it can't."
12753 : see if strerror and/or sys_errlist[] exist
12755 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12756 if set strerror val -f d_strerror; eval $csym; $val; then
12757 echo 'strerror() found.' >&4
12758 d_strerror="$define"
12759 d_strerrm='strerror(e)'
12760 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12761 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12762 d_syserrlst="$define"
12764 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12765 d_syserrlst="$undef"
12767 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12768 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12769 echo 'strerror() found in string header.' >&4
12770 d_strerror="$define"
12771 d_strerrm='strerror(e)'
12772 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12773 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12774 d_syserrlst="$define"
12776 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12777 d_syserrlst="$undef"
12779 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12780 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12781 d_strerror="$undef"
12782 d_syserrlst="$define"
12783 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12785 echo 'strerror() and sys_errlist[] NOT found.' >&4
12786 d_strerror="$undef"
12787 d_syserrlst="$undef"
12788 d_strerrm='"unknown"'
12792 : see if strftime exists
12793 set strftime d_strftime
12796 : see if strtod exists
12797 set strtod d_strtod
12800 : see if strtol exists
12801 set strtol d_strtol
12804 : see if strtold exists
12805 set strtold d_strtold
12808 : see if strtoll exists
12809 set strtoll d_strtoll
12812 case "$d_longlong-$d_strtoll" in
12815 Checking whether your strtoll() works okay...
12817 $cat >try.c <<'EOCP'
12820 #define strtoll __strtoll
12823 #define strtoll _strtoll
12826 extern long long int strtoll(char *s, char **, int);
12827 static int bad = 0;
12828 int check(char *s, long long ell, int een) {
12831 gll = strtoll(s, 0, 10);
12832 if (!((gll == ell) && (errno == een)))
12836 check(" 1", 1LL, 0);
12837 check(" 0", 0LL, 0);
12838 check("-1", -1LL, 0);
12839 check("-9223372036854775808", -9223372036854775808LL, 0);
12840 check("-9223372036854775808", -9223372036854775808LL, 0);
12841 check(" 9223372036854775807", 9223372036854775807LL, 0);
12842 check("-9223372036854775808", -9223372036854775808LL, 0);
12843 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12844 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12850 if eval $compile; then
12853 ok) echo "Your strtoll() seems to be working okay." ;;
12855 Your strtoll() doesn't seem to be working okay.
12861 echo "(I can't seem to compile the test program--assuming it doesn't)"
12867 : see if strtoq exists
12868 set strtoq d_strtoq
12871 : see if strtoul exists
12872 set strtoul d_strtoul
12875 case "$d_strtoul" in
12878 Checking whether your strtoul() works okay...
12880 $cat >try.c <<'EOCP'
12883 extern unsigned long int strtoul(char *s, char **, int);
12884 static int bad = 0;
12885 void check(char *s, unsigned long eul, int een) {
12888 gul = strtoul(s, 0, 10);
12889 if (!((gul == eul) && (errno == een)))
12893 check(" 1", 1L, 0);
12894 check(" 0", 0L, 0);
12896 case "$longsize" in
12898 $cat >>try.c <<'EOCP'
12899 check("18446744073709551615", 18446744073709551615UL, 0);
12900 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12901 #if 0 /* strtoul() for /^-/ strings is undefined. */
12902 check("-1", 18446744073709551615UL, 0);
12903 check("-18446744073709551614", 2, 0);
12904 check("-18446744073709551615", 1, 0);
12905 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12906 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12911 $cat >>try.c <<'EOCP'
12912 check("4294967295", 4294967295UL, 0);
12913 check("4294967296", 4294967295UL, ERANGE);
12914 #if 0 /* strtoul() for /^-/ strings is undefined. */
12915 check("-1", 4294967295UL, 0);
12916 check("-4294967294", 2, 0);
12917 check("-4294967295", 1, 0);
12918 check("-4294967296", 4294967295UL, ERANGE);
12919 check("-4294967297", 4294967295UL, ERANGE);
12924 : Should we write these tests to be more portable by sprintf-ing
12925 : ~0 and then manipulating that char string as input for strtol?
12928 $cat >>try.c <<'EOCP'
12935 if eval $compile; then
12936 case "`$run ./try`" in
12937 ok) echo "Your strtoul() seems to be working okay." ;;
12939 Your strtoul() doesn't seem to be working okay.
12948 : see if strtoull exists
12949 set strtoull d_strtoull
12952 case "$d_longlong-$d_strtoull" in
12955 Checking whether your strtoull() works okay...
12957 $cat >try.c <<'EOCP'
12960 #define strtoull __strtoull
12963 extern unsigned long long int strtoull(char *s, char **, int);
12964 static int bad = 0;
12965 int check(char *s, long long eull, int een) {
12968 gull = strtoull(s, 0, 10);
12969 if (!((gull == eull) && (errno == een)))
12973 check(" 1", 1LL, 0);
12974 check(" 0", 0LL, 0);
12975 check("18446744073709551615", 18446744073709551615ULL, 0);
12976 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12977 #if 0 /* strtoull() for /^-/ strings is undefined. */
12978 check("-1", 18446744073709551615ULL, 0);
12979 check("-18446744073709551614", 2LL, 0);
12980 check("-18446744073709551615", 1LL, 0);
12981 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12982 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12989 if eval $compile; then
12990 case "`$run ./try`" in
12991 ok) echo "Your strtoull() seems to be working okay." ;;
12993 Your strtoull() doesn't seem to be working okay.
12995 d_strtoull="$undef"
13002 : see if strtouq exists
13003 set strtouq d_strtouq
13006 case "$d_strtouq" in
13009 Checking whether your strtouq() works okay...
13011 $cat >try.c <<'EOCP'
13014 extern unsigned long long int strtouq(char *s, char **, int);
13015 static int bad = 0;
13016 void check(char *s, unsigned long long eull, int een) {
13017 unsigned long long gull;
13019 gull = strtouq(s, 0, 10);
13020 if (!((gull == eull) && (errno == een)))
13024 check(" 1", 1LL, 0);
13025 check(" 0", 0LL, 0);
13026 check("18446744073709551615", 18446744073709551615ULL, 0);
13027 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
13028 #if 0 /* strtouq() for /^-/ strings is undefined. */
13029 check("-1", 18446744073709551615ULL, 0);
13030 check("-18446744073709551614", 2LL, 0);
13031 check("-18446744073709551615", 1LL, 0);
13032 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13033 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13041 if eval $compile; then
13042 case "`$run ./try`" in
13043 ok) echo "Your strtouq() seems to be working okay." ;;
13045 Your strtouq() doesn't seem to be working okay.
13054 : see if strxfrm exists
13055 set strxfrm d_strxfrm
13058 : see if symlink exists
13059 set symlink d_symlink
13062 : see if syscall exists
13063 set syscall d_syscall
13066 : see if prototype for syscall is available
13068 set d_syscallproto syscall $i_unistd unistd.h
13071 : see if sysconf exists
13072 set sysconf d_sysconf
13075 : see if system exists
13076 set system d_system
13079 : see if tcgetpgrp exists
13080 set tcgetpgrp d_tcgetpgrp
13083 : see if tcsetpgrp exists
13084 set tcsetpgrp d_tcsetpgrp
13087 : see if prototype for telldir is available
13089 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13092 : see if this is a sys/times.h system
13093 set sys/times.h i_systimes
13096 : see if times exists
13098 if set times val -f d_times; eval $csym; $val; then
13099 echo 'times() found.' >&4
13102 case "$i_systimes" in
13103 "$define") inc='sys/times.h';;
13105 rp="What is the type returned by times() on this system?"
13106 set clock_t clocktype long stdio.h sys/types.h $inc
13109 echo 'times() NOT found, hope that will do.' >&4
13114 : see if truncate exists
13115 set truncate d_truncate
13118 : see if tzname[] exists
13120 if set tzname val -a d_tzname; eval $csym; $val; then
13122 echo 'tzname[] found.' >&4
13125 echo 'tzname[] NOT found.' >&4
13131 next|rhapsody|darwin) multiarch="$define" ;;
13133 case "$multiarch" in
13134 ''|[nN]*) multiarch="$undef" ;;
13137 : check for ordering of bytes in a long
13139 case "$usecrosscompile$multiarch" in
13142 You seem to be either cross-compiling or doing a multiarchitecture build,
13143 skipping the byteorder check.
13149 case "$byteorder" in
13152 In the following, larger digits indicate more significance. A big-endian
13153 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13154 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13155 machines may have weird orders like 3412. A Cray will report 87654321,
13156 an Alpha will report 12345678. If the test program works the default is
13158 I'm now running the test program...
13160 $cat >try.c <<'EOCP'
13167 char c[sizeof(long)];
13170 if (sizeof(long) > 4)
13171 u.l = (0x08070605L << 32) | 0x04030201L;
13174 for (i = 0; i < sizeof(long); i++)
13175 printf("%c", u.c[i]+'0');
13182 if eval $compile && ./try > /dev/null; then
13185 [1-4][1-4][1-4][1-4]|12345678|87654321)
13186 echo "(The test program ran ok.)"
13187 echo "byteorder=$dflt"
13190 ????|????????) echo "(The test program ran ok.)" ;;
13191 *) echo "(The test program didn't run right for some reason.)" ;;
13196 (I can't seem to compile the test program. Guessing big-endian...)
13199 case "$xxx_prompt" in
13201 rp="What is the order of bytes in a long?"
13217 Checking to see whether you can access character data unalignedly...
13221 #define U32 $u32type
13222 #define BYTEORDER $byteorder
13224 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13225 U8 buf[] = "\0\0\0\1\0\0\0\0";
13229 if (sizeof(U32) != 4) {
13230 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13236 for (i = 0; i < 4; i++) {
13237 up = (U32*)(buf + i);
13238 if (! ((*up == 1 << (8*i)) || /* big-endian */
13239 (*up == 1 << (8*(3-i))) /* little-endian */
13243 printf("read failed (%x)\n", *up);
13249 for (i = 0; i < 4; i++) {
13250 up = (U32*)(buf + i);
13252 if (*up != 0xBeef) {
13253 printf("write failed (%x)\n", *up);
13267 if eval $compile_ok; then
13268 echo "(Testing for character data alignment may dump core.)" >&4
13269 $run ./try 2>&1 >/dev/null
13272 You can access character data pretty unalignedly.
13274 d_u32align="$undef"
13277 It seems that you must access character data in an aligned manner.
13279 d_u32align="$define"
13282 $rm -f core core.try.* try.core
13284 rp='Can you access character data at unaligned addresses?'
13288 [yY]*) d_u32align="$undef" ;;
13289 *) d_u32align="$define" ;;
13293 : see if ualarm exists
13294 set ualarm d_ualarm
13297 : see if umask exists
13301 : see if usleep exists
13302 set usleep d_usleep
13305 : see if prototype for usleep is available
13307 set d_usleepproto usleep $i_unistd unistd.h
13310 : see if ustat exists
13314 : backward compatibility for d_hvfork
13315 if test X$d_hvfork != X; then
13316 d_vfork="$d_hvfork"
13319 : see if there is a vfork
13324 : Ok, but do we want to use it. vfork is reportedly unreliable in
13325 : perl on Solaris 2.x, and probably elsewhere.
13329 case "$usevfork" in
13335 Perl can only use a vfork() that doesn't suffer from strict
13336 restrictions on calling functions or modifying global data in
13337 the child. For example, glibc-2.1 contains such a vfork()
13338 that is unsuitable. If your system provides a proper fork()
13339 call, chances are that you do NOT want perl to use vfork().
13342 rp="Do you still want to use vfork()?"
13347 echo "Ok, we won't use vfork()."
13356 $define) usevfork='true';;
13357 *) usevfork='false';;
13360 : see if this is an sysdir system
13361 set sys/dir.h i_sysdir
13364 : see if this is an sysndir system
13365 set sys/ndir.h i_sysndir
13368 : see if closedir exists
13369 set closedir d_closedir
13372 case "$d_closedir" in
13375 echo "Checking whether closedir() returns a status..." >&4
13377 #$i_dirent I_DIRENT /**/
13378 #$i_sysdir I_SYS_DIR /**/
13379 #$i_sysndir I_SYS_NDIR /**/
13380 #$i_systypes I_SYS_TYPES /**/
13382 #if defined(I_SYS_TYPES)
13383 #include <sys/types.h>
13385 #if defined(I_DIRENT)
13386 #include <dirent.h>
13387 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13388 #include <sys/dir.h>
13392 #include <sys/ndir.h>
13396 #include <ndir.h> /* may be wrong in the future */
13398 #include <sys/dir.h>
13403 int main() { return closedir(opendir(".")); }
13406 if eval $compile_ok; then
13407 if $run ./try > /dev/null 2>&1 ; then
13408 echo "Yes, it does."
13411 echo "No, it doesn't."
13415 echo "(I can't seem to compile the test program--assuming it doesn't)"
13423 set d_void_closedir
13426 : see if there is a wait4
13430 : see if waitpid exists
13431 set waitpid d_waitpid
13434 : see if wcstombs exists
13435 set wcstombs d_wcstombs
13438 : see if wctomb exists
13439 set wctomb d_wctomb
13442 : see if writev exists
13443 set writev d_writev
13446 : preserve RCS keywords in files with variable substitution, grrr
13451 Revision='$Revision'
13453 : check for alignment requirements
13455 case "$usecrosscompile$multiarch" in
13458 You seem to be either cross-compiling or doing a multiarchitecture build,
13459 skipping the memory alignment check.
13462 case "$alignbytes" in
13463 '') alignbytes=8 ;;
13467 case "$alignbytes" in
13468 '') echo "Checking alignment constraints..." >&4
13469 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13470 $cat >try.c <<'EOCP'
13471 typedef long double NV;
13474 $cat >try.c <<'EOCP'
13478 $cat >>try.c <<'EOCP'
13486 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13491 if eval $compile_ok; then
13495 echo "(I can't seem to compile the test program...)"
13498 *) dflt="$alignbytes"
13501 rp="Doubles must be aligned on a how-many-byte boundary?"
13509 : set the base revision
13512 : how do we catenate cpp tokens here?
13514 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13515 $cat >cpp_stuff.c <<'EOCP'
13516 #define RCAT(a,b)a/**/b
13517 #define ACAT(a,b)a ## b
13521 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13522 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13523 echo "Oh! Smells like ANSI's been here." >&4
13524 echo "We can catify or stringify, separately or together!"
13526 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13527 echo "Ah, yes! The good old days!" >&4
13528 echo "However, in the good old days we don't know how to stringify and"
13529 echo "catify at the same time."
13533 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13534 to have to edit the values of CAT[2-5] in config.h...
13536 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13540 : see if this is a db.h system
13546 : Check db version.
13548 echo "Checking Berkeley DB version ..." >&4
13554 #include <sys/types.h>
13557 int main(int argc, char *argv[])
13559 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13560 int Major, Minor, Patch ;
13561 unsigned long Version ;
13562 (void)db_version(&Major, &Minor, &Patch) ;
13564 printf("%d %d %d %d %d %d\n",
13565 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13566 Major, Minor, Patch);
13569 printf("You have Berkeley DB Version 2 or greater.\n");
13571 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13572 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13573 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13574 Major, Minor, Patch) ;
13576 /* check that db.h & libdb are compatible */
13577 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13578 printf("db.h and libdb are incompatible.\n") ;
13582 printf("db.h and libdb are compatible.\n") ;
13584 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13585 + DB_VERSION_PATCH ;
13587 /* needs to be >= 2.3.4 */
13588 if (Version < 2003004) {
13589 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13590 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13596 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13601 printf("You have Berkeley DB Version 1.\n");
13602 exit(0); /* DB version < 2: the coast is clear. */
13604 exit(1); /* <db.h> not Berkeley DB? */
13610 if eval $compile_ok && $run ./try; then
13611 echo 'Looks OK.' >&4
13613 db_version_major=$1
13614 db_version_minor=$2
13615 db_version_patch=$3
13617 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13621 : Remove db from list of libraries to use
13622 echo "Removing unusable -ldb from library list" >&4
13623 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13626 echo "libs = $libs" >&4
13636 : Check the return type needed for hash
13638 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13644 #include <sys/types.h>
13647 #ifndef DB_VERSION_MAJOR
13648 u_int32_t hash_cb (ptr, size)
13656 info.hash = hash_cb;
13660 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13661 if $contains warning try.out >>/dev/null 2>&1 ; then
13664 db_hashtype='u_int32_t'
13667 : XXX Maybe we should just give up here.
13668 db_hashtype=u_int32_t
13670 echo "Help: I can't seem to compile the db test program." >&4
13671 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13674 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13676 *) db_hashtype=u_int32_t
13681 : Check the return type needed for prefix
13683 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13689 #include <sys/types.h>
13692 #ifndef DB_VERSION_MAJOR
13693 size_t prefix_cb (key1, key2)
13701 info.prefix = prefix_cb;
13705 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13706 if $contains warning try.out >>/dev/null 2>&1 ; then
13707 db_prefixtype='int'
13709 db_prefixtype='size_t'
13712 db_prefixtype='size_t'
13713 : XXX Maybe we should just give up here.
13715 echo "Help: I can't seem to compile the db test program." >&4
13716 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13719 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13721 *) db_prefixtype='size_t'
13726 : How can we generate normalized random numbers ?
13728 echo "Looking for a random number function..." >&4
13729 case "$randfunc" in
13731 if set drand48 val -f; eval $csym; $val; then
13733 echo "Good, found drand48()." >&4
13734 elif set random val -f; eval $csym; $val; then
13736 echo "OK, found random()." >&4
13739 echo "Yick, looks like I have to use rand()." >&4
13750 *-Dmy_rand=*|*-Dmy_srand=*)
13751 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13752 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13753 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13754 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13758 while $test "$cont"; do
13759 rp="Use which function to generate random numbers?"
13761 if $test "$ans" = "$dflt"; then
13767 if set $ans val -f; eval $csym; $val; then
13771 rp="I cannot find function $ans. Use that name anyway?"
13780 case "$randfunc" in
13782 drand01="drand48()"
13788 case "$randbits" in
13790 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13792 #$i_unistd I_UNISTD
13793 #$i_stdlib I_STDLIB
13796 # include <unistd.h>
13799 # include <stdlib.h>
13804 register unsigned long tmp;
13805 register unsigned long max = 0L;
13807 for (i = 1000; i; i--) {
13808 tmp = (unsigned long) $randfunc();
13809 if (tmp > max) max = tmp;
13811 for (i = 0; max; i++)
13817 if eval $compile_ok; then
13821 echo "(I can't seem to compile the test program...)"
13828 rp="How many bits does your $randfunc() function produce?"
13832 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13833 seedfunc="s$randfunc"
13834 randseedtype=unsigned
13838 rp="How many bits does your $randfunc() function produce?"
13841 seedfunc="s$randfunc"
13842 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13843 if set $seedfunc val -f; eval $csym; $val; then
13844 echo "(Using $seedfunc() to seed random generator)"
13846 echo "(Warning: no $seedfunc() to seed random generator)"
13849 randseedtype=unsigned
13857 echo "Determining whether or not we are on an EBCDIC system..." >&4
13858 $cat >try.c <<'EOM'
13861 if ('M'==0xd4) return 0;
13868 if eval $compile_ok; then
13869 if $run ./try; then
13870 echo "You seem to speak EBCDIC." >&4
13873 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13876 echo "I'm unable to compile the test program." >&4
13877 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13885 Checking how to flush all pending stdio output...
13887 # I only know how to find the first 32 possibly open files on SunOS.
13888 # See also hints/sunos_4_1.sh and util.c --AD
13890 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13892 $cat >>try.c <<EOCP
13894 #$i_unistd I_UNISTD
13896 # include <unistd.h>
13898 #$d_sysconf HAS_SYSCONF
13899 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13900 #ifdef HAS_STDIO_STREAM_ARRAY
13901 # define STDIO_STREAM_ARRAY $stdio_stream_array
13906 p = fopen("try.out", "w");
13910 # ifdef TRY_FPRINTF
13914 #ifdef TRY_FFLUSH_NULL
13917 #ifdef TRY_FFLUSH_ALL
13919 long open_max = -1;
13920 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13921 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13923 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13924 open_max = sysconf(_SC_OPEN_MAX);
13927 open_max = FOPEN_MAX;
13930 open_max = OPEN_MAX;
13939 # ifdef HAS_STDIO_STREAM_ARRAY
13940 if (open_max > 0) {
13942 for (i = 0; i < open_max; i++)
13943 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13944 STDIO_STREAM_ARRAY[i]._file < open_max &&
13945 STDIO_STREAM_ARRAY[i]._flag)
13946 fflush(&STDIO_STREAM_ARRAY[i]);
13954 : first we have to find out how _not_ to flush
13956 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13958 set try -DTRY_FPUTC
13959 if eval $compile; then
13960 $run ./try 2>/dev/null
13963 if $test ! -s try.out -a "X$code" = X42; then
13969 set try -DTRY_FPRINTF
13970 if eval $compile; then
13971 $run ./try 2>/dev/null
13974 if $test ! -s try.out -a "X$code" = X42; then
13975 output=-DTRY_FPRINTF
13981 : check for fflush NULL behaviour
13982 case "$fflushNULL" in
13983 '') set try -DTRY_FFLUSH_NULL $output
13984 if eval $compile; then
13985 $run ./try 2>/dev/null
13988 if $test -s try.out -a "X$code" = X42; then
13989 fflushNULL="`$cat try.out`"
13991 if $test "X$code" != X42; then
13993 (If this test failed, don't worry, we'll try another method shortly.)
13998 $rm -f core try.core core.try.*
13999 case "$fflushNULL" in
14001 Your fflush(NULL) works okay for output streams.
14002 Let's see if it clobbers input pipes...
14004 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14005 # bug that improperly flushes the input end of pipes. So we avoid the
14006 # autoflush on fork/system/exec support for now. :-(
14007 $cat >tryp.c <<EOCP
14010 main(int argc, char **argv)
14016 while ((i = getc(stdin)) != -1
14017 && (*bp++ = i) != '\n'
14018 && bp < &buf[1024])
14021 fprintf(stdout, "%s", buf);
14029 fflushNULL="$define"
14031 if eval $compile; then
14033 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14034 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14036 fflush(NULL) seems to behave okay with input streams.
14038 fflushNULL="$define"
14041 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
14043 fflushNULL="$undef"
14046 $rm -f core tryp.c tryp.core core.tryp.*
14049 Your fflush(NULL) isn't working (contrary to ANSI C).
14051 fflushNULL="$undef"
14054 Cannot figure out whether your fflush(NULL) works or not.
14055 I'm assuming it doesn't (contrary to ANSI C).
14057 fflushNULL="$undef"
14061 $define|true|[yY]*)
14062 fflushNULL="$define"
14065 fflushNULL="$undef"
14068 : check explicit looping only if NULL did not work, and if the pipe
14069 : bug does not show up on an explicit flush too
14070 case "$fflushNULL" in
14072 $cat >tryp.c <<EOCP
14075 main(int argc, char **argv)
14081 while ((i = getc(stdin)) != -1
14082 && (*bp++ = i) != '\n'
14083 && bp < &buf[1024])
14086 fprintf(stdout, "%s", buf);
14095 if eval $compile; then
14097 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14098 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14100 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14102 : now check for fflushall behaviour
14103 case "$fflushall" in
14104 '') set try -DTRY_FFLUSH_ALL $output
14105 if eval $compile; then
14107 (Now testing the other method--but note that this also may fail.)
14109 $run ./try 2>/dev/null
14112 if $test -s try.out -a "X$code" = X42; then
14113 fflushall="`$cat try.out`"
14116 $rm -f core try.core core.try.*
14117 case "$fflushall" in
14119 Whew. Flushing explicitly all the stdio streams works.
14121 fflushall="$define"
14124 Sigh. Flushing explicitly all the stdio streams doesn't work.
14129 Cannot figure out whether flushing stdio streams explicitly works or not.
14130 I'm assuming it doesn't.
14136 "$define"|true|[yY]*)
14137 fflushall="$define"
14145 All is futile. Even fflush(stdin) clobbers input pipes!
14152 $rm -f core tryp.c tryp.core core.tryp.*
14154 *) fflushall="$undef"
14158 case "$fflushNULL$fflushall" in
14161 OK, I give up. I cannot figure out how to flush pending stdio output.
14162 We won't be flushing handles at all before fork/exec/popen.
14166 $rm -f try.* try$exe_ext
14168 : Store the full pathname to the ar program for use in the C program
14169 : Respect a hint or command line value for full_ar.
14174 : Store the full pathname to the sed program for use in the C program
14177 : see what type gids are declared as in the kernel
14179 echo "Looking for the type for group ids returned by getgid()."
14180 set gid_t gidtype xxx stdio.h sys/types.h
14184 xxx=`./findhdr sys/user.h`
14185 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14187 unsigned) dflt="$1 $2" ;;
14191 *) dflt="$gidtype";;
14194 gid_t) echo "gid_t found." ;;
14195 *) rp="What is the type for group ids returned by getgid()?"
14203 *_t) zzz="$gidtype" ;;
14206 echo "Checking the size of $zzz..." >&4
14208 #include <sys/types.h>
14211 printf("%d\n", (int)sizeof($gidtype));
14216 if eval $compile_ok; then
14220 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14223 echo "Your $zzz is $gidsize bytes long."
14228 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14234 *_t) zzz="$gidtype" ;;
14237 echo "Checking the sign of $zzz..." >&4
14239 #include <sys/types.h>
14250 if eval $compile; then
14254 echo "(I can't execute the test program--guessing unsigned.)" >&4
14258 1) echo "Your $zzz is unsigned." ;;
14259 -1) echo "Your $zzz is signed." ;;
14265 echo "(I can't compile the test program--guessing unsigned.)" >&4
14271 if $test X"$quadtype" != X; then
14273 echo "Checking how to print 64-bit integers..." >&4
14275 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14276 $cat >try.c <<'EOCP'
14277 #include <sys/types.h>
14280 int q = 12345678901;
14281 printf("%ld\n", q);
14285 if eval $compile; then
14289 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14290 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14291 echo "We will use %d."
14297 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14298 $cat >try.c <<'EOCP'
14299 #include <sys/types.h>
14302 long q = 12345678901;
14303 printf("%ld\n", q);
14307 if eval $compile; then
14311 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14312 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14313 echo "We will use %ld."
14319 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14320 $cat >try.c <<'EOCP'
14321 #include <sys/types.h>
14322 #include <inttypes.h>
14325 int64_t q = 12345678901;
14326 printf("%" PRId64 "\n", q);
14330 if eval $compile; then
14334 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14335 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14336 echo "We will use the C9X style."
14342 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14344 #include <sys/types.h>
14347 $quadtype q = 12345678901;
14348 printf("%Ld\n", q);
14352 if eval $compile; then
14356 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14357 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14358 echo "We will use %Ld."
14364 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14365 $cat >try.c <<'EOCP'
14366 #include <sys/types.h>
14369 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14370 printf("%lld\n", q);
14374 if eval $compile; then
14378 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14379 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14380 echo "We will use the %lld style."
14386 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14388 #include <sys/types.h>
14391 $quadtype q = 12345678901;
14392 printf("%qd\n", q);
14396 if eval $compile; then
14400 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14401 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14402 echo "We will use %qd."
14408 if $test X"$sPRId64" = X; then
14409 echo "Cannot figure out how to print 64-bit integers." >&4
14417 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14418 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14420 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14421 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14427 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14429 if $test X"$ivsize" = X8; then
14430 ivdformat="$sPRId64"
14431 uvuformat="$sPRIu64"
14432 uvoformat="$sPRIo64"
14433 uvxformat="$sPRIx64"
14434 uvXUformat="$sPRIXU64"
14436 if $test X"$ivsize" = X"$longsize"; then
14443 if $test X"$ivsize" = X"$intsize"; then
14451 if $test X"$ivsize" = X"$shortsize"; then
14462 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14463 nveformat="$sPRIeldbl"
14464 nvfformat="$sPRIfldbl"
14465 nvgformat="$sPRIgldbl"
14466 nvEUformat="$sPRIEUldbl"
14467 nvFUformat="$sPRIFUldbl"
14468 nvGUformat="$sPRIGUldbl"
14478 case "$ivdformat" in
14479 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14486 $echo "Checking the format string to be used for gids..." >&4
14489 -1) if $test X"$gidsize" = X"$ivsize"; then
14490 gidformat="$ivdformat"
14492 if $test X"$gidsize" = X"$longsize"; then
14495 if $test X"$gidsize" = X"$intsize"; then
14498 if $test X"$gidsize" = X"$shortsize"; then
14505 *) if $test X"$gidsize" = X"$uvsize"; then
14506 gidformat="$uvuformat"
14508 if $test X"$gidsize" = X"$longsize"; then
14511 if $test X"$gidsize" = X"$intsize"; then
14514 if $test X"$gidsize" = X"$shortsize"; then
14523 : see if getgroups exists
14524 set getgroups d_getgrps
14527 : see if setgroups exists
14528 set setgroups d_setgrps
14532 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14534 case "$d_getgrps$d_setgrps" in
14536 case "$groupstype" in
14537 '') dflt="$gidtype" ;;
14538 *) dflt="$groupstype" ;;
14541 What type of pointer is the second argument to getgroups() and setgroups()?
14542 Usually this is the same as group ids, $gidtype, but not always.
14545 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14549 *) groupstype="$gidtype";;
14553 echo "Checking if your $make program sets \$(MAKE)..." >&4
14554 case "$make_set_make" in
14556 $sed 's/^X //' > testmake.mak << 'EOF'
14558 X @echo 'maketemp="$(MAKE)"'
14560 case "`$make -f testmake.mak 2>/dev/null`" in
14561 *maketemp=*) make_set_make='#' ;;
14562 *) make_set_make="MAKE=$make" ;;
14564 $rm -f testmake.mak
14567 case "$make_set_make" in
14568 '#') echo "Yup, it does.";;
14569 *) echo "Nope, it doesn't.";;
14572 : see what type is used for mode_t
14573 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14574 set mode_t modetype int stdio.h sys/types.h
14577 : see if stdarg is available
14579 if $test `./findhdr stdarg.h`; then
14580 echo "<stdarg.h> found." >&4
14583 echo "<stdarg.h> NOT found." >&4
14587 : see if varags is available
14589 if $test `./findhdr varargs.h`; then
14590 echo "<varargs.h> found." >&4
14592 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14595 : set up the varargs testing programs
14596 $cat > varargs.c <<EOP
14598 #include <stdarg.h>
14601 #include <varargs.h>
14605 int f(char *p, ...)
14619 p = va_arg(ap, char *);
14624 $cat > varargs <<EOP
14626 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14635 : now check which varargs header should be included
14640 if `./varargs I_STDARG`; then
14642 elif `./varargs I_VARARGS`; then
14647 if `./varargs I_VARARGS`; then
14654 echo "I could not find the definition for va_dcl... You have problems..." >&4
14655 val="$undef"; set i_stdarg; eval $setvar
14656 val="$undef"; set i_varargs; eval $setvar
14661 case "$i_varhdr" in
14663 val="$define"; set i_stdarg; eval $setvar
14664 val="$undef"; set i_varargs; eval $setvar
14667 val="$undef"; set i_stdarg; eval $setvar
14668 val="$define"; set i_varargs; eval $setvar
14671 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14675 : see if we need va_copy
14677 case "$i_stdarg" in
14680 #include <stdarg.h>
14682 #$i_stdlib I_STDLIB
14684 #include <stdlib.h>
14686 #include <signal.h>
14689 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14691 return vfprintf(f, fmt, *valp);
14695 myvfprintf(FILE *f, const char *fmt, va_list val)
14697 return ivfprintf(f, fmt, &val);
14701 myprintf(char *fmt, ...)
14704 va_start(val, fmt);
14705 return myvfprintf(stdout, fmt, val);
14709 main(int ac, char **av)
14711 signal(SIGSEGV, exit);
14713 myprintf("%s%cs all right, then\n", "that", '\'');
14718 if eval $compile && $run ./try 2>&1 >/dev/null; then
14719 case "`$run ./try`" in
14720 "that's all right, then")
14726 yes) echo "It seems that you don't need va_copy()." >&4
14727 need_va_copy="$undef"
14729 *) echo "It seems that va_copy() or similar will be needed." >&4
14730 need_va_copy="$define"
14733 $rm -f try.* core core.* *.core *.core.*
14735 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14739 : define a fucntion to check prototypes
14740 $cat > protochk <<EOSH
14743 optimize="$optimize"
14745 prototype="$prototype"
14750 $cat >> protochk <<'EOSH'
14755 while test $# -ge 2; do
14757 $define) echo "#include <$2>" >> try.c ;;
14758 literal) echo "$2" >> try.c ;;
14762 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14763 cat >> try.c <<'EOCP'
14764 #ifdef CAN_PROTOTYPE
14765 #define _(args) args
14770 echo "$foo" >> try.c
14771 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14772 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14778 $eunicefix protochk
14780 : see what type is used for size_t
14781 rp="What is the type used for the length parameter for string functions?"
14782 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14785 : check for type of arguments to gethostbyaddr.
14786 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14787 case "$d_gethbyaddr" in
14791 Checking to see what type of arguments are accepted by gethostbyaddr().
14793 hdrs="$define sys/types.h
14794 $d_socket sys/socket.h
14795 $i_niin netinet/in.h
14797 $i_unistd unistd.h"
14798 : The first arg can 'char *' or 'void *'
14799 : The second arg is some of integral type
14800 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14801 for yyy in size_t long int; do
14802 case "$netdb_host_type" in
14803 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14804 if ./protochk "$try" $hdrs; then
14805 echo "Your system accepts $xxx for the first arg."
14806 echo "...and $yyy for the second arg."
14807 netdb_host_type="$xxx"
14808 netdb_hlen_type="$yyy"
14814 : In case none of those worked, prompt the user.
14815 case "$netdb_host_type" in
14816 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14819 netdb_host_type=$ans
14820 rp='What is the type for the 2nd argument to gethostbyaddr?'
14823 netdb_hlen_type=$ans
14827 *) : no gethostbyaddr, so pick harmless defaults
14828 netdb_host_type='char *'
14829 netdb_hlen_type="$sizetype"
14832 # Remove the "const" if needed. -- but then we'll have a
14834 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14837 : check for type of argument to gethostbyname.
14838 if test "X$netdb_name_type" = X ; then
14839 case "$d_gethbyname" in
14843 Checking to see what type of argument is accepted by gethostbyname().
14845 hdrs="$define sys/types.h
14846 $d_socket sys/socket.h
14847 $i_niin netinet/in.h
14849 $i_unistd unistd.h"
14850 for xxx in "const char *" "char *"; do
14851 case "$netdb_name_type" in
14852 '') try="extern struct hostent *gethostbyname($xxx);"
14853 if ./protochk "$try" $hdrs; then
14854 echo "Your system accepts $xxx."
14855 netdb_name_type="$xxx"
14860 : In case none of those worked, prompt the user.
14861 case "$netdb_name_type" in
14862 '') rp='What is the type for the 1st argument to gethostbyname?'
14865 netdb_name_type=$ans
14869 *) : no gethostbyname, so pick harmless default
14870 netdb_name_type='char *'
14875 : check for type of 1st argument to getnetbyaddr.
14876 if test "X$netdb_net_type" = X ; then
14877 case "$d_getnbyaddr" in
14881 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14883 hdrs="$define sys/types.h
14884 $d_socket sys/socket.h
14885 $i_niin netinet/in.h
14887 $i_unistd unistd.h"
14888 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14889 case "$netdb_net_type" in
14890 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14891 if ./protochk "$try" $hdrs; then
14892 echo "Your system accepts $xxx."
14893 netdb_net_type="$xxx"
14898 : In case none of those worked, prompt the user.
14899 case "$netdb_net_type" in
14900 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14903 netdb_net_type=$ans
14907 *) : no getnetbyaddr, so pick harmless default
14908 netdb_net_type='long'
14912 : locate the preferred pager for this system
14918 [a-zA-Z]:/*) dflt=$pg;;
14922 [a-zA-Z]:/*) dflt=$more;;
14926 [a-zA-Z]:/*) dflt=$less;;
14929 '') dflt=/usr/ucb/more;;
14936 rp='What pager is used on your system?'
14940 : see what type pids are declared as in the kernel
14941 rp="What is the type of process ids on this system?"
14942 set pid_t pidtype int stdio.h sys/types.h
14945 : Find earliest binary compatible site_perl subdirectory perl can use.
14946 case "$bincompat5005" in
14947 "$define") xs_apiversion='5.005' ;;
14948 *) xs_apiversion=$version ;; # The current site_perl version.
14950 : Find earliest pure perl site_perl subdirectory perl can use.
14951 : The versioned directories started at 5.005.
14952 pm_apiversion='5.005'
14954 : see if ar generates random libraries by itself
14956 echo "Checking how to generate random libraries on your machine..." >&4
14957 echo 'int bar1() { return bar2(); }' > bar1.c
14958 echo 'int bar2() { return 2; }' > bar2.c
14959 $cat > foo.c <<'EOP'
14960 int main() { printf("%d\n", bar1()); exit(0); }
14962 $cc $ccflags -c bar1.c >/dev/null 2>&1
14963 $cc $ccflags -c bar2.c >/dev/null 2>&1
14964 $cc $ccflags -c foo.c >/dev/null 2>&1
14965 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14966 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14967 $run ./foobar >/dev/null 2>&1; then
14968 echo "$ar appears to generate random libraries itself."
14971 elif $ar ts bar$_a >/dev/null 2>&1 &&
14972 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14973 $run ./foobar >/dev/null 2>&1; then
14974 echo "a table of contents needs to be added with '$ar ts'."
14981 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14982 $test -f $ranlib || ranlib=''
14985 if $test -n "$ranlib"; then
14986 echo "your system has '$ranlib'; we'll use that."
14989 echo "your system doesn't seem to support random libraries"
14990 echo "so we'll use lorder and tsort to order the libraries."
14997 : check for type of arguments to select.
14998 case "$selecttype" in
14999 '') case "$d_select" in
15003 Checking to see what type of arguments are accepted by select().
15005 hdrs="$define sys/types.h
15006 $i_systime sys/time.h
15007 $i_sysselct sys/select.h
15008 $d_socket sys/socket.h"
15009 : The first arg can be int, unsigned, or size_t
15010 : The last arg may or may not be 'const'
15012 : void pointer has been seen but using that
15013 : breaks the selectminbits test
15014 for xxx in 'fd_set *' 'int *'; do
15015 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15016 for tmo in 'struct timeval *' 'const struct timeval *'; do
15018 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15019 if ./protochk "$try" $hdrs; then
15020 echo "Your system accepts $xxx."
15029 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15030 case "$d_fd_set" in
15031 $define) dflt="fd_set *" ;;
15040 *) : no select, so pick a harmless default
15047 : check for the select 'width'
15048 case "$selectminbits" in
15049 '') case "$d_select" in
15053 Checking to see on how many bits at a time your select() operates...
15056 #include <sys/types.h>
15058 #$i_systime I_SYS_TIME
15059 #$i_systimek I_SYS_TIME_KERNEL
15064 # ifdef I_SYS_TIME_KERNEL
15067 # include <sys/time.h>
15068 # ifdef I_SYS_TIME_KERNEL
15072 #$i_sysselct I_SYS_SELECT
15073 #ifdef I_SYS_SELECT
15074 #include <sys/select.h>
15076 #$d_socket HAS_SOCKET
15078 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15082 #define S sizeof(*(b))
15084 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15085 #define NBITS (NBYTES * 8)
15094 fp = fopen("try.c", "r");
15100 b = ($selecttype)s;
15101 for (i = 0; i < NBITS; i++)
15105 select(fd + 1, b, 0, 0, &t);
15106 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15107 printf("%d\n", i + 1);
15112 if eval $compile_ok; then
15113 selectminbits=`$run ./try`
15114 case "$selectminbits" in
15116 Cannot figure out on how many bits at a time your select() operates.
15117 I'll play safe and guess it is 32 bits.
15123 *) bits="$selectminbits bits" ;;
15125 echo "Your select() operates on $bits at a time." >&4
15127 rp='What is the minimum number of bits your select() operates on?'
15128 case "$byteorder" in
15129 1234|12345678) dflt=32 ;;
15134 selectminbits="$val"
15138 *) : no select, so pick a harmless default
15145 : Trace out the files included by signal.h, then look for SIGxxx names.
15146 : Remove SIGARRAYSIZE used by HPUX.
15147 : Remove SIGSTKSIZE used by Linux.
15148 : Remove SIGSTKSZ used by Posix.
15149 : Remove SIGTYP void lines used by OS2.
15150 : Some cpps, like os390, dont give the file name anywhere
15151 if [ "X$fieldn" = X ]; then
15152 : Just make some guesses. We check them later.
15153 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15155 xxx=`echo '#include <signal.h>' |
15156 $cppstdin $cppminus $cppflags 2>/dev/null |
15157 $grep '^[ ]*#.*include' |
15158 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15160 : Check this list of files to be sure we have parsed the cpp output ok.
15161 : This will also avoid potentially non-existent files, such
15164 for xx in $xxx /dev/null ; do
15165 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15167 : If we have found no files, at least try signal.h
15168 case "$xxxfiles" in
15169 '') xxxfiles=`./findhdr signal.h` ;;
15172 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15173 print substr($2, 4, 20)
15175 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15176 print substr($3, 4, 20)
15178 : Append some common names just in case the awk scan failed.
15179 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15180 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15181 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15182 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15183 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15185 : generate a few handy files for later
15186 $cat > signal.c <<'EOCP'
15187 #include <sys/types.h>
15188 #include <signal.h>
15192 /* Strange style to avoid deeply-nested #if/#else/#endif */
15195 # define NSIG (_NSIG)
15201 # define NSIG (SIGMAX+1)
15207 # define NSIG (SIG_MAX+1)
15213 # define NSIG (MAXSIG+1)
15219 # define NSIG (MAX_SIG+1)
15224 # ifdef SIGARRAYSIZE
15225 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15231 # define NSIG (_sys_nsig) /* Solaris 2.5 */
15235 /* Default to some arbitrary number that's big enough to get most
15236 of the common signals.
15242 printf("NSIG %d\n", NSIG);
15248 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15250 printf "#ifdef SIG"; printf $1; printf "\n"
15251 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15252 printf $1; printf ");\n"
15256 printf "#endif /* JUST_NSIG */\n";
15257 printf "exit(0);\n}\n";
15260 $cat >signal.awk <<'EOP'
15261 BEGIN { ndups = 0 }
15262 $1 ~ /^NSIG$/ { nsig = $2 }
15263 ($1 !~ /^NSIG$/) && (NF == 2) {
15264 if ($2 > maxsig) { maxsig = $2 }
15265 if (sig_name[$2]) {
15266 dup_name[ndups] = $1
15267 dup_num[ndups] = $2
15279 printf("NSIG %d\n", nsig);
15280 for (n = 1; n < nsig; n++) {
15282 printf("%s %d\n", sig_name[n], sig_num[n])
15285 printf("NUM%d %d\n", n, n)
15288 for (n = 0; n < ndups; n++) {
15289 printf("%s %d\n", dup_name[n], dup_num[n])
15293 $cat >signal_cmd <<EOS
15295 if $test -s signal.lst; then
15296 echo "Using your existing signal.lst file"
15301 $cat >>signal_cmd <<'EOS'
15304 if eval $compile_ok; then
15305 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15307 echo "(I can't seem be able to compile the whole test program)" >&4
15308 echo "(I'll try it in little pieces.)" >&4
15309 set signal -DJUST_NSIG
15310 if eval $compile_ok; then
15311 $run ./signal$_exe > signal.nsg
15314 echo "I can't seem to figure out how many signals you have." >&4
15315 echo "Guessing 50." >&4
15316 echo 'NSIG 50' > signal.nsg
15318 : Now look at all the signal names, one at a time.
15319 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15320 $cat > signal.c <<EOCP
15321 #include <sys/types.h>
15322 #include <signal.h>
15325 printf("$xx %d\n", SIG${xx});
15330 if eval $compile; then
15331 echo "SIG${xx} found."
15332 $run ./signal$_exe >> signal.ls1
15334 echo "SIG${xx} NOT found."
15337 if $test -s signal.ls1; then
15338 $cat signal.nsg signal.ls1 |
15339 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15343 if $test -s signal.lst; then
15346 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15347 echo 'kill -l' >signal
15348 set X `csh -f <signal`
15352 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15354 echo $@ | $tr ' ' $trnl | \
15355 $awk '{ printf "%s %d\n", $1, ++s; }
15356 END { printf "NSIG %d\n", ++s }' >signal.lst
15358 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15360 chmod a+x signal_cmd
15361 $eunicefix signal_cmd
15363 : generate list of signal names
15365 case "$sig_name_init" in
15367 *) case "$sig_num_init" in
15368 ''|*,*) doinit=yes ;;
15373 echo "Generating a list of signal names and numbers..." >&4
15375 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15376 sig_name=`$awk 'BEGIN { printf "ZERO " }
15377 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15378 sig_num=`$awk 'BEGIN { printf "0 " }
15379 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15380 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15381 !/^NSIG/ { printf "\"%s\", ", $1 }
15382 END { printf "0\n" }' signal.lst`
15383 sig_num_init=`$awk 'BEGIN { printf "0, " }
15384 !/^NSIG/ { printf "%d, ", $2}
15385 END { printf "0\n"}' signal.lst`
15388 echo "The following $sig_count signals are available:"
15390 echo $sig_name | $awk \
15391 'BEGIN { linelen = 0 }
15393 for (i = 1; i <= NF; i++) {
15394 name = "SIG" $i " "
15395 linelen = linelen + length(name)
15396 if (linelen > 70) {
15398 linelen = length(name)
15404 sig_size=`echo $sig_name | awk '{print NF}'`
15405 $rm -f signal signal.c signal.awk signal.lst signal_cmd
15408 case "$sizetype" in
15409 *_t) zzz="$sizetype" ;;
15410 *) zzz="filesize" ;;
15412 echo "Checking the size of $zzz..." >&4
15414 #include <sys/types.h>
15417 printf("%d\n", (int)sizeof($sizetype));
15422 if eval $compile_ok; then
15426 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15429 echo "Your $zzz size is $sizesize bytes."
15434 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15438 : check for socklen_t
15440 echo "Checking to see if you have socklen_t..." >&4
15442 #include <sys/types.h>
15443 #$d_socket HAS_SOCKET
15445 #include <sys/socket.h>
15447 int main() { socklen_t x = 16; }
15450 if eval $compile; then
15452 echo "You have socklen_t."
15455 echo "You do not have socklen_t."
15456 case "$sizetype" in
15457 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15464 : see if this is a socks.h system
15465 set socks.h i_socks
15468 : check for type of the size argument to socket calls
15469 case "$d_socket" in
15473 Checking to see what type is the last argument of accept().
15476 case "$d_socklen_t" in
15477 "$define") yyy="$yyy socklen_t"
15479 yyy="$yyy $sizetype int long unsigned"
15480 for xxx in $yyy; do
15481 case "$socksizetype" in
15482 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
15483 case "$usesocks" in
15485 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15486 echo "Your system accepts '$xxx *' for the last argument of accept()."
15487 socksizetype="$xxx"
15490 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15491 echo "Your system accepts '$xxx *' for the last argument of accept()."
15492 socksizetype="$xxx"
15499 : In case none of those worked, prompt the user.
15500 case "$socksizetype" in
15501 '') rp='What is the type for socket address structure sizes?'
15508 *) : no sockets, so pick relatively harmless default
15513 : see what type is used for signed size_t
15514 set ssize_t ssizetype int stdio.h sys/types.h
15519 #include <sys/types.h>
15520 #define Size_t $sizetype
15521 #define SSize_t $dflt
15524 if (sizeof(Size_t) == sizeof(SSize_t))
15526 else if (sizeof(Size_t) == sizeof(int))
15535 if eval $compile_ok && $run ./try > /dev/null; then
15536 ssizetype=`$run ./try`
15537 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15540 Help! I can't compile and run the ssize_t test program: please enlighten me!
15541 (This is probably a misconfiguration in your system or libraries, and
15542 you really ought to fix it. Still, I'll try anyway.)
15544 I need a type that is the same size as $sizetype, but is guaranteed to
15545 be signed. Common values are ssize_t, int and long.
15548 rp="What signed type is the same size as $sizetype?"
15554 : see what type of char stdio uses.
15556 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15557 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15558 echo "Your stdio uses unsigned chars." >&4
15559 stdchar="unsigned char"
15561 echo "Your stdio uses signed chars." >&4
15568 : see if time exists
15570 if test "X$d_time" = X -o X"$timetype" = X; then
15571 if set time val -f d_time; eval $csym; $val; then
15572 echo 'time() found.' >&4
15574 rp="What is the type returned by time() on this system?"
15575 set time_t timetype long stdio.h sys/types.h
15578 echo 'time() not found, hope that will do.' >&4
15586 : see what type uids are declared as in the kernel
15588 echo "Looking for the type for user ids returned by getuid()."
15589 set uid_t uidtype xxx stdio.h sys/types.h
15593 xxx=`./findhdr sys/user.h`
15594 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15596 unsigned) dflt="$1 $2" ;;
15600 *) dflt="$uidtype";;
15603 uid_t) echo "uid_t found." ;;
15604 *) rp="What is the type for user ids returned by getuid()?"
15612 *_t) zzz="$uidtype" ;;
15615 echo "Checking the size of $zzz..." >&4
15617 #include <sys/types.h>
15620 printf("%d\n", (int)sizeof($uidtype));
15625 if eval $compile_ok; then
15629 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15632 echo "Your $zzz is $uidsize bytes long."
15637 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15642 *_t) zzz="$uidtype" ;;
15645 echo "Checking the sign of $zzz..." >&4
15647 #include <sys/types.h>
15658 if eval $compile; then
15662 echo "(I can't execute the test program--guessing unsigned.)" >&4
15666 1) echo "Your $zzz is unsigned." ;;
15667 -1) echo "Your $zzz is signed." ;;
15673 echo "(I can't compile the test program--guessing unsigned.)" >&4
15679 $echo "Checking the format string to be used for uids..." >&4
15682 -1) if $test X"$uidsize" = X"$ivsize"; then
15683 uidformat="$ivdformat"
15685 if $test X"$uidsize" = X"$longsize"; then
15688 if $test X"$uidsize" = X"$intsize"; then
15691 if $test X"$uidsize" = X"$shortsize"; then
15698 *) if $test X"$uidsize" = X"$uvsize"; then
15699 uidformat="$uvuformat"
15701 if $test X"$uidsize" = X"$longsize"; then
15704 if $test X"$uidsize" = X"$intsize"; then
15707 if $test X"$uidsize" = X"$shortsize"; then
15716 : determine compiler compiler
15725 if $test -f "$byacc"; then
15727 comp="byacc or $comp"
15729 if $test -f "$bison"; then
15730 comp="$comp or bison -y"
15732 rp="Which compiler compiler ($comp) shall I use?"
15741 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15747 : see if fcntl.h is there
15752 : see if we can include fcntl.h
15758 echo "We'll be including <fcntl.h>." >&4
15761 if $h_sysfile; then
15762 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15764 echo "We won't be including <fcntl.h>." >&4
15776 : see if this is a iconv.h system
15777 set iconv.h i_iconv
15780 : see if this is a ieeefp.h system
15781 set ieeefp.h i_ieeefp
15784 : see if this is a libutil.h system
15785 set libutil.h i_libutil
15788 : see if locale.h is available
15789 set locale.h i_locale
15792 : see if mach cthreads are available
15793 if test "X$usethreads" = "X$define"; then
15794 set mach/cthreads.h i_machcthr
15797 i_machcthr="$undef"
15802 : see if this is a math.h system
15806 : see if this is a mntent.h system
15807 set mntent.h i_mntent
15810 : see if ndbm.h is available
15815 : see if dbm_open exists
15816 set dbm_open d_dbm_open
15818 case "$d_dbm_open" in
15821 echo "We won't be including <ndbm.h>"
15830 : see if net/errno.h is available
15832 set net/errno.h val
15835 : Unfortunately, it causes problems on some systems. Arrgh.
15838 cat > try.c <<'EOM'
15841 #include <net/errno.h>
15847 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15848 echo "We'll be including <net/errno.h>." >&4
15850 echo "We won't be including <net/errno.h>." >&4
15859 : see if netinet/tcp.h is available
15860 set netinet/tcp.h i_netinettcp
15863 : see if this is a poll.h system
15867 : see if this is a prot.h system
15872 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15873 $cat <<'EOSH' > Cppsym.know
15874 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15875 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15876 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15877 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15878 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15879 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15880 bull c cadmus clipper CMU COFF COMPILER_VERSION
15881 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15882 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15883 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15884 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15885 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15886 H3050R H3050RX hbullx20 hcx host_mips
15887 hp200 hp300 hp700 HP700 hp800 hp9000
15888 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15889 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15890 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15891 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15892 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15893 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15894 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15895 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15896 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15897 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15898 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15899 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15900 MATH_HAS_NO_SIDE_EFFECTS
15901 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15902 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15903 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15904 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15905 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15906 NetBSD news1500 news1700 news1800 news1900 news3700
15907 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15908 ns32016 ns32332 ns32k nsc32000
15909 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15910 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15911 pc532 pdp11 PGC PIC plexus PORTAR posix
15912 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15913 POSIX_C_SOURCE POSIX_SOURCE POWER
15914 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15915 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15916 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15917 sony sony_news sonyrisc sparc sparclite spectrum
15918 stardent stdc STDC_EXT stratos sun sun3 sun386
15919 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15920 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15921 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15922 sysV68 sysV88 Tek4132 Tek4300 titan
15923 TM3200 TM5400 TM5600
15924 tower tower32 tower32_200 tower32_600 tower32_700
15925 tower32_800 tower32_850 tss
15926 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15927 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15928 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15929 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15930 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15931 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15934 # Maybe put other stuff here too.
15935 cat <<EOSH >>Cppsym.know
15938 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15939 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15940 $cat Cppsym.know > Cppsym.c
15941 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15942 $rm -f Cppsym.a Cppsym.b Cppsym.c
15943 cat <<EOSH > Cppsym
15945 if $test \$# -gt 0; then
15946 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15947 if $test -s Cppsym.got; then
15954 $tr " " "$trnl" | ./Cppsym.try
15960 cat <<EOSH > Cppsym.try
15962 cat <<'EOCP' > try.c
15968 cat <<'EOSH' >> Cppsym.try
15970 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
15971 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
15972 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
15973 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
15975 echo 'return 0;}' >> try.c
15977 cat <<EOSH >> Cppsym.try
15979 case "$osname-$gccversion" in
15980 irix-) ccflags="\$ccflags -woff 1178" ;;
15981 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15983 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15985 chmod +x Cppsym.try
15986 $eunicefix Cppsym.try
15987 ./Cppsym < Cppsym.know > Cppsym.true
15988 : now check the C compiler for additional symbols
15989 postprocess_cc_v=''
15991 aix) postprocess_cc_v="|$tr , ' '" ;;
15998 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16001 -D*) echo "\$i" | $sed 's/^-D//';;
16002 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16007 postprocess_cc_v=''
16010 ./ccsym > ccsym1.raw
16011 if $test -s ccsym1.raw; then
16012 $sort ccsym1.raw | $uniq >ccsym.raw
16014 mv ccsym1.raw ccsym.raw
16017 $awk '/\=/ { print $0; next }
16018 { print $0"=1" }' ccsym.raw >ccsym.list
16019 $awk '/\=/ { print $0; next }
16020 { print $0"=1" }' Cppsym.true >ccsym.true
16021 $comm -13 ccsym.true ccsym.list >ccsym.own
16022 $comm -12 ccsym.true ccsym.list >ccsym.com
16023 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16025 if $test -z ccsym.raw; then
16026 echo "Your C compiler doesn't seem to define any symbols!" >&4
16028 echo "However, your C preprocessor defines the following symbols:"
16031 cppsymbols=`$cat Cppsym.true`
16032 cppsymbols=`echo $cppsymbols`
16033 cppccsymbols="$cppsymbols"
16035 if $test -s ccsym.com; then
16036 echo "Your C compiler and pre-processor define these symbols:"
16037 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16040 cppccsymbols=`$cat ccsym.com`
16041 cppccsymbols=`echo $cppccsymbols`
16042 $test "$silent" || sleep 1
16044 if $test -s ccsym.cpp; then
16045 $test "$also" && echo " "
16046 echo "Your C pre-processor ${also}defines the following symbols:"
16047 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16049 cppsymbols=`$cat ccsym.cpp`
16050 cppsymbols=`echo $cppsymbols`
16051 $test "$silent" || sleep 1
16053 if $test -s ccsym.own; then
16054 $test "$also" && echo " "
16055 echo "Your C compiler ${also}defines the following cpp symbols:"
16056 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16057 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16058 ccsymbols=`$cat ccsym.own`
16059 ccsymbols=`echo $ccsymbols`
16060 $test "$silent" || sleep 1
16064 : see if this is a termio system
16068 if $test `./findhdr termios.h`; then
16069 set tcsetattr i_termios
16075 "$define") echo "You have POSIX termios.h... good!" >&4;;
16076 *) if ./Cppsym pyr; then
16077 case "`/bin/universe`" in
16078 ucb) if $test `./findhdr sgtty.h`; then
16080 echo "<sgtty.h> found." >&4
16082 echo "System is pyramid with BSD universe."
16083 echo "<sgtty.h> not found--you could have problems." >&4
16085 *) if $test `./findhdr termio.h`; then
16087 echo "<termio.h> found." >&4
16089 echo "System is pyramid with USG universe."
16090 echo "<termio.h> not found--you could have problems." >&4
16094 if $test `./findhdr termio.h`; then
16095 echo "<termio.h> found." >&4
16097 elif $test `./findhdr sgtty.h`; then
16098 echo "<sgtty.h> found." >&4
16101 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16104 if $test `./findhdr sgtty.h`; then
16105 echo "<sgtty.h> found." >&4
16107 elif $test `./findhdr termio.h`; then
16108 echo "<termio.h> found." >&4
16111 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16115 set i_termio; eval $setvar
16116 val=$val2; set i_sgtty; eval $setvar
16117 val=$val3; set i_termios; eval $setvar
16119 : see if this is a shadow.h system
16120 set shadow.h i_shadow
16123 : see if stddef is available
16124 set stddef.h i_stddef
16127 : see if this is a sunmath.h system
16128 set sunmath.h i_sunmath
16131 : see if sys/access.h is available
16132 set sys/access.h i_sysaccess
16135 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16136 set sys/filio.h i_sysfilio
16139 if $test `./findhdr sys/ioctl.h`; then
16141 echo '<sys/ioctl.h> found.' >&4
16144 if $test $i_sysfilio = "$define"; then
16145 echo '<sys/ioctl.h> NOT found.' >&4
16147 $test $i_sgtty = "$define" && xxx="sgtty.h"
16148 $test $i_termio = "$define" && xxx="termio.h"
16149 $test $i_termios = "$define" && xxx="termios.h"
16150 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16156 : see if socket ioctl defs are in sys/sockio.h
16158 xxx=`./findhdr sys/sockio.h`
16159 if $test "$xxx"; then
16160 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16162 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16165 echo "No socket ioctls found in <sys/sockio.h>." >&4
16170 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16177 : see if this is a syslog.h system
16178 set syslog.h i_syslog
16182 : see if this is a sys/mode.h system
16183 set sys/mode.h i_sysmode
16186 : see if sys/resource.h has to be included
16187 set sys/resource.h i_sysresrc
16190 : see if sys/security.h is available
16191 set sys/security.h i_syssecrt
16194 : see if this is a sys/statvfs.h system
16195 set sys/statvfs.h i_sysstatvfs
16198 : see if this is a sys/un.h system
16199 set sys/un.h i_sysun
16203 : see if this is a sys/utsname.h system
16204 set sys/utsname.h i_sysutsname
16207 : see if this is a syswait system
16208 set sys/wait.h i_syswait
16211 : see if this is a ustat.h system
16212 set ustat.h i_ustat
16215 : see if this is an utime system
16216 set utime.h i_utime
16219 : see if this is a values.h system
16220 set values.h i_values
16223 : see if this is a vfork system
16226 set vfork.h i_vfork
16234 : see if gdbm.h is available
16239 : see if gdbm_open exists
16240 set gdbm_open d_gdbm_open
16242 case "$d_gdbm_open" in
16245 echo "We won't be including <gdbm.h>"
16255 echo "Looking for extensions..." >&4
16256 : If we are using the old config.sh, known_extensions may contain
16257 : old or inaccurate or duplicate values.
16258 known_extensions=''
16259 nonxs_extensions=''
16260 : We do not use find because it might not be available.
16261 : We do not just use MANIFEST because the user may have dropped
16262 : some additional extensions into the source tree and expect them
16265 : Function to recursively find available extensions, ignoring DynaLoader
16266 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16270 DynaLoader|dynaload) ;;
16272 if $test -f $xxx/$xxx.xs; then
16273 known_extensions="$known_extensions $1$xxx";
16274 elif $test -f $xxx/Makefile.PL; then
16275 nonxs_extensions="$nonxs_extensions $1$xxx";
16277 if $test -d $xxx -a $# -lt 10; then
16280 eval $find_extensions;
16292 eval $find_extensions
16293 set X $nonxs_extensions
16295 nonxs_extensions="$*"
16296 set X $known_extensions
16298 known_extensions="$*"
16301 : Now see which are supported on this system.
16303 for xxx in $known_extensions ; do
16307 $define) avail_ext="$avail_ext $xxx" ;;
16310 GDBM_File|gdbm_fil)
16312 $define) avail_ext="$avail_ext $xxx" ;;
16315 I18N/Langinfo|i18n_lan)
16316 case "$i_langinfo$d_nl_langinfo" in
16317 $define$define) avail_ext="$avail_ext $xxx" ;;
16320 NDBM_File|ndbm_fil)
16323 case "$osname-$use64bitint" in
16324 cygwin-*|hpux-define)
16326 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16329 *) avail_ext="$avail_ext $xxx" ;;
16334 ODBM_File|odbm_fil)
16335 case "${i_dbm}${i_rpcsvcdbm}" in
16337 case "$osname-$use64bitint" in
16338 cygwin-*|hpux-define)
16340 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16343 *) avail_ext="$avail_ext $xxx" ;;
16349 case "$useposix" in
16350 true|define|y) avail_ext="$avail_ext $xxx" ;;
16354 case "$useopcode" in
16355 true|define|y) avail_ext="$avail_ext $xxx" ;;
16359 case "$d_socket" in
16360 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16363 Sys/Syslog|sys/syslog)
16364 : XXX syslog requires socket
16365 case "$d_socket" in
16366 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16370 case "$usethreads" in
16372 case "$useithreads" in
16373 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16378 : XXX Do we need a useipcsysv variable here
16379 case "${d_msg}${d_sem}${d_shm}" in
16380 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16383 *) avail_ext="$avail_ext $xxx"
16392 : Now see which nonxs extensions are supported on this system.
16393 : For now assume all are.
16395 for xxx in $nonxs_extensions ; do
16397 *) nonxs_ext="$nonxs_ext $xxx"
16409 A number of extensions are supplied with $package. You may choose to
16410 compile these extensions for dynamic loading (the default), compile
16411 them into the $package executable (static loading), or not include
16412 them at all. Answer "none" to include no extensions.
16413 Note that DynaLoader is always built and need not be mentioned here.
16416 case "$dynamic_ext" in
16417 '') dflt="$avail_ext" ;;
16418 *) dflt="$dynamic_ext"
16419 # Perhaps we are reusing an old out-of-date config.sh.
16422 if test X"$dynamic_ext" != X"$avail_ext"; then
16424 NOTICE: Your previous config.sh list may be incorrect.
16425 The extensions now available to you are
16427 but the default list from your previous config.sh is
16439 rp="What extensions do you wish to load dynamically?"
16442 none) dynamic_ext=' ' ;;
16443 *) dynamic_ext="$ans" ;;
16446 case "$static_ext" in
16448 : Exclude those already listed in dynamic linking
16450 for xxx in $avail_ext; do
16451 case " $dynamic_ext " in
16453 *) dflt="$dflt $xxx" ;;
16460 *) dflt="$static_ext"
16467 rp="What extensions do you wish to load statically?"
16470 none) static_ext=' ' ;;
16471 *) static_ext="$ans" ;;
16476 A number of extensions are supplied with $package. Answer "none"
16477 to include no extensions.
16478 Note that DynaLoader is always built and need not be mentioned here.
16481 case "$static_ext" in
16482 '') dflt="$avail_ext" ;;
16483 *) dflt="$static_ext"
16484 # Perhaps we are reusing an old out-of-date config.sh.
16487 if test X"$static_ext" != X"$avail_ext"; then
16489 NOTICE: Your previous config.sh list may be incorrect.
16490 The extensions now available to you are
16492 but the default list from your previous config.sh is
16501 : Exclude those that are not xs extensions
16505 rp="What extensions do you wish to include?"
16508 none) static_ext=' ' ;;
16509 *) static_ext="$ans" ;;
16514 set X $dynamic_ext $static_ext $nonxs_ext
16518 : Remove libraries needed only for extensions
16519 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16520 : The exception is SunOS 4.x, which needs them.
16521 case "${osname}X${osvers}" in
16525 *) case "$usedl" in
16526 $define|true|[yY]*)
16527 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16531 *) perllibs="$libs"
16537 : Remove build directory name from cppstdin so it can be used from
16538 : either the present location or the final installed location.
16540 : Get out of the UU directory to get correct path name.
16542 case "$cppstdin" in
16544 echo "Stripping down cppstdin path name"
16550 : end of configuration questions
16552 echo "End of configuration questions."
16555 : back to where it started
16556 if test -d ../UU; then
16560 : configuration may be patched via a 'config.over' file
16561 if $test -f config.over; then
16564 rp='I see a config.over file. Do you wish to load it?'
16567 n*) echo "OK, I'll ignore it.";;
16569 echo "Configuration override changes have been loaded."
16574 : in case they want portability, strip down executable paths
16575 case "$d_portable" in
16578 echo "Stripping down executable paths..." >&4
16579 for file in $loclist $trylist; do
16581 eval $file=`basename $temp`
16586 : create config.sh file
16588 echo "Creating config.sh..." >&4
16589 $spitshell <<EOT >config.sh
16592 # This file was produced by running the Configure script. It holds all the
16593 # definitions figured out by Configure. Should you modify one of these values,
16594 # do not forget to propagate your changes by running "Configure -der". You may
16595 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16598 # Package name : $package
16599 # Source directory : $src
16600 # Configuration time: $cf_time
16601 # Configured by : $cf_by
16602 # Target system : $myuname
16612 Revision='$Revision'
16620 alignbytes='$alignbytes'
16621 ansi2knr='$ansi2knr'
16622 aphostname='$aphostname'
16623 api_revision='$api_revision'
16624 api_subversion='$api_subversion'
16625 api_version='$api_version'
16626 api_versionstring='$api_versionstring'
16629 archlibexp='$archlibexp'
16630 archname64='$archname64'
16631 archname='$archname'
16632 archobjs='$archobjs'
16637 bincompat5005='$bincompat5005'
16641 byteorder='$byteorder'
16643 castflags='$castflags'
16646 cccdlflags='$cccdlflags'
16647 ccdlflags='$ccdlflags'
16649 ccflags_uselargefiles='$ccflags_uselargefiles'
16651 ccsymbols='$ccsymbols'
16652 ccversion='$ccversion'
16654 cf_email='$cf_email'
16656 charsize='$charsize'
16660 clocktype='$clocktype'
16662 compress='$compress'
16663 contains='$contains'
16667 cpp_stuff='$cpp_stuff'
16668 cppccsymbols='$cppccsymbols'
16669 cppflags='$cppflags'
16671 cppminus='$cppminus'
16673 cppstdin='$cppstdin'
16674 cppsymbols='$cppsymbols'
16675 cryptlib='$cryptlib'
16677 d_Gconvert='$d_Gconvert'
16678 d_PRIEUldbl='$d_PRIEUldbl'
16679 d_PRIFUldbl='$d_PRIFUldbl'
16680 d_PRIGUldbl='$d_PRIGUldbl'
16681 d_PRIXU64='$d_PRIXU64'
16682 d_PRId64='$d_PRId64'
16683 d_PRIeldbl='$d_PRIeldbl'
16684 d_PRIfldbl='$d_PRIfldbl'
16685 d_PRIgldbl='$d_PRIgldbl'
16686 d_PRIi64='$d_PRIi64'
16687 d_PRIo64='$d_PRIo64'
16688 d_PRIu64='$d_PRIu64'
16689 d_PRIx64='$d_PRIx64'
16690 d_SCNfldbl='$d_SCNfldbl'
16691 d__fwalk='$d__fwalk'
16692 d_access='$d_access'
16693 d_accessx='$d_accessx'
16695 d_archlib='$d_archlib'
16698 d_attribut='$d_attribut'
16701 d_bincompat5005='$d_bincompat5005'
16703 d_bsdgetpgrp='$d_bsdgetpgrp'
16704 d_bsdsetpgrp='$d_bsdsetpgrp'
16706 d_casti32='$d_casti32'
16707 d_castneg='$d_castneg'
16708 d_charvspr='$d_charvspr'
16710 d_chroot='$d_chroot'
16711 d_chsize='$d_chsize'
16712 d_closedir='$d_closedir'
16713 d_cmsghdr_s='$d_cmsghdr_s'
16717 d_cuserid='$d_cuserid'
16718 d_dbl_dig='$d_dbl_dig'
16719 d_dbminitproto='$d_dbminitproto'
16720 d_difftime='$d_difftime'
16721 d_dirnamlen='$d_dirnamlen'
16722 d_dlerror='$d_dlerror'
16723 d_dlopen='$d_dlopen'
16724 d_dlsymun='$d_dlsymun'
16725 d_dosuid='$d_dosuid'
16726 d_drand48proto='$d_drand48proto'
16728 d_eaccess='$d_eaccess'
16729 d_endgrent='$d_endgrent'
16730 d_endhent='$d_endhent'
16731 d_endnent='$d_endnent'
16732 d_endpent='$d_endpent'
16733 d_endpwent='$d_endpwent'
16734 d_endsent='$d_endsent'
16735 d_eofnblk='$d_eofnblk'
16736 d_eunice='$d_eunice'
16737 d_fchdir='$d_fchdir'
16738 d_fchmod='$d_fchmod'
16739 d_fchown='$d_fchown'
16741 d_fcntl_can_lock='$d_fcntl_can_lock'
16742 d_fd_macros='$d_fd_macros'
16743 d_fd_set='$d_fd_set'
16744 d_fds_bits='$d_fds_bits'
16745 d_fgetpos='$d_fgetpos'
16746 d_flexfnam='$d_flexfnam'
16748 d_flockproto='$d_flockproto'
16750 d_fpathconf='$d_fpathconf'
16751 d_fpos64_t='$d_fpos64_t'
16752 d_frexpl='$d_frexpl'
16753 d_fs_data_s='$d_fs_data_s'
16754 d_fseeko='$d_fseeko'
16755 d_fsetpos='$d_fsetpos'
16756 d_fstatfs='$d_fstatfs'
16757 d_fstatvfs='$d_fstatvfs'
16759 d_ftello='$d_ftello'
16761 d_getcwd='$d_getcwd'
16762 d_getespwnam='$d_getespwnam'
16763 d_getfsstat='$d_getfsstat'
16764 d_getgrent='$d_getgrent'
16765 d_getgrps='$d_getgrps'
16766 d_gethbyaddr='$d_gethbyaddr'
16767 d_gethbyname='$d_gethbyname'
16768 d_gethent='$d_gethent'
16769 d_gethname='$d_gethname'
16770 d_gethostprotos='$d_gethostprotos'
16771 d_getitimer='$d_getitimer'
16772 d_getlogin='$d_getlogin'
16773 d_getmnt='$d_getmnt'
16774 d_getmntent='$d_getmntent'
16775 d_getnbyaddr='$d_getnbyaddr'
16776 d_getnbyname='$d_getnbyname'
16777 d_getnent='$d_getnent'
16778 d_getnetprotos='$d_getnetprotos'
16779 d_getpagsz='$d_getpagsz'
16780 d_getpbyname='$d_getpbyname'
16781 d_getpbynumber='$d_getpbynumber'
16782 d_getpent='$d_getpent'
16783 d_getpgid='$d_getpgid'
16784 d_getpgrp2='$d_getpgrp2'
16785 d_getpgrp='$d_getpgrp'
16786 d_getppid='$d_getppid'
16787 d_getprior='$d_getprior'
16788 d_getprotoprotos='$d_getprotoprotos'
16789 d_getprpwnam='$d_getprpwnam'
16790 d_getpwent='$d_getpwent'
16791 d_getsbyname='$d_getsbyname'
16792 d_getsbyport='$d_getsbyport'
16793 d_getsent='$d_getsent'
16794 d_getservprotos='$d_getservprotos'
16795 d_getspnam='$d_getspnam'
16796 d_gettimeod='$d_gettimeod'
16797 d_gnulibc='$d_gnulibc'
16798 d_grpasswd='$d_grpasswd'
16799 d_hasmntopt='$d_hasmntopt'
16803 d_inetaton='$d_inetaton'
16804 d_int64_t='$d_int64_t'
16805 d_isascii='$d_isascii'
16807 d_isnanl='$d_isnanl'
16808 d_killpg='$d_killpg'
16809 d_lchown='$d_lchown'
16810 d_ldbl_dig='$d_ldbl_dig'
16812 d_locconv='$d_locconv'
16814 d_longdbl='$d_longdbl'
16815 d_longlong='$d_longlong'
16816 d_lseekproto='$d_lseekproto'
16818 d_madvise='$d_madvise'
16820 d_mbstowcs='$d_mbstowcs'
16821 d_mbtowc='$d_mbtowc'
16822 d_memchr='$d_memchr'
16823 d_memcmp='$d_memcmp'
16824 d_memcpy='$d_memcpy'
16825 d_memmove='$d_memmove'
16826 d_memset='$d_memset'
16828 d_mkdtemp='$d_mkdtemp'
16829 d_mkfifo='$d_mkfifo'
16830 d_mkstemp='$d_mkstemp'
16831 d_mkstemps='$d_mkstemps'
16832 d_mktime='$d_mktime'
16835 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16836 d_mprotect='$d_mprotect'
16838 d_msg_ctrunc='$d_msg_ctrunc'
16839 d_msg_dontroute='$d_msg_dontroute'
16840 d_msg_oob='$d_msg_oob'
16841 d_msg_peek='$d_msg_peek'
16842 d_msg_proxy='$d_msg_proxy'
16843 d_msgctl='$d_msgctl'
16844 d_msgget='$d_msgget'
16845 d_msghdr_s='$d_msghdr_s'
16846 d_msgrcv='$d_msgrcv'
16847 d_msgsnd='$d_msgsnd'
16849 d_munmap='$d_munmap'
16850 d_mymalloc='$d_mymalloc'
16852 d_nl_langinfo='$d_nl_langinfo'
16853 d_nv_preserves_uv='$d_nv_preserves_uv'
16854 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16855 d_off64_t='$d_off64_t'
16856 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16857 d_oldpthreads='$d_oldpthreads'
16858 d_oldsock='$d_oldsock'
16860 d_pathconf='$d_pathconf'
16862 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16863 d_phostname='$d_phostname'
16866 d_portable='$d_portable'
16867 d_pthread_atfork='$d_pthread_atfork'
16868 d_pthread_yield='$d_pthread_yield'
16870 d_pwchange='$d_pwchange'
16871 d_pwclass='$d_pwclass'
16872 d_pwcomment='$d_pwcomment'
16873 d_pwexpire='$d_pwexpire'
16874 d_pwgecos='$d_pwgecos'
16875 d_pwpasswd='$d_pwpasswd'
16876 d_pwquota='$d_pwquota'
16879 d_readdir='$d_readdir'
16880 d_readlink='$d_readlink'
16882 d_recvmsg='$d_recvmsg'
16883 d_rename='$d_rename'
16884 d_rewinddir='$d_rewinddir'
16886 d_safebcpy='$d_safebcpy'
16887 d_safemcpy='$d_safemcpy'
16888 d_sanemcmp='$d_sanemcmp'
16889 d_sbrkproto='$d_sbrkproto'
16890 d_sched_yield='$d_sched_yield'
16891 d_scm_rights='$d_scm_rights'
16892 d_seekdir='$d_seekdir'
16893 d_select='$d_select'
16895 d_semctl='$d_semctl'
16896 d_semctl_semid_ds='$d_semctl_semid_ds'
16897 d_semctl_semun='$d_semctl_semun'
16898 d_semget='$d_semget'
16900 d_sendmsg='$d_sendmsg'
16901 d_setegid='$d_setegid'
16902 d_seteuid='$d_seteuid'
16903 d_setgrent='$d_setgrent'
16904 d_setgrps='$d_setgrps'
16905 d_sethent='$d_sethent'
16906 d_setitimer='$d_setitimer'
16907 d_setlinebuf='$d_setlinebuf'
16908 d_setlocale='$d_setlocale'
16909 d_setnent='$d_setnent'
16910 d_setpent='$d_setpent'
16911 d_setpgid='$d_setpgid'
16912 d_setpgrp2='$d_setpgrp2'
16913 d_setpgrp='$d_setpgrp'
16914 d_setprior='$d_setprior'
16915 d_setproctitle='$d_setproctitle'
16916 d_setpwent='$d_setpwent'
16917 d_setregid='$d_setregid'
16918 d_setresgid='$d_setresgid'
16919 d_setresuid='$d_setresuid'
16920 d_setreuid='$d_setreuid'
16921 d_setrgid='$d_setrgid'
16922 d_setruid='$d_setruid'
16923 d_setsent='$d_setsent'
16924 d_setsid='$d_setsid'
16925 d_setvbuf='$d_setvbuf'
16929 d_shmatprototype='$d_shmatprototype'
16930 d_shmctl='$d_shmctl'
16932 d_shmget='$d_shmget'
16933 d_sigaction='$d_sigaction'
16934 d_sigprocmask='$d_sigprocmask'
16935 d_sigsetjmp='$d_sigsetjmp'
16936 d_sockatmark='$d_sockatmark'
16937 d_sockatmarkproto='$d_sockatmarkproto'
16938 d_socket='$d_socket'
16939 d_socklen_t='$d_socklen_t'
16940 d_sockpair='$d_sockpair'
16941 d_socks5_init='$d_socks5_init'
16943 d_sresgproto='$d_sresgproto'
16944 d_sresuproto='$d_sresuproto'
16945 d_statblks='$d_statblks'
16946 d_statfs_f_flags='$d_statfs_f_flags'
16947 d_statfs_s='$d_statfs_s'
16948 d_statvfs='$d_statvfs'
16949 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16950 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16951 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16952 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16953 d_stdio_stream_array='$d_stdio_stream_array'
16954 d_stdiobase='$d_stdiobase'
16955 d_stdstdio='$d_stdstdio'
16956 d_strchr='$d_strchr'
16957 d_strcoll='$d_strcoll'
16958 d_strctcpy='$d_strctcpy'
16959 d_strerrm='$d_strerrm'
16960 d_strerror='$d_strerror'
16961 d_strftime='$d_strftime'
16962 d_strtod='$d_strtod'
16963 d_strtol='$d_strtol'
16964 d_strtold='$d_strtold'
16965 d_strtoll='$d_strtoll'
16966 d_strtoq='$d_strtoq'
16967 d_strtoul='$d_strtoul'
16968 d_strtoull='$d_strtoull'
16969 d_strtouq='$d_strtouq'
16970 d_strxfrm='$d_strxfrm'
16971 d_suidsafe='$d_suidsafe'
16972 d_symlink='$d_symlink'
16973 d_syscall='$d_syscall'
16974 d_syscallproto='$d_syscallproto'
16975 d_sysconf='$d_sysconf'
16976 d_sysernlst='$d_sysernlst'
16977 d_syserrlst='$d_syserrlst'
16978 d_system='$d_system'
16979 d_tcgetpgrp='$d_tcgetpgrp'
16980 d_tcsetpgrp='$d_tcsetpgrp'
16981 d_telldir='$d_telldir'
16982 d_telldirproto='$d_telldirproto'
16985 d_truncate='$d_truncate'
16986 d_tzname='$d_tzname'
16987 d_u32align='$d_u32align'
16988 d_ualarm='$d_ualarm'
16991 d_union_semun='$d_union_semun'
16992 d_usleep='$d_usleep'
16993 d_usleepproto='$d_usleepproto'
16995 d_vendorarch='$d_vendorarch'
16996 d_vendorbin='$d_vendorbin'
16997 d_vendorlib='$d_vendorlib'
16999 d_void_closedir='$d_void_closedir'
17000 d_voidsig='$d_voidsig'
17001 d_voidtty='$d_voidtty'
17002 d_volatile='$d_volatile'
17003 d_vprintf='$d_vprintf'
17005 d_waitpid='$d_waitpid'
17006 d_wcstombs='$d_wcstombs'
17007 d_wctomb='$d_wctomb'
17008 d_writev='$d_writev'
17011 db_hashtype='$db_hashtype'
17012 db_prefixtype='$db_prefixtype'
17013 db_version_major='$db_version_major'
17014 db_version_minor='$db_version_minor'
17015 db_version_patch='$db_version_patch'
17016 defvoidused='$defvoidused'
17017 direntrytype='$direntrytype'
17020 doublesize='$doublesize'
17022 dynamic_ext='$dynamic_ext'
17028 eunicefix='$eunicefix'
17031 extensions='$extensions'
17033 fflushNULL='$fflushNULL'
17034 fflushall='$fflushall'
17036 firstmakefile='$firstmakefile'
17038 fpossize='$fpossize'
17039 fpostype='$fpostype'
17040 freetype='$freetype'
17043 full_csh='$full_csh'
17044 full_sed='$full_sed'
17045 gccosandvers='$gccosandvers'
17046 gccversion='$gccversion'
17047 gidformat='$gidformat'
17053 groupcat='$groupcat'
17054 groupstype='$groupstype'
17057 h_sysfile='$h_sysfile'
17068 i_arpainet='$i_arpainet'
17069 i_bsdioctl='$i_bsdioctl'
17072 i_dirent='$i_dirent'
17080 i_ieeefp='$i_ieeefp'
17081 i_inttypes='$i_inttypes'
17082 i_langinfo='$i_langinfo'
17083 i_libutil='$i_libutil'
17084 i_limits='$i_limits'
17085 i_locale='$i_locale'
17086 i_machcthr='$i_machcthr'
17087 i_malloc='$i_malloc'
17089 i_memory='$i_memory'
17090 i_mntent='$i_mntent'
17093 i_neterrno='$i_neterrno'
17094 i_netinettcp='$i_netinettcp'
17098 i_pthread='$i_pthread'
17100 i_rpcsvcdbm='$i_rpcsvcdbm'
17103 i_shadow='$i_shadow'
17105 i_stdarg='$i_stdarg'
17106 i_stddef='$i_stddef'
17107 i_stdlib='$i_stdlib'
17108 i_string='$i_string'
17109 i_sunmath='$i_sunmath'
17110 i_sysaccess='$i_sysaccess'
17111 i_sysdir='$i_sysdir'
17112 i_sysfile='$i_sysfile'
17113 i_sysfilio='$i_sysfilio'
17115 i_sysioctl='$i_sysioctl'
17116 i_syslog='$i_syslog'
17117 i_sysmman='$i_sysmman'
17118 i_sysmode='$i_sysmode'
17119 i_sysmount='$i_sysmount'
17120 i_sysndir='$i_sysndir'
17121 i_sysparam='$i_sysparam'
17122 i_sysresrc='$i_sysresrc'
17123 i_syssecrt='$i_syssecrt'
17124 i_sysselct='$i_sysselct'
17125 i_syssockio='$i_syssockio'
17126 i_sysstat='$i_sysstat'
17127 i_sysstatfs='$i_sysstatfs'
17128 i_sysstatvfs='$i_sysstatvfs'
17129 i_systime='$i_systime'
17130 i_systimek='$i_systimek'
17131 i_systimes='$i_systimes'
17132 i_systypes='$i_systypes'
17133 i_sysuio='$i_sysuio'
17135 i_sysutsname='$i_sysutsname'
17136 i_sysvfs='$i_sysvfs'
17137 i_syswait='$i_syswait'
17138 i_termio='$i_termio'
17139 i_termios='$i_termios'
17141 i_unistd='$i_unistd'
17144 i_values='$i_values'
17145 i_varargs='$i_varargs'
17146 i_varhdr='$i_varhdr'
17148 ignore_versioned_solibs='$ignore_versioned_solibs'
17149 inc_version_list='$inc_version_list'
17150 inc_version_list_init='$inc_version_list_init'
17153 installarchlib='$installarchlib'
17154 installbin='$installbin'
17155 installman1dir='$installman1dir'
17156 installman3dir='$installman3dir'
17157 installprefix='$installprefix'
17158 installprefixexp='$installprefixexp'
17159 installprivlib='$installprivlib'
17160 installscript='$installscript'
17161 installsitearch='$installsitearch'
17162 installsitebin='$installsitebin'
17163 installsitelib='$installsitelib'
17164 installstyle='$installstyle'
17165 installusrbinperl='$installusrbinperl'
17166 installvendorarch='$installvendorarch'
17167 installvendorbin='$installvendorbin'
17168 installvendorlib='$installvendorlib'
17170 issymlink='$issymlink'
17171 ivdformat='$ivdformat'
17174 known_extensions='$known_extensions'
17177 lddlflags='$lddlflags'
17179 ldflags_uselargefiles='$ldflags_uselargefiles'
17180 ldlibpthname='$ldlibpthname'
17187 libsdirs='$libsdirs'
17188 libsfiles='$libsfiles'
17189 libsfound='$libsfound'
17190 libspath='$libspath'
17191 libswanted='$libswanted'
17192 libswanted_uselargefiles='$libswanted_uselargefiles'
17198 locincpth='$locincpth'
17199 loclibpth='$loclibpth'
17200 longdblsize='$longdblsize'
17201 longlongsize='$longlongsize'
17202 longsize='$longsize'
17206 lseeksize='$lseeksize'
17207 lseektype='$lseektype'
17211 make_set_make='$make_set_make'
17212 mallocobj='$mallocobj'
17213 mallocsrc='$mallocsrc'
17214 malloctype='$malloctype'
17216 man1direxp='$man1direxp'
17219 man3direxp='$man3direxp'
17221 mips_type='$mips_type'
17223 mmaptype='$mmaptype'
17224 modetype='$modetype'
17226 multiarch='$multiarch'
17228 myarchname='$myarchname'
17229 mydomain='$mydomain'
17230 myhostname='$myhostname'
17233 need_va_copy='$need_va_copy'
17234 netdb_hlen_type='$netdb_hlen_type'
17235 netdb_host_type='$netdb_host_type'
17236 netdb_name_type='$netdb_name_type'
17237 netdb_net_type='$netdb_net_type'
17240 nm_so_opt='$nm_so_opt'
17241 nonxs_ext='$nonxs_ext'
17243 nvEUformat='$nvEUformat'
17244 nvFUformat='$nvFUformat'
17245 nvGUformat='$nvGUformat'
17246 nveformat='$nveformat'
17247 nvfformat='$nvfformat'
17248 nvgformat='$nvgformat'
17251 o_nonblock='$o_nonblock'
17253 old_pthread_create_joinable='$old_pthread_create_joinable'
17254 optimize='$optimize'
17255 orderlib='$orderlib'
17258 otherlibdirs='$otherlibdirs'
17262 patchlevel='$patchlevel'
17263 path_sep='$path_sep'
17266 perl_patchlevel='$perl_patchlevel'
17267 perladmin='$perladmin'
17268 perllibs='$perllibs'
17269 perlpath='$perlpath'
17271 phostname='$phostname'
17274 pm_apiversion='$pm_apiversion'
17278 prefixexp='$prefixexp'
17280 privlibexp='$privlibexp'
17281 prototype='$prototype'
17283 quadkind='$quadkind'
17284 quadtype='$quadtype'
17285 randbits='$randbits'
17286 randfunc='$randfunc'
17287 randseedtype='$randseedtype'
17289 rd_nodata='$rd_nodata'
17290 revision='$revision'
17295 sPRIEUldbl='$sPRIEUldbl'
17296 sPRIFUldbl='$sPRIFUldbl'
17297 sPRIGUldbl='$sPRIGUldbl'
17298 sPRIXU64='$sPRIXU64'
17300 sPRIeldbl='$sPRIeldbl'
17301 sPRIfldbl='$sPRIfldbl'
17302 sPRIgldbl='$sPRIgldbl'
17307 sSCNfldbl='$sSCNfldbl'
17308 sched_yield='$sched_yield'
17309 scriptdir='$scriptdir'
17310 scriptdirexp='$scriptdirexp'
17312 seedfunc='$seedfunc'
17313 selectminbits='$selectminbits'
17314 selecttype='$selecttype'
17315 sendmail='$sendmail'
17318 sharpbang='$sharpbang'
17319 shmattype='$shmattype'
17320 shortsize='$shortsize'
17323 sig_count='$sig_count'
17324 sig_name='$sig_name'
17325 sig_name_init='$sig_name_init'
17327 sig_num_init='$sig_num_init'
17328 sig_size='$sig_size'
17329 signal_t='$signal_t'
17330 sitearch='$sitearch'
17331 sitearchexp='$sitearchexp'
17333 sitebinexp='$sitebinexp'
17335 sitelib_stem='$sitelib_stem'
17336 sitelibexp='$sitelibexp'
17337 siteprefix='$siteprefix'
17338 siteprefixexp='$siteprefixexp'
17339 sizesize='$sizesize'
17340 sizetype='$sizetype'
17344 sockethdr='$sockethdr'
17345 socketlib='$socketlib'
17346 socksizetype='$socksizetype'
17348 spackage='$spackage'
17349 spitshell='$spitshell'
17351 ssizetype='$ssizetype'
17352 startperl='$startperl'
17354 static_ext='$static_ext'
17356 stdio_base='$stdio_base'
17357 stdio_bufsiz='$stdio_bufsiz'
17358 stdio_cnt='$stdio_cnt'
17359 stdio_filbuf='$stdio_filbuf'
17360 stdio_ptr='$stdio_ptr'
17361 stdio_stream_array='$stdio_stream_array'
17364 subversion='$subversion'
17368 targetarch='$targetarch'
17372 timeincl='$timeincl'
17373 timetype='$timetype'
17387 uidformat='$uidformat'
17393 uquadtype='$uquadtype'
17394 use5005threads='$use5005threads'
17395 use64bitall='$use64bitall'
17396 use64bitint='$use64bitint'
17397 usecrosscompile='$usecrosscompile'
17399 useithreads='$useithreads'
17400 uselargefiles='$uselargefiles'
17401 uselongdouble='$uselongdouble'
17402 usemorebits='$usemorebits'
17403 usemultiplicity='$usemultiplicity'
17404 usemymalloc='$usemymalloc'
17406 useopcode='$useopcode'
17407 useperlio='$useperlio'
17408 useposix='$useposix'
17409 usereentrant='$usereentrant'
17411 useshrplib='$useshrplib'
17412 usesocks='$usesocks'
17413 usethreads='$usethreads'
17414 usevendorprefix='$usevendorprefix'
17415 usevfork='$usevfork'
17418 uvXUformat='$uvXUformat'
17419 uvoformat='$uvoformat'
17422 uvuformat='$uvuformat'
17423 uvxformat='$uvxformat'
17424 vendorarch='$vendorarch'
17425 vendorarchexp='$vendorarchexp'
17426 vendorbin='$vendorbin'
17427 vendorbinexp='$vendorbinexp'
17428 vendorlib='$vendorlib'
17429 vendorlib_stem='$vendorlib_stem'
17430 vendorlibexp='$vendorlibexp'
17431 vendorprefix='$vendorprefix'
17432 vendorprefixexp='$vendorprefixexp'
17434 version_patchlevel_string='$version_patchlevel_string'
17435 versiononly='$versiononly'
17437 voidflags='$voidflags'
17439 xs_apiversion='$xs_apiversion'
17441 yaccflags='$yaccflags'
17446 : Add in command line options if available
17447 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17449 : add special variables
17450 $test -f $src/patchlevel.h && \
17451 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17452 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17453 echo "PERL_CONFIG_SH=true" >>config.sh
17455 : propagate old symbols
17456 if $test -f UU/config.sh; then
17457 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17458 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17459 $sort | $uniq -u >UU/oldsyms
17460 set X `cat UU/oldsyms`
17466 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17468 echo "# Variables propagated from previous config.sh file." >>config.sh
17469 for sym in `cat UU/oldsyms`; do
17470 echo " Propagating $hint variable "'$'"$sym..."
17471 eval 'tmp="$'"${sym}"'"'
17473 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17479 : Finish up by extracting the .SH files
17483 echo "Extraction done."
17493 If you'd like to make any changes to the config.sh file before I begin
17494 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17497 rp="Press return or use a shell escape to edit config.sh:"
17502 *) : in case they cannot read
17503 sh 1>&4 -c "$ans";;
17508 : if this fails, just run all the .SH files by hand
17517 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17524 Now you need to generate make dependencies by running "$make depend".
17525 You might prefer to run it in background: "$make depend > makedepend.out &"
17526 It can take a while, so you might not want to run it right now.
17531 rp="Run $make depend now?"
17535 $make depend && echo "Now you must run '$make'."
17538 echo "You must run '$make depend' then '$make'."
17541 elif test -f [Mm]akefile; then
17543 echo "Now you must run a $make."
17545 echo "Configure done."
17548 if $test -f Policy.sh; then
17551 If you compile $package on a different machine or from a different object
17552 directory, copy the Policy.sh file from this object directory to the
17553 new one before you run Configure -- this will help you with most of
17554 the policy defaults.
17558 if $test -f config.msg; then
17559 echo "Hmm. I also noted the following information while running:"
17561 $cat config.msg >&4
17564 $rm -f kit*isdone ark*isdone