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 Tue Jan 23 16:39:46 EET 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
118 case "$inksh/$needksh" in
125 case "$inksh/$avoidksh" in
131 case "$inksh/$needksh-$avoidksh-" in
134 (I see you are using the Korn shell. Some ksh's blow up on $me,
135 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
141 echo "(Feeding myself to $newsh $reason.)"
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
154 *bash*) CDPATH='.' ;;
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
465 d_old_pthread_create_joinable=''
466 old_pthread_create_joinable=''
545 d_stdio_ptr_lval_nochange_cnt=''
546 d_stdio_ptr_lval_sets_cnt=''
718 inc_version_list_init=''
737 ignore_versioned_solibs=''
796 d_perl_otherlibdirs=''
813 d_nv_preserves_uv_bits=''
912 d_stdio_stream_array=''
913 stdio_stream_array=''
923 ccflags_uselargefiles=''
924 ldflags_uselargefiles=''
925 libswanted_uselargefiles=''
968 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
971 : We must find out about Eunice early
973 if test -f /etc/unixtovms; then
974 eunicefix=/etc/unixtovms
976 if test -f /etc/unixtovms.exe; then
977 eunicefix=/etc/unixtovms.exe
984 : set useposix=false in your hint file to disable the POSIX extension.
986 : set useopcode=false in your hint file to disable the Opcode extension.
988 : Trailing extension. Override this in a hint file, if needed.
990 : Extra object files, if any, needed on this platform.
993 : Possible local include directories to search.
994 : Set locincpth to "" in a hint file to defeat local include searches.
995 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
996 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
998 : no include file wanted by default
1002 : change the next line if compiling for Xenix/286 on Xenix/386
1003 xlibpth='/usr/lib/386 /lib/386'
1004 : Possible local library directories to search.
1005 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1006 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1008 : general looking path for locating libraries
1009 glibpth="/lib /usr/lib $xlibpth"
1010 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1011 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1012 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1014 : Private path used by Configure to find libraries. Its value
1015 : is prepended to libpth. This variable takes care of special
1016 : machines, like the mips. Usually, it should be empty.
1019 : default library list
1021 : some systems want to use only the non-versioned libso:s
1022 ignore_versioned_solibs=''
1024 ccflags_uselargefiles=''
1025 ldflags_uselargefiles=''
1026 libswanted_uselargefiles=''
1027 : set usemultiplicity on the Configure command line to enable multiplicity.
1028 : set usesocks on the Configure command line to enable socks.
1029 : set usethreads on the Configure command line to enable threads.
1030 : full support for void wanted by default
1033 : List of libraries we want.
1034 : If anyone needs -lnet, put it in a hint file.
1035 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1036 libswanted="$libswanted dld ld sun m c cposix posix"
1037 libswanted="$libswanted ndir dir crypt sec"
1038 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1039 : We probably want to search /usr/shlib before most other libraries.
1040 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1041 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1042 glibpth="/usr/shlib $glibpth"
1043 : Do not use vfork unless overridden by a hint file.
1046 : Find the basic shell for Bourne shell scripts
1050 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1053 if test -f "$xxx"; then
1056 : Build up a list and do a single loop so we can 'break' out.
1057 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1058 for xxx in sh bash ksh pdksh ash; do
1060 try="$try ${p}/${xxx}"
1064 if test -f "$xxx"; then
1067 elif test -f "$xxx.exe"; then
1078 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1080 Usually it's in /bin/sh. How did you even get this far?
1081 Please contact me (Perl Maintainers) at perlbug@perl.org and
1082 we'll try to straighten this all out.
1088 : see if sh knows # comments
1089 if `$sh -c '#' >/dev/null 2>&1`; then
1093 test -f $xcat || xcat=/usr/bin/cat
1098 if test -s today; then
1101 echo "#! $xcat" > try
1105 if test -s today; then
1113 echo "Your $sh doesn't grok # comments--I will strip them later on."
1116 echo "exec grep -v '^[ ]*#'" >spitshell
1118 $eunicefix spitshell
1119 spitshell=`pwd`/spitshell
1121 echo "I presume that if # doesn't work, #! won't work either!"
1126 : figure out how to guarantee sh startup
1128 '') startsh=${sharpbang}${sh} ;;
1140 : echo "Yup, it does."
1142 echo "Hmm... '$startsh' does not guarantee sh startup..."
1143 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1148 : Save command line options in file UU/cmdline.opt for later use in
1149 : generating config.sh.
1150 cat > cmdline.opt <<EOSH
1151 # Configure command line arguments.
1158 cat >>cmdline.opt <<EOSH
1159 config_arg$argn='$arg'
1161 argn=`expr $argn + 1`
1164 : produce awk script to parse command line options
1165 cat >options.awk <<'EOF'
1167 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1169 len = length(optstr);
1170 for (i = 1; i <= len; i++) {
1171 c = substr(optstr, i, 1);
1172 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1183 if (substr(str, 1, 1) != "-") {
1184 printf("'%s'\n", str);
1188 for (i = 2; i <= len; i++) {
1189 c = substr(str, i, 1);
1191 printf("-%s\n", substr(str, i));
1197 printf("'%s'\n", substr(str, i + 1));
1210 : process the command line options
1211 set X `for arg in "$@"; do echo "X$arg"; done |
1212 sed -e s/X// | awk -f options.awk`
1217 : set up default values
1227 rm -f optdef.sh posthint.sh
1228 cat >optdef.sh <<EOS
1234 while test $# -gt 0; do
1236 -d) shift; fastread=yes;;
1237 -e) shift; alldone=cont;;
1241 if test -r "$1"; then
1244 echo "$me: cannot read config file $1." >&2
1249 -h) shift; error=true;;
1250 -r) shift; reuseval=true;;
1251 -s) shift; silent=true; realsilent=true;;
1252 -E) shift; alldone=exit;;
1253 -K) shift; knowitall=true;;
1254 -O) shift; override=true;;
1255 -S) shift; silent=true; extractsh=true;;
1260 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1261 echo "$me: ignoring -D $1" >&2
1264 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1265 *) echo "$1='define'" >> optdef.sh;;
1272 *=) echo "$1" >> optdef.sh;;
1274 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1275 echo "$me: ignoring -U $1" >&2
1277 *) echo "$1='undef'" >> optdef.sh;;
1288 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1292 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1293 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1299 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1300 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1301 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1302 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1303 *) xxx=`echo $yyy|sed 's!:.*!!'`
1304 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1310 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1312 echo "$yyy=''" >> posthint.sh ;;
1317 echo "$yyy='$zzz'" >> posthint.sh ;;
1319 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1321 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1326 echo "$yyy=$zzz" >> posthint.sh ;;
1327 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1331 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1334 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1342 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1343 [-U symbol] [-U symbol=] [-A command:symbol...]
1344 -d : use defaults for all answers.
1345 -e : go on without questioning past the production of config.sh.
1346 -f : specify an alternate default configuration file.
1347 -h : print this help message and exit (with an error status).
1348 -r : reuse C symbols value if possible (skips costly nm extraction).
1349 -s : silent mode, only echoes questions and essential information.
1350 -D : define symbol to have some value:
1351 -D symbol symbol gets the value 'define'
1352 -D symbol=value symbol gets the value 'value'
1353 -E : stop at the end of questions, after having produced config.sh.
1354 -K : do not use unless you know what you are doing.
1355 -O : let -D and -U override definitions from loaded configuration file.
1356 -S : perform variable substitutions on all .SH files (can mix with -f)
1357 -U : undefine symbol:
1358 -U symbol symbol gets the value 'undef'
1359 -U symbol= symbol gets completely empty
1360 -A : manipulate symbol after the platform specific hints have been applied:
1361 -A symbol=value append " "value to symbol
1362 -A append:symbol=value append value to symbol
1363 -A define:symbol=value define symbol to have value
1364 -A clear:symbol define symbol to be ''
1365 -A define:symbol define symbol to be 'define'
1366 -A eval:symbol=value define symbol to be eval of value
1367 -A prepend:symbol=value prepend value to symbol
1368 -A undef:symbol define symbol to be 'undef'
1369 -A undef:symbol= define symbol to be ''
1370 -V : print version number and exit (with a zero status).
1377 case "$fastread$alldone" in
1380 case "$extractsh" in
1383 if test ! -t 0; then
1384 echo "Say 'sh Configure', not 'sh <Configure'"
1394 true) exec 1>/dev/null;;
1397 : run the defines and the undefines, if any, but leave the file out there...
1400 : create the posthint manipulation script and leave the file out there...
1405 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1406 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1407 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1408 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1409 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1412 : Some greps do not return status, grrr.
1413 echo "grimblepritz" >grimble
1414 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1416 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1422 : the following should work in any shell
1426 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1427 cat >contains <<'EOSS'
1428 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1433 : Find the path to the source tree
1436 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1440 *) src=`cd ../$src && pwd` ;;
1453 if test -f $rsrc/Configure && \
1454 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1456 : found it, so we are ok.
1459 for src in . .. ../.. ../../.. ../../../..; do
1460 if test -f ../$src/Configure && \
1461 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1472 Sorry, I can't seem to locate the source dir for $package. Please start
1473 Configure with an explicit path -- i.e. /some/path/Configure.
1481 echo "Sources for $package found in \"$src\"." >&4
1485 : script used to extract .SH files with variable substitutions
1486 cat >extract <<'EOS'
1488 echo "Doing variable substitutions on .SH files..."
1489 if test -f $src/MANIFEST; then
1490 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1492 echo "(Looking for .SH files under the source directory.)"
1493 set x `(cd $src; find . -name "*.SH" -print)`
1497 0) set x `(cd $src; echo *.SH)`; shift;;
1499 if test ! -f $src/$1; then
1505 while test $name; do
1506 if test ! -d "$name"; then
1507 create="$name $create";
1508 name=`echo $name | sed -e "s|^[^/]*$||"`;
1509 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1514 for file in $create; do
1523 dir=`expr X$file : 'X\(.*\)/'`
1524 file=`expr X$file : 'X.*/\(.*\)'`
1525 (cd $dir && . ./$file)
1535 dir=`expr X$file : 'X\(.*\)/'`
1536 file=`expr X$file : 'X.*/\(.*\)'`
1537 (set x $dir; shift; eval $mkdir_p)
1547 if test -f $src/config_h.SH; then
1548 if test ! -f config.h; then
1549 : oops, they left it out of MANIFEST, probably, so do it anyway.
1555 : extract files and exit if asked to do so
1556 case "$extractsh" in
1558 case "$realsilent" in
1562 case "$config_sh" in
1563 '') config_sh='config.sh';;
1566 echo "Fetching answers from $config_sh..."
1569 test "$override" && . ./optdef.sh
1578 : Eunice requires " " instead of "", can you believe it
1581 echo "Beginning of configuration questions for $package."
1583 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1585 : first determine how to suppress newline on echo command
1587 echo "Checking echo to see how to suppress newlines..."
1588 (echo "hi there\c" ; echo " ") >.echotmp
1589 if $contains c .echotmp >/dev/null 2>&1 ; then
1600 echo $n "The star should be here-->$c"
1604 : Now test for existence of everything in MANIFEST
1606 if test -f $rsrc/MANIFEST; then
1607 echo "First let's make sure your kit is complete. Checking..." >&4
1608 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1611 for filelist in x??; do
1612 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1614 if test -s missing; then
1618 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1620 You have the option of continuing the configuration process, despite the
1621 distinct possibility that your kit is damaged, by typing 'y'es. If you
1622 do, don't blame me if something goes wrong. I advise you to type 'n'o
1623 and contact the author (perlbug@perl.org).
1626 echo $n "Continue? [n] $c" >&4
1630 echo "Continuing..." >&4
1634 echo "ABORTING..." >&4
1639 echo "Looks good..."
1642 echo "There is no MANIFEST file. I hope your kit is complete !"
1647 : Find the appropriate value for a newline for tr
1648 if test -n "$DJGPP"; then
1651 if test X"$trnl" = X; then
1652 case "`echo foo|tr '\n' x 2>/dev/null`" in
1656 if test X"$trnl" = X; then
1657 case "`echo foo|tr '\012' x 2>/dev/null`" in
1658 foox) trnl='\012' ;;
1661 if test X"$trnl" = X; then
1664 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1670 : compute the number of columns on the terminal for proper question formatting
1675 : set up the echo used in my read
1676 myecho="case \"\$xxxm\" in
1677 '') echo $n \"\$rp $c\" >&4;;
1679 '') echo $n \"[\$xxxm] $c\";;
1681 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1683 echo $n \"[\$xxxm] $c\" >&4
1685 echo $n \"\$rp [\$xxxm] $c\" >&4
1691 : now set up to do reads with possible shell escape and default assignment
1697 case "\$fastread" in
1698 yes) case "\$dflt" in
1701 case "\$silent-\$rp" in
1706 *) case "\$silent" in
1707 true) case "\$rp" in
1712 while expr "X\$ans" : "X!" >/dev/null; do
1716 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1724 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1733 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1738 echo "(OK, I'll run with -d after this question.)" >&4
1741 echo "*** Sorry, \$1 not supported yet." >&4
1751 echo "*** Substitution done -- please confirm."
1753 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1758 echo "*** Error -- try again."
1765 case "\$ans\$xxxm\$nostick" in
1777 : create .config dir to save info across Configure sessions
1778 test -d ../.config || mkdir ../.config
1779 cat >../.config/README <<EOF
1780 This directory created by Configure to save information that should
1781 persist across sessions for $package.
1783 You may safely delete it if you wish.
1786 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1788 $define|true|[yY]*) ;;
1789 *) case "$xversion" in
1792 *** WHOA THERE!!! ***
1794 This is an UNSTABLE DEVELOPMENT release.
1795 The version of this $package distribution is $xversion, that is, odd,
1796 (as opposed to even) and that signifies a development release.
1797 If you want a maintenance release, you want an even-numbered version.
1799 Do ***NOT*** install this into production use.
1800 Data corruption and crashes are possible.
1802 It is most seriously suggested that you do not continue any further
1803 unless you want to help in developing and debugging Perl.
1806 rp='Do you really want to continue?'
1810 [yY]) echo >&4 "Okay, continuing." ;;
1811 *) echo >&4 "Okay, bye."
1820 : general instructions
1823 user=`(logname) 2>/dev/null`
1825 '') user=`whoami 2>&1`;;
1827 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1830 rp='Would you like to see the instructions?'
1841 This installation shell script will examine your system and ask you questions
1842 to determine how the perl5 package should be installed. If you get
1843 stuck on a question, you may use a ! shell escape to start a subshell or
1844 execute a command. Many of the questions will have default answers in square
1845 brackets; typing carriage return will give you the default.
1847 On some of the questions which ask for file or directory names you are allowed
1848 to use the ~name construct to specify the login directory belonging to "name",
1849 even if you don't have a shell which knows about that. Questions where this is
1850 allowed will be marked "(~name ok)".
1854 dflt='Type carriage return to continue'
1858 The prompter used in this script allows you to use shell variables and
1859 backticks in your answers. You may use $1, $2, etc... to refer to the words
1860 in the default answer, as if the default line was a set of arguments given to a
1861 script shell. This means you may also use $* to repeat the whole default line,
1862 so you do not have to re-type everything to add something to the default.
1864 Everytime there is a substitution, you will have to confirm. If there is an
1865 error (e.g. an unmatched backtick), the default answer will remain unchanged
1866 and you will be prompted again.
1868 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1869 the questions and use the computed defaults (or the previous answers if there
1870 was already a config.sh file). Type 'Configure -h' for a list of options.
1871 You may also start interactively and then answer '& -d' at any prompt to turn
1872 on the non-interactive behaviour for the remainder of the execution.
1878 Much effort has been expended to ensure that this shell script will run on any
1879 Unix system. If despite that it blows up on yours, your best bet is to edit
1880 Configure and run it again. If you can't run Configure for some reason,
1881 you'll have to generate a config.sh file by hand. Whatever problems you
1882 have, let me (perlbug@perl.org) know how I blew it.
1884 This installation script affects things in two ways:
1886 1) it may do direct variable substitutions on some of the files included
1888 2) it builds a config.h file for inclusion in C programs. You may edit
1889 any of these files as the need arises after running this script.
1891 If you make a mistake on a question, there is no easy way to back up to it
1892 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1893 files. Configure will offer to let you do this before it runs the SH files.
1896 dflt='Type carriage return to continue'
1898 case "$firsttime" in
1899 true) echo $user >>../.config/instruct;;
1903 : find out where common programs are
1905 echo "Locating common programs..." >&4
1918 if test -d \$dir/\$thing; then
1924 for thisthing in \$dir/\$thing; do
1925 : just loop through to pick last item
1927 if test -f \$thisthing; then
1930 elif test -f \$dir/\$thing.exe; then
1931 if test -n "$DJGPP"; then
1932 echo \$dir/\$thing.exe
1934 : on Eunice apparently
1984 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1985 pth="$pth /lib /usr/lib"
1986 for file in $loclist; do
1990 if test -f "$xxx"; then
1993 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1994 xxx=`./loc $file $file $pth`
1997 '') xxx=`./loc $file $file $pth`;;
1998 *) xxx=`./loc $xxx $xxx $pth`;;
2004 echo $file is in $xxx.
2007 echo $file is in $xxx.
2010 echo "I don't know where '$file' is, and my life depends on it." >&4
2011 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2017 echo "Don't worry if any of the following aren't found..."
2019 for file in $trylist; do
2023 if test -f "$xxx"; then
2026 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2027 xxx=`./loc $file $file $pth`
2030 '') xxx=`./loc $file $file $pth`;;
2031 *) xxx=`./loc $xxx $xxx $pth`;;
2037 echo $file is in $xxx.
2040 echo $file is in $xxx.
2043 echo "I don't see $file out there, $say."
2050 echo "Substituting grep for egrep."
2056 echo "Substituting cp for ln."
2062 echo "Hopefully test is built into your sh."
2065 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2066 echo "Using the test built into your sh."
2074 echo "Hopefully echo is built into your sh."
2079 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2080 $echo $n "hi there$c" >foo1
2081 echo $n "hi there$c" >foo2
2082 if cmp foo1 foo2 >/dev/null 2>&1; then
2083 echo "They are compatible. In fact, they may be identical."
2090 They are not compatible! You are probably running ksh on a non-USG system.
2091 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2092 have echo built in and we may have to run some Bourne shell scripts. That
2093 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2096 $echo $n "The star should be here-->$c"
2106 cat <<'EOSC' >>checkcc
2111 int main(int argc, char *argv[]) {
2115 if $cc -o try $ccflags try.c; then
2118 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2124 case "`$cc -v -c try.c 2>&1`" in
2127 if $test X"$trygcc" = Xyes; then
2128 if gcc -o try -c try.c; then
2130 echo "You seem to have a working gcc, though." >&4
2131 rp="Would you like to use it?"
2133 if $test -f myread; then
2136 if $test -f UU/myread; then
2139 echo "Cannot find myread, sorry. Aborting." >&2
2144 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2148 if $test X"$despair" = Xyes; then
2150 You need to find a working C compiler.
2151 Either (purchase and) install the C compiler supplied by your OS vendor,
2152 or for a free C compiler try http://gcc.gnu.org/
2153 I cannot continue any further, aborting.
2163 : determine whether symbolic links are supported
2166 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2167 echo "Symbolic links are supported." >&4
2170 echo "Symbolic links are NOT supported." >&4
2175 : determine whether symbolic links are supported
2179 echo "Checking how to test for symbolic links..." >&4
2181 if $test "X$issymlink" = X; then
2182 sh -c "PATH= test -h sym" >/dev/null 2>&1
2183 if test $? = 0; then
2187 if $test "X$issymlink" = X; then
2188 if $test -h >/dev/null 2>&1; then
2189 issymlink="$test -h"
2190 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2193 if $test "X$issymlink" = X; then
2194 if $test -L sym 2>/dev/null; then
2195 issymlink="$test -L"
2198 if $test "X$issymlink" != X; then
2199 echo "You can test for symbolic links with '$issymlink'." >&4
2201 echo "I do not know how you can test for symbolic links." >&4
2205 *) echo "No symbolic links, so not testing for their testing..." >&4
2211 case "$mksymlinks" in
2214 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2217 *) case "$lns:$issymlink" in
2218 *"ln -s:"*"test -"?)
2219 echo "Creating the symbolic links..." >&4
2220 echo "(First creating the subdirectories...)" >&4
2222 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2224 test -z "$directory" && break
2228 if test ! -d t/base; then
2229 echo "Failed to create the subdirectories. Aborting." >&4
2232 echo "(Then creating the symlinks...)" >&4
2233 awk '{print $1}' $src/MANIFEST | while true; do
2235 test -z "$filename" && break
2236 if test -f $filename; then
2237 if $issymlink $filename; then
2241 if test -f $filename; then
2242 echo "$filename already exists, not symlinking."
2244 ln -s $src/$filename $filename
2248 if test ! -f t/base/commonsense.t; then
2249 echo "Failed to create the symlinks. Aborting." >&4
2254 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2262 : see whether [:lower:] and [:upper:] are supported character classes
2264 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2266 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2270 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2271 # (0xc9 and 0xd1), therefore that is a nice testing point.
2272 if test "X$up" = X -o "X$low" = X; then
2273 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2279 if test "X$up" = X -o "X$low" = X; then
2280 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2286 if test "X$up" = X -o "X$low" = X; then
2287 case "`echo IJ | od -x 2>/dev/null`" in
2289 echo "Hey, this might be EBCDIC." >&4
2290 if test "X$up" = X -o "X$low" = X; then
2291 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2292 ij) up='[A-IJ-RS-Z]'
2297 if test "X$up" = X -o "X$low" = X; then
2298 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2308 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2310 echo "Using $up and $low to convert case." >&4
2313 echo "I don't know how to translate letters from upper to lower case." >&4
2314 echo "Your tr is not acting any way I know of." >&4
2318 : set up the translation script tr, must be called with ./tr of course
2322 '[A-Z][a-z]') exec $tr '$up' '$low';;
2323 '[a-z][A-Z]') exec $tr '$low' '$up';;
2330 : Try to determine whether config.sh was made on this system
2331 case "$config_sh" in
2333 myuname=`$uname -a 2>/dev/null`
2334 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2335 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2336 # because the A-Z/a-z are not consecutive.
2337 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2338 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2339 newmyuname="$myuname"
2341 case "$knowitall" in
2343 if test -f ../config.sh; then
2344 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2345 eval "`grep myuname= ../config.sh`"
2347 if test "X$myuname" = "X$newmyuname"; then
2355 : Get old answers from old config file if Configure was run on the
2356 : same system, otherwise use the hints.
2359 if test -f config.sh; then
2361 rp="I see a config.sh file. Shall I use it to set the defaults?"
2364 n*|N*) echo "OK, I'll ignore it."
2365 mv config.sh config.sh.old
2366 myuname="$newmyuname"
2368 *) echo "Fetching default answers from your old config.sh file..." >&4
2376 : Older versions did not always set $sh. Catch re-use of such
2386 if test ! -f config.sh; then
2389 First time through, eh? I have some defaults handy for some systems
2390 that need some extra help getting the Configure answers right:
2393 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2395 : Half the following guesses are probably wrong... If you have better
2396 : tests or hints, please send them to perlbug@perl.org
2397 : The metaconfig authors would also appreciate a copy...
2398 $test -f /irix && osname=irix
2399 $test -f /xenix && osname=sco_xenix
2400 $test -f /dynix && osname=dynix
2401 $test -f /dnix && osname=dnix
2402 $test -f /lynx.os && osname=lynxos
2403 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2404 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2405 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2406 $test -f /bin/mips && /bin/mips && osname=mips
2407 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2408 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2409 $test -d /usr/apollo/bin && osname=apollo
2410 $test -f /etc/saf/_sactab && osname=svr4
2411 $test -d /usr/include/minix && osname=minix
2412 if $test -d /MachTen -o -d /MachTen_Folder; then
2414 if $test -x /sbin/version; then
2415 osvers=`/sbin/version | $awk '{print $2}' |
2416 $sed -e 's/[A-Za-z]$//'`
2417 elif $test -x /usr/etc/version; then
2418 osvers=`/usr/etc/version | $awk '{print $2}' |
2419 $sed -e 's/[A-Za-z]$//'`
2425 $test -f /sys/posix.dll &&
2426 $test -f /usr/bin/what &&
2427 set X `/usr/bin/what /sys/posix.dll` &&
2428 $test "$3" = UWIN &&
2432 if $test -f $uname; then
2440 umips) osname=umips ;;
2443 [23]100) osname=mips ;;
2444 next*) osname=next ;;
2446 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2447 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2450 elif $test -f /etc/kconfig; then
2452 if test "$lns" = "$ln -s"; then
2454 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2456 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2463 if test -n "$DJGPP"; then
2472 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2474 'not found') osvers="$4"."$3" ;;
2475 '<3240'|'<>3240') osvers=3.2.0 ;;
2476 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2477 '=3250'|'>3250') osvers=3.2.5 ;;
2481 bsd386) osname=bsd386
2484 cygwin*) osname=cygwin
2487 *dc.osx) osname=dcosx
2493 domainos) osname=apollo
2499 dynixptx*) osname=dynixptx
2500 osvers=`echo "$4"|sed 's/^v//'`
2502 freebsd) osname=freebsd
2504 genix) osname=genix ;;
2506 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2522 netbsd*) osname=netbsd
2525 news-os) osvers="$3"
2527 4*) osname=newsos4 ;;
2531 next*) osname=next ;;
2532 nonstop-ux) osname=nonstopux ;;
2533 POSIX-BC | posix-bc ) osname=posix-bc
2536 powerux | power_ux | powermax_os | powermaxos | \
2537 powerunix | power_unix) osname=powerux
2543 solaris) osname=solaris
2545 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2552 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2556 titanos) osname=titanos
2565 ultrix) osname=ultrix
2568 osf1|mls+) case "$5" in
2571 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2574 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2577 hp*) osname=hp_osf1 ;;
2578 mips) osname=mips_osf1 ;;
2581 unixware) osname=svr5
2587 $2) case "$osname" in
2591 : svr4.x or possibly later
2601 if test -f /stand/boot ; then
2602 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2603 if test -n "$INITPROG" -a -f "$INITPROG"; then
2604 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2605 if test -n "$isesix"; then
2613 *) if test -f /etc/systemid; then
2615 set `echo $3 | $sed 's/\./ /g'` $4
2616 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2618 elif $test -f $src/hints/sco_$1_$2.sh; then
2620 elif $test -f $src/hints/sco_$1.sh; then
2625 '') : Still unknown. Probably a generic Sys V.
2634 *) case "$osname" in
2635 '') : Still unknown. Probably a generic BSD.
2643 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2644 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2645 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2648 $rm -f UU/kernel.what
2649 elif test -d c:/.; then
2656 : Now look for a hint file osname_osvers, unless one has been
2657 : specified already.
2660 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2661 : Also try without trailing minor version numbers.
2662 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2663 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2664 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2665 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2668 *) case "$osvers" in
2671 *) if $test -f $src/hints/$file.sh ; then
2673 elif $test -f $src/hints/$xfile.sh ; then
2675 elif $test -f $src/hints/$xxfile.sh ; then
2677 elif $test -f $src/hints/$xxxfile.sh ; then
2679 elif $test -f $src/hints/$xxxxfile.sh ; then
2681 elif $test -f "$src/hints/${osname}.sh" ; then
2690 if $test -f Policy.sh ; then
2693 none) dflt="Policy" ;;
2694 *) dflt="Policy $dflt" ;;
2699 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2703 if $test -f Policy.sh ; then
2706 There's also a Policy hint file available, which should make the
2707 site-specific (policy) questions easier to answer.
2714 You may give one or more space-separated answers, or "none" if appropriate.
2715 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2716 is a good thing. DO NOT give a wrong version or a wrong OS.
2720 rp="Which of these apply, if any?"
2723 for file in $tans; do
2724 if $test X$file = XPolicy -a -f Policy.sh; then
2726 $cat Policy.sh >> UU/config.sh
2727 elif $test -f $src/hints/$file.sh; then
2728 . $src/hints/$file.sh
2729 $cat $src/hints/$file.sh >> UU/config.sh
2730 elif $test X$tans = X -o X$tans = Xnone ; then
2733 : Give one chance to correct a possible typo.
2734 echo "$file.sh does not exist"
2736 rp="hint to use instead?"
2738 for file in $ans; do
2739 if $test -f "$src/hints/$file.sh"; then
2740 . $src/hints/$file.sh
2741 $cat $src/hints/$file.sh >> UU/config.sh
2742 elif $test X$ans = X -o X$ans = Xnone ; then
2745 echo "$file.sh does not exist -- ignored."
2752 : Remember our hint file for later.
2753 if $test -f "$src/hints/$file.sh" ; then
2763 echo "Fetching default answers from $config_sh..." >&4
2767 cp $config_sh config.sh 2>/dev/null
2777 test "$override" && . ./optdef.sh
2779 : Restore computed paths
2780 for file in $loclist $trylist; do
2781 eval $file="\$_$file"
2786 Configure uses the operating system name and version to set some defaults.
2787 The default value is probably right if the name rings a bell. Otherwise,
2788 since spelling matters for me, either accept the default or answer "none"
2795 ''|' '|none) dflt=none ;;
2796 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2799 *) dflt="$osname" ;;
2801 rp="Operating system name?"
2805 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2811 ''|' '|none) dflt=none ;;
2812 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2813 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2815 ''|' ') dflt=none ;;
2820 *) dflt="$osvers" ;;
2822 rp="Operating system version?"
2832 : who configured the system
2833 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2834 cf_by=`(logname) 2>/dev/null`
2837 cf_by=`(whoami) 2>/dev/null`
2839 "") cf_by=unknown ;;
2843 : set up the script used to warn in case of inconsistency
2850 echo "*** WHOA THERE!!! ***" >&4
2851 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2852 rp=" Keep the $hint value?"
2855 y) td=$was; tu=$was;;
2859 : function used to set $1 to $val
2860 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2862 $define$undef) . ./whoa; eval "$var=\$td";;
2863 $undef$define) . ./whoa; eval "$var=\$tu";;
2864 *) eval "$var=$val";;
2867 case "$usethreads" in
2868 $define|true|[yY]*) dflt='y';;
2873 Perl can be built to take advantage of threads on some systems.
2874 To do so, Configure can be run with -Dusethreads.
2876 Note that threading is a highly experimental feature, and
2877 some known race conditions still remain. If you choose to try
2878 it, be very sure to not actually deploy it for production
2879 purposes. README.threads has more details, and is required
2880 reading if you enable threads.
2882 If this doesn't make any sense to you, just accept the default '$dflt'.
2884 rp='Build a threading Perl?'
2887 y|Y) val="$define" ;;
2893 case "$usethreads" in
2897 As of 5.5.640, Perl has two different internal threading implementations,
2898 the 5.005 version (5005threads) and an interpreter-based version
2899 (ithreads) that has one interpreter per thread. Both are very
2900 experimental. This arrangement exists to help developers work out
2901 which one is better.
2903 If you're a casual user, you probably don't want interpreter-threads
2904 at this time. There doesn't yet exist a way to create threads from
2905 within Perl in this model, i.e., "use Thread;" will NOT work.
2907 : Default to ithreads unless overridden on command line or with
2910 case "$use5005threads" in
2911 $define|true|[yY]*) dflt='n';;
2913 case "$useithreads" in
2914 $undef|false|[nN]*) dflt='n';;
2916 rp='Use interpreter-based ithreads?'
2919 y|Y) val="$define" ;;
2924 : Now set use5005threads to the opposite value.
2925 case "$useithreads" in
2926 $define) val="$undef" ;;
2933 useithreads="$undef"
2934 use5005threads="$undef"
2938 case "$useithreads$use5005threads" in
2942 You cannot have both the ithreads and the 5.005 threads enabled
2943 at the same time. Disabling the 5.005 threads since they are
2944 much less stable than the ithreads.
2947 use5005threads="$undef"
2951 case "$d_oldpthreads" in
2952 '') : Configure tests would be welcome here. For now, assume undef.
2954 *) val="$d_oldpthreads" ;;
2960 case "$usethreads" in
2961 "$define"|true|[yY]*)
2962 : Look for a hint-file generated 'call-back-unit'. If the
2963 : user has specified that a threading perl is to be built,
2964 : we may need to set or change some other defaults.
2965 if $test -f usethreads.cbu; then
2966 echo "Your platform has some specific hints for threaded builds, using them..."
2970 (Your platform doesn't have any specific hints for threaded builds.
2971 Assuming POSIX threads, then.)
2979 Perl can be built so that multiple Perl interpreters can coexist
2980 within the same Perl executable.
2983 case "$useithreads" in
2986 This multiple interpreter support is required for interpreter-based threads.
2990 *) case "$usemultiplicity" in
2991 $define|true|[yY]*) dflt='y';;
2995 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2996 rp='Build Perl for multiplicity?'
2999 y|Y) val="$define" ;;
3007 : make some quick guesses about what we are up against
3009 $echo $n "Hmm... $c"
3019 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3020 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3022 echo "Looks kind of like an OSF/1 system, but we'll see..."
3024 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3025 xxx=`./loc addbib blurfl $pth`
3026 if $test -f $xxx; then
3027 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3031 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3032 echo "Looks kind of like an extended USG system, but we'll see..."
3034 echo "Looks kind of like a USG system, but we'll see..."
3038 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3039 echo "Looks kind of like a BSD system, but we'll see..."
3043 echo "Looks kind of like a Version 7 system, but we'll see..."
3046 case "$eunicefix" in
3049 There is, however, a strange, musty smell in the air that reminds me of
3050 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3054 : it so happens the Eunice I know will not run shell scripts in Unix format
3058 echo "Congratulations. You aren't running Eunice."
3062 : Detect OS2. The p_ variable is set above in the Head.U unit.
3063 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3064 : semicolon as a patch separator
3069 I have the feeling something is not exactly right, however...don't tell me...
3070 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3071 (Or you may be running DOS with DJGPP.)
3076 if test -f /xenix; then
3077 echo "Actually, this looks more like a XENIX system..."
3082 echo "It's not Xenix..."
3087 if test -f /venix; then
3088 echo "Actually, this looks more like a VENIX system..."
3095 echo "Nor is it Venix..."
3098 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3099 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3106 rp="Use which C compiler?"
3109 : Look for a hint-file generated 'call-back-unit'. Now that the
3110 : user has specified the compiler, we may need to set or change some
3112 if $test -f cc.cbu; then
3118 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3119 $cat >gccvers.c <<EOM
3124 printf("%s\n", __VERSION__);
3126 printf("%s\n", "1");
3132 if $cc -o gccvers $ldflags gccvers.c; then
3133 gccversion=`./gccvers`
3134 case "$gccversion" in
3135 '') echo "You are not using GNU cc." ;;
3136 *) echo "You are using GNU cc $gccversion."
3142 echo "*** WHOA THERE!!! ***" >&4
3143 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3144 case "$knowitall" in
3146 echo " You'd better start hunting for one and let me know about it." >&4
3152 case "$gccversion" in
3153 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3155 case "$gccversion" in
3156 '') gccosandvers='' ;;
3157 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3158 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3160 case "$gccosandvers" in
3161 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3162 $osname$osvers) ;; # looking good
3163 $osname*) cat <<EOM >&4
3165 *** WHOA THERE!!! ***
3167 Your gcc has not been compiled for the exact release of
3168 your operating system ($gccosandvers versus $osname$osvers).
3170 In general it is a good idea to keep gcc synchronized with
3171 the operating system because otherwise serious problems
3172 may ensue when trying to compile software, like Perl.
3174 I'm trying to be optimistic here, though, and will continue.
3175 If later during the configuration and build icky compilation
3176 problems appear (headerfile conflicts being the most common
3177 manifestation), I suggest reinstalling the gcc to match
3178 your operating system release.
3182 *) gccosandvers='' ;; # failed to parse, better be silent
3190 : see how we invoke the C preprocessor
3192 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3193 cat <<'EOT' >testcpp.c
3199 if test ! -f cppstdin; then
3200 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3201 # AIX cc -E doesn't show the absolute headerfile
3202 # locations but we'll cheat by using the -M flag.
3203 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
3205 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3208 echo "Keeping your $hint cppstdin wrapper."
3211 wrapper=`pwd`/cppstdin
3215 if $test "X$cppstdin" != "X" && \
3216 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3217 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3219 echo "You used to use $cppstdin $cppminus so we'll use that again."
3221 '') echo "But let's see if we can live without a wrapper..." ;;
3223 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3224 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3226 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3229 echo "(However, $cpprun $cpplast does not work, let's see...)"
3237 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3244 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3245 $cc -E <testcpp.c >testcpp.out 2>&1; \
3246 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3247 echo "Yup, it does."
3250 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3251 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3252 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3253 echo "Yup, it does."
3256 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3257 $cc -P <testcpp.c >testcpp.out 2>&1; \
3258 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3259 echo "Yipee, that works!"
3262 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3263 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3264 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3265 echo "At long last!"
3268 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3269 $cpp <testcpp.c >testcpp.out 2>&1; \
3270 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3274 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3275 $cpp - <testcpp.c >testcpp.out 2>&1; \
3276 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3277 echo "Hooray, it works! I was beginning to wonder."
3280 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3281 $wrapper <testcpp.c >testcpp.out 2>&1; \
3282 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3288 rp="No dice. I can't find a C preprocessor. Name one:"
3292 $x_cpp <testcpp.c >testcpp.out 2>&1
3293 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3294 echo "OK, that will do." >&4
3296 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3311 echo "Perhaps can we force $cc -E using a wrapper..."
3312 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3313 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3319 echo "Nope, we'll have to live without it..."
3333 "$wrapper"|'cppstdin') ;;
3334 *) $rm -f $wrapper;;
3336 $rm -f testcpp.c testcpp.out
3338 : decide how portable to be. Allow command line overrides.
3339 case "$d_portable" in
3341 *) d_portable="$define" ;;
3344 : set up shell script to do ~ expansion
3350 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3353 if $test -f /bin/csh; then
3354 /bin/csh -f -c "glob \$1"
3359 name=\`$expr x\$1 : '..\([^/]*\)'\`
3360 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3361 if $test ! -d "\$dir"; then
3363 echo "\$me: can't locate home directory for: \$name" >&2
3368 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3384 : now set up to get a file name
3388 cat <<'EOSC' >>getfile
3404 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3405 fn=`echo $fn | sed 's/(.*)//'`
3411 loc_file=`expr $fn : '.*:\(.*\)'`
3412 fn=`expr $fn : '\(.*\):.*'`
3420 */*) fullpath=true;;
3429 *e*) exp_file=true;;
3432 *p*) nopath_ok=true;;
3437 *d*) type='Directory';;
3438 *l*) type='Locate';;
3443 Locate) what='File';;
3448 case "$d_portable" in
3456 while test "$type"; do
3461 true) rp="$rp (~name ok)";;
3464 if test -f UU/getfile.ok && \
3465 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3484 value=`UU/filexp $ans`
3487 if test "$ans" != "$value"; then
3488 echo "(That expands to $value on this system.)"
3502 /*) value="$ansexp" ;;
3503 [a-zA-Z]:/*) value="$ansexp" ;;
3508 echo "I shall only accept a full path name, as in /bin/ls." >&4
3509 echo "Use a ! shell escape if you wish to check pathnames." >&4
3512 echo "Please give a full path name, starting with slash." >&4
3515 echo "Note that using ~name is ok provided it expands well." >&4
3528 for fp in $gfpth; do
3529 if test "X$fp" = X.; then
3534 if test -f "$pf"; then
3536 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3538 echo "($value is not a plain file, but that's ok.)"
3541 if test X"$type" = X; then
3548 for fp in $gfpth; do
3549 if test "X$fp" = X.; then
3554 direxp="$fp/$ansexp"
3556 if test -d "$direxp"; then
3564 if test -d "$ansexp"; then
3565 echo "(Looking for $loc_file in directory $value.)"
3566 value="$value/$loc_file"
3567 ansexp="$ansexp/$loc_file"
3569 if test -f "$ansexp"; then
3572 case "$nopath_ok" in
3573 true) case "$value" in
3575 *) echo "Assuming $value will be in people's path."
3591 if test "$fastread" = yes; then
3596 rp="$what $value doesn't exist. Use that name anyway?"
3615 test "X$gfpthkeep" != Xy && gfpth=""
3618 : What should the include directory be ?
3620 $echo $n "Hmm... $c"
3624 if $test -f /bin/mips && /bin/mips; then
3625 echo "Looks like a MIPS system..."
3626 $cat >usr.c <<'EOCP'
3627 #ifdef SYSTYPE_BSD43
3631 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3632 dflt='/bsd43/usr/include'
3636 mips_type='System V'
3638 $rm -f usr.c usr.out
3639 echo "and you're compiling with the $mips_type compiler and libraries."
3643 echo "Doesn't look like a MIPS system."
3653 case "$xxx_prompt" in
3656 rp='Where are the include files you want to use?'
3664 : Set private lib path
3667 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3672 '') dlist="$loclibpth $plibpth $glibpth";;
3673 *) dlist="$libpth";;
3676 : Now check and see which directories actually exist, avoiding duplicates
3680 if $test -d $xxx; then
3683 *) libpth="$libpth $xxx";;
3689 Some systems have incompatible or broken versions of libraries. Among
3690 the directories listed in the question below, please remove any you
3691 know not to be holding relevant libraries, and add any that are needed.
3692 Say "none" for none.
3703 rp="Directories to use for library searches?"
3710 : compute shared library extension
3713 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3723 On some systems, shared libraries may be available. Answer 'none' if
3724 you want to suppress searching of shared libraries for the remainder
3725 of this configuration.
3728 rp='What is the file extension used for shared libraries?'
3732 : Define several unixisms.
3733 : Hints files or command line option can be used to override them.
3734 : The convoluted testing is in case hints files set either the old
3737 '') case "$exe_ext" in
3739 *) _exe="$exe_ext" ;;
3744 '') case "$lib_ext" in
3751 '') case "$obj_ext" in
3758 '') case "$path_sep" in
3769 : Which makefile gets called first. This is used by make depend.
3770 case "$firstmakefile" in
3771 '') firstmakefile='makefile';;
3775 $define|true|[yY]*) dflt='y';;
3780 Perl can be built to use the SOCKS proxy protocol library. To do so,
3781 Configure must be run with -Dusesocks. If you use SOCKS you also need
3782 to use the PerlIO abstraction layer, this will be implicitly selected.
3784 If this doesn't make any sense to you, just accept the default '$dflt'.
3786 rp='Build Perl for SOCKS?'
3789 y|Y) val="$define" ;;
3796 $define|true|[yY]*) useperlio="$define";;
3799 : Looking for optional libraries
3801 echo "Checking for optional libraries..." >&4
3806 case "$libswanted" in
3807 '') libswanted='c_s';;
3810 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3816 for thisdir in $libpth $xlibpth; do
3817 test -d $thisdir && libspath="$libspath $thisdir"
3819 for thislib in $libswanted; do
3820 for thisdir in $libspath; do
3822 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3823 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3824 $test -f "$xxx" && eval $libscheck
3825 $test -f "$xxx" && libstyle=shared
3827 if test ! -f "$xxx"; then
3828 xxx=$thisdir/lib$thislib.$so
3829 $test -f "$xxx" && eval $libscheck
3830 $test -f "$xxx" && libstyle=shared
3832 if test ! -f "$xxx"; then
3833 xxx=$thisdir/lib$thislib$_a
3834 $test -f "$xxx" && eval $libscheck
3835 $test -f "$xxx" && libstyle=static
3837 if test ! -f "$xxx"; then
3838 xxx=$thisdir/$thislib$_a
3839 $test -f "$xxx" && eval $libscheck
3840 $test -f "$xxx" && libstyle=static
3842 if test ! -f "$xxx"; then
3843 xxx=$thisdir/lib${thislib}_s$_a
3844 $test -f "$xxx" && eval $libscheck
3845 $test -f "$xxx" && libstyle=static
3846 $test -f "$xxx" && thislib=${thislib}_s
3848 if test ! -f "$xxx"; then
3849 xxx=$thisdir/Slib$thislib$_a
3850 $test -f "$xxx" && eval $libscheck
3851 $test -f "$xxx" && libstyle=static
3853 if $test -f "$xxx"; then
3855 shared) echo "Found -l$thislib (shared)." ;;
3856 static) echo "Found -l$thislib." ;;
3857 *) echo "Found -l$thislib ($libstyle)." ;;
3861 *) dflt="$dflt -l$thislib"
3862 libsfound="$libsfound $xxx"
3864 libsfiles="$libsfiles $yyy"
3865 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3866 case " $libsdirs " in
3868 *) libsdirs="$libsdirs $yyy" ;;
3875 if $test ! -f "$xxx"; then
3876 echo "No -l$thislib."
3887 ' '|'') dflt='none';;
3892 In order to compile $package on your machine, a number of libraries
3893 are usually needed. Include any other special libraries here as well.
3894 Say "none" for none. The default list is almost always right.
3898 rp="What libraries to use?"
3905 : determine optimization, if desired, or use for debug flag also
3907 ' '|$undef) dflt='none';;
3909 *) dflt="$optimize";;
3913 By default, $package compiles with the -O flag to use the optimizer.
3914 Alternately, you might want to use the symbolic debugger, which uses
3915 the -g flag (on traditional Unix systems). Either flag can be
3916 specified here. To use neither flag, specify the word "none".
3919 rp="What optimizer/debugger flag should be used?"
3923 'none') optimize=" ";;
3927 : We will not override a previous value, but we might want to
3928 : augment a hint file
3930 default|recommended)
3931 case "$gccversion" in
3932 1*) dflt='-fpcc-struct-return' ;;
3935 *-g*) dflt="$dflt -DDEBUGGING";;
3937 case "$gccversion" in
3938 2*) if test -d /etc/conf/kconfig.d &&
3939 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3945 case "$gccversion" in
3949 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3950 echo 'int main(void) { return 0; }' > gcctest.c
3951 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3952 echo "Yes, it does." 2>&1
3955 echo "Leaving current flags $ccflags alone." 2>&1
3957 *) dflt="$dflt -fno-strict-aliasing" ;;
3960 echo "Nope, it doesn't, but that's ok." 2>&1
3967 case "$mips_type" in
3968 *BSD*|'') inclwanted="$locincpth $usrinc";;
3969 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3971 for thisincl in $inclwanted; do
3972 if $test -d $thisincl; then
3973 if $test x$thisincl != x$usrinc; then
3975 *" -I$thisincl "*);;
3976 *) dflt="$dflt -I$thisincl ";;
3982 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3984 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3992 *) dflt="$dflt -D$2";;
3996 set signal.h LANGUAGE_C; eval $inctest
4000 ccflags="$ccflags -DSOCKS"
4005 default|recommended) dflt="$ccflags $dflt" ;;
4006 *) dflt="$ccflags";;
4015 Your C compiler may want other flags. For this question you should include
4016 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4017 but you should NOT include libraries or ld flags like -lwhatever. If you
4018 want $package to honor its debug switch, you should include -DDEBUGGING here.
4019 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4021 To use no flags, specify the word "none".
4027 rp="Any additional cc flags?"
4034 : the following weeds options from ccflags that are of no interest to cpp
4036 case "$gccversion" in
4037 1*) cppflags="$cppflags -D__GNUC__"
4039 case "$mips_type" in
4041 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4047 echo "Let me guess what the preprocessor flags are..." >&4
4061 *) ftry="$previous $flag";;
4063 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4064 >cpp1.out 2>/dev/null && \
4065 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4066 >cpp2.out 2>/dev/null && \
4067 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4068 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4070 cppflags="$cppflags $ftry"
4080 *-*) echo "They appear to be: $cppflags";;
4082 $rm -f cpp.c cpp?.out
4086 : flags used in final linking phase
4088 '') if ./venix; then
4094 *-posix*) dflt="$dflt -posix" ;;
4097 *) dflt="$ldflags";;
4100 : Try to guess additional flags to pick up local libraries.
4101 for thislibdir in $libpth; do
4102 case " $loclibpth " in
4105 *"-L$thislibdir "*) ;;
4106 *) dflt="$dflt -L$thislibdir" ;;
4118 Your C linker may need flags. For this question you should
4119 include -L/whatever and any other flags used by the C linker, but you
4120 should NOT include libraries like -lwhatever.
4122 Make sure you include the appropriate -L/path flags if your C linker
4123 does not normally search all of the directories you specified above,
4126 To use no flags, specify the word "none".
4130 rp="Any additional ld flags (NOT including libraries)?"
4136 rmlist="$rmlist pdp11"
4140 echo "Checking your choice of C compiler and flags for coherency..." >&4
4141 $cat > try.c <<'EOF'
4143 int main() { printf("Ok\n"); exit(0); }
4145 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4147 $cat >try.msg <<'EOM'
4148 I've tried to compile and run the following simple program:
4151 $cat try.c >> try.msg
4153 $cat >> try.msg <<EOM
4160 and I got the following output:
4164 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4165 if $sh -c './try' >>try.msg 2>&1; then
4169 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4172 cat >> try.msg <<'EOQS'
4173 If $libs contains -lsfio, and sfio is mis-configured, then it
4174 sometimes (apparently) runs and exits with a 0 status, but with no
4175 output! It may have to do with sfio's use of _exit vs. exit.
4178 rp="You have a big problem. Shall I abort Configure"
4185 echo "The program compiled OK, but exited with status $?." >>try.msg
4186 rp="You have a problem. Shall I abort Configure"
4190 echo "I can't compile the test program." >>try.msg
4191 rp="You have a BIG problem. Shall I abort Configure"
4197 case "$knowitall" in
4199 echo "(The supplied flags or libraries might be incorrect.)"
4207 *) echo "Ok. Stopping Configure." >&4
4212 n) echo "OK, that should do.";;
4214 $rm -f try try.* core
4216 : define an is-a-typedef? function
4217 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4219 "") inclist="sys/types.h";;
4221 eval "varval=\$$var";
4225 for inc in $inclist; do
4226 echo "#include <$inc>" >>temp.c;
4228 echo "#ifdef $type" >> temp.c;
4229 echo "printf(\"We have $type\");" >> temp.c;
4230 echo "#endif" >> temp.c;
4231 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4232 if $contains $type temp.E >/dev/null 2>&1; then
4238 *) eval "$var=\$varval";;
4241 : define an is-a-typedef? function that prompts if the type is not available.
4242 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4244 "") inclist="sys/types.h";;
4246 eval "varval=\$$var";
4250 for inc in $inclist; do
4251 echo "#include <$inc>" >>temp.c;
4253 echo "#ifdef $type" >> temp.c;
4254 echo "printf(\"We have $type\");" >> temp.c;
4255 echo "#endif" >> temp.c;
4256 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4258 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4259 if $contains $type temp.E >/dev/null 2>&1; then
4260 echo "$type found." >&4;
4263 echo "$type NOT found." >&4;
4269 *) eval "$var=\$varval";;
4272 : define a shorthand compile call
4276 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4277 : define a shorthand compile call for compilations that should be ok.
4281 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4283 : check for lengths of integral types
4287 echo "Checking to see how big your integers are..." >&4
4288 $cat >intsize.c <<'EOCP'
4292 printf("intsize=%d;\n", (int)sizeof(int));
4293 printf("longsize=%d;\n", (int)sizeof(long));
4294 printf("shortsize=%d;\n", (int)sizeof(short));
4299 if eval $compile_ok && ./intsize > /dev/null; then
4301 echo "Your integers are $intsize bytes long."
4302 echo "Your long integers are $longsize bytes long."
4303 echo "Your short integers are $shortsize bytes long."
4307 Help! I can't compile and run the intsize test program: please enlighten me!
4308 (This is probably a misconfiguration in your system or libraries, and
4309 you really ought to fix it. Still, I'll try anyway.)
4313 rp="What is the size of an integer (in bytes)?"
4317 rp="What is the size of a long integer (in bytes)?"
4321 rp="What is the size of a short integer (in bytes)?"
4327 $rm -f intsize intsize.*
4329 : see what type lseek is declared as in the kernel
4330 rp="What is the type used for lseek's offset on this system?"
4331 set off_t lseektype long stdio.h sys/types.h
4335 echo "Checking to see how big your file offsets are..." >&4
4337 #include <sys/types.h>
4341 printf("%d\n", (int)sizeof($lseektype));
4346 if eval $compile_ok; then
4348 echo "Your file offsets are $lseeksize bytes long."
4352 echo "(I can't seem to compile the test program. Guessing...)"
4353 rp="What is the size of your file offsets (in bytes)?"
4359 : see what type file positions are declared as in the library
4360 rp="What is the type for file position used by fsetpos()?"
4361 set fpos_t fpostype long stdio.h sys/types.h
4366 *_t) zzz="$fpostype" ;;
4369 echo "Checking the size of $zzz..." >&4
4371 #include <sys/types.h>
4374 printf("%d\n", (int)sizeof($fpostype));
4379 if eval $compile_ok; then
4383 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4386 echo "Your $zzz is $fpossize bytes long."
4392 echo "(I can't compile the test program. Guessing...)" >&4
4393 rp="What is the size of your file positions (in bytes)?"
4400 # Backward compatibility (uselfs is deprecated).
4402 "$define"|true|[yY]*)
4405 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4407 uselargefiles="$define"
4411 case "$lseeksize:$fpossize" in
4414 You can have files larger than 2 gigabytes.
4417 *) case "$uselargefiles" in
4418 "$undef"|false|[nN]*) dflt='n' ;;
4423 Perl can be built to understand large files (files larger than 2 gigabytes)
4424 on some systems. To do so, Configure can be run with -Duselargefiles.
4426 If this doesn't make any sense to you, just accept the default '$dflt'.
4428 rp='Try to understand large files, if available?'
4431 y|Y) val="$define" ;;
4438 case "$uselargefiles" in
4440 : Look for a hint-file generated 'call-back-unit'. If the
4441 : user has specified that a large files perl is to be built,
4442 : we may need to set or change some other defaults.
4443 if $test -f uselargefiles.cbu; then
4444 echo "Your platform has some specific hints for large file builds, using them..."
4445 . ./uselargefiles.cbu
4447 echo "Rechecking to see how big your file offsets are..." >&4
4449 #include <sys/types.h>
4453 printf("%d\n", (int)sizeof($lseektype));
4458 if eval $compile_ok; then
4460 $echo "Your file offsets are now $lseeksize bytes long."
4464 echo "(I can't seem to compile the test program. Guessing...)"
4465 rp="What is the size of your file offsets (in bytes)?"
4470 *_t) zzz="$fpostype" ;;
4473 $echo $n "Rechecking the size of $zzz...$c" >&4
4475 #include <sys/types.h>
4478 printf("%d\n", (int)sizeof($fpostype));
4483 if eval $compile_ok; then
4488 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4491 echo " $fpossize bytes." >&4
4497 echo "(I can't compile the test program. Guessing...)" >&4
4498 rp="What is the size of your file positions (in bytes)?"
4508 case "$usemorebits" in
4509 "$define"|true|[yY]*)
4510 use64bitint="$define"
4511 uselongdouble="$define"
4512 usemorebits="$define"
4514 *) usemorebits="$undef"
4519 case "$uselonglong" in
4520 "$define"|true|[yY]*)
4523 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4525 use64bitint="$define"
4528 case "$use64bits" in
4529 "$define"|true|[yY]*)
4532 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4534 use64bitint="$define"
4537 case "$use64bitints" in
4538 "$define"|true|[yY]*)
4541 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4543 use64bitint="$define"
4546 case "$use64bitsint" in
4547 "$define"|true|[yY]*)
4550 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4552 use64bitint="$define"
4555 case "$uselonglongs" in
4556 "$define"|true|[yY]*)
4559 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4561 use64bitint="$define"
4564 case "$use64bitsall" in
4565 "$define"|true|[yY]*)
4568 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4570 use64bitall="$define"
4575 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4577 case "$use64bitall" in
4578 "$define"|true|[yY]*) use64bitint="$define" ;;
4584 You have natively 64-bit long integers.
4588 *) case "$use64bitint" in
4589 "$define"|true|[yY]*) dflt='y';;
4594 Perl can be built to take advantage of 64-bit integer types
4595 on some systems. To do so, Configure can be run with -Duse64bitint.
4596 Choosing this option will most probably introduce binary incompatibilities.
4598 If this doesn't make any sense to you, just accept the default '$dflt'.
4600 rp='Try to use 64-bit integers, if available?'
4603 [yY]*) val="$define" ;;
4611 case "$use64bitall" in
4612 "$define"|true|[yY]*) dflt='y' ;;
4613 *) case "$longsize" in
4621 You may also choose to try maximal 64-bitness. It means using as much
4622 64-bitness as possible on the platform. This in turn means even more
4623 binary incompatibilities. On the other hand, your platform may not
4624 have any more 64-bitness available than what you already have chosen.
4626 If this doesn't make any sense to you, just accept the default '$dflt'.
4628 rp='Try to use maximal 64-bit support, if available?'
4631 [yY]*) val="$define" ;;
4636 case "$use64bitall" in
4638 case "$use64bitint" in
4642 Since you have chosen a maximally 64-bit build, I'm also turning on
4643 the use of 64-bit integers.
4645 use64bitint="$define" ;;
4650 case "$use64bitint" in
4651 "$define"|true|[yY]*)
4652 : Look for a hint-file generated 'call-back-unit'. If the
4653 : user has specified that a 64-bit perl is to be built,
4654 : we may need to set or change some other defaults.
4655 if $test -f use64bitint.cbu; then
4656 echo "Your platform has some specific hints for 64-bit integers, using them..."
4660 4) case "$archname64" in
4661 '') archname64=64int ;;
4668 case "$use64bitall" in
4669 "$define"|true|[yY]*)
4670 : Look for a hint-file generated 'call-back-unit'. If the
4671 : user has specified that a maximally 64-bit perl is to be built,
4672 : we may need to set or change some other defaults.
4673 if $test -f use64bitall.cbu; then
4674 echo "Your platform has some specific hints for 64-bit builds, using them..."
4678 4) case "$archname64" in
4679 ''|64int) archname64=64all ;;
4687 echo "Checking for GNU C Library..." >&4
4688 cat >gnulibc.c <<EOM
4700 if eval $compile_ok && ./gnulibc; then
4702 echo "You are using the GNU C Library"
4705 echo "You are not using the GNU C Library"
4711 : see if nm is to be used to determine whether a symbol is defined or not
4715 case "$d_gnulibc" in
4718 echo "nm probably won't work on the GNU C Library." >&4
4724 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4726 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4727 echo "'nm' won't be sufficient on this sytem." >&4
4733 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4734 if $test $dflt -gt 20; then
4744 true|$define) dflt=y;;
4751 I can use $nm to extract the symbols from your C libraries. This
4752 is a time consuming task which may generate huge output on the disk (up
4753 to 3 megabytes) but that should make the symbols extraction faster. The
4754 alternative is to skip the 'nm' extraction part and to compile a small
4755 test program instead to determine whether each symbol is present. If
4756 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4757 this may be the best solution.
4759 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4762 rp="Shall I use $nm to extract C symbols from the libraries?"
4765 [Nn]*) usenm=false;;
4774 : nm options which may be necessary
4776 '') if $test -f /mach_boot; then
4778 elif $test -d /usr/ccs/lib; then
4779 nm_opt='-p' # Solaris (and SunOS?)
4780 elif $test -f /dgux; then
4782 elif $test -f /lib64/rld; then
4783 nm_opt='-p' # 64-bit Irix
4789 : nm options which may be necessary for shared libraries but illegal
4790 : for archive libraries. Thank you, Linux.
4791 case "$nm_so_opt" in
4792 '') case "$myuname" in
4794 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4795 nm_so_opt='--dynamic'
4804 : get list of predefined functions in a handy place
4809 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4816 *) for thislib in $libs; do
4819 : Handle C library specially below.
4822 thislib=`echo $thislib | $sed -e 's/^-l//'`
4823 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4825 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4827 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4829 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4831 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4833 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4835 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4840 libnames="$libnames $try"
4842 *) libnames="$libnames $thislib" ;;
4851 for xxx in $libpth; do
4852 $test -r $1 || set $xxx/libc.$so
4853 : The messy sed command sorts on library version numbers.
4855 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4856 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4858 s/[0-9][0-9]*/0000&/g
4859 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4862 $sort | $sed -e 's/^.* //'`
4865 $test -r $1 || set /usr/ccs/lib/libc.$so
4866 $test -r $1 || set /lib/libsys_s$_a
4872 if $test -r "$1"; then
4873 echo "Your (shared) C library seems to be in $1."
4875 elif $test -r /lib/libc && $test -r /lib/clib; then
4876 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4878 libc='/lib/clib /lib/libc'
4879 if $test -r /lib/syslib; then
4880 echo "(Your math library is in /lib/syslib.)"
4881 libc="$libc /lib/syslib"
4883 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4884 echo "Your C library seems to be in $libc, as you said before."
4885 elif $test -r $incpath/usr/lib/libc$_a; then
4886 libc=$incpath/usr/lib/libc$_a;
4887 echo "Your C library seems to be in $libc. That's fine."
4888 elif $test -r /lib/libc$_a; then
4890 echo "Your C library seems to be in $libc. You're normal."
4892 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4894 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4895 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4896 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4898 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4900 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4903 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4905 if $test -r "$tans"; then
4906 echo "Your C library seems to be in $tans, of all places."
4912 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4916 If the guess above is wrong (which it might be if you're using a strange
4917 compiler, or your machine supports multiple models), you can override it here.
4922 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4924 I can't seem to find your C library. I've looked in the following places:
4927 $sed 's/^/ /' libpath
4930 None of these seems to contain your C library. I need to get its name...
4935 rp='Where is your C library?'
4940 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4941 set X `cat libnames`
4944 case $# in 1) xxx=file; esac
4945 echo "Extracting names from the following $xxx for later perusal:" >&4
4947 $sed 's/^/ /' libnames >&4
4949 $echo $n "This may take a while...$c" >&4
4953 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4954 *) $nm $nm_opt $file 2>/dev/null;;
4959 $grep fprintf libc.tmp > libc.ptf
4960 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4961 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4963 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4965 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4967 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4969 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4971 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4973 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4975 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4977 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4979 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4981 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4983 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4985 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4987 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4988 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4990 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4992 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4994 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4996 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4998 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5000 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5002 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5004 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5006 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5008 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5010 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5012 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5014 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5016 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5018 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5021 $nm -p $* 2>/dev/null >libc.tmp
5022 $grep fprintf libc.tmp > libc.ptf
5023 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5024 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5030 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5032 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5033 for thisname in $libnames $libc; do
5034 $ar t $thisname >>libc.tmp
5036 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5038 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5039 # Repeat libc to extract forwarders to DLL entries too
5040 for thisname in $libnames $libc; do
5041 $ar tv $thisname >>libc.tmp
5042 # Revision 50 of EMX has bug in $ar.
5043 # it will not extract forwarders to DLL entries
5044 # Use emximp which will extract exactly them.
5045 emximp -o tmp.imp $thisname \
5047 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5048 < tmp.imp >>libc.tmp
5051 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5054 echo "$ar didn't seem to work right." >&4
5055 echo "Maybe this is a Cray...trying bld instead..." >&4
5056 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5058 for thisname in $libnames; do
5060 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5061 $ar t $thisname >>libc.tmp
5065 echo "That didn't work either. Giving up." >&4
5072 if $test -f /lib/syscalls.exp; then
5074 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5075 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5079 $rm -f libnames libpath
5081 : is a C symbol defined?
5084 -v) tf=libc.tmp; tc=""; tdc="";;
5085 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5086 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5089 case "$reuseval-$4" in
5091 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5097 if $contains $tlook $tf >/dev/null 2>&1;
5102 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5103 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5111 $define) tval=true;;
5117 : define an is-in-libc? function
5118 inlibc='echo " "; td=$define; tu=$undef;
5119 sym=$1; var=$2; eval "was=\$$2";
5121 case "$reuseval$was" in
5131 echo "$sym() found." >&4;
5132 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5134 echo "$sym() NOT found." >&4;
5135 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5139 $define) echo "$sym() found." >&4;;
5140 *) echo "$sym() NOT found." >&4;;
5144 : see if sqrtl exists
5149 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5152 case "$uselongdouble" in
5153 $define|true|[yY]*) dflt='y';;
5158 Perl can be built to take advantage of long doubles which
5159 (if available) may give more accuracy and range for floating point numbers.
5161 If this doesn't make any sense to you, just accept the default '$dflt'.
5163 rp='Try to use long doubles if available?'
5166 y|Y) val="$define" ;;
5172 case "$uselongdouble" in
5173 true|[yY]*) uselongdouble="$define" ;;
5176 case "$uselongdouble" in
5178 : Look for a hint-file generated 'call-back-unit'. If the
5179 : user has specified that long doubles should be used,
5180 : we may need to set or change some other defaults.
5181 if $test -f uselongdouble.cbu; then
5182 echo "Your platform has some specific hints for long doubles, using them..."
5183 . ./uselongdouble.cbu
5186 (Your platform doesn't have any specific hints for long doubles.)
5192 case "$uselongdouble:$d_sqrtl" in
5196 *** You requested the use of long doubles but you do not seem to have
5197 *** the mathematic functions for long doubles. I'm disabling the use
5198 *** of long doubles.
5201 uselongdouble=$undef
5205 : check for length of double
5207 case "$doublesize" in
5209 echo "Checking to see how big your double precision numbers are..." >&4
5210 $cat >try.c <<'EOCP'
5214 printf("%d\n", (int)sizeof(double));
5219 if eval $compile_ok; then
5221 echo "Your double is $doublesize bytes long."
5224 echo "(I can't seem to compile the test program. Guessing...)"
5225 rp="What is the size of a double precision number (in bytes)?"
5233 : check for long doubles
5235 echo "Checking to see if you have long double..." >&4
5236 echo 'int main() { long double x = 7.0; }' > try.c
5238 if eval $compile; then
5240 echo "You have long double."
5243 echo "You do not have long double."
5249 : check for length of long double
5250 case "${d_longdbl}${longdblsize}" in
5253 echo "Checking to see how big your long doubles are..." >&4
5254 $cat >try.c <<'EOCP'
5258 printf("%d\n", sizeof(long double));
5263 if eval $compile; then
5264 longdblsize=`./try$exe_ext`
5265 echo "Your long doubles are $longdblsize bytes long."
5269 echo "(I can't seem to compile the test program. Guessing...)" >&4
5270 rp="What is the size of a long double (in bytes)?"
5274 if $test "X$doublesize" = "X$longdblsize"; then
5275 echo "(That isn't any different from an ordinary double.)"
5281 case "$useperlio" in
5282 $define|true|[yY]*) dflt='y';;
5287 Previous version of $package used the standard IO mechanisms as
5288 defined in <stdio.h>. Versions 5.003_02 and later of perl allow
5289 alternate IO mechanisms via the PerlIO abstraction layer, but the
5290 stdio mechanism is still the default. This abstraction layer can
5291 use AT&T's sfio (if you already have sfio installed) or regular stdio.
5292 Using PerlIO with sfio may cause problems with some extension modules.
5294 If this doesn't make any sense to you, just accept the default '$dflt'.
5296 rp='Use the experimental PerlIO abstraction layer?'
5303 echo "Ok, doing things the stdio way."
5312 case "$useperlio" in
5313 $define|true|[yY]*) ;;
5316 You are using the SOCKS proxy protocol library which means that you
5317 should also use the PerlIO layer. You may be headed for trouble.
5326 : determine the architecture name
5328 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5329 tarch=`arch`"-$osname"
5330 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5331 if uname -m > tmparch 2>&1 ; then
5332 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5333 -e 's/$/'"-$osname/" tmparch`
5341 case "$myarchname" in
5344 echo "(Your architecture name used to be $myarchname.)"
5351 *) dflt="$archname";;
5353 rp='What is your architecture name'
5356 case "$usethreads" in
5358 echo "Threads selected." >&4
5360 *-thread*) echo "...and architecture name already has -thread." >&4
5362 *) archname="$archname-thread"
5363 echo "...setting architecture name to $archname." >&4
5368 case "$usemultiplicity" in
5370 echo "Multiplicity selected." >&4
5372 *-multi*) echo "...and architecture name already has -multi." >&4
5374 *) archname="$archname-multi"
5375 echo "...setting architecture name to $archname." >&4
5380 case "$use64bitint$use64bitall" in
5382 case "$archname64" in
5384 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5387 case "$use64bitint" in
5388 "$define") echo "64 bit integers selected." >&4 ;;
5390 case "$use64bitall" in
5391 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5394 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5396 *) archname="$archname-$archname64"
5397 echo "...setting architecture name to $archname." >&4
5403 case "$uselongdouble" in
5405 echo "Long doubles selected." >&4
5406 case "$longdblsize" in
5408 "...but long doubles are equal to doubles, not changing architecture name." >&4
5412 *-ld*) echo "...and architecture name already has -ld." >&4
5414 *) archname="$archname-ld"
5415 echo "...setting architecture name to $archname." >&4
5422 case "$useperlio" in
5424 echo "Perlio selected." >&4
5426 *-perlio*) echo "...and architecture name already has -perlio." >&4
5428 *) archname="$archname-perlio"
5429 echo "...setting architecture name to $archname." >&4
5435 : determine root of directory hierarchy where package will be installed.
5438 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5446 By default, $package will be installed in $dflt/bin, manual pages
5447 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5448 installation directories. Typically this is something like /usr/local.
5449 If you wish to have binaries under /usr/bin but other parts of the
5450 installation under /usr/local, that's ok: you will be prompted
5451 separately for each of the installation directories, the prefix being
5452 only used to set the defaults.
5456 rp='Installation prefix to use?'
5464 *) oldprefix="$prefix";;
5474 $define|true) afs=true ;;
5475 $undef|false) afs=false ;;
5476 *) if test -d /afs; then
5484 echo "AFS may be running... I'll be extra cautious then..." >&4
5486 echo "AFS does not seem to be running..." >&4
5489 : determine installation prefix for where package is to be installed.
5493 Since you are running AFS, I need to distinguish the directory in which
5494 files will reside from the directory in which they are installed (and from
5495 which they are presumably copied to the former directory by occult means).
5498 case "$installprefix" in
5499 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5500 *) dflt="$installprefix";;
5505 In some special cases, particularly when building $package for distribution,
5506 it is convenient to distinguish between the directory in which files should
5507 be installed from the directory ($prefix) in which they
5508 will eventually reside. For most users, these two directories are the same.
5511 case "$installprefix" in
5513 *) dflt=$installprefix;;
5517 rp='What installation prefix should I use for installing files?'
5519 installprefix="$ans"
5520 installprefixexp="$ansexp"
5522 : set the prefixit variable, to compute a suitable default value
5523 prefixit='case "$3" in
5525 case "$oldprefix" in
5526 "") eval "$1=\"\$$2\"";;
5533 ""|" ") eval "$1=\"\$$2\"";;
5539 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5541 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5542 /*-$oldprefix/*|\~*-$oldprefix/*)
5543 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5544 *) eval "$1=\"\$$2\"";;
5549 : get the patchlevel
5551 echo "Getting the current patchlevel..." >&4
5552 if $test -r $rsrc/patchlevel.h;then
5553 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5554 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5555 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5556 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5557 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5558 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5567 $echo "(You have $package version $patchlevel subversion $subversion.)"
5570 : XXX Should be a Configure test for double-dots in filenames.
5571 version=`echo $revision $patchlevel $subversion | \
5572 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5573 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5574 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5577 version=`echo $revision $patchlevel $subversion | \
5578 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5579 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5580 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5583 : Special case the 5.005_xx maintenance series, which used 5.005
5584 : without any subversion label as a subdirectory in $sitelib
5585 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5586 api_versionstring='5.005'
5589 : determine installation style
5590 : For now, try to deduce it from prefix unless it is already set.
5591 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5592 case "$installstyle" in
5593 '') case "$prefix" in
5594 *perl*) dflt='lib';;
5595 *) dflt='lib/perl5' ;;
5598 *) dflt="$installstyle" ;;
5600 : Probably not worth prompting for this since we prompt for all
5601 : the directories individually, and the prompt would be too long and
5605 : determine where private library files go
5606 : Usual default is /usr/local/lib/perl5/$version.
5607 : Also allow things like /opt/perl/lib/$version, since
5608 : /opt/perl/lib/perl5... would be redundant.
5609 : The default "style" setting is made in installstyle.U
5610 case "$installstyle" in
5611 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5612 *) set dflt privlib lib/$version ;;
5617 There are some auxiliary files for $package that need to be put into a
5618 private library directory that is accessible by everyone.
5622 rp='Pathname where the private library files will reside?'
5625 privlibexp="$ansexp"
5626 : Change installation prefix, if necessary.
5627 if $test X"$prefix" != X"$installprefix"; then
5628 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5630 installprivlib="$privlibexp"
5633 : set the prefixup variable, to restore leading tilda escape
5634 prefixup='case "$prefixexp" in
5636 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5639 : determine where public architecture dependent libraries go
5642 : privlib default is /usr/local/lib/$package/$version
5643 : archlib default is /usr/local/lib/$package/$version/$archname
5644 : privlib may have an optional trailing /share.
5645 tdflt=`echo $privlib | $sed 's,/share$,,'`
5646 tdflt=$tdflt/$archname
5655 $spackage contains architecture-dependent library files. If you are
5656 sharing libraries in a heterogeneous environment, you might store
5657 these files in a separate location. Otherwise, you can just include
5658 them with the rest of the public library files.
5662 rp='Where do you want to put the public architecture-dependent libraries?'
5665 archlibexp="$ansexp"
5666 if $test X"$archlib" = X"$privlib"; then
5671 : Change installation prefix, if necessary.
5672 if $test X"$prefix" != X"$installprefix"; then
5673 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5675 installarchlib="$archlibexp"
5679 : Binary compatibility with 5.005 is not possible for builds
5680 : with advanced features
5681 case "$usethreads$usemultiplicity" in
5683 bincompat5005="$undef"
5684 d_bincompat5005="$undef"
5688 This version of Perl can be compiled for binary compatibility with 5.005.
5689 If you decide to do so, you will be able to continue using most of the
5690 extensions that were compiled for Perl 5.005.
5693 case "$bincompat5005$d_bincompat5005" in
5694 *"$undef"*) dflt=n ;;
5697 rp='Binary compatibility with Perl 5.005?'
5700 y*) val="$define" ;;
5705 case "$d_bincompat5005" in
5707 bincompat5005="$define"
5709 *) bincompat5005="$undef"
5710 d_bincompat5005="$undef"
5717 : see if setuid scripts can be secure
5720 Some kernels have a bug that prevents setuid #! scripts from being
5721 secure. Some sites have disabled setuid #! scripts because of this.
5723 First let's decide if your kernel supports secure setuid #! scripts.
5724 (If setuid #! scripts would be secure but have been disabled anyway,
5725 don't say that they are secure if asked.)
5730 if $test -d /dev/fd; then
5731 echo "#!$ls" >reflect
5732 chmod +x,u+s reflect
5733 ./reflect >flect 2>&1
5734 if $contains "/dev/fd" flect >/dev/null; then
5735 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5739 If you are not sure if they are secure, I can check but I'll need a
5740 username and password different from the one you are using right now.
5741 If you don't have such a username or don't want me to test, simply
5745 rp='Other username to test security of setuid scripts with?'
5750 case "$d_suidsafe" in
5751 '') echo "I'll assume setuid scripts are *not* secure." >&4
5754 echo "Well, the $hint value is *not* secure." >&4
5756 *) echo "Well, the $hint value *is* secure." >&4
5761 $rm -f reflect flect
5762 echo "#!$ls" >reflect
5763 chmod +x,u+s reflect
5766 echo '"su" will (probably) prompt you for '"$ans's password."
5767 su $ans -c './reflect >flect'
5768 if $contains "/dev/fd" flect >/dev/null; then
5769 echo "Okay, it looks like setuid scripts are secure." >&4
5772 echo "I don't think setuid scripts are secure." >&4
5777 rp='Does your kernel have *secure* setuid scripts?'
5780 [yY]*) val="$define";;
5785 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5786 echo "(That's for file descriptors, not floppy disks.)"
5792 $rm -f reflect flect
5794 : now see if they want to do setuid emulation
5797 case "$d_suidsafe" in
5800 echo "No need to emulate SUID scripts since they are secure here." >& 4
5804 Some systems have disabled setuid scripts, especially systems where
5805 setuid scripts cannot be secure. On systems where setuid scripts have
5806 been disabled, the setuid/setgid bits on scripts are currently
5807 useless. It is possible for $package to detect those bits and emulate
5808 setuid/setgid in a secure fashion. This emulation will only work if
5809 setuid scripts have been disabled in your kernel.
5813 "$define") dflt=y ;;
5816 rp="Do you want to do setuid/setgid emulation?"
5819 [yY]*) val="$define";;
5827 : determine filename position in cpp output
5829 echo "Computing filename position in cpp output for #include directives..." >&4
5830 echo '#include <stdio.h>' > foo.c
5833 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5834 $grep '^[ ]*#.*stdio\.h' | \
5835 while read cline; do
5838 while $test \$# -gt 0; do
5839 if $test -r \`echo \$1 | $tr -d '"'\`; then
5844 pos=\`expr \$pos + 1\`
5856 *) pos="${fieldn}th";;
5858 echo "Your cpp writes the filename in the $pos field of the line."
5860 : locate header file
5865 for usrincdir in $usrinc
5867 if test -f \$usrincdir/\$wanted; then
5868 echo "\$usrincdir/\$wanted"
5872 awkprg='{ print \$$fieldn }'
5873 echo "#include <\$wanted>" > foo\$\$.c
5874 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5875 $grep "^[ ]*#.*\$wanted" | \
5876 while read cline; do
5877 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5879 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5880 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5885 # status = 0: grep returned 0 lines, case statement not executed
5886 # status = 1: headerfile found
5887 # status = 2: while loop executed, no headerfile found
5891 if test \$status -eq 1; then
5898 : define an alternate in-header-list? function
5899 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5900 cont=true; xxf="echo \"<\$1> found.\" >&4";
5901 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5902 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5904 case $# in 4) instead=instead;; *) instead="at last";; esac;
5905 while $test "$cont"; do
5907 var=$2; eval "was=\$$2";
5908 if $test "$xxx" && $test -r "$xxx";
5910 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5913 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5914 set $yyy; shift; shift; yyy=$@;
5915 case $# in 0) cont="";;
5916 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5917 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5918 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5919 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5923 do set $yyy; var=$2; eval "was=\$$2";
5924 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5925 set $yyy; shift; shift; yyy=$@;
5928 : see if this is a malloc.h system
5929 set malloc.h i_malloc
5932 : see if stdlib is available
5933 set stdlib.h i_stdlib
5936 : determine which malloc to compile in
5938 case "$usemymalloc" in
5939 ''|[yY]*|true|$define) dflt='y' ;;
5942 rp="Do you wish to attempt to use the malloc that comes with $package?"
5948 mallocsrc='malloc.c'
5949 mallocobj="malloc$_o"
5950 d_mymalloc="$define"
5953 : Remove malloc from list of libraries to use
5954 echo "Removing unneeded -lmalloc from library list" >&4
5955 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5958 echo "libs = $libs" >&4
5970 : compute the return types of malloc and free
5972 $cat >malloc.c <<END
5976 #include <sys/types.h>
5990 case "$malloctype" in
5992 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5999 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6003 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6010 echo "Your system uses $freetype free(), it would seem." >&4
6014 After $package is installed, you may wish to install various
6015 add-on modules and utilities. Typically, these add-ons will
6016 be installed under $prefix with the rest
6017 of this package. However, you may wish to install such add-ons
6018 elsewhere under a different prefix.
6020 If you do not wish to put everything under a single prefix, that's
6021 ok. You will be prompted for the individual locations; this siteprefix
6022 is only used to suggest the defaults.
6024 The default should be fine for most people.
6028 rp='Installation prefix to use for add-on modules and utilities?'
6029 : XXX Here might be another good place for an installstyle setting.
6030 case "$siteprefix" in
6032 *) dflt=$siteprefix ;;
6035 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6037 case "$siteprefix" in
6041 *) oldsiteprefix="$prefix";;
6046 siteprefixexp="$ansexp"
6048 : determine where site specific libraries go.
6049 : Usual default is /usr/local/lib/perl5/site_perl/$version
6050 : The default "style" setting is made in installstyle.U
6051 : XXX No longer works with Prefixit stuff.
6052 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6054 '') case "$installstyle" in
6055 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6056 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6064 The installation process will create a directory for
6065 site-specific extensions and modules. Most users find it convenient
6066 to place all site-specific files in this directory rather than in the
6067 main distribution directory.
6071 rp='Pathname for the site-specific library files?'
6074 sitelibexp="$ansexp"
6075 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6076 : Change installation prefix, if necessary.
6077 if $test X"$prefix" != X"$installprefix"; then
6078 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6080 installsitelib="$sitelibexp"
6083 : determine where site specific architecture-dependent libraries go.
6084 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6085 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6086 : sitelib may have an optional trailing /share.
6088 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6089 dflt="$dflt/$archname"
6094 set sitearch sitearch none
6098 The installation process will also create a directory for
6099 architecture-dependent site-specific extensions and modules.
6103 rp='Pathname for the site-specific architecture-dependent library files?'
6106 sitearchexp="$ansexp"
6107 : Change installation prefix, if necessary.
6108 if $test X"$prefix" != X"$installprefix"; then
6109 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6111 installsitearch="$sitearchexp"
6116 The installation process will also create a directory for
6117 vendor-supplied add-ons. Vendors who supply perl with their system
6118 may find it convenient to place all vendor-supplied files in this
6119 directory rather than in the main distribution directory. This will
6120 ease upgrades between binary-compatible maintenance versions of perl.
6122 Of course you may also use these directories in whatever way you see
6123 fit. For example, you might use them to access modules shared over a
6124 company-wide network.
6126 The default answer should be fine for most people.
6127 This causes further questions about vendor add-ons to be skipped
6128 and no vendor-specific directories will be configured for perl.
6131 rp='Do you want to configure vendor-specific add-on directories?'
6132 case "$usevendorprefix" in
6133 define|true|[yY]*) dflt=y ;;
6134 *) : User may have set vendorprefix directly on Configure command line.
6135 case "$vendorprefix" in
6144 rp='Installation prefix to use for vendor-supplied add-ons?'
6145 case "$vendorprefix" in
6147 *) dflt=$vendorprefix ;;
6150 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6152 case "$vendorprefix" in
6156 *) oldvendorprefix="$prefix";;
6160 usevendorprefix="$define"
6162 vendorprefixexp="$ansexp"
6164 *) usevendorprefix="$undef"
6170 case "$vendorprefix" in
6171 '') d_vendorlib="$undef"
6175 *) d_vendorlib="$define"
6176 : determine where vendor-supplied modules go.
6177 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6178 case "$vendorlib" in
6180 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6181 case "$installstyle" in
6182 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6183 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6186 *) dflt="$vendorlib"
6190 rp='Pathname for the vendor-supplied library files?'
6193 vendorlibexp="$ansexp"
6196 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6197 : Change installation prefix, if necessary.
6198 if $test X"$prefix" != X"$installprefix"; then
6199 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6201 installvendorlib="$vendorlibexp"
6204 case "$vendorprefix" in
6205 '') d_vendorarch="$undef"
6209 *) d_vendorarch="$define"
6210 : determine where vendor-supplied architecture-dependent libraries go.
6211 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6212 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6213 : vendorlib may have an optional trailing /share.
6214 case "$vendorarch" in
6215 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6216 dflt="$dflt/$archname"
6218 *) dflt="$vendorarch" ;;
6221 rp='Pathname for vendor-supplied architecture-dependent files?'
6224 vendorarchexp="$ansexp"
6227 : Change installation prefix, if necessary.
6228 if $test X"$prefix" != X"$installprefix"; then
6229 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6231 installvendorarch="$vendorarchexp"
6234 : Final catch-all directories to search
6237 Lastly, you can have perl look in other directories for extensions and
6238 modules in addition to those already specified.
6239 These directories will be searched after
6243 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6244 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6246 case "$otherlibdirs" in
6247 ''|' ') dflt='none' ;;
6248 *) dflt="$otherlibdirs" ;;
6251 Enter a colon-separated set of extra paths to include in perl's @INC
6252 search path, or enter 'none' for no extra paths.
6256 rp='Colon-separated list of additional directories for perl to search?'
6259 ' '|''|none) otherlibdirs=' ' ;;
6260 *) otherlibdirs="$ans" ;;
6262 case "$otherlibdirs" in
6266 set d_perl_otherlibdirs
6269 : Cruising for prototypes
6271 echo "Checking out function prototypes..." >&4
6272 $cat >prototype.c <<'EOCP'
6273 int main(int argc, char *argv[]) {
6276 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6277 echo "Your C compiler appears to support function prototypes."
6280 echo "Your C compiler doesn't seem to understand function prototypes."
6287 case "$prototype" in
6289 *) ansi2knr='ansi2knr'
6294 This version of $package can only be compiled by a compiler that
6295 understands function prototypes. Unfortunately, your C compiler
6297 doesn't seem to understand them. Sorry about that.
6299 If GNU cc is available for your system, perhaps you could try that instead.
6301 Eventually, we hope to support building Perl with pre-ANSI compilers.
6302 If you would like to help in that effort, please contact <perlbug@perl.org>.
6304 Aborting Configure now.
6310 : determine where public executables go
6315 rp='Pathname where the public executables will reside?'
6317 if $test "X$ansexp" != "X$binexp"; then
6322 : Change installation prefix, if necessary.
6323 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6324 if $test X"$prefix" != X"$installprefix"; then
6325 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6327 installbin="$binexp"
6330 : Find perl5.005 or later.
6331 echo "Looking for a previously installed perl5.005 or later... "
6333 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6334 : Check if this perl is recent and can load a simple module
6335 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6338 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6348 '') echo "None found. That's ok.";;
6349 *) echo "Using $perl5." ;;
6352 : Determine list of previous versions to include in @INC
6353 $cat > getverlist <<EOPL
6356 \$api_versionstring = "$api_versionstring";
6357 \$version = "$version";
6358 \$stem = "$sitelib_stem";
6359 \$archname = "$archname";
6361 $cat >> getverlist <<'EOPL'
6362 # Can't have leading @ because metaconfig interprets it as a command!
6363 ;@inc_version_list=();
6364 # XXX Redo to do opendir/readdir?
6367 ;@candidates = glob("5.*");
6373 # XXX ToDo: These comparisons must be reworked when two-digit
6374 # subversions come along, so that 5.7.10 compares as greater than
6375 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6376 # widespread that we can use the built-in version vectors rather
6377 # than reinventing them here. For 5.6.0, however, we must
6378 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6379 foreach $d (@candidates) {
6380 if ($d lt $version) {
6381 if ($d ge $api_versionstring) {
6382 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6384 elsif ($d ge "5.005") {
6385 unshift(@inc_version_list, grep { -d } $d);
6389 # Skip newer version. I.e. don't look in
6390 # 5.7.0 if we're installing 5.6.1.
6394 if (@inc_version_list) {
6395 print join(' ', @inc_version_list);
6398 # Blank space to preserve value for next Configure run.
6403 case "$inc_version_list" in
6404 '') if test -x "$perl5"; then
6405 dflt=`$perl5 getverlist`
6410 $undef) dflt='none' ;;
6411 *) dflt="$inc_version_list" ;;
6414 ''|' ') dflt=none ;;
6417 5.005) case "$bincompat5005" in
6418 $define|true|[yY]*) ;;
6425 In order to ease the process of upgrading, this version of perl
6426 can be configured to use modules built and installed with earlier
6427 versions of perl that were installed under $prefix. Specify here
6428 the list of earlier versions that this version of perl should check.
6429 If Configure detected no earlier versions of perl installed under
6430 $prefix, then the list will be empty. Answer 'none' to tell perl
6431 to not search earlier versions.
6433 The default should almost always be sensible, so if you're not sure,
6434 just accept the default.
6437 rp='List of earlier versions to include in @INC?'
6440 [Nn]one|''|' ') inc_version_list=' ' ;;
6441 *) inc_version_list="$ans" ;;
6443 case "$inc_version_list" in
6445 inc_version_list_init='0';;
6446 *) inc_version_list_init=`echo $inc_version_list |
6447 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6452 : determine whether to install perl also as /usr/bin/perl
6455 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6457 Many scripts expect perl to be installed as /usr/bin/perl.
6458 I can install the perl you are about to compile also as /usr/bin/perl
6459 (in addition to $installbin/perl).
6461 case "$installusrbinperl" in
6462 "$undef"|[nN]*) dflt='n';;
6465 rp="Do you want to install perl as /usr/bin/perl?"
6468 [yY]*) val="$define";;
6474 set installusrbinperl
6477 : see if dld is available
6481 : see if dlopen exists
6488 : determine which dynamic loading, if any, to compile in
6490 dldir="ext/DynaLoader"
6503 $define) dflt='y' ;;
6506 $define) dflt='y' ;;
6508 : Does a dl_xxx.xs file exist for this operating system
6509 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6512 rp="Do you wish to use dynamic loading?"
6519 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6520 dflt="$dldir/dl_${osname}.xs"
6521 elif $test "$d_dlopen" = "$define" ; then
6522 dflt="$dldir/dl_dlopen.xs"
6523 elif $test "$i_dld" = "$define" ; then
6524 dflt="$dldir/dl_dld.xs"
6529 *) dflt="$dldir/$dlsrc"
6532 echo "The following dynamic loading files are available:"
6533 : Can not go over to $dldir because getfile has path hard-coded in.
6534 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6535 rp="Source file to use for dynamic loading"
6541 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6545 Some systems may require passing special flags to $cc -c to
6546 compile modules that will be used to create a shared library.
6547 To use no flags, say "none".
6550 case "$cccdlflags" in
6551 '') case "$gccversion" in
6552 '') case "$osname" in
6554 next) dflt='none' ;;
6555 irix*) dflt='-KPIC' ;;
6556 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6557 sunos) dflt='-pic' ;;
6561 *) case "$osname" in
6562 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6567 *) dflt="$cccdlflags" ;;
6569 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6572 none) cccdlflags=' ' ;;
6573 *) cccdlflags="$ans" ;;
6578 Some systems use ld to create libraries that can be dynamically loaded,
6579 while other systems (such as those using ELF) use $cc.
6583 '') $cat >try.c <<'EOM'
6584 /* Test for whether ELF binaries are produced */
6589 int i = open("a.out",O_RDONLY);
6592 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6593 exit(0); /* succeed (yes, it's ELF) */
6598 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6600 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6604 echo "I'll use ld to build dynamic libraries."
6613 rp="What command should be used to create dynamic libraries?"
6619 Some systems may require passing special flags to $ld to create a
6620 library that can be dynamically loaded. If your ld flags include
6621 -L/other/path options to locate libraries outside your loader's normal
6622 search path, you may need to specify those -L options here as well. To
6623 use no flags, say "none".
6626 case "$lddlflags" in
6627 '') case "$osname" in
6628 beos) dflt='-nostart' ;;
6630 case "$gccversion" in
6631 '') dflt="$dflt +vnocompatwarnings" ;;
6634 linux|irix*) dflt='-shared' ;;
6635 next) dflt='none' ;;
6636 solaris) dflt='-G' ;;
6637 sunos) dflt='-assert nodefinitions' ;;
6638 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6642 *) dflt="$lddlflags" ;;
6645 : Try to guess additional flags to pick up local libraries.
6646 : Be careful not to append to a plain 'none'
6650 for thisflag in $ldflags; do
6655 *) dflt="$dflt $thisflag" ;;
6662 ''|' ') dflt='none' ;;
6665 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6668 none) lddlflags=' ' ;;
6669 *) lddlflags="$ans" ;;
6674 Some systems may require passing special flags to $cc to indicate that
6675 the resulting executable will use dynamic linking. To use no flags,
6679 case "$ccdlflags" in
6680 '') case "$osname" in
6681 hpux) dflt='-Wl,-E' ;;
6682 linux) dflt='-rdynamic' ;;
6683 next) dflt='none' ;;
6684 sunos) dflt='none' ;;
6688 *) dflt="$ccdlflags" ;;
6690 rp="Any special flags to pass to $cc to use dynamic linking?"
6693 none) ccdlflags=' ' ;;
6694 *) ccdlflags="$ans" ;;
6708 # No dynamic loading being used, so don't bother even to prompt.
6711 *) case "$useshrplib" in
6712 '') case "$osname" in
6713 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6715 also='Building a shared libperl is required for dynamic loading to work on your system.'
6720 also='Building a shared libperl is needed for MAB support.'
6738 The perl executable is normally obtained by linking perlmain.c with
6739 libperl${_a}, any static extensions (usually just DynaLoader), and
6740 any other libraries needed on this system (such as -lm, etc.). Since
6741 your system supports dynamic loading, it is probably possible to build
6742 a shared libperl.$so. If you will have more than one executable linked
6743 to libperl.$so, this will significantly reduce the size of each
6744 executable, but it may have a noticeable affect on performance. The
6745 default is probably sensible for your system.
6749 rp="Build a shared libperl.$so (y/n)"
6753 useshrplib='true' ;;
6754 *) useshrplib='false' ;;
6759 case "$useshrplib" in
6763 # Figure out a good name for libperl.so. Since it gets stored in
6764 # a version-specific architecture-dependent library, the version
6765 # number isn't really that important, except for making cc/ld happy.
6767 # A name such as libperl.so.3.1
6768 majmin="libperl.$so.$patchlevel.$subversion"
6769 # A name such as libperl.so.301
6770 majonly=`echo $patchlevel $subversion |
6771 $awk '{printf "%d%02d", $1, $2}'`
6772 majonly=libperl.$so.$majonly
6773 # I'd prefer to keep the os-specific stuff here to a minimum, and
6774 # rely on figuring it out from the naming of libc.
6775 case "${osname}${osvers}" in
6778 # XXX How handle the --version stuff for MAB?
6780 linux*) # ld won't link with a bare -lperl otherwise.
6783 cygwin*) # include version
6784 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6786 *) # Try to guess based on whether libc has major.minor.
6788 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6789 *libc.$so.[0-9]*) dflt=$majonly ;;
6790 *) dflt=libperl.$so ;;
6800 I need to select a good name for the shared libperl. If your system uses
6801 library names with major and minor numbers, then you might want something
6802 like $majmin. Alternatively, if your system uses a single version
6803 number for shared libraries, then you might want to use $majonly.
6804 Or, your system might be quite happy with a simple libperl.$so.
6806 Since the shared libperl will get installed into a version-specific
6807 architecture-dependent directory, the version number of the shared perl
6808 library probably isn't important, so the default should be o.k.
6811 rp='What name do you want to give to the shared libperl?'
6814 echo "Ok, I'll use $libperl"
6817 libperl="libperl${_a}"
6821 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6825 WARNING: Use of the shrpdir variable for the installation location of
6826 the shared $libperl is not supported. It was never documented and
6827 will not work in this version. Let me (perlbug@perl.org)
6828 know of any problems this may cause.
6834 But your current setting of $shrpdir is
6835 the default anyway, so it's harmless.
6840 Further, your current attempted setting of $shrpdir
6841 conflicts with the value of $archlibexp/CORE
6842 that installperl will use.
6849 # How will the perl executable find the installed shared $libperl?
6850 # Add $xxx to ccdlflags.
6851 # If we can't figure out a command-line option, use $shrpenv to
6852 # set env LD_RUN_PATH. The main perl makefile uses this.
6853 shrpdir=$archlibexp/CORE
6856 if "$useshrplib"; then
6859 # We'll set it in Makefile.SH...
6865 xxx="-Wl,-R$shrpdir"
6867 linux|irix*|dec_osf)
6868 xxx="-Wl,-rpath,$shrpdir"
6871 # next doesn't like the default...
6874 # beos doesn't like the default, either.
6877 # hpux doesn't like the default, either.
6878 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6881 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6887 # Only add $xxx if it isn't already in ccdlflags.
6888 case " $ccdlflags " in
6890 *) ccdlflags="$ccdlflags $xxx"
6893 Adding $xxx to the flags
6894 passed to $ld so that the perl executable will find the
6895 installed shared $libperl.
6903 # Fix ccdlflags in AIX for building external extensions.
6904 # (For building Perl itself bare -bE:perl.exp is needed,
6905 # Makefile.SH takes care of this.)
6907 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6909 # Respect a hint or command-line value.
6911 '') shrpenv="$tmp_shrpenv" ;;
6913 case "$ldlibpthname" in
6914 '') ldlibpthname=LD_LIBRARY_PATH ;;
6915 none) ldlibpthname='' ;;
6918 : determine where manual pages are on this system
6922 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6923 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6924 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6925 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6926 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6927 sysman=`./loc . /usr/man/man1 $syspath`
6930 if $test -d "$sysman"; then
6931 echo "System manual is in $sysman." >&4
6933 echo "Could not find manual pages in source form." >&4
6936 : determine where manual pages go
6937 set man1dir man1dir none
6941 $spackage has manual pages available in source form.
6945 echo "However, you don't have nroff, so they're probably useless to you."
6947 '') man1dir="none";;
6950 echo "If you don't want the manual sources installed, answer 'none'."
6955 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6956 lookpath="$lookpath $prefixexp/man/p_man/man1"
6957 lookpath="$lookpath $prefixexp/man/u_man/man1"
6958 lookpath="$lookpath $prefixexp/man/man.1"
6960 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6961 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6971 rp="Where do the main $spackage manual pages (source) go?"
6973 if $test "X$man1direxp" != "X$ansexp"; then
6977 man1direxp="$ansexp"
6983 : Change installation prefix, if necessary.
6984 if $test X"$prefix" != X"$installprefix"; then
6985 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6987 installman1dir="$man1direxp"
6990 : What suffix to use on installed man pages
6997 rp="What suffix should be used for the main $spackage man pages?"
6999 '') case "$man1dir" in
7013 *) dflt="$man1ext";;
7020 : see if we can have long filenames
7022 first=123456789abcdef
7024 if (echo hi >$first) 2>/dev/null; then
7025 if $test -f 123456789abcde; then
7026 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7029 echo 'You can have filenames longer than 14 characters.'>&4
7034 You can't have filenames longer than 14 chars.
7035 You can't even think about them!
7041 $rm -rf 123456789abcde*
7043 : determine where library module manual pages go
7044 set man3dir man3dir none
7048 $spackage has manual pages for many of the library modules.
7054 However, you don't have nroff, so they're probably useless to you.
7057 '') man3dir="none";;
7061 case "$d_flexfnam" in
7064 However, your system can't handle the long file names like File::Basename.3.
7067 '') man3dir="none";;
7071 echo "If you don't want the manual sources installed, answer 'none'."
7072 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7074 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7075 if $test -d "$privlib/man/man3"; then
7078 WARNING: Previous versions of perl installed man3 pages into
7079 $privlib/man/man3. This version will suggest a
7080 new default of $dflt.
7084 rp='Do you wish to preserve the old behavior?(y/n)'
7087 y*) dflt="$privlib/man/man3" ;;
7092 *) dflt="$man3dir" ;;
7099 rp="Where do the $package library man pages (source) go?"
7102 man3direxp="$ansexp"
7108 : Change installation prefix, if necessary.
7109 if $test X"$prefix" != X"$installprefix"; then
7110 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7112 installman3dir="$man3direxp"
7115 : What suffix to use on installed man pages
7121 rp="What suffix should be used for the $package library man pages?"
7123 '') case "$man3dir" in
7137 *) dflt="$man3ext";;
7144 : see if we have to deal with yellow pages, now NIS.
7145 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7146 if $test -f /usr/etc/nibindd; then
7148 echo "I'm fairly confident you're on a NeXT."
7150 rp='Do you get the hosts file via NetInfo?'
7159 y*) hostcat='nidump hosts .';;
7160 *) case "$hostcat" in
7161 nidump*) hostcat='';;
7171 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7179 rp='Are you getting the hosts file via yellow pages?'
7182 y*) hostcat='ypcat hosts';;
7183 *) hostcat='cat /etc/hosts';;
7189 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7192 '') test -f /etc/group && groupcat='cat /etc/group';;
7195 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7198 : now get the host name
7200 echo "Figuring out host name..." >&4
7201 case "$myhostname" in
7203 echo 'Maybe "hostname" will work...'
7204 if tans=`sh -c hostname 2>&1` ; then
7212 if $test "$cont"; then
7214 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7215 if tans=`cat /etc/systemid 2>&1` ; then
7217 phostname='cat /etc/systemid'
7218 echo "Whadyaknow. Xenix always was a bit strange..."
7221 elif $test -r /etc/systemid; then
7222 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7225 if $test "$cont"; then
7226 echo 'No, maybe "uuname -l" will work...'
7227 if tans=`sh -c 'uuname -l' 2>&1` ; then
7229 phostname='uuname -l'
7231 echo 'Strange. Maybe "uname -n" will work...'
7232 if tans=`sh -c 'uname -n' 2>&1` ; then
7234 phostname='uname -n'
7236 echo 'Oh well, maybe I can mine it out of whoami.h...'
7237 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7238 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7239 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7241 case "$myhostname" in
7242 '') echo "Does this machine have an identity crisis or something?"
7245 echo "Well, you said $myhostname before..."
7246 phostname='echo $myhostname';;
7252 : you do not want to know about this
7257 if $test "$myhostname" ; then
7259 rp='Your host name appears to be "'$myhostname'".'" Right?"
7267 : bad guess or no guess
7268 while $test "X$myhostname" = X ; do
7270 rp="Please type the (one word) name of your host:"
7275 : translate upper to lower if necessary
7276 case "$myhostname" in
7278 echo "(Normalizing case in your host name)"
7279 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7283 case "$myhostname" in
7285 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7286 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7287 echo "(Trimming domain name from host name--host name is now $myhostname)"
7289 *) case "$mydomain" in
7292 test "X$hostcat" = "Xypcat hosts" &&
7293 ypmatch "$myhostname" hosts 2>/dev/null |\
7294 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7297 test "X$hostcat" != "X" &&
7298 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7299 /[ ]$myhostname[ . ]/p" > hosts
7302 if $test -f hosts; then
7303 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7304 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7305 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7306 hosts | $sort | $uniq | \
7307 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7308 case `$echo X$dflt` in
7309 X*\ *) echo "(Several hosts in the database matched hostname)"
7312 X.) echo "(You do not have fully-qualified names in the hosts database)"
7316 echo "(I cannot locate a hosts database anywhere)"
7321 tans=`./loc resolv.conf X /etc /usr/etc`
7322 if $test -f "$tans"; then
7323 echo "(Attempting domain name extraction from $tans)"
7324 dflt=.`$sed -n -e 's/ / /g' \
7325 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7326 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7328 .) dflt=.`$sed -n -e 's/ / /g' \
7329 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7330 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7337 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7338 dflt=.`sh -c domainname 2>/dev/null`
7341 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7346 .) echo "(Lost all hope -- silly guess then)"
7352 *) dflt="$mydomain";;
7356 rp="What is your domain name?"
7366 : translate upper to lower if necessary
7369 echo "(Normalizing case in your domain name)"
7370 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7374 : a little sanity check here
7375 case "$phostname" in
7378 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7379 $myhostname$mydomain|$myhostname) ;;
7381 case "$phostname" in
7383 echo "(That doesn't agree with your whoami.h file, by the way.)"
7386 echo "(That doesn't agree with your $phostname command, by the way.)"
7396 I need to get your e-mail address in Internet format if possible, i.e.
7397 something like user@host.domain. Please answer accurately since I have
7398 no easy means to double check it. The default value provided below
7399 is most probably close to reality but may not be valid from outside
7400 your organization...
7404 while test "$cont"; do
7406 '') dflt="$cf_by@$myhostname$mydomain";;
7407 *) dflt="$cf_email";;
7409 rp='What is your e-mail address?'
7415 rp='Address does not look like an Internet one. Use it anyway?'
7431 If you or somebody else will be maintaining perl at your site, please
7432 fill in the correct e-mail address here so that they may be contacted
7433 if necessary. Currently, the "perlbug" program included with perl
7434 will send mail to this address in addition to perlbug@perl.org. You may
7435 enter "none" for no administrator.
7438 case "$perladmin" in
7439 '') dflt="$cf_email";;
7440 *) dflt="$perladmin";;
7442 rp='Perl administrator e-mail address'
7446 : determine whether to only install version-specific parts.
7449 Do you want to install only the version-specific parts of the perl
7450 distribution? Usually you do *not* want to do this.
7452 case "$versiononly" in
7453 "$define"|[Yy]*|true) dflt='y' ;;
7456 rp="Do you want to install only the version-specific parts of perl?"
7459 [yY]*) val="$define";;
7465 : figure out how to guarantee perl startup
7466 case "$startperl" in
7468 case "$sharpbang" in
7472 I can use the #! construct to start perl on your system. This will
7473 make startup of perl scripts faster, but may cause problems if you
7474 want to share those scripts and perl is not in a standard place
7475 ($binexp/perl) on all your platforms. The alternative is to force
7476 a shell by starting the script with a single ':' character.
7479 case "$versiononly" in
7480 "$define") dflt="$binexp/perl$version";;
7481 *) dflt="$binexp/perl";;
7483 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7486 none) startperl=": # use perl";;
7487 *) startperl="#!$ans"
7488 if $test 30 -lt `echo "$ans" | wc -c`; then
7491 WARNING: Some systems limit the #! command to 32 characters.
7492 If you experience difficulty running Perl scripts with #!, try
7493 installing Perl in a directory with a shorter pathname.
7499 *) startperl=": # use perl"
7504 echo "I'll use $startperl to start perl scripts."
7506 : figure best path for perl in scripts
7509 perlpath="$binexp/perl"
7510 case "$startperl" in
7515 I will use the "eval 'exec'" idiom to start Perl on your system.
7516 I can use the full path of your Perl binary for this purpose, but
7517 doing so may cause problems if you want to share those scripts and
7518 Perl is not always in a standard place ($binexp/perl).
7522 rp="What path shall I use in \"eval 'exec'\"?"
7529 case "$startperl" in
7531 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7534 : determine where public executable scripts go
7535 set scriptdir scriptdir
7537 case "$scriptdir" in
7540 : guess some guesses
7541 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7542 $test -d /usr/share/bin && dflt=/usr/share/bin
7543 $test -d /usr/local/script && dflt=/usr/local/script
7544 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7545 $test -d $prefixexp/script && dflt=$prefixexp/script
7549 *) dflt="$scriptdir"
7554 Some installations have a separate directory just for executable scripts so
7555 that they can mount it across multiple architectures but keep the scripts in
7556 one spot. You might, for example, have a subdirectory of /usr/share for this.
7557 Or you might just lump your scripts in with all your other executables.
7561 rp='Where do you keep publicly executable scripts?'
7563 if $test "X$ansexp" != "X$scriptdirexp"; then
7567 scriptdirexp="$ansexp"
7568 : Change installation prefix, if necessary.
7569 if $test X"$prefix" != X"$installprefix"; then
7570 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7572 installscript="$scriptdirexp"
7575 : determine where add-on public executables go
7577 '') dflt=$siteprefix/bin ;;
7581 rp='Pathname where the add-on public executables should be installed?'
7584 sitebinexp="$ansexp"
7585 : Change installation prefix, if necessary.
7586 if $test X"$prefix" != X"$installprefix"; then
7587 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7589 installsitebin="$sitebinexp"
7592 case "$vendorprefix" in
7593 '') d_vendorbin="$undef"
7597 *) d_vendorbin="$define"
7598 : determine where vendor-supplied executables go.
7599 case "$vendorbin" in
7600 '') dflt=$vendorprefix/bin ;;
7601 *) dflt="$vendorbin" ;;
7604 rp='Pathname for the vendor-supplied executables directory?'
7607 vendorbinexp="$ansexp"
7610 : Change installation prefix, if necessary.
7611 if $test X"$prefix" != X"$installprefix"; then
7612 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7614 installvendorbin="$vendorbinexp"
7617 : see if qgcvt exists
7623 if $test X"$d_longdbl" = X"$define"; then
7625 echo "Checking how to print long doubles..." >&4
7627 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7628 $cat >try.c <<'EOCP'
7629 #include <sys/types.h>
7633 printf("%.3f\n", d);
7637 if eval $compile; then
7641 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7642 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7643 echo "We will use %f."
7649 if $test X"$sPRIfldbl" = X; then
7650 $cat >try.c <<'EOCP'
7651 #include <sys/types.h>
7654 long double d = 123.456;
7655 printf("%.3llf\n", d);
7659 if eval $compile; then
7663 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7664 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7665 echo "We will use %llf."
7671 if $test X"$sPRIfldbl" = X; then
7672 $cat >try.c <<'EOCP'
7673 #include <sys/types.h>
7676 long double d = 123.456;
7677 printf("%.3Lf\n", d);
7681 if eval $compile; then
7685 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7686 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7687 echo "We will use %Lf."
7693 if $test X"$sPRIfldbl" = X; then
7694 $cat >try.c <<'EOCP'
7695 #include <sys/types.h>
7698 long double d = 123.456;
7699 printf("%.3lf\n", d);
7703 if eval $compile; then
7707 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7708 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7709 echo "We will use %lf."
7715 if $test X"$sPRIfldbl" = X; then
7716 echo "Cannot figure out how to print long doubles." >&4
7718 sSCNfldbl=$sPRIfldbl # expect consistency
7725 case "$sPRIfldbl" in
7726 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7727 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7728 d_SCNfldbl="$undef";
7730 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7731 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7732 d_SCNfldbl="$define";
7736 : Check how to convert floats to strings.
7738 echo "Checking for an efficient way to convert floats to strings."
7740 case "$uselongdouble" in
7741 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7743 case "$d_longdbl" in
7744 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7746 case "$d_PRIgldbl" in
7747 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7751 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7752 char *myname = "gconvert";
7755 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7756 char *myname = "gcvt";
7759 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7760 char *myname = "qgcvt";
7761 #define DOUBLETYPE long double
7764 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7765 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7767 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7769 char *myname = "sprintf";
7773 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7774 #define DOUBLETYPE long double
7776 #define DOUBLETYPE double
7782 #define I_STDLIB $i_stdlib
7788 checkit(expect, got)
7792 if (strcmp(expect, got)) {
7793 printf("%s oddity: Expected %s, got %s\n",
7794 myname, expect, got);
7804 /* This must be 1st test on (which?) platform */
7805 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7806 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7807 checkit("0.1", buf);
7809 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7812 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7813 checkit("1.1", buf);
7815 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7816 checkit("1.01", buf);
7818 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7819 checkit("1.001", buf);
7821 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7822 checkit("1.0001", buf);
7824 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7825 checkit("1.00001", buf);
7827 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7828 checkit("1.000001", buf);
7830 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7833 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7836 /* Some Linux gcvt's give 1.e+5 here. */
7837 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7838 checkit("100000", buf);
7840 /* Some Linux gcvt's give -1.e+5 here. */
7841 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7842 checkit("-100000", buf);
7844 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7845 checkit("123.456", buf);
7850 case "$d_Gconvert" in
7851 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7852 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7853 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7854 *) xxx_list='gconvert gcvt sprintf' ;;
7857 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7858 "$define$define$define")
7859 # for long doubles prefer first qgcvt, then sprintf
7860 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7861 xxx_list="sprintf $xxx_list"
7863 "$define") xxx_list="qgcvt $xxx_list" ;;
7868 for xxx_convert in $xxx_list; do
7869 echo "Trying $xxx_convert..."
7871 set try -DTRY_$xxx_convert
7872 if eval $compile; then
7873 echo "$xxx_convert() found." >&4
7875 echo "I'll use $xxx_convert to convert floats into a string." >&4
7878 echo "...But $xxx_convert didn't work as I expected."
7881 echo "$xxx_convert NOT found." >&4
7885 case "$xxx_convert" in
7886 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7887 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7888 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7889 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7890 "$define$define$define")
7891 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7892 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7897 : see if _fwalk exists
7901 : Initialize h_fcntl
7904 : Initialize h_sysfile
7907 : access call always available on UNIX
7911 : locate the flags for 'access()'
7915 $cat >access.c <<'EOCP'
7916 #include <sys/types.h>
7921 #include <sys/file.h>
7930 : check sys/file.h first, no particular reason here
7931 if $test `./findhdr sys/file.h` && \
7932 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7934 echo "<sys/file.h> defines the *_OK access constants." >&4
7935 elif $test `./findhdr fcntl.h` && \
7936 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7938 echo "<fcntl.h> defines the *_OK access constants." >&4
7939 elif $test `./findhdr unistd.h` && \
7940 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7941 echo "<unistd.h> defines the *_OK access constants." >&4
7943 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7949 : see if accessx exists
7950 set accessx d_accessx
7953 : see if alarm exists
7957 : see if atolf exists
7961 : see if atoll exists
7965 : Look for GNU-cc style attribute checking
7967 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7968 $cat >attrib.c <<'EOCP'
7970 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7972 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7973 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7974 echo "Your C compiler doesn't fully support __attribute__."
7977 echo "Your C compiler supports __attribute__."
7981 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7988 : see if bcmp exists
7992 : see if bcopy exists
7996 : see if this is a unistd.h system
7997 set unistd.h i_unistd
8000 : see if getpgrp exists
8001 set getpgrp d_getpgrp
8004 case "$d_getpgrp" in
8007 echo "Checking to see which flavor of getpgrp is in use..."
8010 #include <sys/types.h>
8012 # include <unistd.h>
8016 if (getuid() == 0) {
8017 printf("(I see you are running Configure as super-user...)\n");
8021 if (getpgrp(1) == 0)
8030 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8031 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8033 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8034 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8037 echo "I can't seem to compile and run the test program."
8039 xxx="a USG one, i.e. you use getpgrp()."
8041 # SVR4 systems can appear rather BSD-ish.
8044 xxx="a BSD one, i.e. you use getpgrp(pid)."
8048 xxx="probably a USG one, i.e. you use getpgrp()."
8053 echo "Assuming your getpgrp is $xxx" >&4
8062 : see if setpgrp exists
8063 set setpgrp d_setpgrp
8066 case "$d_setpgrp" in
8069 echo "Checking to see which flavor of setpgrp is in use..."
8072 #include <sys/types.h>
8074 # include <unistd.h>
8078 if (getuid() == 0) {
8079 printf("(I see you are running Configure as super-user...)\n");
8083 if (-1 == setpgrp(1, 1))
8086 if (setpgrp() != -1)
8092 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8093 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8095 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8096 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8099 echo "(I can't seem to compile and run the test program.)"
8101 xxx="a USG one, i.e. you use setpgrp()."
8103 # SVR4 systems can appear rather BSD-ish.
8106 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8110 xxx="probably a USG one, i.e. you use setpgrp()."
8115 echo "Assuming your setpgrp is $xxx" >&4
8123 : see if bzero exists
8127 : see if signal is declared as pointer to function returning int or void
8129 xxx=`./findhdr signal.h`
8130 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8131 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8132 echo "You have int (*signal())() instead of void." >&4
8134 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8135 echo "You have void (*signal())()." >&4
8137 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8138 echo "You have int (*signal())() instead of void." >&4
8140 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8141 echo "You have void (*signal())()." >&4
8144 case "$d_voidsig" in
8146 echo "I can't determine whether signal handler returns void or int..." >&4
8148 rp="What type does your signal handler return?"
8155 echo "As you already told me, signal handler returns void." >&4
8158 *) echo "As you already told me, signal handler returns int." >&4
8165 case "$d_voidsig" in
8166 "$define") signal_t="void";;
8171 : check for ability to cast large floats to 32-bit ints.
8173 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8174 if $test "$intsize" -ge 4; then
8181 #include <sys/types.h>
8183 $signal_t blech(s) int s; { exit(3); }
8190 signal(SIGFPE, blech);
8192 /* Don't let compiler optimize the test away. Store the number
8193 in a writable string for gcc to pass to sscanf under HP/UX.
8195 sprintf(str, "2147483647");
8196 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8200 /* x86 processors will probably give 0x8000 0000, which is a
8201 sign change. We don't want that. We want to mimic SPARC
8202 behavior here, which is to preserve the sign and give
8205 if (i32 != ($xxx) f)
8211 if eval $compile_ok; then
8215 echo "(I can't seem to compile the test program--assuming it can't)"
8223 echo "Nope, it can't."
8230 : check for ability to cast negative floats to unsigned
8232 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8235 #include <sys/types.h>
8237 $signal_t blech(s) int s; { exit(7); }
8238 $signal_t blech_in_list(s) int s; { exit(4); }
8239 unsigned long dummy_long(p) unsigned long p; { return p; }
8240 unsigned int dummy_int(p) unsigned int p; { return p; }
8241 unsigned short dummy_short(p) unsigned short p; { return p; }
8245 unsigned long along;
8247 unsigned short ashort;
8251 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8252 a direct f = -123. assignment. gcc-2.8.0 reportedly
8253 optimized the whole file away
8255 /* Store the number in a writable string for gcc to pass to
8258 sprintf(str, "-123");
8259 sscanf(str, "%lf", &f); /* f = -123.; */
8261 signal(SIGFPE, blech);
8262 along = (unsigned long)f;
8263 aint = (unsigned int)f;
8264 ashort = (unsigned short)f;
8265 if (along != (unsigned long)-123)
8267 if (aint != (unsigned int)-123)
8269 if (ashort != (unsigned short)-123)
8271 sprintf(str, "1073741824.");
8272 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8275 along = (unsigned long)f;
8276 if (along != 0x80000000)
8280 along = (unsigned long)f;
8281 if (along != 0x7fffffff)
8285 along = (unsigned long)f;
8286 if (along != 0x80000001)
8290 signal(SIGFPE, blech_in_list);
8291 sprintf(str, "123.");
8292 sscanf(str, "%lf", &f); /* f = 123.; */
8293 along = dummy_long((unsigned long)f);
8294 aint = dummy_int((unsigned int)f);
8295 ashort = dummy_short((unsigned short)f);
8296 if (along != (unsigned long)123)
8298 if (aint != (unsigned int)123)
8300 if (ashort != (unsigned short)123)
8307 if eval $compile_ok; then
8311 echo "(I can't seem to compile the test program--assuming it can't)"
8314 case "$castflags" in
8319 echo "Nope, it can't."
8326 : see if vprintf exists
8328 if set vprintf val -f d_vprintf; eval $csym; $val; then
8329 echo 'vprintf() found.' >&4
8331 $cat >vprintf.c <<'EOF'
8332 #include <varargs.h>
8334 int main() { xxx("foo"); }
8343 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8347 if eval $compile && ./vprintf; then
8348 echo "Your vsprintf() returns (int)." >&4
8351 echo "Your vsprintf() returns (char*)." >&4
8355 echo 'vprintf() NOT found.' >&4
8365 : see if chown exists
8369 : see if chroot exists
8373 : see if chsize exists
8377 : check for const keyword
8379 echo 'Checking to see if your C compiler knows about "const"...' >&4
8380 $cat >const.c <<'EOCP'
8381 typedef struct spug { int drokk; } spug;
8388 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8390 echo "Yup, it does."
8393 echo "Nope, it doesn't."
8398 : see if crypt exists
8400 if set crypt val -f d_crypt; eval $csym; $val; then
8401 echo 'crypt() found.' >&4
8405 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8406 if $test -z "$cryptlib"; then
8407 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8411 if $test -z "$cryptlib"; then
8412 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8416 if $test -z "$cryptlib"; then
8417 cryptlib=`./loc libcrypt$_a "" $libpth`
8421 if $test -z "$cryptlib"; then
8422 echo 'crypt() NOT found.' >&4
8431 : get csh whereabouts
8433 'csh') val="$undef" ;;
8438 : Respect a hint or command line value for full_csh.
8440 '') full_csh=$csh ;;
8443 : see if cuserid exists
8444 set cuserid d_cuserid
8447 : see if this is a limits.h system
8448 set limits.h i_limits
8451 : see if this is a float.h system
8455 : See if number of significant digits in a double precision number is known
8457 $cat >dbl_dig.c <<EOM
8467 printf("Contains DBL_DIG");
8470 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8471 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8472 echo "DBL_DIG found." >&4
8475 echo "DBL_DIG NOT found." >&4
8482 : see if difftime exists
8483 set difftime d_difftime
8486 : see if this is a dirent system
8488 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8490 echo "<dirent.h> found." >&4
8493 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8494 echo "<sys/dir.h> found." >&4
8497 xinc=`./findhdr sys/ndir.h`
8499 echo "<dirent.h> NOT found." >&4
8504 : Look for type of directory structure.
8506 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8508 case "$direntrytype" in
8511 $define) guess1='struct dirent' ;;
8512 *) guess1='struct direct' ;;
8515 *) guess1="$direntrytype"
8520 'struct dirent') guess2='struct direct' ;;
8521 *) guess2='struct dirent' ;;
8524 if $contains "$guess1" try.c >/dev/null 2>&1; then
8525 direntrytype="$guess1"
8526 echo "Your directory entries are $direntrytype." >&4
8527 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8528 direntrytype="$guess2"
8529 echo "Your directory entries seem to be $direntrytype." >&4
8531 echo "I don't recognize your system's directory entries." >&4
8532 rp="What type is used for directory entries on this system?"
8540 : see if the directory entry stores field length
8542 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8543 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8544 echo "Good, your directory entry keeps length information in d_namlen." >&4
8547 echo "Your directory entry does not know about the d_namlen field." >&4
8554 : see if dlerror exists
8557 set dlerror d_dlerror
8561 : see if dlfcn is available
8569 On a few systems, the dynamically loaded modules that perl generates and uses
8570 will need a different extension than shared libs. The default will probably
8578 rp='What is the extension of dynamically loaded modules'
8587 : Check if dlsym need a leading underscore
8593 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8594 $cat >dyna.c <<'EOM'
8603 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8605 #include <sys/types.h>
8619 int mode = RTLD_LAZY ;
8621 handle = dlopen("./dyna.$dlext", mode) ;
8622 if (handle == NULL) {
8627 symbol = dlsym(handle, "fred") ;
8628 if (symbol == NULL) {
8629 /* try putting a leading underscore */
8630 symbol = dlsym(handle, "_fred") ;
8631 if (symbol == NULL) {
8644 : Call the object file tmp-dyna.o in case dlext=o.
8645 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8646 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8647 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
8648 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8651 1) echo "Test program failed using dlopen." >&4
8652 echo "Perhaps you should not use dynamic loading." >&4;;
8653 2) echo "Test program failed using dlsym." >&4
8654 echo "Perhaps you should not use dynamic loading." >&4;;
8655 3) echo "dlsym needs a leading underscore" >&4
8657 4) echo "dlsym doesn't need a leading underscore." >&4;;
8660 echo "I can't compile and run the test program." >&4
8661 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8666 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8671 hasproto='varname=$1; func=$2; shift; shift;
8672 while $test $# -ge 2; do
8674 $define) echo "#include <$2>";;
8678 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8679 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8680 echo "$func() prototype found.";
8683 echo "$func() prototype NOT found.";
8688 $rm -f try.c tryout.c'
8690 : see if prototype for drand48 is available
8692 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8695 : see if dup2 exists
8699 : see if eaccess exists
8700 set eaccess d_eaccess
8703 : see if endgrent exists
8704 set endgrent d_endgrent
8707 : see if endhostent exists
8708 set endhostent d_endhent
8711 : see if endnetent exists
8712 set endnetent d_endnent
8715 : see if endprotoent exists
8716 set endprotoent d_endpent
8719 : see if endpwent exists
8720 set endpwent d_endpwent
8723 : see if endservent exists
8724 set endservent d_endsent
8727 : Locate the flags for 'open()'
8729 $cat >open3.c <<'EOCP'
8730 #include <sys/types.h>
8735 #include <sys/file.h>
8746 : check sys/file.h first to get FREAD on Sun
8747 if $test `./findhdr sys/file.h` && \
8748 set open3 -DI_SYS_FILE && eval $compile; then
8750 echo "<sys/file.h> defines the O_* constants..." >&4
8752 echo "and you have the 3 argument form of open()." >&4
8755 echo "but not the 3 argument form of open(). Oh, well." >&4
8758 elif $test `./findhdr fcntl.h` && \
8759 set open3 -DI_FCNTL && eval $compile; then
8761 echo "<fcntl.h> defines the O_* constants..." >&4
8763 echo "and you have the 3 argument form of open()." >&4
8766 echo "but not the 3 argument form of open(). Oh, well." >&4
8771 echo "I can't find the O_* constant definitions! You got problems." >&4
8777 : see which of string.h or strings.h is needed
8779 strings=`./findhdr string.h`
8780 if $test "$strings" && $test -r "$strings"; then
8781 echo "Using <string.h> instead of <strings.h>." >&4
8785 strings=`./findhdr strings.h`
8786 if $test "$strings" && $test -r "$strings"; then
8787 echo "Using <strings.h> instead of <string.h>." >&4
8789 echo "No string header found -- You'll surely have problems." >&4
8795 "$undef") strings=`./findhdr strings.h`;;
8796 *) strings=`./findhdr string.h`;;
8799 : check for non-blocking I/O stuff
8800 case "$h_sysfile" in
8801 true) echo "#include <sys/file.h>" > head.c;;
8804 true) echo "#include <fcntl.h>" > head.c;;
8805 *) echo "#include <sys/fcntl.h>" > head.c;;
8810 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8811 case "$o_nonblock" in
8814 $cat >>try.c <<'EOCP'
8818 printf("O_NONBLOCK\n");
8822 printf("O_NDELAY\n");
8826 printf("FNDELAY\n");
8833 if eval $compile_ok; then
8835 case "$o_nonblock" in
8836 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8837 *) echo "Seems like we can use $o_nonblock.";;
8840 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8843 *) echo "Using $hint value $o_nonblock.";;
8845 $rm -f try try.* .out core
8848 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8854 #include <sys/types.h>
8857 #define MY_O_NONBLOCK $o_nonblock
8858 #ifndef errno /* XXX need better Configure test */
8869 #include <strings.h>
8871 $signal_t blech(x) int x; { exit(3); }
8873 $cat >> try.c <<'EOCP'
8881 pipe(pd); /* Down: child -> parent */
8882 pipe(pu); /* Up: parent -> child */
8885 close(pd[1]); /* Parent reads from pd[0] */
8886 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8887 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8889 signal(SIGALRM, blech);
8891 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8893 sprintf(string, "%d\n", ret);
8894 write(2, string, strlen(string));
8897 if (errno == EAGAIN) {
8903 if (errno == EWOULDBLOCK)
8904 printf("EWOULDBLOCK\n");
8907 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8908 sleep(2); /* Give it time to close our pipe */
8910 ret = read(pd[0], buf, 1); /* Should read EOF */
8912 sprintf(string, "%d\n", ret);
8913 write(3, string, strlen(string));
8917 close(pd[0]); /* We write to pd[1] */
8918 close(pu[1]); /* We read from pu[0] */
8919 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8920 close(pd[1]); /* Pipe pd is now fully closed! */
8921 exit(0); /* Bye bye, thank you for playing! */
8925 if eval $compile_ok; then
8926 echo "$startsh" >mtry
8927 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8929 ./mtry >/dev/null 2>&1
8931 0) eagain=`$cat try.out`;;
8932 1) echo "Could not perform non-blocking setting!";;
8933 2) echo "I did a successful read() for something that was not there!";;
8934 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8935 *) echo "Something terribly wrong happened during testing.";;
8937 rd_nodata=`$cat try.ret`
8938 echo "A read() system call with no data present returns $rd_nodata."
8939 case "$rd_nodata" in
8942 echo "(That's peculiar, fixing that to be -1.)"
8948 echo "Forcing errno EAGAIN on read() with no data available."
8952 echo "Your read() sets errno to $eagain when no data is available."
8955 status=`$cat try.err`
8957 0) echo "And it correctly returns 0 to signal EOF.";;
8958 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8959 *) echo "However, your read() returns '$status' on EOF??";;
8962 if test "$status" = "$rd_nodata"; then
8963 echo "WARNING: you can't distinguish between EOF and no data!"
8967 echo "I can't compile the test program--assuming errno EAGAIN will do."
8974 echo "Using $hint value $eagain."
8975 echo "Your read() returns $rd_nodata when no data is present."
8976 case "$d_eofnblk" in
8977 "$define") echo "And you can see EOF because read() returns 0.";;
8978 "$undef") echo "But you can't see EOF status from read() returned value.";;
8980 echo "(Assuming you can't see EOF status from read anyway.)"
8986 $rm -f try try.* .out core head.c mtry
8988 : see if fchmod exists
8992 : see if fchown exists
8996 : see if this is an fcntl system
9001 : See if fcntl-based locking works.
9002 $cat >try.c <<'EOCP'
9007 #if defined(F_SETLK) && defined(F_SETLKW)
9010 fd = open("try.c", O_RDONLY);
9011 flock.l_type = F_RDLCK;
9012 flock.l_whence = SEEK_SET;
9013 flock.l_start = flock.l_len = 0;
9014 retval = fcntl(fd, F_SETLK, &flock);
9016 (retval < 0 ? exit(2) : exit(0));
9022 echo "Checking if fcntl-based file locking works... "
9026 if eval $compile_ok; then
9028 echo "Yes, it seems to work."
9031 echo "Nope, it didn't work."
9035 echo "I'm unable to compile the test program, so I'll assume not."
9040 echo "Nope, since you don't even have fcntl()."
9043 set d_fcntl_can_lock
9048 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9049 while $test $# -ge 2; do
9051 $define) echo "#include <$2>";;
9055 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9057 if eval $compile; then
9068 : see whether socket exists
9070 $echo $n "Hmm... $c" >&4
9071 if set socket val -f d_socket; eval $csym; $val; then
9072 echo "Looks like you have Berkeley networking support." >&4
9074 if set setsockopt val -f; eval $csym; $val; then
9077 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9081 if $contains socklib libc.list >/dev/null 2>&1; then
9082 echo "Looks like you have Berkeley networking support." >&4
9084 : we will have to assume that it supports the 4.2 BSD interface
9087 echo "You don't have Berkeley networking in libc$_a..." >&4
9088 if test "X$d_socket" = "X$define"; then
9089 echo "...but you seem to believe that you have sockets." >&4
9091 for net in net socket
9093 if test -f /usr/lib/lib$net$_a; then
9094 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9095 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9096 if $contains socket libc.list >/dev/null 2>&1; then
9101 echo "...but the Wollongong group seems to have hacked it in." >&4
9102 sockethdr="-I/usr/netinclude"
9105 echo "Found Berkeley sockets interface in lib$net." >& 4
9106 if $contains setsockopt libc.list >/dev/null 2>&1; then
9109 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9116 if test "X$d_socket" != "X$define"; then
9117 echo "or anywhere else I see." >&4
9125 : see if socketpair exists
9126 set socketpair d_sockpair
9131 echo "Checking the availability of certain socket constants..." >& 4
9132 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9133 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9135 #include <sys/types.h>
9136 #include <sys/socket.h>
9142 set try; if eval $compile; then
9145 set d_${enum}; eval $setvar
9149 : see if sys/select.h has to be included
9150 set sys/select.h i_sysselct
9153 : see if we should include time.h, sys/time.h, or both
9155 if test "X$timeincl" = X; then
9156 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9157 $echo $n "I'm now running the test program...$c"
9158 $cat >try.c <<'EOCP'
9159 #include <sys/types.h>
9164 #ifdef SYSTIMEKERNEL
9167 #include <sys/time.h>
9170 #include <sys/select.h>
9179 struct timezone tzp;
9181 if (foo.tm_sec == foo.tm_sec)
9184 if (bar.tv_sec == bar.tv_sec)
9191 for s_timezone in '-DS_TIMEZONE' ''; do
9193 for s_timeval in '-DS_TIMEVAL' ''; do
9194 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9195 for i_time in '' '-DI_TIME'; do
9196 for i_systime in '-DI_SYSTIME' ''; do
9199 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9200 if eval $compile; then
9201 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9205 $echo $n "Succeeded with $flags$c"
9217 *SYSTIMEKERNEL*) i_systimek="$define"
9218 timeincl=`./findhdr sys/time.h`
9219 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9220 *) i_systimek="$undef";;
9223 *I_TIME*) i_time="$define"
9224 timeincl=`./findhdr time.h`" $timeincl"
9225 echo "We'll include <time.h>." >&4;;
9226 *) i_time="$undef";;
9229 *I_SYSTIME*) i_systime="$define"
9230 timeincl=`./findhdr sys/time.h`" $timeincl"
9231 echo "We'll include <sys/time.h>." >&4;;
9232 *) i_systime="$undef";;
9237 : check for fd_set items
9240 Checking to see how well your C compiler handles fd_set and friends ...
9242 $cat >fd_set.c <<EOCP
9243 #$i_systime I_SYS_TIME
9244 #$i_sysselct I_SYS_SELECT
9245 #$d_socket HAS_SOCKET
9246 #include <sys/types.h>
9248 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9251 #include <sys/time.h>
9254 #include <sys/select.h>
9263 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9270 set fd_set -DTRYBITS
9271 if eval $compile; then
9272 d_fds_bits="$define"
9274 echo "Well, your system knows about the normal fd_set typedef..." >&4
9276 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9277 d_fd_macros="$define"
9280 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9282 d_fd_macros="$undef"
9286 Hmm, your compiler has some difficulty with fd_set. Checking further...
9289 if eval $compile; then
9292 echo "Well, your system has some sort of fd_set available..." >&4
9294 echo "and you have the normal fd_set macros." >&4
9295 d_fd_macros="$define"
9298 but not the normal fd_set macros! Gross! More work for me...
9300 d_fd_macros="$undef"
9303 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9306 d_fd_macros="$undef"
9311 : see if fgetpos exists
9312 set fgetpos d_fgetpos
9315 : see if flock exists
9319 : see if fork exists
9323 : see if pathconf exists
9324 set pathconf d_pathconf
9327 : see if fpathconf exists
9328 set fpathconf d_fpathconf
9332 : check for fpos64_t
9334 echo "Checking to see if you have fpos64_t..." >&4
9337 int main() { fpos64_t x = 7; }
9340 if eval $compile; then
9342 echo "You have fpos64_t."
9345 echo "You do not have fpos64_t."
9347 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9354 : see if frexpl exists
9358 hasstruct='varname=$1; struct=$2; shift; shift;
9359 while $test $# -ge 2; do
9361 $define) echo "#include <$2>";;
9365 echo "int main () { struct $struct foo; }" >> try.c;
9367 if eval $compile; then
9376 : see if this is a sys/param system
9377 set sys/param.h i_sysparam
9380 : see if this is a sys/mount.h system
9381 set sys/mount.h i_sysmount
9384 : see if sys/types.h has to be included
9385 set sys/types.h i_systypes
9390 echo "Checking to see if your system supports struct fs_data..." >&4
9391 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9393 case "$d_fs_data_s" in
9394 "$define") echo "Yes, it does." ;;
9395 *) echo "No, it doesn't." ;;
9398 : see if fseeko exists
9402 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9405 : see if fsetpos exists
9406 set fsetpos d_fsetpos
9410 : see if fstatfs exists
9411 set fstatfs d_fstatfs
9415 : see if statvfs exists
9416 set statvfs d_statvfs
9419 : see if fstatvfs exists
9420 set fstatvfs d_fstatvfs
9424 : see if fsync exists
9428 : see if ftello exists
9432 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9435 : see if getcwd exists
9439 : see if getespwnam exists
9440 set getespwnam d_getespwnam
9444 : see if getfsstat exists
9445 set getfsstat d_getfsstat
9448 : see if getgrent exists
9449 set getgrent d_getgrent
9452 : see if gethostbyaddr exists
9453 set gethostbyaddr d_gethbyaddr
9456 : see if gethostbyname exists
9457 set gethostbyname d_gethbyname
9460 : see if gethostent exists
9461 set gethostent d_gethent
9464 : see how we will look up host name
9467 if set gethostname val -f d_gethname; eval $csym; $val; then
9468 echo 'gethostname() found.' >&4
9469 d_gethname="$define"
9472 if set uname val -f d_uname; eval $csym; $val; then
9475 uname() was found, but you're running xenix, and older versions of xenix
9476 have a broken uname(). If you don't really know whether your xenix is old
9477 enough to have a broken system call, use the default answer.
9484 rp='Is your uname() broken?'
9487 n*) d_uname="$define"; call=uname;;
9490 echo 'uname() found.' >&4
9497 case "$d_gethname" in
9498 '') d_gethname="$undef";;
9501 '') d_uname="$undef";;
9503 case "$d_uname$d_gethname" in
9508 Every now and then someone has a $call() that lies about the hostname
9509 but can't be fixed for political or economic reasons. If you wish, I can
9510 pretend $call() isn't there and maybe compute hostname at run-time
9511 thanks to the '$phostname' command.
9514 rp="Shall I ignore $call() from now on?"
9517 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9520 case "$phostname" in
9522 *) case "$aphostname" in
9528 file=`./loc $file $file $pth`
9529 aphostname=`echo $file $*`
9534 case "$d_uname$d_gethname" in
9537 case "$phostname" in
9539 echo "There will be no way for $package to get your hostname." >&4;;
9541 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9545 case "$d_phostname" in
9546 '') d_phostname="$undef";;
9549 : see if this is a netdb.h system
9553 : see if prototypes for various gethostxxx netdb.h functions are available
9555 set d_gethostprotos gethostent $i_netdb netdb.h
9558 : see if getlogin exists
9559 set getlogin d_getlogin
9562 : see if getmnt exists
9566 : see if getmntent exists
9567 set getmntent d_getmntent
9570 : see if getnetbyaddr exists
9571 set getnetbyaddr d_getnbyaddr
9574 : see if getnetbyname exists
9575 set getnetbyname d_getnbyname
9578 : see if getnetent exists
9579 set getnetent d_getnent
9582 : see if prototypes for various getnetxxx netdb.h functions are available
9584 set d_getnetprotos getnetent $i_netdb netdb.h
9587 : see if getpagesize exists
9588 set getpagesize d_getpagsz
9592 : see if getprotobyname exists
9593 set getprotobyname d_getpbyname
9596 : see if getprotobynumber exists
9597 set getprotobynumber d_getpbynumber
9600 : see if getprotoent exists
9601 set getprotoent d_getpent
9604 : see if getpgid exists
9605 set getpgid d_getpgid
9608 : see if getpgrp2 exists
9609 set getpgrp2 d_getpgrp2
9612 : see if getppid exists
9613 set getppid d_getppid
9616 : see if getpriority exists
9617 set getpriority d_getprior
9620 : see if prototypes for various getprotoxxx netdb.h functions are available
9622 set d_getprotoprotos getprotoent $i_netdb netdb.h
9625 : see if getprpwnam exists
9626 set getprpwnam d_getprpwnam
9629 : see if getpwent exists
9630 set getpwent d_getpwent
9634 : see if getservbyname exists
9635 set getservbyname d_getsbyname
9638 : see if getservbyport exists
9639 set getservbyport d_getsbyport
9642 : see if getservent exists
9643 set getservent d_getsent
9646 : see if prototypes for various getservxxx netdb.h functions are available
9648 set d_getservprotos getservent $i_netdb netdb.h
9651 : see if getspnam exists
9652 set getspnam d_getspnam
9655 : see if gettimeofday or ftime exists
9656 set gettimeofday d_gettimeod
9658 case "$d_gettimeod" in
9664 val="$undef"; set d_ftime; eval $setvar
9667 case "$d_gettimeod$d_ftime" in
9670 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9674 : see if this is an grp system
9680 xxx=`./findhdr grp.h`
9681 $cppstdin $cppflags $cppminus < $xxx >$$.h
9683 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9695 set d_grpasswd; eval $setvar
9699 : see if hasmntopt exists
9700 set hasmntopt d_hasmntopt
9703 : see if this is a netinet/in.h or sys/in.h system
9704 set netinet/in.h i_niin sys/in.h i_sysin
9707 : see if arpa/inet.h has to be included
9708 set arpa/inet.h i_arpainet
9711 : see if htonl --and friends-- exists
9716 : Maybe they are macros.
9721 #include <sys/types.h>
9722 #$i_niin I_NETINET_IN
9724 #$i_arpainet I_ARPA_INET
9726 #include <netinet/in.h>
9732 #include <arpa/inet.h>
9735 printf("Defined as a macro.");
9738 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9739 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9741 echo "But it seems to be defined as a macro." >&4
9749 : see if iconv exists
9755 if set index val -f; eval $csym; $val; then
9756 if set strchr val -f d_strchr; eval $csym; $val; then
9757 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9760 echo "strchr() found." >&4
9764 echo "index() found." >&4
9769 echo "index() found." >&4
9772 if set strchr val -f d_strchr; eval $csym; $val; then
9775 echo "strchr() found." >&4
9777 echo "No index() or strchr() found!" >&4
9782 set d_strchr; eval $setvar
9784 set d_index; eval $setvar
9786 : check whether inet_aton exists
9787 set inet_aton d_inetaton
9790 : see if inttypes.h is available
9791 : we want a real compile instead of Inhdr because some systems
9792 : have an inttypes.h which includes non-existent headers
9795 #include <inttypes.h>
9797 static int32_t foo32 = 0x12345678;
9801 if eval $compile; then
9802 echo "<inttypes.h> found." >&4
9805 echo "<inttypes.h> NOT found." >&4
9814 echo "Checking to see if you have int64_t..." >&4
9816 #include <sys/types.h>
9817 #$i_inttypes I_INTTYPES
9819 #include <inttypes.h>
9821 int main() { int64_t x = 7; }
9824 if eval $compile; then
9826 echo "You have int64_t."
9829 echo "You do not have int64_t."
9837 $cat >isascii.c <<'EOCP'
9849 if eval $compile; then
9850 echo "isascii() found." >&4
9853 echo "isascii() NOT found." >&4
9860 : see if isnan exists
9864 : see if isnanl exists
9868 : see if killpg exists
9872 : see if lchown exists
9874 $cat > try.c <<'EOCP'
9875 /* System header to define __stub macros and hopefully few prototypes,
9876 which can conflict with char lchown(); below. */
9878 /* Override any gcc2 internal prototype to avoid an error. */
9879 /* We use char because int might match the return type of a gcc2
9880 builtin and then its argument prototype would still apply. */
9883 /* The GNU C library defines this for functions which it implements
9884 to always fail with ENOSYS. Some functions are actually named
9885 something starting with __ and the normal name is an alias. */
9886 #if defined (__stub_lchown) || defined (__stub___lchown)
9894 if eval $compile; then
9895 $echo "lchown() found." >&4
9898 $echo "lchown() NOT found." >&4
9904 : See if number of significant digits in a double precision number is known
9906 $cat >ldbl_dig.c <<EOM
9916 printf("Contains LDBL_DIG");
9919 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9920 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9921 echo "LDBL_DIG found." >&4
9924 echo "LDBL_DIG NOT found." >&4
9931 : see if link exists
9935 : see if localeconv exists
9936 set localeconv d_locconv
9939 : see if lockf exists
9943 : check for long long
9945 echo "Checking to see if you have long long..." >&4
9946 echo 'int main() { long long x = 7; return 0; }' > try.c
9948 if eval $compile; then
9950 echo "You have long long."
9953 echo "You do not have long long."
9959 : check for length of long long
9960 case "${d_longlong}${longlongsize}" in
9963 echo "Checking to see how big your long longs are..." >&4
9964 $cat >try.c <<'EOCP'
9968 printf("%d\n", (int)sizeof(long long));
9973 if eval $compile_ok; then
9974 longlongsize=`./try$exe_ext`
9975 echo "Your long longs are $longlongsize bytes long."
9979 echo "(I can't seem to compile the test program. Guessing...)"
9980 rp="What is the size of a long long (in bytes)?"
9984 if $test "X$longsize" = "X$longlongsize"; then
9985 echo "(That isn't any different from an ordinary long.)"
9991 : see if prototype for lseek is available
9993 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9996 : see if lstat exists
10000 : see if madvise exists
10001 set madvise d_madvise
10004 : see if mblen exists
10008 : see if mbstowcs exists
10009 set mbstowcs d_mbstowcs
10012 : see if mbtowc exists
10013 set mbtowc d_mbtowc
10016 : see if memchr exists
10017 set memchr d_memchr
10020 : see if memcmp exists
10021 set memcmp d_memcmp
10024 : see if memcpy exists
10025 set memcpy d_memcpy
10028 : see if memmove exists
10029 set memmove d_memmove
10032 : see if memset exists
10033 set memset d_memset
10036 : see if mkdir exists
10040 : see if mkdtemp exists
10041 set mkdtemp d_mkdtemp
10044 : see if mkfifo exists
10045 set mkfifo d_mkfifo
10048 : see if mkstemp exists
10049 set mkstemp d_mkstemp
10052 : see if mkstemps exists
10053 set mkstemps d_mkstemps
10056 : see if mktime exists
10057 set mktime d_mktime
10060 : see if this is a sys/mman.h system
10061 set sys/mman.h i_sysmman
10064 : see if mmap exists
10067 : see what shmat returns
10068 : default to something harmless
10070 case "$i_sysmman$d_mmap" in
10072 $cat >mmap.c <<'END'
10073 #include <sys/mman.h>
10076 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10081 echo "and it returns ($mmaptype)." >&4
10087 : see if modfl exists
10091 : see if mprotect exists
10092 set mprotect d_mprotect
10095 : see if msgctl exists
10096 set msgctl d_msgctl
10099 : see if msgget exists
10100 set msgget d_msgget
10103 : see if msgsnd exists
10104 set msgsnd d_msgsnd
10107 : see if msgrcv exists
10108 set msgrcv d_msgrcv
10111 : see how much of the 'msg*(2)' library is present.
10114 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10115 *"$undef"*) h_msg=false;;
10119 case "`ipcs 2>&1`" in
10120 "SVID messages"*"not configured"*)
10121 echo "Your $osname does not have the msg*(2) configured." >&4
10124 set msgctl d_msgctl
10126 set msgget d_msgget
10128 set msgsnd d_msgsnd
10130 set msgrcv d_msgrcv
10136 : we could also check for sys/ipc.h ...
10137 if $h_msg && $test `./findhdr sys/msg.h`; then
10138 echo "You have the full msg*(2) library." >&4
10141 echo "You don't have the full msg*(2) library." >&4
10147 : see if msync exists
10151 : see if munmap exists
10152 set munmap d_munmap
10155 : see if nice exists
10161 echo "Checking which 64-bit integer type we could use..." >&4
10167 val='"unsigned int"'
10172 *) case "$longsize" in
10176 val='"unsigned long"'
10181 *) case "$d_longlong:$longlongsize" in
10186 val='"unsigned long long"'
10191 *) case "$d_int64_t" in
10209 case "$quadtype" in
10210 '') echo "Alas, no 64-bit integer types in sight." >&4
10213 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10218 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10223 : check for length of character
10225 case "$charsize" in
10227 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10228 $cat >try.c <<'EOCP'
10232 printf("%d\n", (int)sizeof(char));
10237 if eval $compile_ok; then
10241 echo "(I can't seem to compile the test program. Guessing...)"
10248 rp="What is the size of a character (in bytes)?"
10253 : check for volatile keyword
10255 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10256 $cat >try.c <<'EOCP'
10259 typedef struct _goo_struct goo_struct;
10260 goo_struct * volatile goo = ((goo_struct *)0);
10261 struct _goo_struct {
10266 typedef unsigned short foo_t;
10267 char *volatile foo;
10269 volatile foo_t blech;
10273 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10275 echo "Yup, it does."
10278 echo "Nope, it doesn't."
10286 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10288 case "$use64bitint:$d_quad:$quadtype" in
10291 uvtype="$uquadtype"
10296 uvtype="unsigned long"
10302 case "$uselongdouble:$d_longdbl" in
10304 nvtype="long double"
10305 nvsize=$longdblsize
10312 $echo "(IV will be "$ivtype", $ivsize bytes)"
10313 $echo "(UV will be "$uvtype", $uvsize bytes)"
10314 $echo "(NV will be "$nvtype", $nvsize bytes)"
10317 #$i_inttypes I_INTTYPES
10319 #include <inttypes.h>
10324 int8_t i = INT8_MAX;
10325 uint8_t u = UINT8_MAX;
10326 printf("int8_t\n");
10329 int16_t i = INT16_MAX;
10330 uint16_t i = UINT16_MAX;
10331 printf("int16_t\n");
10334 int32_t i = INT32_MAX;
10335 uint32_t u = UINT32_MAX;
10336 printf("int32_t\n");
10342 '') case "$charsize" in
10344 u8type="unsigned char"
10353 if eval $compile; then
10354 case "`./try$exe_ext`" in
10355 int8_t) i8type=int8_t
10365 '') if $test $charsize -ge 1; then
10367 u8type="unsigned char"
10375 '') case "$shortsize" in
10377 u16type="unsigned short"
10385 '') set try -DINT16
10386 if eval $compile; then
10387 case "`./try$exe_ext`" in
10399 '') if $test $shortsize -ge 2; then
10401 u16type="unsigned short"
10409 '') case "$longsize" in
10411 u32type="unsigned long"
10415 *) case "$intsize" in
10417 u32type="unsigned int"
10427 '') set try -DINT32
10428 if eval $compile; then
10429 case "`./try$exe_ext`" in
10441 '') if $test $intsize -ge 4; then
10443 u32type="unsigned int"
10451 '') case "$d_quad:$quadtype" in
10453 i64type="$quadtype"
10454 u64type="$uquadtype"
10462 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10463 : volatile so that the compiler has to store it out to memory.
10464 if test X"$d_volatile" = X"$define"; then
10469 #include <sys/types.h>
10470 #include <signal.h>
10472 $volatile int bletched = 0;
10473 $signal_t blech(s) int s; { bletched = 1; }
10478 int n = 8 * $uvsize;
10481 signal(SIGFPE, blech);
10484 for (i = 0; i < n; i++) {
10485 u = u << 1 | ($uvtype)1;
10487 if (($uvtype)d != u)
10491 d = ($nvtype)(u - 1);
10492 if (($uvtype)d != (u - 1))
10500 printf("%d\n", ((i == n) ? -n : i));
10506 d_nv_preserves_uv="$undef"
10507 if eval $compile; then
10508 d_nv_preserves_uv_bits="`./try$exe_ext`"
10510 case "$d_nv_preserves_uv_bits" in
10512 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10513 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10514 d_nv_preserves_uv="$define"
10516 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10517 d_nv_preserves_uv="$undef" ;;
10518 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10519 d_nv_preserves_uv_bits="$undef" ;;
10525 : check for off64_t
10527 echo "Checking to see if you have off64_t..." >&4
10529 #include <sys/types.h>
10530 #include <unistd.h>
10531 int main() { off64_t x = 7; }
10534 if eval $compile; then
10536 echo "You have off64_t."
10539 echo "You do not have off64_t."
10540 case "$lseeksize" in
10541 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10548 : see if POSIX threads are available
10549 set pthread.h i_pthread
10555 : how to create joinable pthreads
10556 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10558 echo "Checking what constant to use for creating joinable pthreads..." >&4
10559 $cat >try.c <<'EOCP'
10560 #include <pthread.h>
10562 int detachstate = JOINABLE;
10565 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10566 if eval $compile; then
10567 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10568 val="$undef" # Yes, undef.
10569 set d_old_pthread_create_joinable
10572 set old_pthread_create_joinable
10575 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10576 if eval $compile; then
10577 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10579 set d_old_pthread_create_joinable
10581 val=PTHREAD_CREATE_UNDETACHED
10582 set old_pthread_create_joinable
10585 set try -DJOINABLE=__UNDETACHED
10586 if eval $compile; then
10587 echo "You seem to use __UNDETACHED." >&4
10589 set d_old_pthread_create_joinable
10592 set old_pthread_create_joinable
10595 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10597 set d_old_pthread_create_joinable
10600 set old_pthread_create_joinable
10607 d_old_pthread_create_joinable="$undef"
10608 old_pthread_create_joinable=""
10611 : see if pause exists
10615 : see if pipe exists
10619 : see if poll exists
10624 : see whether the various POSIXish _yields exist
10626 #include <pthread.h>
10632 #ifdef PTHREAD_YIELD
10635 #ifdef PTHREAD_YIELD_NULL
10636 pthread_yield(NULL);
10642 : see if sched_yield exists
10643 set try -DSCHED_YIELD
10644 if eval $compile; then
10646 sched_yield='sched_yield()'
10650 case "$usethreads" in
10653 $define) echo 'sched_yield() found.' >&4 ;;
10654 *) echo 'sched_yield() NOT found.' >&4 ;;
10660 : see if pthread_yield exists
10661 set try -DPTHREAD_YIELD
10662 if eval $compile; then
10664 case "$sched_yield" in
10665 '') sched_yield='pthread_yield()' ;;
10668 set try -DPTHREAD_YIELD_NULL
10669 if eval $compile; then
10671 case "$sched_yield" in
10672 '') sched_yield='pthread_yield(NULL)' ;;
10678 case "$usethreads" in
10681 $define) echo 'pthread_yield() found.' >&4 ;;
10682 *) echo 'pthread_yield() NOT found.' >&4 ;;
10686 set d_pthread_yield
10689 case "$sched_yield" in
10690 '') sched_yield=undef ;;
10695 : see if this is a pwd.h system
10701 xxx=`./findhdr pwd.h`
10702 $cppstdin $cppflags $cppminus < $xxx >$$.h
10704 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10712 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10720 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10728 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10736 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10744 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10752 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10760 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10772 set d_pwquota; eval $setvar
10773 set d_pwage; eval $setvar
10774 set d_pwchange; eval $setvar
10775 set d_pwclass; eval $setvar
10776 set d_pwexpire; eval $setvar
10777 set d_pwcomment; eval $setvar
10778 set d_pwgecos; eval $setvar
10779 set d_pwpasswd; eval $setvar
10783 : see if readdir and friends exist
10784 set readdir d_readdir
10786 set seekdir d_seekdir
10788 set telldir d_telldir
10790 set rewinddir d_rewinddir
10793 : see if readlink exists
10794 set readlink d_readlink
10797 : see if rename exists
10798 set rename d_rename
10801 : see if rmdir exists
10805 : see if memory.h is available.
10810 : See if it conflicts with string.h
10816 $cppstdin $cppflags $cppminus < $strings > mem.h
10817 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10819 echo "We won't be including <memory.h>."
10829 : can bcopy handle overlapping blocks?
10834 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10836 #$i_memory I_MEMORY
10837 #$i_stdlib I_STDLIB
10838 #$i_string I_STRING
10839 #$i_unistd I_UNISTD
10841 $cat >>try.c <<'EOCP'
10844 # include <memory.h>
10847 # include <stdlib.h>
10850 # include <string.h>
10852 # include <strings.h>
10855 # include <unistd.h> /* Needed for NetBSD */
10859 char buf[128], abc[128];
10865 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10867 for (align = 7; align >= 0; align--) {
10868 for (len = 36; len; len--) {
10870 bcopy(abc, b, len);
10871 for (off = 1; off <= len; off++) {
10872 bcopy(b, b+off, len);
10873 bcopy(b+off, b, len);
10874 if (bcmp(b, abc, len))
10883 if eval $compile_ok; then
10884 if ./try 2>/dev/null; then
10885 echo "Yes, it can."
10888 echo "It can't, sorry."
10889 case "$d_memmove" in
10890 "$define") echo "But that's Ok since you have memmove()." ;;
10894 echo "(I can't compile the test program, so we'll assume not...)"
10895 case "$d_memmove" in
10896 "$define") echo "But that's Ok since you have memmove()." ;;
10901 $rm -f try.* try core
10905 : can memcpy handle overlapping blocks?
10907 case "$d_memcpy" in
10910 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10912 #$i_memory I_MEMORY
10913 #$i_stdlib I_STDLIB
10914 #$i_string I_STRING
10915 #$i_unistd I_UNISTD
10917 $cat >>try.c <<'EOCP'
10920 # include <memory.h>
10923 # include <stdlib.h>
10926 # include <string.h>
10928 # include <strings.h>
10931 # include <unistd.h> /* Needed for NetBSD */
10935 char buf[128], abc[128];
10941 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10942 try to store the string in read-only memory. */
10943 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10945 for (align = 7; align >= 0; align--) {
10946 for (len = 36; len; len--) {
10948 memcpy(b, abc, len);
10949 for (off = 1; off <= len; off++) {
10950 memcpy(b+off, b, len);
10951 memcpy(b, b+off, len);
10952 if (memcmp(b, abc, len))
10961 if eval $compile_ok; then
10962 if ./try 2>/dev/null; then
10963 echo "Yes, it can."
10966 echo "It can't, sorry."
10967 case "$d_memmove" in
10968 "$define") echo "But that's Ok since you have memmove()." ;;
10972 echo "(I can't compile the test program, so we'll assume not...)"
10973 case "$d_memmove" in
10974 "$define") echo "But that's Ok since you have memmove()." ;;
10979 $rm -f try.* try core
10983 : can memcmp be trusted to compare relative magnitude?
10985 case "$d_memcmp" in
10988 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10990 #$i_memory I_MEMORY
10991 #$i_stdlib I_STDLIB
10992 #$i_string I_STRING
10993 #$i_unistd I_UNISTD
10995 $cat >>try.c <<'EOCP'
10998 # include <memory.h>
11001 # include <stdlib.h>
11004 # include <string.h>
11006 # include <strings.h>
11009 # include <unistd.h> /* Needed for NetBSD */
11015 if ((a < b) && memcmp(&a, &b, 1) < 0)
11021 if eval $compile_ok; then
11022 if ./try 2>/dev/null; then
11023 echo "Yes, it can."
11026 echo "No, it can't (it uses signed chars)."
11029 echo "(I can't compile the test program, so we'll assume not...)"
11033 $rm -f try.* try core
11037 : see if prototype for sbrk is available
11039 set d_sbrkproto sbrk $i_unistd unistd.h
11042 : see if select exists
11043 set select d_select
11046 : see if semctl exists
11047 set semctl d_semctl
11050 : see if semget exists
11051 set semget d_semget
11054 : see if semop exists
11058 : see how much of the 'sem*(2)' library is present.
11061 case "$d_semctl$d_semget$d_semop" in
11062 *"$undef"*) h_sem=false;;
11066 case "`ipcs 2>&1`" in
11067 "SVID messages"*"not configured"*)
11068 echo "Your $osname does not have the sem*(2) configured." >&4
11071 set semctl d_semctl
11073 set semget d_semget
11081 : we could also check for sys/ipc.h ...
11082 if $h_sem && $test `./findhdr sys/sem.h`; then
11083 echo "You have the full sem*(2) library." >&4
11086 echo "You don't have the full sem*(2) library." >&4
11092 : see whether sys/sem.h defines union semun
11094 $cat > try.c <<'END'
11095 #include <sys/types.h>
11096 #include <sys/ipc.h>
11097 #include <sys/sem.h>
11098 int main () { union semun semun; semun.buf = 0; }
11101 if eval $compile; then
11102 echo "You have union semun in <sys/sem.h>." >&4
11105 echo "You do not have union semun in <sys/sem.h>." >&4
11108 $rm -f try try.c try.h
11112 : see how to do semctl IPC_STAT
11115 : see whether semctl IPC_STAT can use union semun
11120 # define S_IRUSR S_IREAD
11121 # define S_IWUSR S_IWRITE
11122 # define S_IXUSR S_IEXEC
11124 # define S_IRUSR 0400
11125 # define S_IWUSR 0200
11126 # define S_IXUSR 0100
11128 # define S_IRGRP (S_IRUSR>>3)
11129 # define S_IWGRP (S_IWUSR>>3)
11130 # define S_IXGRP (S_IXUSR>>3)
11131 # define S_IROTH (S_IRUSR>>6)
11132 # define S_IWOTH (S_IWUSR>>6)
11133 # define S_IXOTH (S_IXUSR>>6)
11136 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11137 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11138 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11143 #include <sys/types.h>
11144 #include <sys/ipc.h>
11145 #include <sys/sem.h>
11146 #include <sys/stat.h>
11153 #$d_union_semun HAS_UNION_SEMUN
11156 #ifndef HAS_UNION_SEMUN
11159 struct semid_ds *buf;
11160 unsigned short *array;
11166 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11167 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11169 struct semid_ds argbuf;
11172 st = semctl(sem, 0, IPC_STAT, arg);
11176 # endif /* IPC_STAT */
11177 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11179 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11180 # endif /* IPC_RMID */
11181 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11183 #endif /* IPC_PRIVATE && ... */
11184 printf("semget failed: errno = %d\n", errno);
11190 if eval $compile; then
11193 semun) val="$define" ;;
11199 case "$d_semctl_semun" in
11201 echo "You can use union semun for semctl IPC_STAT." >&4
11204 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11209 : see whether semctl IPC_STAT can use struct semid_ds pointer
11210 $cat > try.c <<'END'
11211 #include <sys/types.h>
11212 #include <sys/ipc.h>
11213 #include <sys/sem.h>
11214 #include <sys/stat.h>
11222 struct semid_ds arg;
11225 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11226 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11229 st = semctl(sem, 0, IPC_STAT, &arg);
11231 printf("semid_ds\n");
11233 # endif /* IPC_STAT */
11234 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11236 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11237 # endif /* IPC_RMID */
11238 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11240 #endif /* IPC_PRIVATE && ... */
11241 printf("semget failed: errno = %d\n", errno);
11248 if eval $compile; then
11251 semid_ds) val="$define" ;;
11255 set d_semctl_semid_ds
11257 case "$d_semctl_semid_ds" in
11259 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11261 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11268 # We do not have the full sem*(2) library, so assume we can not
11274 set d_semctl_semid_ds
11279 : see if setegid exists
11280 set setegid d_setegid
11283 : see if seteuid exists
11284 set seteuid d_seteuid
11287 : see if setgrent exists
11288 set setgrent d_setgrent
11291 : see if sethostent exists
11292 set sethostent d_sethent
11295 : see if setlinebuf exists
11296 set setlinebuf d_setlinebuf
11299 : see if setlocale exists
11300 set setlocale d_setlocale
11303 : see if setnetent exists
11304 set setnetent d_setnent
11307 : see if setprotoent exists
11308 set setprotoent d_setpent
11311 : see if setpgid exists
11312 set setpgid d_setpgid
11315 : see if setpgrp2 exists
11316 set setpgrp2 d_setpgrp2
11319 : see if setpriority exists
11320 set setpriority d_setprior
11323 : see if setproctitle exists
11324 set setproctitle d_setproctitle
11327 : see if setpwent exists
11328 set setpwent d_setpwent
11331 : see if setregid exists
11332 set setregid d_setregid
11334 set setresgid d_setresgid
11337 : see if setreuid exists
11338 set setreuid d_setreuid
11340 set setresuid d_setresuid
11343 : see if setrgid exists
11344 set setrgid d_setrgid
11347 : see if setruid exists
11348 set setruid d_setruid
11351 : see if setservent exists
11352 set setservent d_setsent
11355 : see if setsid exists
11356 set setsid d_setsid
11359 : see if setvbuf exists
11360 set setvbuf d_setvbuf
11363 : see if sfio.h is available
11368 : see if sfio library is available
11379 : Ok, but do we want to use it.
11383 true|$define|[yY]*) dflt='y';;
11386 echo "$package can use the sfio library, but it is experimental."
11387 case "$useperlio" in
11389 echo "For sfio also the PerlIO abstraction layer is needed."
11390 echo "Earlier you said you wouldn't want that."
11393 rp="You seem to have sfio available, do you want to try using it?"
11396 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11397 useperlio="$define"
11400 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11402 : Remove sfio from list of libraries to use
11403 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11406 echo "libs = $libs" >&4
11410 *) case "$usesfio" in
11411 true|$define|[yY]*)
11412 echo "Sorry, cannot find sfio on this machine." >&4
11413 echo "Ignoring your setting of usesfio=$usesfio." >&4
11422 $define) usesfio='true';;
11423 *) usesfio='false';;
11426 : see if shmctl exists
11427 set shmctl d_shmctl
11430 : see if shmget exists
11431 set shmget d_shmget
11434 : see if shmat exists
11437 : see what shmat returns
11440 $cat >shmat.c <<'END'
11441 #include <sys/shm.h>
11444 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11449 echo "and it returns ($shmattype)." >&4
11450 : see if a prototype for shmat is available
11451 xxx=`./findhdr sys/shm.h`
11452 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11453 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11464 set d_shmatprototype
11467 : see if shmdt exists
11471 : see how much of the 'shm*(2)' library is present.
11474 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11475 *"$undef"*) h_shm=false;;
11479 case "`ipcs 2>&1`" in
11480 "SVID shared memory"*"not configured"*)
11481 echo "Your $osname does not have the shm*(2) configured." >&4
11484 set shmctl d_shmctl
11486 set shmget d_shmget
11496 : we could also check for sys/ipc.h ...
11497 if $h_shm && $test `./findhdr sys/shm.h`; then
11498 echo "You have the full shm*(2) library." >&4
11501 echo "You don't have the full shm*(2) library." >&4
11508 : see if we have sigaction
11509 if set sigaction val -f d_sigaction; eval $csym; $val; then
11510 echo 'sigaction() found.' >&4
11511 $cat > try.c <<'EOP'
11513 #include <sys/types.h>
11514 #include <signal.h>
11517 struct sigaction act, oact;
11519 oact.sa_handler = 0;
11520 /* so that act and oact are used */
11521 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11525 if eval $compile_ok; then
11528 echo "But you don't seem to have a useable struct sigaction." >&4
11532 echo 'sigaction NOT found.' >&4
11535 set d_sigaction; eval $setvar
11536 $rm -f try try$_o try.c
11538 : see if sigprocmask exists
11539 set sigprocmask d_sigprocmask
11542 : see if sigsetjmp exists
11544 case "$d_sigsetjmp" in
11546 $cat >try.c <<'EOP'
11547 #include <setjmp.h>
11552 if (sigsetjmp(env,1))
11555 siglongjmp(env, 1);
11560 if eval $compile; then
11561 if ./try >/dev/null 2>&1; then
11562 echo "POSIX sigsetjmp found." >&4
11566 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11572 echo "sigsetjmp not found." >&4
11576 *) val="$d_sigsetjmp"
11577 case "$d_sigsetjmp" in
11578 $define) echo "POSIX sigsetjmp found." >&4;;
11579 $undef) echo "sigsetjmp not found." >&4;;
11587 : see if socks5_init exists
11588 set socks5_init d_socks5_init
11591 : see if sys/stat.h is available
11592 set sys/stat.h i_sysstat
11596 : see if stat knows about block sizes
11598 echo "Checking to see if your struct stat has st_blocks field..." >&4
11599 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11603 : see if this is a sys/vfs.h system
11604 set sys/vfs.h i_sysvfs
11608 : see if this is a sys/statfs.h system
11609 set sys/statfs.h i_sysstatfs
11614 echo "Checking to see if your system supports struct statfs..." >&4
11615 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
11617 case "$d_statfs_s" in
11618 "$define") echo "Yes, it does." ;;
11619 *) echo "No, it doesn't." ;;
11624 : see if struct statfs knows about f_flags
11625 case "$d_statfs_s" in
11628 echo "Checking to see if your struct statfs has f_flags field..." >&4
11629 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
11633 set d_statfs_f_flags
11637 case "$d_statfs_f_flags" in
11638 "$define") echo "Yes, it does." ;;
11639 *) echo "No, it doesn't." ;;
11642 : see if _ptr and _cnt from stdio act std
11645 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11646 echo "(Looks like you have stdio.h from BSD.)"
11647 case "$stdio_ptr" in
11648 '') stdio_ptr='((fp)->_p)'
11651 *) ptr_lval=$d_stdio_ptr_lval;;
11653 case "$stdio_cnt" in
11654 '') stdio_cnt='((fp)->_r)'
11657 *) cnt_lval=$d_stdio_cnt_lval;;
11659 case "$stdio_base" in
11660 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11662 case "$stdio_bufsiz" in
11663 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11665 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11666 echo "(Looks like you have stdio.h from Linux.)"
11667 case "$stdio_ptr" in
11668 '') stdio_ptr='((fp)->_IO_read_ptr)'
11671 *) ptr_lval=$d_stdio_ptr_lval;;
11673 case "$stdio_cnt" in
11674 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11677 *) cnt_lval=$d_stdio_cnt_lval;;
11679 case "$stdio_base" in
11680 '') stdio_base='((fp)->_IO_read_base)';;
11682 case "$stdio_bufsiz" in
11683 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11686 case "$stdio_ptr" in
11687 '') stdio_ptr='((fp)->_ptr)'
11690 *) ptr_lval=$d_stdio_ptr_lval;;
11692 case "$stdio_cnt" in
11693 '') stdio_cnt='((fp)->_cnt)'
11696 *) cnt_lval=$d_stdio_cnt_lval;;
11698 case "$stdio_base" in
11699 '') stdio_base='((fp)->_base)';;
11701 case "$stdio_bufsiz" in
11702 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11706 : test whether _ptr and _cnt really work
11707 echo "Checking how std your stdio is..." >&4
11710 #define FILE_ptr(fp) $stdio_ptr
11711 #define FILE_cnt(fp) $stdio_cnt
11713 FILE *fp = fopen("try.c", "r");
11716 18 <= FILE_cnt(fp) &&
11717 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11725 if eval $compile; then
11727 echo "Your stdio acts pretty std."
11730 echo "Your stdio isn't very std."
11733 echo "Your stdio doesn't appear very std."
11739 : Can _ptr be used as an lvalue?
11740 case "$d_stdstdio$ptr_lval" in
11741 $define$define) val=$define ;;
11744 set d_stdio_ptr_lval
11747 : Can _cnt be used as an lvalue?
11748 case "$d_stdstdio$cnt_lval" in
11749 $define$define) val=$define ;;
11752 set d_stdio_cnt_lval
11756 : test whether setting _ptr sets _cnt as a side effect
11757 d_stdio_ptr_lval_sets_cnt="$undef"
11758 d_stdio_ptr_lval_nochange_cnt="$undef"
11759 case "$d_stdio_ptr_lval$d_stdstdio" in
11761 echo "Checking to see what happens if we set the stdio ptr..." >&4
11764 /* Can we scream? */
11765 /* Eat dust sed :-) */
11766 /* In the buffer space, no one can hear you scream. */
11767 #define FILE_ptr(fp) $stdio_ptr
11768 #define FILE_cnt(fp) $stdio_cnt
11769 #include <sys/types.h>
11771 FILE *fp = fopen("try.c", "r");
11776 puts("Fail even to read");
11779 c = getc(fp); /* Read away the first # */
11781 puts("Fail even to read");
11785 18 <= FILE_cnt(fp) &&
11786 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11788 puts("Fail even to read");
11791 ptr = (char*) FILE_ptr(fp);
11792 cnt = (size_t)FILE_cnt(fp);
11794 FILE_ptr(fp) += 42;
11796 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11797 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11800 if (FILE_cnt(fp) <= 20) {
11801 printf ("Fail (<20 chars to test)");
11804 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11805 puts("Fail compare");
11808 if (cnt == FILE_cnt(fp)) {
11809 puts("Pass_unchanged");
11812 if (FILE_cnt(fp) == (cnt - 42)) {
11813 puts("Pass_changed");
11816 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11822 if eval $compile; then
11823 case `./try$exe_ext` in
11825 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11826 d_stdio_ptr_lval_sets_cnt="$define" ;;
11828 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11829 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11831 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11833 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11836 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11842 : see if _base is also standard
11844 case "$d_stdstdio" in
11848 #define FILE_base(fp) $stdio_base
11849 #define FILE_bufsiz(fp) $stdio_bufsiz
11851 FILE *fp = fopen("try.c", "r");
11854 19 <= FILE_bufsiz(fp) &&
11855 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11862 if eval $compile; then
11864 echo "And its _base field acts std."
11867 echo "But its _base field isn't std."
11870 echo "However, it seems to be lacking the _base field."
11879 Checking how to access stdio streams by file descriptor number...
11881 case "$stdio_stream_array" in
11882 '') $cat >try.c <<EOCP
11885 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11889 for s in _iob __iob __sF
11891 set try -DSTDIO_STREAM_ARRAY=$s
11892 if eval $compile; then
11893 case "`./try$exe_ext`" in
11894 yes) stdio_stream_array=$s; break ;;
11898 $rm -f try.* try$exe_ext
11900 case "$stdio_stream_array" in
11902 I can't figure out how to access stdio streams by file descriptor number.
11904 d_stdio_stream_array="$undef"
11907 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11909 d_stdio_stream_array="$define"
11913 : see if strcoll exists
11914 set strcoll d_strcoll
11917 : check for structure copying
11919 echo "Checking to see if your C compiler can copy structs..." >&4
11920 $cat >try.c <<'EOCP'
11930 if $cc -c try.c >/dev/null 2>&1 ; then
11932 echo "Yup, it can."
11935 echo "Nope, it can't."
11941 : see if strerror and/or sys_errlist[] exist
11943 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11944 if set strerror val -f d_strerror; eval $csym; $val; then
11945 echo 'strerror() found.' >&4
11946 d_strerror="$define"
11947 d_strerrm='strerror(e)'
11948 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11949 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11950 d_syserrlst="$define"
11952 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11953 d_syserrlst="$undef"
11955 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11956 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11957 echo 'strerror() found in string header.' >&4
11958 d_strerror="$define"
11959 d_strerrm='strerror(e)'
11960 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11961 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11962 d_syserrlst="$define"
11964 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11965 d_syserrlst="$undef"
11967 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11968 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11969 d_strerror="$undef"
11970 d_syserrlst="$define"
11971 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11973 echo 'strerror() and sys_errlist[] NOT found.' >&4
11974 d_strerror="$undef"
11975 d_syserrlst="$undef"
11976 d_strerrm='"unknown"'
11980 : see if strtod exists
11981 set strtod d_strtod
11984 : see if strtol exists
11985 set strtol d_strtol
11988 : see if strtold exists
11989 set strtold d_strtold
11992 : see if strtoll exists
11993 set strtoll d_strtoll
11996 case "$d_longlong-$d_strtoll" in
11999 Checking whether your strtoll() works okay...
12001 $cat >try.c <<'EOCP'
12004 #define strtoll __strtoll
12007 #define strtoll _strtoll
12010 extern long long int strtoll(char *s, char **, int);
12011 static int bad = 0;
12012 int check(char *s, long long ell, int een) {
12015 gll = strtoll(s, 0, 10);
12016 if (!((gll == ell) && (errno == een)))
12020 check(" 1", 1LL, 0);
12021 check(" 0", 0LL, 0);
12022 check("-1", -1LL, 0);
12023 check("-9223372036854775808", -9223372036854775808LL, 0);
12024 check("-9223372036854775808", -9223372036854775808LL, 0);
12025 check(" 9223372036854775807", 9223372036854775807LL, 0);
12026 check("-9223372036854775808", -9223372036854775808LL, 0);
12027 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12028 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12034 if eval $compile; then
12037 ok) echo "Your strtoll() seems to be working okay." ;;
12039 Your strtoll() doesn't seem to be working okay.
12045 echo "(I can't seem to compile the test program--assuming it doesn't)"
12051 : see if strtoq exists
12052 set strtoq d_strtoq
12055 : see if strtoul exists
12056 set strtoul d_strtoul
12059 case "$d_strtoul" in
12062 Checking whether your strtoul() works okay...
12064 $cat >try.c <<'EOCP'
12067 extern unsigned long int strtoul(char *s, char **, int);
12068 static int bad = 0;
12069 void check(char *s, unsigned long eul, int een) {
12072 gul = strtoul(s, 0, 10);
12073 if (!((gul == eul) && (errno == een)))
12077 check(" 1", 1L, 0);
12078 check(" 0", 0L, 0);
12080 case "$longsize" in
12082 $cat >>try.c <<'EOCP'
12083 check("18446744073709551615", 18446744073709551615UL, 0);
12084 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12085 #if 0 /* strtoul() for /^-/ strings is undefined. */
12086 check("-1", 18446744073709551615UL, 0);
12087 check("-18446744073709551614", 2, 0);
12088 check("-18446744073709551615", 1, 0);
12089 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12090 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12095 $cat >>try.c <<'EOCP'
12096 check("4294967295", 4294967295UL, 0);
12097 check("4294967296", 4294967295UL, ERANGE);
12098 #if 0 /* strtoul() for /^-/ strings is undefined. */
12099 check("-1", 4294967295UL, 0);
12100 check("-4294967294", 2, 0);
12101 check("-4294967295", 1, 0);
12102 check("-4294967296", 4294967295UL, ERANGE);
12103 check("-4294967297", 4294967295UL, ERANGE);
12108 : Should we write these tests to be more portable by sprintf-ing
12109 : ~0 and then manipulating that char string as input for strtol?
12112 $cat >>try.c <<'EOCP'
12119 if eval $compile; then
12121 ok) echo "Your strtoul() seems to be working okay." ;;
12123 Your strtoul() doesn't seem to be working okay.
12132 : see if strtoull exists
12133 set strtoull d_strtoull
12136 case "$d_longlong-$d_strtoull" in
12139 Checking whether your strtoull() works okay...
12141 $cat >try.c <<'EOCP'
12144 #define strtoull __strtoull
12147 extern unsigned long long int strtoull(char *s, char **, int);
12148 static int bad = 0;
12149 int check(char *s, long long eull, int een) {
12152 gull = strtoull(s, 0, 10);
12153 if (!((gull == eull) && (errno == een)))
12157 check(" 1", 1LL, 0);
12158 check(" 0", 0LL, 0);
12159 check("18446744073709551615", 18446744073709551615ULL, 0);
12160 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12161 #if 0 /* strtoull() for /^-/ strings is undefined. */
12162 check("-1", 18446744073709551615ULL, 0);
12163 check("-18446744073709551614", 2LL, 0);
12164 check("-18446744073709551615", 1LL, 0);
12165 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12166 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12173 if eval $compile; then
12175 ok) echo "Your strtoull() seems to be working okay." ;;
12177 Your strtoull() doesn't seem to be working okay.
12179 d_strtoull="$undef"
12186 : see if strtouq exists
12187 set strtouq d_strtouq
12190 case "$d_strtouq" in
12193 Checking whether your strtouq() works okay...
12195 $cat >try.c <<'EOCP'
12198 extern unsigned long long int strtouq(char *s, char **, int);
12199 static int bad = 0;
12200 void check(char *s, unsigned long long eull, int een) {
12201 unsigned long long gull;
12203 gull = strtouq(s, 0, 10);
12204 if (!((gull == eull) && (errno == een)))
12208 check(" 1", 1LL, 0);
12209 check(" 0", 0LL, 0);
12210 check("18446744073709551615", 18446744073709551615ULL, 0);
12211 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12212 #if 0 /* strtouq() for /^-/ strings is undefined. */
12213 check("-1", 18446744073709551615ULL, 0);
12214 check("-18446744073709551614", 2LL, 0);
12215 check("-18446744073709551615", 1LL, 0);
12216 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12217 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12225 if eval $compile; then
12227 ok) echo "Your strtouq() seems to be working okay." ;;
12229 Your strtouq() doesn't seem to be working okay.
12238 : see if strxfrm exists
12239 set strxfrm d_strxfrm
12242 : see if symlink exists
12243 set symlink d_symlink
12246 : see if syscall exists
12247 set syscall d_syscall
12250 : see if sysconf exists
12251 set sysconf d_sysconf
12254 : see if system exists
12255 set system d_system
12258 : see if tcgetpgrp exists
12259 set tcgetpgrp d_tcgetpgrp
12262 : see if tcsetpgrp exists
12263 set tcsetpgrp d_tcsetpgrp
12266 : see if prototype for telldir is available
12268 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12271 : see if this is a sys/times.h system
12272 set sys/times.h i_systimes
12275 : see if times exists
12277 if set times val -f d_times; eval $csym; $val; then
12278 echo 'times() found.' >&4
12281 case "$i_systimes" in
12282 "$define") inc='sys/times.h';;
12284 rp="What is the type returned by times() on this system?"
12285 set clock_t clocktype long stdio.h sys/types.h $inc
12288 echo 'times() NOT found, hope that will do.' >&4
12293 : see if truncate exists
12294 set truncate d_truncate
12297 : see if tzname[] exists
12299 if set tzname val -a d_tzname; eval $csym; $val; then
12301 echo 'tzname[] found.' >&4
12304 echo 'tzname[] NOT found.' >&4
12309 : see if umask exists
12313 : see if ustat exists
12317 : backward compatibility for d_hvfork
12318 if test X$d_hvfork != X; then
12319 d_vfork="$d_hvfork"
12322 : see if there is a vfork
12327 : Ok, but do we want to use it. vfork is reportedly unreliable in
12328 : perl on Solaris 2.x, and probably elsewhere.
12332 case "$usevfork" in
12338 Perl can only use a vfork() that doesn't suffer from strict
12339 restrictions on calling functions or modifying global data in
12340 the child. For example, glibc-2.1 contains such a vfork()
12341 that is unsuitable. If your system provides a proper fork()
12342 call, chances are that you do NOT want perl to use vfork().
12345 rp="Do you still want to use vfork()?"
12350 echo "Ok, we won't use vfork()."
12359 $define) usevfork='true';;
12360 *) usevfork='false';;
12363 : see if this is an sysdir system
12364 set sys/dir.h i_sysdir
12367 : see if this is an sysndir system
12368 set sys/ndir.h i_sysndir
12371 : see if closedir exists
12372 set closedir d_closedir
12375 case "$d_closedir" in
12378 echo "Checking whether closedir() returns a status..." >&4
12379 cat > closedir.c <<EOM
12380 #$i_dirent I_DIRENT /**/
12381 #$i_sysdir I_SYS_DIR /**/
12382 #$i_sysndir I_SYS_NDIR /**/
12383 #$i_systypes I_SYS_TYPES /**/
12385 #if defined(I_SYS_TYPES)
12386 #include <sys/types.h>
12388 #if defined(I_DIRENT)
12389 #include <dirent.h>
12390 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12391 #include <sys/dir.h>
12395 #include <sys/ndir.h>
12399 #include <ndir.h> /* may be wrong in the future */
12401 #include <sys/dir.h>
12406 int main() { return closedir(opendir(".")); }
12409 if eval $compile_ok; then
12410 if ./closedir > /dev/null 2>&1 ; then
12411 echo "Yes, it does."
12414 echo "No, it doesn't."
12418 echo "(I can't seem to compile the test program--assuming it doesn't)"
12426 set d_void_closedir
12429 : see if there is a wait4
12433 : see if waitpid exists
12434 set waitpid d_waitpid
12437 : see if wcstombs exists
12438 set wcstombs d_wcstombs
12441 : see if wctomb exists
12442 set wctomb d_wctomb
12445 : preserve RCS keywords in files with variable substitution, grrr
12450 Revision='$Revision'
12452 case "$crosscompile" in
12453 ''|[nN]*) crosscompile="$undef" ;;
12457 next|rhapsody|darwin) multiarch="$define" ;;
12459 case "$multiarch" in
12460 ''|[nN]*) multiarch="$undef" ;;
12463 : check for alignment requirements
12465 case "$crosscompile$multiarch" in
12468 You seem to be either cross-compiling or doing a multiarchitecture build,
12469 skipping the memory alignment check.
12472 case "$alignbytes" in
12473 '') alignbytes=8 ;;
12477 case "$alignbytes" in
12478 '') echo "Checking alignment constraints..." >&4
12479 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12480 $cat >try.c <<'EOCP'
12481 typedef long double NV;
12484 $cat >try.c <<'EOCP'
12488 $cat >>try.c <<'EOCP'
12496 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12501 if eval $compile_ok; then
12505 echo "(I can't seem to compile the test program...)"
12508 *) dflt="$alignbytes"
12511 rp="Doubles must be aligned on a how-many-byte boundary?"
12519 : set the base revision
12522 : check for ordering of bytes in a long
12524 case "$crosscompile$multiarch" in
12527 You seem to be either cross-compiling or doing a multiarchitecture build,
12528 skipping the byteorder check.
12534 case "$byteorder" in
12537 In the following, larger digits indicate more significance. A big-endian
12538 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12539 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12540 machines may have weird orders like 3412. A Cray will report 87654321,
12541 an Alpha will report 12345678. If the test program works the default is
12543 I'm now running the test program...
12545 $cat >try.c <<'EOCP'
12552 char c[sizeof(long)];
12555 if (sizeof(long) > 4)
12556 u.l = (0x08070605L << 32) | 0x04030201L;
12559 for (i = 0; i < sizeof(long); i++)
12560 printf("%c", u.c[i]+'0');
12567 if eval $compile && ./try > /dev/null; then
12570 [1-4][1-4][1-4][1-4]|12345678|87654321)
12571 echo "(The test program ran ok.)"
12572 echo "byteorder=$dflt"
12575 ????|????????) echo "(The test program ran ok.)" ;;
12576 *) echo "(The test program didn't run right for some reason.)" ;;
12581 (I can't seem to compile the test program. Guessing big-endian...)
12584 case "$xxx_prompt" in
12586 rp="What is the order of bytes in a long?"
12600 : how do we catenate cpp tokens here?
12602 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12603 $cat >cpp_stuff.c <<'EOCP'
12604 #define RCAT(a,b)a/**/b
12605 #define ACAT(a,b)a ## b
12609 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12610 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12611 echo "Oh! Smells like ANSI's been here." >&4
12612 echo "We can catify or stringify, separately or together!"
12614 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12615 echo "Ah, yes! The good old days!" >&4
12616 echo "However, in the good old days we don't know how to stringify and"
12617 echo "catify at the same time."
12621 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12622 to have to edit the values of CAT[2-5] in config.h...
12624 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12628 : see if this is a db.h system
12634 : Check db version.
12636 echo "Checking Berkeley DB version ..." >&4
12642 #include <sys/types.h>
12647 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12648 int Major, Minor, Patch ;
12649 unsigned long Version ;
12650 (void)db_version(&Major, &Minor, &Patch) ;
12651 printf("You have Berkeley DB Version 2 or greater\n");
12653 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12654 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12655 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12656 Major, Minor, Patch) ;
12658 /* check that db.h & libdb are compatible */
12659 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12660 printf("db.h and libdb are incompatible\n") ;
12664 printf("db.h and libdb are compatible\n") ;
12666 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12667 + DB_VERSION_PATCH ;
12669 /* needs to be >= 2.3.4 */
12670 if (Version < 2003004) {
12671 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12672 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12678 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12679 printf("You have Berkeley DB Version 1\n");
12680 exit(0); /* DB version < 2: the coast is clear. */
12682 exit(1); /* <db.h> not Berkeley DB? */
12688 if eval $compile_ok && ./try; then
12689 echo 'Looks OK.' >&4
12691 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12695 : Remove db from list of libraries to use
12696 echo "Removing unusable -ldb from library list" >&4
12697 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12700 echo "libs = $libs" >&4
12710 : Check the return type needed for hash
12712 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12718 #include <sys/types.h>
12721 #ifndef DB_VERSION_MAJOR
12722 u_int32_t hash_cb (ptr, size)
12730 info.hash = hash_cb;
12734 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12735 if $contains warning try.out >>/dev/null 2>&1 ; then
12738 db_hashtype='u_int32_t'
12741 : XXX Maybe we should just give up here.
12742 db_hashtype=u_int32_t
12744 echo "Help: I can't seem to compile the db test program." >&4
12745 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12748 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12750 *) db_hashtype=u_int32_t
12755 : Check the return type needed for prefix
12757 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12763 #include <sys/types.h>
12766 #ifndef DB_VERSION_MAJOR
12767 size_t prefix_cb (key1, key2)
12775 info.prefix = prefix_cb;
12779 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12780 if $contains warning try.out >>/dev/null 2>&1 ; then
12781 db_prefixtype='int'
12783 db_prefixtype='size_t'
12786 db_prefixtype='size_t'
12787 : XXX Maybe we should just give up here.
12789 echo "Help: I can't seem to compile the db test program." >&4
12790 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12793 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12795 *) db_prefixtype='size_t'
12799 : check for void type
12801 echo "Checking to see how well your C compiler groks the void type..." >&4
12802 case "$voidflags" in
12804 $cat >try.c <<'EOCP'
12810 extern void moo(); /* function returning void */
12811 void (*goo)(); /* ptr to func returning void */
12813 void *hue; /* generic ptr */
12826 int main() { sub(); }
12828 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12829 voidflags=$defvoidused
12830 echo "Good. It appears to support void to the level $package wants.">&4
12831 if $contains warning .out >/dev/null 2>&1; then
12832 echo "However, you might get some warnings that look like this:"
12836 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12837 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12838 echo "It supports 1..."
12839 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12840 echo "It also supports 2..."
12841 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12843 echo "And it supports 4 but not 8 definitely."
12845 echo "It doesn't support 4..."
12846 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12848 echo "But it supports 8."
12851 echo "Neither does it support 8."
12855 echo "It does not support 2..."
12856 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12858 echo "But it supports 4 and 8."
12860 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12862 echo "And it supports 4 but has not heard about 8."
12864 echo "However it supports 8 but not 4."
12869 echo "There is no support at all for void."
12874 case "$voidflags" in
12876 *) $cat >&4 <<'EOM'
12877 Support flag bits are:
12878 1: basic void declarations.
12879 2: arrays of pointers to functions returning void.
12880 4: operations between pointers to and addresses of void functions.
12881 8: generic void pointers.
12884 rp="Your void support flags add up to what?"
12892 : How can we generate normalized random numbers ?
12894 echo "Looking for a random number function..." >&4
12895 case "$randfunc" in
12897 if set drand48 val -f; eval $csym; $val; then
12899 echo "Good, found drand48()." >&4
12900 elif set random val -f; eval $csym; $val; then
12902 echo "OK, found random()." >&4
12905 echo "Yick, looks like I have to use rand()." >&4
12916 *-Dmy_rand=*|*-Dmy_srand=*)
12917 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12918 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12919 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12920 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12924 while $test "$cont"; do
12925 rp="Use which function to generate random numbers?"
12927 if $test "$ans" = "$dflt"; then
12933 if set $ans val -f; eval $csym; $val; then
12937 rp="I cannot find function $ans. Use that name anyway?"
12946 case "$randfunc" in
12948 drand01="drand48()"
12954 case "$randbits" in
12956 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12958 #$i_unistd I_UNISTD
12959 #$i_stdlib I_STDLIB
12962 # include <unistd.h>
12965 # include <stdlib.h>
12970 register unsigned long tmp;
12971 register unsigned long max = 0L;
12973 for (i = 1000; i; i--) {
12974 tmp = (unsigned long) $randfunc();
12975 if (tmp > max) max = tmp;
12977 for (i = 0; max; i++)
12983 if eval $compile_ok; then
12987 echo "(I can't seem to compile the test program...)"
12994 rp="How many bits does your $randfunc() function produce?"
12998 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12999 seedfunc="s$randfunc"
13000 randseedtype=unsigned
13004 rp="How many bits does your $randfunc() function produce?"
13007 seedfunc="s$randfunc"
13008 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13009 if set $seedfunc val -f; eval $csym; $val; then
13010 echo "(Using $seedfunc() to seed random generator)"
13012 echo "(Warning: no $seedfunc() to seed random generator)"
13015 randseedtype=unsigned
13023 echo "Determining whether or not we are on an EBCDIC system..." >&4
13024 $cat >tebcdic.c <<'EOM'
13027 if ('M'==0xd4) return 0;
13034 if eval $compile_ok; then
13036 echo "You seem to speak EBCDIC." >&4
13039 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13042 echo "I'm unable to compile the test program." >&4
13043 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13045 $rm -f tebcdic.c tebcdic
13051 Checking how to flush all pending stdio output...
13053 # I only know how to find the first 32 possibly open files on SunOS.
13054 # See also hints/sunos_4_1.sh and util.c --AD
13056 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13058 $cat >>try.c <<EOCP
13060 #$i_unistd I_UNISTD
13062 # include <unistd.h>
13064 #$d_sysconf HAS_SYSCONF
13065 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13066 #ifdef HAS_STDIO_STREAM_ARRAY
13067 # define STDIO_STREAM_ARRAY $stdio_stream_array
13070 FILE* p = fopen("try.out", "w");
13074 # ifdef TRY_FPRINTF
13078 #ifdef TRY_FFLUSH_NULL
13081 #ifdef TRY_FFLUSH_ALL
13083 long open_max = -1;
13084 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13085 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13087 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13088 open_max = sysconf(_SC_OPEN_MAX);
13091 open_max = FOPEN_MAX;
13094 open_max = OPEN_MAX;
13103 # ifdef HAS_STDIO_STREAM_ARRAY
13104 if (open_max > 0) {
13106 for (i = 0; i < open_max; i++)
13107 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13108 STDIO_STREAM_ARRAY[i]._file < open_max &&
13109 STDIO_STREAM_ARRAY[i]._flag)
13110 fflush(&STDIO_STREAM_ARRAY[i]);
13118 : first we have to find out how _not_ to flush
13119 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13121 set try -DTRY_FPUTC
13122 if eval $compile; then
13124 ./try$exe_ext 2>/dev/null
13125 if $test ! -s try.out -a "X$?" = X42; then
13131 set try -DTRY_FPRINTF
13133 if eval $compile; then
13135 ./try$exe_ext 2>/dev/null
13136 if $test ! -s try.out -a "X$?" = X42; then
13137 output=-DTRY_FPRINTF
13143 : check for fflush NULL behaviour
13144 case "$fflushNULL" in
13145 '') set try -DTRY_FFLUSH_NULL $output
13146 if eval $compile; then
13148 ./try$exe_ext 2>/dev/null
13150 if $test -s try.out -a "X$code" = X42; then
13151 fflushNULL="`$cat try.out`"
13153 if $test "X$code" != X42; then
13155 (If this test failed, don't worry, we'll try another method shortly.)
13160 $rm -f core try.core core.try.*
13161 case "$fflushNULL" in
13163 Your fflush(NULL) works okay for output streams.
13164 Let's see if it clobbers input pipes...
13166 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13167 # bug that improperly flushes the input end of pipes. So we avoid the
13168 # autoflush on fork/system/exec support for now. :-(
13169 $cat >tryp.c <<EOCP
13172 main(int argc, char **argv)
13178 while ((i = getc(stdin)) != -1
13179 && (*bp++ = i) != '\n'
13180 && bp < &buf[1024])
13183 fprintf(stdout, "%s", buf);
13191 fflushNULL="$define"
13193 if eval $compile; then
13195 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13196 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13198 fflush(NULL) seems to behave okay with input streams.
13200 fflushNULL="$define"
13203 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13205 fflushNULL="$undef"
13208 $rm -f core tryp.c tryp.core core.tryp.*
13211 Your fflush(NULL) isn't working (contrary to ANSI C).
13213 fflushNULL="$undef"
13216 Cannot figure out whether your fflush(NULL) works or not.
13217 I'm assuming it doesn't (contrary to ANSI C).
13219 fflushNULL="$undef"
13223 $define|true|[yY]*)
13224 fflushNULL="$define"
13227 fflushNULL="$undef"
13230 : check explicit looping only if NULL did not work, and if the pipe
13231 : bug does not show up on an explicit flush too
13232 case "$fflushNULL" in
13234 $cat >tryp.c <<EOCP
13237 main(int argc, char **argv)
13243 while ((i = getc(stdin)) != -1
13244 && (*bp++ = i) != '\n'
13245 && bp < &buf[1024])
13248 fprintf(stdout, "%s", buf);
13257 if eval $compile; then
13259 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13260 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13262 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13264 : now check for fflushall behaviour
13265 case "$fflushall" in
13266 '') set try -DTRY_FFLUSH_ALL $output
13267 if eval $compile; then
13269 (Now testing the other method--but note that this also may fail.)
13272 ./try$exe_ext 2>/dev/null
13273 if $test -s try.out -a "X$?" = X42; then
13274 fflushall="`$cat try.out`"
13277 $rm -f core try.core core.try.*
13278 case "$fflushall" in
13280 Whew. Flushing explicitly all the stdio streams works.
13282 fflushall="$define"
13285 Sigh. Flushing explicitly all the stdio streams doesn't work.
13290 Cannot figure out whether flushing stdio streams explicitly works or not.
13291 I'm assuming it doesn't.
13297 "$define"|true|[yY]*)
13298 fflushall="$define"
13306 All is futile. Even fflush(stdin) clobbers input pipes!
13313 $rm -f core tryp.c tryp.core core.tryp.*
13315 *) fflushall="$undef"
13319 case "$fflushNULL$fflushall" in
13322 OK, I give up. I cannot figure out how to flush pending stdio output.
13323 We won't be flushing handles at all before fork/exec/popen.
13327 $rm -f try.* try$exe_ext
13329 : Store the full pathname to the ar program for use in the C program
13330 : Respect a hint or command line value for full_ar.
13335 : Store the full pathname to the sed program for use in the C program
13338 : see what type gids are declared as in the kernel
13340 echo "Looking for the type for group ids returned by getgid()."
13341 set gid_t gidtype xxx stdio.h sys/types.h
13345 xxx=`./findhdr sys/user.h`
13346 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13348 unsigned) dflt="$1 $2" ;;
13352 *) dflt="$gidtype";;
13355 gid_t) echo "gid_t found." ;;
13356 *) rp="What is the type for group ids returned by getgid()?"
13364 *_t) zzz="$gidtype" ;;
13367 echo "Checking the size of $zzz..." >&4
13369 #include <sys/types.h>
13372 printf("%d\n", (int)sizeof($gidtype));
13377 if eval $compile_ok; then
13381 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13384 echo "Your $zzz is $gidsize bytes long."
13389 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13395 *_t) zzz="$gidtype" ;;
13398 echo "Checking the sign of $zzz..." >&4
13400 #include <sys/types.h>
13411 if eval $compile; then
13415 echo "(I can't execute the test program--guessing unsigned.)" >&4
13419 1) echo "Your $zzz is unsigned." ;;
13420 -1) echo "Your $zzz is signed." ;;
13426 echo "(I can't compile the test program--guessing unsigned.)" >&4
13432 if $test X"$quadtype" != X; then
13434 echo "Checking how to print 64-bit integers..." >&4
13436 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13437 $cat >try.c <<'EOCP'
13438 #include <sys/types.h>
13441 int q = 12345678901;
13442 printf("%ld\n", q);
13446 if eval $compile; then
13447 yyy=`./try$exe_ext`
13450 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13451 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13452 echo "We will use %d."
13458 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13459 $cat >try.c <<'EOCP'
13460 #include <sys/types.h>
13463 long q = 12345678901;
13464 printf("%ld\n", q);
13468 if eval $compile; then
13469 yyy=`./try$exe_ext`
13472 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13473 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13474 echo "We will use %ld."
13480 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13481 $cat >try.c <<'EOCP'
13482 #include <sys/types.h>
13483 #include <inttypes.h>
13486 int64_t q = 12345678901;
13487 printf("%" PRId64 "\n", q);
13491 if eval $compile; then
13492 yyy=`./try$exe_ext`
13495 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13496 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13497 echo "We will use the C9X style."
13503 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13504 $cat >try.c <<'EOCP'
13505 #include <sys/types.h>
13508 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13509 printf("%lld\n", q);
13513 if eval $compile; then
13514 yyy=`./try$exe_ext`
13517 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13518 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13519 echo "We will use the %lld style."
13525 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13527 #include <sys/types.h>
13530 $quadtype q = 12345678901;
13531 printf("%Ld\n", q);
13535 if eval $compile; then
13536 yyy=`./try$exe_ext`
13539 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13540 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13541 echo "We will use %Ld."
13547 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13549 #include <sys/types.h>
13552 $quadtype q = 12345678901;
13553 printf("%qd\n", q);
13557 if eval $compile; then
13558 yyy=`./try$exe_ext`
13561 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13562 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13563 echo "We will use %qd."
13569 if $test X"$sPRId64" = X; then
13570 echo "Cannot figure out how to print 64-bit integers." >&4
13578 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13579 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13581 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13582 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13588 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13590 if $test X"$ivsize" = X8; then
13591 ivdformat="$sPRId64"
13592 uvuformat="$sPRIu64"
13593 uvoformat="$sPRIo64"
13594 uvxformat="$sPRIx64"
13595 uvXUformat="$sPRIXU64"
13597 if $test X"$ivsize" = X"$longsize"; then
13604 if $test X"$ivsize" = X"$intsize"; then
13612 if $test X"$ivsize" = X"$shortsize"; then
13623 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13624 nveformat="$sPRIeldbl"
13625 nvfformat="$sPRIfldbl"
13626 nvgformat="$sPRIgldbl"
13627 nvEUformat="$sPRIEUldbl"
13628 nvFUformat="$sPRIFUldbl"
13629 nvGUformat="$sPRIGUldbl"
13639 case "$ivdformat" in
13640 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13647 $echo "Checking the format string to be used for gids..." >&4
13650 -1) if $test X"$gidsize" = X"$ivsize"; then
13651 gidformat="$ivdformat"
13653 if $test X"$gidsize" = X"$longsize"; then
13656 if $test X"$gidsize" = X"$intsize"; then
13659 if $test X"$gidsize" = X"$shortsize"; then
13666 *) if $test X"$gidsize" = X"$uvsize"; then
13667 gidformat="$uvuformat"
13669 if $test X"$gidsize" = X"$longsize"; then
13672 if $test X"$gidsize" = X"$intsize"; then
13675 if $test X"$gidsize" = X"$shortsize"; then
13684 : see if getgroups exists
13685 set getgroups d_getgrps
13688 : see if setgroups exists
13689 set setgroups d_setgrps
13693 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13695 case "$d_getgrps$d_setgrps" in
13697 case "$groupstype" in
13698 '') dflt="$gidtype" ;;
13699 *) dflt="$groupstype" ;;
13702 What type of pointer is the second argument to getgroups() and setgroups()?
13703 Usually this is the same as group ids, $gidtype, but not always.
13706 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13710 *) groupstype="$gidtype";;
13714 echo "Checking if your $make program sets \$(MAKE)..." >&4
13715 case "$make_set_make" in
13717 $sed 's/^X //' > testmake.mak << 'EOF'
13719 X @echo 'maketemp="$(MAKE)"'
13721 case "`$make -f testmake.mak 2>/dev/null`" in
13722 *maketemp=*) make_set_make='#' ;;
13723 *) make_set_make="MAKE=$make" ;;
13725 $rm -f testmake.mak
13728 case "$make_set_make" in
13729 '#') echo "Yup, it does.";;
13730 *) echo "Nope, it doesn't.";;
13733 : see what type is used for mode_t
13734 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13735 set mode_t modetype int stdio.h sys/types.h
13738 : see if stdarg is available
13740 if $test `./findhdr stdarg.h`; then
13741 echo "<stdarg.h> found." >&4
13744 echo "<stdarg.h> NOT found." >&4
13748 : see if varags is available
13750 if $test `./findhdr varargs.h`; then
13751 echo "<varargs.h> found." >&4
13753 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13756 : set up the varargs testing programs
13757 $cat > varargs.c <<EOP
13759 #include <stdarg.h>
13762 #include <varargs.h>
13766 int f(char *p, ...)
13780 p = va_arg(ap, char *);
13785 $cat > varargs <<EOP
13787 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13796 : now check which varargs header should be included
13801 if `./varargs I_STDARG`; then
13803 elif `./varargs I_VARARGS`; then
13808 if `./varargs I_VARARGS`; then
13815 echo "I could not find the definition for va_dcl... You have problems..." >&4
13816 val="$undef"; set i_stdarg; eval $setvar
13817 val="$undef"; set i_varargs; eval $setvar
13822 case "$i_varhdr" in
13824 val="$define"; set i_stdarg; eval $setvar
13825 val="$undef"; set i_varargs; eval $setvar
13828 val="$undef"; set i_stdarg; eval $setvar
13829 val="$define"; set i_varargs; eval $setvar
13832 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13836 : see if we need va_copy
13838 case "$i_stdarg" in
13841 #include <stdarg.h>
13843 #$i_stdlib I_STDLIB
13845 #include <stdlib.h>
13847 #include <signal.h>
13850 ivfprintf(FILE *f, const char *fmt, va_list *valp)
13852 return vfprintf(f, fmt, *valp);
13856 myvfprintf(FILE *f, const char *fmt, va_list val)
13858 return ivfprintf(f, fmt, &val);
13862 myprintf(char *fmt, ...)
13865 va_start(val, fmt);
13866 return myvfprintf(stdout, fmt, val);
13870 main(int ac, char **av)
13872 signal(SIGSEGV, exit);
13874 myprintf("%s%cs all right, then\n", "that", '\'');
13879 if eval $compile && ./try 2>&1 >/dev/null; then
13881 "that's all right, then")
13887 yes) echo "It seems that you don't need va_copy()." >&4
13888 need_va_copy="$undef"
13890 *) echo "It seems that va_copy() or similar will be needed." >&4
13891 need_va_copy="$define"
13894 $rm -f try.* core core.* *.core *.core.*
13896 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13900 : define a fucntion to check prototypes
13901 $cat > protochk <<EOSH
13904 optimize="$optimize"
13906 prototype="$prototype"
13911 $cat >> protochk <<'EOSH'
13916 while test $# -ge 2; do
13918 $define) echo "#include <$2>" >> try.c ;;
13919 literal) echo "$2" >> try.c ;;
13923 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13924 cat >> try.c <<'EOCP'
13925 #ifdef CAN_PROTOTYPE
13926 #define _(args) args
13931 echo "$foo" >> try.c
13932 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13933 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13939 $eunicefix protochk
13941 : see what type is used for size_t
13942 rp="What is the type used for the length parameter for string functions?"
13943 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13946 : check for type of arguments to gethostbyaddr.
13947 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13948 case "$d_gethbyaddr" in
13952 Checking to see what type of arguments are accepted by gethostbyaddr().
13954 hdrs="$define sys/types.h
13955 $d_socket sys/socket.h
13956 $i_niin netinet/in.h
13958 $i_unistd unistd.h"
13959 : The first arg can 'char *' or 'void *'
13960 : The second arg is some of integral type
13961 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13962 for yyy in size_t long int; do
13963 case "$netdb_host_type" in
13964 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13965 if ./protochk "$try" $hdrs; then
13966 echo "Your system accepts $xxx for the first arg."
13967 echo "...and $yyy for the second arg."
13968 netdb_host_type="$xxx"
13969 netdb_hlen_type="$yyy"
13975 : In case none of those worked, prompt the user.
13976 case "$netdb_host_type" in
13977 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13980 netdb_host_type=$ans
13981 rp='What is the type for the 2nd argument to gethostbyaddr?'
13984 netdb_hlen_type=$ans
13988 *) : no gethostbyaddr, so pick harmless defaults
13989 netdb_host_type='char *'
13990 netdb_hlen_type="$sizetype"
13993 # Remove the "const" if needed. -- but then we'll have a
13995 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13998 : check for type of argument to gethostbyname.
13999 if test "X$netdb_name_type" = X ; then
14000 case "$d_gethbyname" in
14004 Checking to see what type of argument is accepted by gethostbyname().
14006 hdrs="$define sys/types.h
14007 $d_socket sys/socket.h
14008 $i_niin netinet/in.h
14010 $i_unistd unistd.h"
14011 for xxx in "const char *" "char *"; do
14012 case "$netdb_name_type" in
14013 '') try="extern struct hostent *gethostbyname($xxx);"
14014 if ./protochk "$try" $hdrs; then
14015 echo "Your system accepts $xxx."
14016 netdb_name_type="$xxx"
14021 : In case none of those worked, prompt the user.
14022 case "$netdb_name_type" in
14023 '') rp='What is the type for the 1st argument to gethostbyname?'
14026 netdb_name_type=$ans
14030 *) : no gethostbyname, so pick harmless default
14031 netdb_name_type='char *'
14036 : check for type of 1st argument to getnetbyaddr.
14037 if test "X$netdb_net_type" = X ; then
14038 case "$d_getnbyaddr" in
14042 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14044 hdrs="$define sys/types.h
14045 $d_socket sys/socket.h
14046 $i_niin netinet/in.h
14048 $i_unistd unistd.h"
14049 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14050 case "$netdb_net_type" in
14051 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14052 if ./protochk "$try" $hdrs; then
14053 echo "Your system accepts $xxx."
14054 netdb_net_type="$xxx"
14059 : In case none of those worked, prompt the user.
14060 case "$netdb_net_type" in
14061 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14064 netdb_net_type=$ans
14068 *) : no getnetbyaddr, so pick harmless default
14069 netdb_net_type='long'
14073 : locate the preferred pager for this system
14079 [a-zA-Z]:/*) dflt=$pg;;
14083 [a-zA-Z]:/*) dflt=$more;;
14087 [a-zA-Z]:/*) dflt=$less;;
14090 '') dflt=/usr/ucb/more;;
14097 rp='What pager is used on your system?'
14101 : see what type pids are declared as in the kernel
14102 rp="What is the type of process ids on this system?"
14103 set pid_t pidtype int stdio.h sys/types.h
14106 : Find earliest binary compatible site_perl subdirectory perl can use.
14107 case "$bincompat5005" in
14108 "$define") xs_apiversion='5.005' ;;
14109 *) xs_apiversion=$version ;; # The current site_perl version.
14111 : Find earliest pure perl site_perl subdirectory perl can use.
14112 : The versioned directories started at 5.005.
14113 pm_apiversion='5.005'
14115 : check for length of pointer
14119 echo "Checking to see how big your pointers are..." >&4
14120 if test "$voidflags" -gt 7; then
14121 echo '#define VOID_PTR char *' > try.c
14123 echo '#define VOID_PTR void *' > try.c
14125 $cat >>try.c <<'EOCP'
14129 printf("%d\n", (int)sizeof(VOID_PTR));
14134 if eval $compile_ok; then
14136 echo "Your pointers are $ptrsize bytes long."
14139 echo "(I can't seem to compile the test program. Guessing...)" >&4
14140 rp="What is the size of a pointer (in bytes)?"
14148 : see if ar generates random libraries by itself
14150 echo "Checking how to generate random libraries on your machine..." >&4
14151 echo 'int bar1() { return bar2(); }' > bar1.c
14152 echo 'int bar2() { return 2; }' > bar2.c
14153 $cat > foo.c <<'EOP'
14154 int main() { printf("%d\n", bar1()); exit(0); }
14156 $cc $ccflags -c bar1.c >/dev/null 2>&1
14157 $cc $ccflags -c bar2.c >/dev/null 2>&1
14158 $cc $ccflags -c foo.c >/dev/null 2>&1
14159 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14160 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14161 ./foobar >/dev/null 2>&1; then
14162 echo "$ar appears to generate random libraries itself."
14165 elif $ar ts bar$_a >/dev/null 2>&1 &&
14166 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14167 ./foobar >/dev/null 2>&1; then
14168 echo "a table of contents needs to be added with '$ar ts'."
14175 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14176 $test -f $ranlib || ranlib=''
14179 if $test -n "$ranlib"; then
14180 echo "your system has '$ranlib'; we'll use that."
14183 echo "your system doesn't seem to support random libraries"
14184 echo "so we'll use lorder and tsort to order the libraries."
14191 : check for type of arguments to select.
14192 case "$selecttype" in
14193 '') case "$d_select" in
14197 Checking to see what type of arguments are accepted by select().
14199 hdrs="$define sys/types.h
14200 $i_systime sys/time.h
14201 $i_sysselct sys/select.h
14202 $d_socket sys/socket.h"
14203 : The first arg can be int, unsigned, or size_t
14204 : The last arg may or may not be 'const'
14206 : void pointer has been seen but using that
14207 : breaks the selectminbits test
14208 for xxx in 'fd_set *' 'int *'; do
14209 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14210 for tmo in 'struct timeval *' 'const struct timeval *'; do
14212 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14213 if ./protochk "$try" $hdrs; then
14214 echo "Your system accepts $xxx."
14223 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14224 case "$d_fd_set" in
14225 $define) dflt="fd_set *" ;;
14234 *) : no select, so pick a harmless default
14241 : check for the select 'width'
14242 case "$selectminbits" in
14243 '') case "$d_select" in
14247 Checking to see on how many bits at a time your select() operates...
14250 #include <sys/types.h>
14252 #$i_systime I_SYS_TIME
14253 #$i_systimek I_SYS_TIME_KERNEL
14258 # ifdef I_SYS_TIME_KERNEL
14261 # include <sys/time.h>
14262 # ifdef I_SYS_TIME_KERNEL
14266 #$i_sysselct I_SYS_SELECT
14267 #ifdef I_SYS_SELECT
14268 #include <sys/select.h>
14270 #$d_socket HAS_SOCKET
14272 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14276 #define S sizeof(*(b))
14278 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14279 #define NBITS (NBYTES * 8)
14288 fp = fopen("try.c", "r");
14294 b = ($selecttype)s;
14295 for (i = 0; i < NBITS; i++)
14299 select(fd + 1, b, 0, 0, &t);
14300 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14301 printf("%d\n", i + 1);
14306 if eval $compile_ok; then
14307 selectminbits=`./try`
14308 case "$selectminbits" in
14310 Cannot figure out on how many bits at a time your select() operates.
14311 I'll play safe and guess it is 32 bits.
14317 *) bits="$selectminbits bits" ;;
14319 echo "Your select() operates on $bits at a time." >&4
14321 rp='What is the minimum number of bits your select() operates on?'
14322 case "$byteorder" in
14323 1234|12345678) dflt=32 ;;
14328 selectminbits="$val"
14332 *) : no select, so pick a harmless default
14339 : Trace out the files included by signal.h, then look for SIGxxx names.
14340 : Remove SIGARRAYSIZE used by HPUX.
14341 : Remove SIGSTKSIZE used by Linux.
14342 : Remove SIGSTKSZ used by Posix.
14343 : Remove SIGTYP void lines used by OS2.
14344 : Some cpps, like os390, dont give the file name anywhere
14345 if [ "X$fieldn" = X ]; then
14346 : Just make some guesses. We check them later.
14347 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14349 xxx=`echo '#include <signal.h>' |
14350 $cppstdin $cppminus $cppflags 2>/dev/null |
14351 $grep '^[ ]*#.*include' |
14352 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14354 : Check this list of files to be sure we have parsed the cpp output ok.
14355 : This will also avoid potentially non-existent files, such
14358 for xx in $xxx /dev/null ; do
14359 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14361 : If we have found no files, at least try signal.h
14362 case "$xxxfiles" in
14363 '') xxxfiles=`./findhdr signal.h` ;;
14366 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14367 print substr($2, 4, 20)
14369 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14370 print substr($3, 4, 20)
14372 : Append some common names just in case the awk scan failed.
14373 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14374 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14375 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14376 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14377 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14379 : generate a few handy files for later
14380 $cat > signal.c <<'EOCP'
14381 #include <sys/types.h>
14382 #include <signal.h>
14386 /* Strange style to avoid deeply-nested #if/#else/#endif */
14389 # define NSIG (_NSIG)
14395 # define NSIG (SIGMAX+1)
14401 # define NSIG (SIG_MAX+1)
14407 # define NSIG (MAXSIG+1)
14413 # define NSIG (MAX_SIG+1)
14418 # ifdef SIGARRAYSIZE
14419 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14425 # define NSIG (_sys_nsig) /* Solaris 2.5 */
14429 /* Default to some arbitrary number that's big enough to get most
14430 of the common signals.
14436 printf("NSIG %d\n", NSIG);
14442 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14444 printf "#ifdef SIG"; printf $1; printf "\n"
14445 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14446 printf $1; printf ");\n"
14450 printf "#endif /* JUST_NSIG */\n";
14451 printf "exit(0);\n}\n";
14454 $cat >signal.awk <<'EOP'
14455 BEGIN { ndups = 0 }
14456 $1 ~ /^NSIG$/ { nsig = $2 }
14457 ($1 !~ /^NSIG$/) && (NF == 2) {
14458 if ($2 > maxsig) { maxsig = $2 }
14459 if (sig_name[$2]) {
14460 dup_name[ndups] = $1
14461 dup_num[ndups] = $2
14473 printf("NSIG %d\n", nsig);
14474 for (n = 1; n < nsig; n++) {
14476 printf("%s %d\n", sig_name[n], sig_num[n])
14479 printf("NUM%d %d\n", n, n)
14482 for (n = 0; n < ndups; n++) {
14483 printf("%s %d\n", dup_name[n], dup_num[n])
14487 $cat >signal_cmd <<EOS
14489 if $test -s signal.lst; then
14490 echo "Using your existing signal.lst file"
14495 $cat >>signal_cmd <<'EOS'
14498 if eval $compile_ok; then
14499 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14501 echo "(I can't seem be able to compile the whole test program)" >&4
14502 echo "(I'll try it in little pieces.)" >&4
14503 set signal -DJUST_NSIG
14504 if eval $compile_ok; then
14505 ./signal$_exe > signal.nsg
14508 echo "I can't seem to figure out how many signals you have." >&4
14509 echo "Guessing 50." >&4
14510 echo 'NSIG 50' > signal.nsg
14512 : Now look at all the signal names, one at a time.
14513 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14514 $cat > signal.c <<EOCP
14515 #include <sys/types.h>
14516 #include <signal.h>
14519 printf("$xx %d\n", SIG${xx});
14524 if eval $compile; then
14525 echo "SIG${xx} found."
14526 ./signal$_exe >> signal.ls1
14528 echo "SIG${xx} NOT found."
14531 if $test -s signal.ls1; then
14532 $cat signal.nsg signal.ls1 |
14533 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14537 if $test -s signal.lst; then
14540 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14541 echo 'kill -l' >signal
14542 set X `csh -f <signal`
14546 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14548 echo $@ | $tr ' ' $trnl | \
14549 $awk '{ printf "%s %d\n", $1, ++s; }
14550 END { printf "NSIG %d\n", ++s }' >signal.lst
14552 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14554 chmod a+x signal_cmd
14555 $eunicefix signal_cmd
14557 : generate list of signal names
14559 case "$sig_name_init" in
14561 *) case "$sig_num_init" in
14562 ''|*,*) doinit=yes ;;
14567 echo "Generating a list of signal names and numbers..." >&4
14569 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14570 sig_name=`$awk 'BEGIN { printf "ZERO " }
14571 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14572 sig_num=`$awk 'BEGIN { printf "0 " }
14573 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14574 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14575 !/^NSIG/ { printf "\"%s\", ", $1 }
14576 END { printf "0\n" }' signal.lst`
14577 sig_num_init=`$awk 'BEGIN { printf "0, " }
14578 !/^NSIG/ { printf "%d, ", $2}
14579 END { printf "0\n"}' signal.lst`
14582 echo "The following $sig_count signals are available:"
14584 echo $sig_name | $awk \
14585 'BEGIN { linelen = 0 }
14587 for (i = 1; i <= NF; i++) {
14588 name = "SIG" $i " "
14589 linelen = linelen + length(name)
14590 if (linelen > 70) {
14592 linelen = length(name)
14598 sig_size=`echo $sig_name | awk '{print NF}'`
14599 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14602 case "$sizetype" in
14603 *_t) zzz="$sizetype" ;;
14604 *) zzz="filesize" ;;
14606 echo "Checking the size of $zzz..." >&4
14608 #include <sys/types.h>
14611 printf("%d\n", (int)sizeof($sizetype));
14616 if eval $compile_ok; then
14620 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14623 echo "Your $zzz size is $sizesize bytes."
14628 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14632 : check for socklen_t
14634 echo "Checking to see if you have socklen_t..." >&4
14636 #include <sys/types.h>
14637 #$d_socket HAS_SOCKET
14639 #include <sys/socket.h>
14641 int main() { socklen_t x = 16; }
14644 if eval $compile; then
14646 echo "You have socklen_t."
14649 echo "You do not have socklen_t."
14650 case "$sizetype" in
14651 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14658 : see if this is a socks.h system
14659 set socks.h i_socks
14662 : check for type of the size argument to socket calls
14663 case "$d_socket" in
14667 Checking to see what type is the last argument of accept().
14670 case "$d_socklen_t" in
14671 "$define") yyy="$yyy socklen_t"
14673 yyy="$yyy $sizetype int long unsigned"
14674 for xxx in $yyy; do
14675 case "$socksizetype" in
14676 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14677 case "$usesocks" in
14679 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14680 echo "Your system accepts '$xxx *' for the last argument of accept()."
14681 socksizetype="$xxx"
14684 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
14685 echo "Your system accepts '$xxx *' for the last argument of accept()."
14686 socksizetype="$xxx"
14693 : In case none of those worked, prompt the user.
14694 case "$socksizetype" in
14695 '') rp='What is the type for socket address structure sizes?'
14702 *) : no sockets, so pick relatively harmless default
14707 : see what type is used for signed size_t
14708 set ssize_t ssizetype int stdio.h sys/types.h
14711 $cat > ssize.c <<EOM
14713 #include <sys/types.h>
14714 #define Size_t $sizetype
14715 #define SSize_t $dflt
14718 if (sizeof(Size_t) == sizeof(SSize_t))
14720 else if (sizeof(Size_t) == sizeof(int))
14729 if eval $compile_ok && ./ssize > /dev/null; then
14730 ssizetype=`./ssize`
14731 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14734 Help! I can't compile and run the ssize_t test program: please enlighten me!
14735 (This is probably a misconfiguration in your system or libraries, and
14736 you really ought to fix it. Still, I'll try anyway.)
14738 I need a type that is the same size as $sizetype, but is guaranteed to
14739 be signed. Common values are ssize_t, int and long.
14742 rp="What signed type is the same size as $sizetype?"
14746 $rm -f ssize ssize.*
14748 : see what type of char stdio uses.
14750 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
14751 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
14752 echo "Your stdio uses unsigned chars." >&4
14753 stdchar="unsigned char"
14755 echo "Your stdio uses signed chars." >&4
14762 : see if time exists
14764 if test "X$d_time" = X -o X"$timetype" = X; then
14765 if set time val -f d_time; eval $csym; $val; then
14766 echo 'time() found.' >&4
14768 rp="What is the type returned by time() on this system?"
14769 set time_t timetype long stdio.h sys/types.h
14772 echo 'time() not found, hope that will do.' >&4
14780 : see what type uids are declared as in the kernel
14782 echo "Looking for the type for user ids returned by getuid()."
14783 set uid_t uidtype xxx stdio.h sys/types.h
14787 xxx=`./findhdr sys/user.h`
14788 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14790 unsigned) dflt="$1 $2" ;;
14794 *) dflt="$uidtype";;
14797 uid_t) echo "uid_t found." ;;
14798 *) rp="What is the type for user ids returned by getuid()?"
14806 *_t) zzz="$uidtype" ;;
14809 echo "Checking the size of $zzz..." >&4
14811 #include <sys/types.h>
14814 printf("%d\n", (int)sizeof($uidtype));
14819 if eval $compile_ok; then
14823 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14826 echo "Your $zzz is $uidsize bytes long."
14831 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14836 *_t) zzz="$uidtype" ;;
14839 echo "Checking the sign of $zzz..." >&4
14841 #include <sys/types.h>
14852 if eval $compile; then
14856 echo "(I can't execute the test program--guessing unsigned.)" >&4
14860 1) echo "Your $zzz is unsigned." ;;
14861 -1) echo "Your $zzz is signed." ;;
14867 echo "(I can't compile the test program--guessing unsigned.)" >&4
14873 $echo "Checking the format string to be used for uids..." >&4
14876 -1) if $test X"$uidsize" = X"$ivsize"; then
14877 uidformat="$ivdformat"
14879 if $test X"$uidsize" = X"$longsize"; then
14882 if $test X"$uidsize" = X"$intsize"; then
14885 if $test X"$uidsize" = X"$shortsize"; then
14892 *) if $test X"$uidsize" = X"$uvsize"; then
14893 uidformat="$uvuformat"
14895 if $test X"$uidsize" = X"$longsize"; then
14898 if $test X"$uidsize" = X"$intsize"; then
14901 if $test X"$uidsize" = X"$shortsize"; then
14910 : see if dbm.h is available
14911 : see if dbmclose exists
14912 set dbmclose d_dbmclose
14915 case "$d_dbmclose" in
14925 *) set rpcsvc/dbm.h i_rpcsvcdbm
14930 *) echo "We won't be including <dbm.h>"
14940 : see if this is a sys/file.h system
14945 : do we need to include sys/file.h ?
14949 if $h_sysfile; then
14951 echo "We'll be including <sys/file.h>." >&4
14954 echo "We won't be including <sys/file.h>." >&4
14964 : see if fcntl.h is there
14969 : see if we can include fcntl.h
14975 echo "We'll be including <fcntl.h>." >&4
14978 if $h_sysfile; then
14979 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14981 echo "We won't be including <fcntl.h>." >&4
14993 : see if this is a iconv.h system
14994 set iconv.h i_iconv
14997 : see if this is a ieeefp.h system
14998 set ieeefp.h i_ieeefp
15001 : see if this is a libutil.h system
15002 set libutil.h i_libutil
15005 : see if locale.h is available
15006 set locale.h i_locale
15009 : see if mach cthreads are available
15010 if test "X$usethreads" = "X$define"; then
15011 set mach/cthreads.h i_machcthr
15014 i_machcthr="$undef"
15019 : see if this is a math.h system
15023 : see if this is a mntent.h system
15024 set mntent.h i_mntent
15027 : see if ndbm.h is available
15032 : see if dbm_open exists
15033 set dbm_open d_dbm_open
15035 case "$d_dbm_open" in
15038 echo "We won't be including <ndbm.h>"
15047 : see if net/errno.h is available
15049 set net/errno.h val
15052 : Unfortunately, it causes problems on some systems. Arrgh.
15055 cat > try.c <<'EOM'
15058 #include <net/errno.h>
15064 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15065 echo "We'll be including <net/errno.h>." >&4
15067 echo "We won't be including <net/errno.h>." >&4
15076 : see if netinet/tcp.h is available
15077 set netinet/tcp.h i_netinettcp
15080 : see if this is a poll.h system
15084 : see if this is a prot.h system
15089 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15090 $cat <<'EOSH' > Cppsym.know
15091 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15092 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15093 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
15094 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
15095 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15096 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15097 bull c cadmus clipper CMU COFF COMPILER_VERSION
15098 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15099 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15100 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15101 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15102 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15103 H3050R H3050RX hbullx20 hcx host_mips
15104 hp200 hp300 hp700 HP700 hp800 hp9000
15105 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15106 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15107 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15108 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15109 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15110 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15111 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15112 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15113 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15114 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15115 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15116 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15117 MATH_HAS_NO_SIDE_EFFECTS
15118 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15119 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15120 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15121 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15122 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15123 NetBSD news1500 news1700 news1800 news1900 news3700
15124 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15125 ns32016 ns32332 ns32k nsc32000
15126 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15127 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15128 pc532 pdp11 PGC PIC plexus PORTAR posix
15129 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15130 POSIX_C_SOURCE POSIX_SOURCE POWER
15131 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15132 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
15133 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15134 sony sony_news sonyrisc sparc sparclite spectrum
15135 stardent stdc STDC_EXT stratos sun sun3 sun386
15136 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15137 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15138 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15139 sysV68 sysV88 Tek4132 Tek4300 titan
15140 tower tower32 tower32_200 tower32_600 tower32_700
15141 tower32_800 tower32_850 tss
15142 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15143 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15144 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15145 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15146 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15147 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15150 # Maybe put other stuff here too.
15151 cat <<EOSH >>Cppsym.know
15154 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15155 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15156 $cat Cppsym.know > Cppsym.c
15157 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15158 $rm -f Cppsym.a Cppsym.b Cppsym.c
15159 cat <<EOSH > Cppsym
15161 if $test \$# -gt 0; then
15162 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15163 if $test -s Cppsym.got; then
15170 $tr " " "$trnl" | ./Cppsym.try
15176 cat <<EOSH > Cppsym.try
15178 cat <<'EOCP' > try.c
15184 cat <<'EOSH' >> Cppsym.try
15186 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15187 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15188 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15189 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15193 cat <<EOSH >> Cppsym.try
15195 case "$osname-$gccversion" in
15196 irix-) ccflags="\$ccflags -woff 1178" ;;
15197 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15199 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15201 chmod +x Cppsym.try
15202 $eunicefix Cppsym.try
15203 ./Cppsym < Cppsym.know > Cppsym.true
15204 : now check the C compiler for additional symbols
15205 postprocess_cc_v=''
15207 aix) postprocess_cc_v="|$tr , ' '" ;;
15214 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15217 -D*) echo "\$i" | $sed 's/^-D//';;
15218 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15223 postprocess_cc_v=''
15226 ./ccsym > ccsym1.raw
15227 if $test -s ccsym1.raw; then
15228 $sort ccsym1.raw | $uniq >ccsym.raw
15230 mv ccsym1.raw ccsym.raw
15233 $awk '/\=/ { print $0; next }
15234 { print $0"=1" }' ccsym.raw >ccsym.list
15235 $awk '/\=/ { print $0; next }
15236 { print $0"=1" }' Cppsym.true >ccsym.true
15237 $comm -13 ccsym.true ccsym.list >ccsym.own
15238 $comm -12 ccsym.true ccsym.list >ccsym.com
15239 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15241 if $test -z ccsym.raw; then
15242 echo "Your C compiler doesn't seem to define any symbols!" >&4
15244 echo "However, your C preprocessor defines the following symbols:"
15247 cppsymbols=`$cat Cppsym.true`
15248 cppsymbols=`echo $cppsymbols`
15249 cppccsymbols="$cppsymbols"
15251 if $test -s ccsym.com; then
15252 echo "Your C compiler and pre-processor define these symbols:"
15253 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15256 cppccsymbols=`$cat ccsym.com`
15257 cppccsymbols=`echo $cppccsymbols`
15258 $test "$silent" || sleep 1
15260 if $test -s ccsym.cpp; then
15261 $test "$also" && echo " "
15262 echo "Your C pre-processor ${also}defines the following symbols:"
15263 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15265 cppsymbols=`$cat ccsym.cpp`
15266 cppsymbols=`echo $cppsymbols`
15267 $test "$silent" || sleep 1
15269 if $test -s ccsym.own; then
15270 $test "$also" && echo " "
15271 echo "Your C compiler ${also}defines the following cpp symbols:"
15272 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15273 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15274 ccsymbols=`$cat ccsym.own`
15275 ccsymbols=`echo $ccsymbols`
15276 $test "$silent" || sleep 1
15279 $rm -f ccsym* Cppsym.*
15281 : see if this is a termio system
15285 if $test `./findhdr termios.h`; then
15286 set tcsetattr i_termios
15292 "$define") echo "You have POSIX termios.h... good!" >&4;;
15293 *) if ./Cppsym pyr; then
15294 case "`/bin/universe`" in
15295 ucb) if $test `./findhdr sgtty.h`; then
15297 echo "<sgtty.h> found." >&4
15299 echo "System is pyramid with BSD universe."
15300 echo "<sgtty.h> not found--you could have problems." >&4
15302 *) if $test `./findhdr termio.h`; then
15304 echo "<termio.h> found." >&4
15306 echo "System is pyramid with USG universe."
15307 echo "<termio.h> not found--you could have problems." >&4
15311 if $test `./findhdr termio.h`; then
15312 echo "<termio.h> found." >&4
15314 elif $test `./findhdr sgtty.h`; then
15315 echo "<sgtty.h> found." >&4
15318 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15321 if $test `./findhdr sgtty.h`; then
15322 echo "<sgtty.h> found." >&4
15324 elif $test `./findhdr termio.h`; then
15325 echo "<termio.h> found." >&4
15328 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15332 set i_termio; eval $setvar
15333 val=$val2; set i_sgtty; eval $setvar
15334 val=$val3; set i_termios; eval $setvar
15336 : see if this is a shadow.h system
15337 set shadow.h i_shadow
15340 : see if stddef is available
15341 set stddef.h i_stddef
15344 : see if this is a sunmath.h system
15345 set sunmath.h i_sunmath
15348 : see if sys/access.h is available
15349 set sys/access.h i_sysaccess
15352 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15353 set sys/filio.h i_sysfilio
15356 if $test `./findhdr sys/ioctl.h`; then
15358 echo '<sys/ioctl.h> found.' >&4
15361 if $test $i_sysfilio = "$define"; then
15362 echo '<sys/ioctl.h> NOT found.' >&4
15364 $test $i_sgtty = "$define" && xxx="sgtty.h"
15365 $test $i_termio = "$define" && xxx="termio.h"
15366 $test $i_termios = "$define" && xxx="termios.h"
15367 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15374 : see if this is a syslog.h system
15375 set syslog.h i_syslog
15379 : see if this is a sys/mode.h system
15380 set sys/mode.h i_sysmode
15383 : see if sys/resource.h has to be included
15384 set sys/resource.h i_sysresrc
15387 : see if sys/security.h is available
15388 set sys/security.h i_syssecrt
15391 : see if this is a sys/statvfs.h system
15392 set sys/statvfs.h i_sysstatvfs
15395 : see if this is a sys/uio.h system
15396 set sys/uio.h i_sysuio
15399 : see if this is a sys/un.h system
15400 set sys/un.h i_sysun
15404 : see if this is a sys/utsname.h system
15405 set sys/utsname.h i_sysutsname
15408 : see if this is a syswait system
15409 set sys/wait.h i_syswait
15412 : see if this is a ustat.h system
15413 set ustat.h i_ustat
15416 : see if this is an utime system
15417 set utime.h i_utime
15420 : see if this is a values.h system
15421 set values.h i_values
15424 : see if this is a vfork system
15427 set vfork.h i_vfork
15435 : see if gdbm.h is available
15440 : see if gdbm_open exists
15441 set gdbm_open d_gdbm_open
15443 case "$d_gdbm_open" in
15446 echo "We won't be including <gdbm.h>"
15456 echo "Looking for extensions..." >&4
15457 : If we are using the old config.sh, known_extensions may contain
15458 : old or inaccurate or duplicate values.
15459 known_extensions=''
15460 nonxs_extensions=''
15461 : We do not use find because it might not be available.
15462 : We do not just use MANIFEST because the user may have dropped
15463 : some additional extensions into the source tree and expect them
15466 : Function to recursively find available extensions, ignoring DynaLoader
15467 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15471 DynaLoader|dynaload) ;;
15473 if $test -f $xxx/$xxx.xs; then
15474 known_extensions="$known_extensions $1$xxx";
15475 elif $test -f $xxx/Makefile.PL; then
15476 nonxs_extensions="$nonxs_extensions $1$xxx";
15478 if $test -d $xxx -a $# -lt 10; then
15481 eval $find_extensions;
15493 eval $find_extensions
15494 set X $nonxs_extensions
15496 nonxs_extensions="$*"
15497 set X $known_extensions
15499 known_extensions="$*"
15502 : Now see which are supported on this system.
15504 for xxx in $known_extensions ; do
15508 $define) avail_ext="$avail_ext $xxx" ;;
15511 GDBM_File|gdbm_fil)
15513 $define) avail_ext="$avail_ext $xxx" ;;
15516 NDBM_File|ndbm_fil)
15519 case "$osname-$use64bitint" in
15522 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15525 *) avail_ext="$avail_ext $xxx" ;;
15530 ODBM_File|odbm_fil)
15531 case "${i_dbm}${i_rpcsvcdbm}" in
15533 case "$osname-$use64bitint" in
15536 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15539 *) avail_ext="$avail_ext $xxx" ;;
15545 case "$useposix" in
15546 true|define|y) avail_ext="$avail_ext $xxx" ;;
15550 case "$useopcode" in
15551 true|define|y) avail_ext="$avail_ext $xxx" ;;
15555 case "$d_socket" in
15556 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15559 Sys/Syslog|sys/syslog)
15560 : XXX syslog requires socket
15561 case "$d_socket" in
15562 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15566 case "$usethreads" in
15567 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15571 : XXX Do we need a useipcsysv variable here
15572 case "${d_msg}${d_sem}${d_shm}" in
15573 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15576 *) avail_ext="$avail_ext $xxx"
15585 : Now see which nonxs extensions are supported on this system.
15586 : For now assume all are.
15588 for xxx in $nonxs_extensions ; do
15590 *) nonxs_ext="$nonxs_ext $xxx"
15602 A number of extensions are supplied with $package. You may choose to
15603 compile these extensions for dynamic loading (the default), compile
15604 them into the $package executable (static loading), or not include
15605 them at all. Answer "none" to include no extensions.
15606 Note that DynaLoader is always built and need not be mentioned here.
15609 case "$dynamic_ext" in
15610 '') dflt="$avail_ext" ;;
15611 *) dflt="$dynamic_ext"
15612 # Perhaps we are reusing an old out-of-date config.sh.
15615 if test X"$dynamic_ext" != X"$avail_ext"; then
15617 NOTICE: Your previous config.sh list may be incorrect.
15618 The extensions now available to you are
15620 but the default list from your previous config.sh is
15632 rp="What extensions do you wish to load dynamically?"
15635 none) dynamic_ext=' ' ;;
15636 *) dynamic_ext="$ans" ;;
15639 case "$static_ext" in
15641 : Exclude those already listed in dynamic linking
15643 for xxx in $avail_ext; do
15644 case " $dynamic_ext " in
15646 *) dflt="$dflt $xxx" ;;
15653 *) dflt="$static_ext"
15660 rp="What extensions do you wish to load statically?"
15663 none) static_ext=' ' ;;
15664 *) static_ext="$ans" ;;
15669 A number of extensions are supplied with $package. Answer "none"
15670 to include no extensions.
15671 Note that DynaLoader is always built and need not be mentioned here.
15674 case "$static_ext" in
15675 '') dflt="$avail_ext" ;;
15676 *) dflt="$static_ext"
15677 # Perhaps we are reusing an old out-of-date config.sh.
15680 if test X"$static_ext" != X"$avail_ext"; then
15682 NOTICE: Your previous config.sh list may be incorrect.
15683 The extensions now available to you are
15685 but the default list from your previous config.sh is
15694 : Exclude those that are not xs extensions
15698 rp="What extensions do you wish to include?"
15701 none) static_ext=' ' ;;
15702 *) static_ext="$ans" ;;
15707 set X $dynamic_ext $static_ext $nonxs_ext
15711 : Remove libraries needed only for extensions
15712 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15713 : The exception is SunOS 4.x, which needs them.
15714 case "${osname}X${osvers}" in
15718 *) case "$usedl" in
15719 $define|true|[yY]*)
15720 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15724 *) perllibs="$libs"
15730 : Remove build directory name from cppstdin so it can be used from
15731 : either the present location or the final installed location.
15733 : Get out of the UU directory to get correct path name.
15735 case "$cppstdin" in
15737 echo "Stripping down cppstdin path name"
15743 : end of configuration questions
15745 echo "End of configuration questions."
15748 : back to where it started
15749 if test -d ../UU; then
15753 : configuration may be patched via a 'config.over' file
15754 if $test -f config.over; then
15757 rp='I see a config.over file. Do you wish to load it?'
15760 n*) echo "OK, I'll ignore it.";;
15762 echo "Configuration override changes have been loaded."
15767 : in case they want portability, strip down executable paths
15768 case "$d_portable" in
15771 echo "Stripping down executable paths..." >&4
15772 for file in $loclist $trylist; do
15774 eval $file=`basename $temp`
15779 : create config.sh file
15781 echo "Creating config.sh..." >&4
15782 $spitshell <<EOT >config.sh
15785 # This file was produced by running the Configure script. It holds all the
15786 # definitions figured out by Configure. Should you modify one of these values,
15787 # do not forget to propagate your changes by running "Configure -der". You may
15788 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15791 # Package name : $package
15792 # Source directory : $src
15793 # Configuration time: $cf_time
15794 # Configured by : $cf_by
15795 # Target system : $myuname
15805 Revision='$Revision'
15812 alignbytes='$alignbytes'
15813 ansi2knr='$ansi2knr'
15814 aphostname='$aphostname'
15815 api_revision='$api_revision'
15816 api_subversion='$api_subversion'
15817 api_version='$api_version'
15818 api_versionstring='$api_versionstring'
15821 archlibexp='$archlibexp'
15822 archname64='$archname64'
15823 archname='$archname'
15824 archobjs='$archobjs'
15829 bincompat5005='$bincompat5005'
15833 byteorder='$byteorder'
15835 castflags='$castflags'
15838 cccdlflags='$cccdlflags'
15839 ccdlflags='$ccdlflags'
15841 ccflags_uselargefiles='$ccflags_uselargefiles'
15843 ccsymbols='$ccsymbols'
15844 ccversion='$ccversion'
15846 cf_email='$cf_email'
15848 charsize='$charsize'
15852 clocktype='$clocktype'
15854 compress='$compress'
15855 contains='$contains'
15859 cpp_stuff='$cpp_stuff'
15860 cppccsymbols='$cppccsymbols'
15861 cppflags='$cppflags'
15863 cppminus='$cppminus'
15865 cppstdin='$cppstdin'
15866 cppsymbols='$cppsymbols'
15867 crosscompile='$crosscompile'
15868 cryptlib='$cryptlib'
15870 d_Gconvert='$d_Gconvert'
15871 d_PRIEUldbl='$d_PRIEUldbl'
15872 d_PRIFUldbl='$d_PRIFUldbl'
15873 d_PRIGUldbl='$d_PRIGUldbl'
15874 d_PRIXU64='$d_PRIXU64'
15875 d_PRId64='$d_PRId64'
15876 d_PRIeldbl='$d_PRIeldbl'
15877 d_PRIfldbl='$d_PRIfldbl'
15878 d_PRIgldbl='$d_PRIgldbl'
15879 d_PRIi64='$d_PRIi64'
15880 d_PRIo64='$d_PRIo64'
15881 d_PRIu64='$d_PRIu64'
15882 d_PRIx64='$d_PRIx64'
15883 d_SCNfldbl='$d_SCNfldbl'
15884 d__fwalk='$d__fwalk'
15885 d_access='$d_access'
15886 d_accessx='$d_accessx'
15888 d_archlib='$d_archlib'
15891 d_attribut='$d_attribut'
15894 d_bincompat5005='$d_bincompat5005'
15896 d_bsdgetpgrp='$d_bsdgetpgrp'
15897 d_bsdsetpgrp='$d_bsdsetpgrp'
15899 d_casti32='$d_casti32'
15900 d_castneg='$d_castneg'
15901 d_charvspr='$d_charvspr'
15903 d_chroot='$d_chroot'
15904 d_chsize='$d_chsize'
15905 d_closedir='$d_closedir'
15909 d_cuserid='$d_cuserid'
15910 d_dbl_dig='$d_dbl_dig'
15911 d_difftime='$d_difftime'
15912 d_dirnamlen='$d_dirnamlen'
15913 d_dlerror='$d_dlerror'
15914 d_dlopen='$d_dlopen'
15915 d_dlsymun='$d_dlsymun'
15916 d_dosuid='$d_dosuid'
15917 d_drand48proto='$d_drand48proto'
15919 d_eaccess='$d_eaccess'
15920 d_endgrent='$d_endgrent'
15921 d_endhent='$d_endhent'
15922 d_endnent='$d_endnent'
15923 d_endpent='$d_endpent'
15924 d_endpwent='$d_endpwent'
15925 d_endsent='$d_endsent'
15926 d_eofnblk='$d_eofnblk'
15927 d_eunice='$d_eunice'
15928 d_fchmod='$d_fchmod'
15929 d_fchown='$d_fchown'
15931 d_fcntl_can_lock='$d_fcntl_can_lock'
15932 d_fd_macros='$d_fd_macros'
15933 d_fd_set='$d_fd_set'
15934 d_fds_bits='$d_fds_bits'
15935 d_fgetpos='$d_fgetpos'
15936 d_flexfnam='$d_flexfnam'
15939 d_fpathconf='$d_fpathconf'
15940 d_fpos64_t='$d_fpos64_t'
15941 d_frexpl='$d_frexpl'
15942 d_fs_data_s='$d_fs_data_s'
15943 d_fseeko='$d_fseeko'
15944 d_fsetpos='$d_fsetpos'
15945 d_fstatfs='$d_fstatfs'
15946 d_fstatvfs='$d_fstatvfs'
15948 d_ftello='$d_ftello'
15950 d_getcwd='$d_getcwd'
15951 d_getespwnam='$d_getespwnam'
15952 d_getfsstat='$d_getfsstat'
15953 d_getgrent='$d_getgrent'
15954 d_getgrps='$d_getgrps'
15955 d_gethbyaddr='$d_gethbyaddr'
15956 d_gethbyname='$d_gethbyname'
15957 d_gethent='$d_gethent'
15958 d_gethname='$d_gethname'
15959 d_gethostprotos='$d_gethostprotos'
15960 d_getlogin='$d_getlogin'
15961 d_getmnt='$d_getmnt'
15962 d_getmntent='$d_getmntent'
15963 d_getnbyaddr='$d_getnbyaddr'
15964 d_getnbyname='$d_getnbyname'
15965 d_getnent='$d_getnent'
15966 d_getnetprotos='$d_getnetprotos'
15967 d_getpagsz='$d_getpagsz'
15968 d_getpbyname='$d_getpbyname'
15969 d_getpbynumber='$d_getpbynumber'
15970 d_getpent='$d_getpent'
15971 d_getpgid='$d_getpgid'
15972 d_getpgrp2='$d_getpgrp2'
15973 d_getpgrp='$d_getpgrp'
15974 d_getppid='$d_getppid'
15975 d_getprior='$d_getprior'
15976 d_getprotoprotos='$d_getprotoprotos'
15977 d_getprpwnam='$d_getprpwnam'
15978 d_getpwent='$d_getpwent'
15979 d_getsbyname='$d_getsbyname'
15980 d_getsbyport='$d_getsbyport'
15981 d_getsent='$d_getsent'
15982 d_getservprotos='$d_getservprotos'
15983 d_getspnam='$d_getspnam'
15984 d_gettimeod='$d_gettimeod'
15985 d_gnulibc='$d_gnulibc'
15986 d_grpasswd='$d_grpasswd'
15987 d_hasmntopt='$d_hasmntopt'
15991 d_inetaton='$d_inetaton'
15992 d_int64_t='$d_int64_t'
15993 d_isascii='$d_isascii'
15995 d_isnanl='$d_isnanl'
15996 d_killpg='$d_killpg'
15997 d_lchown='$d_lchown'
15998 d_ldbl_dig='$d_ldbl_dig'
16000 d_locconv='$d_locconv'
16002 d_longdbl='$d_longdbl'
16003 d_longlong='$d_longlong'
16004 d_lseekproto='$d_lseekproto'
16006 d_madvise='$d_madvise'
16008 d_mbstowcs='$d_mbstowcs'
16009 d_mbtowc='$d_mbtowc'
16010 d_memchr='$d_memchr'
16011 d_memcmp='$d_memcmp'
16012 d_memcpy='$d_memcpy'
16013 d_memmove='$d_memmove'
16014 d_memset='$d_memset'
16016 d_mkdtemp='$d_mkdtemp'
16017 d_mkfifo='$d_mkfifo'
16018 d_mkstemp='$d_mkstemp'
16019 d_mkstemps='$d_mkstemps'
16020 d_mktime='$d_mktime'
16023 d_mprotect='$d_mprotect'
16025 d_msg_ctrunc='$d_msg_ctrunc'
16026 d_msg_dontroute='$d_msg_dontroute'
16027 d_msg_oob='$d_msg_oob'
16028 d_msg_peek='$d_msg_peek'
16029 d_msg_proxy='$d_msg_proxy'
16030 d_msgctl='$d_msgctl'
16031 d_msgget='$d_msgget'
16032 d_msgrcv='$d_msgrcv'
16033 d_msgsnd='$d_msgsnd'
16035 d_munmap='$d_munmap'
16036 d_mymalloc='$d_mymalloc'
16038 d_nv_preserves_uv='$d_nv_preserves_uv'
16039 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16040 d_off64_t='$d_off64_t'
16041 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16042 d_oldpthreads='$d_oldpthreads'
16043 d_oldsock='$d_oldsock'
16045 d_pathconf='$d_pathconf'
16047 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16048 d_phostname='$d_phostname'
16051 d_portable='$d_portable'
16052 d_pthread_yield='$d_pthread_yield'
16054 d_pwchange='$d_pwchange'
16055 d_pwclass='$d_pwclass'
16056 d_pwcomment='$d_pwcomment'
16057 d_pwexpire='$d_pwexpire'
16058 d_pwgecos='$d_pwgecos'
16059 d_pwpasswd='$d_pwpasswd'
16060 d_pwquota='$d_pwquota'
16063 d_readdir='$d_readdir'
16064 d_readlink='$d_readlink'
16065 d_rename='$d_rename'
16066 d_rewinddir='$d_rewinddir'
16068 d_safebcpy='$d_safebcpy'
16069 d_safemcpy='$d_safemcpy'
16070 d_sanemcmp='$d_sanemcmp'
16071 d_sbrkproto='$d_sbrkproto'
16072 d_sched_yield='$d_sched_yield'
16073 d_scm_rights='$d_scm_rights'
16074 d_seekdir='$d_seekdir'
16075 d_select='$d_select'
16077 d_semctl='$d_semctl'
16078 d_semctl_semid_ds='$d_semctl_semid_ds'
16079 d_semctl_semun='$d_semctl_semun'
16080 d_semget='$d_semget'
16082 d_setegid='$d_setegid'
16083 d_seteuid='$d_seteuid'
16084 d_setgrent='$d_setgrent'
16085 d_setgrps='$d_setgrps'
16086 d_sethent='$d_sethent'
16087 d_setlinebuf='$d_setlinebuf'
16088 d_setlocale='$d_setlocale'
16089 d_setnent='$d_setnent'
16090 d_setpent='$d_setpent'
16091 d_setpgid='$d_setpgid'
16092 d_setpgrp2='$d_setpgrp2'
16093 d_setpgrp='$d_setpgrp'
16094 d_setprior='$d_setprior'
16095 d_setproctitle='$d_setproctitle'
16096 d_setpwent='$d_setpwent'
16097 d_setregid='$d_setregid'
16098 d_setresgid='$d_setresgid'
16099 d_setresuid='$d_setresuid'
16100 d_setreuid='$d_setreuid'
16101 d_setrgid='$d_setrgid'
16102 d_setruid='$d_setruid'
16103 d_setsent='$d_setsent'
16104 d_setsid='$d_setsid'
16105 d_setvbuf='$d_setvbuf'
16109 d_shmatprototype='$d_shmatprototype'
16110 d_shmctl='$d_shmctl'
16112 d_shmget='$d_shmget'
16113 d_sigaction='$d_sigaction'
16114 d_sigprocmask='$d_sigprocmask'
16115 d_sigsetjmp='$d_sigsetjmp'
16116 d_socket='$d_socket'
16117 d_socklen_t='$d_socklen_t'
16118 d_sockpair='$d_sockpair'
16119 d_socks5_init='$d_socks5_init'
16121 d_statblks='$d_statblks'
16122 d_statfs_f_flags='$d_statfs_f_flags'
16123 d_statfs_s='$d_statfs_s'
16124 d_statvfs='$d_statvfs'
16125 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16126 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16127 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16128 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16129 d_stdio_stream_array='$d_stdio_stream_array'
16130 d_stdiobase='$d_stdiobase'
16131 d_stdstdio='$d_stdstdio'
16132 d_strchr='$d_strchr'
16133 d_strcoll='$d_strcoll'
16134 d_strctcpy='$d_strctcpy'
16135 d_strerrm='$d_strerrm'
16136 d_strerror='$d_strerror'
16137 d_strtod='$d_strtod'
16138 d_strtol='$d_strtol'
16139 d_strtold='$d_strtold'
16140 d_strtoll='$d_strtoll'
16141 d_strtoq='$d_strtoq'
16142 d_strtoul='$d_strtoul'
16143 d_strtoull='$d_strtoull'
16144 d_strtouq='$d_strtouq'
16145 d_strxfrm='$d_strxfrm'
16146 d_suidsafe='$d_suidsafe'
16147 d_symlink='$d_symlink'
16148 d_syscall='$d_syscall'
16149 d_sysconf='$d_sysconf'
16150 d_sysernlst='$d_sysernlst'
16151 d_syserrlst='$d_syserrlst'
16152 d_system='$d_system'
16153 d_tcgetpgrp='$d_tcgetpgrp'
16154 d_tcsetpgrp='$d_tcsetpgrp'
16155 d_telldir='$d_telldir'
16156 d_telldirproto='$d_telldirproto'
16159 d_truncate='$d_truncate'
16160 d_tzname='$d_tzname'
16163 d_union_semun='$d_union_semun'
16165 d_vendorarch='$d_vendorarch'
16166 d_vendorbin='$d_vendorbin'
16167 d_vendorlib='$d_vendorlib'
16169 d_void_closedir='$d_void_closedir'
16170 d_voidsig='$d_voidsig'
16171 d_voidtty='$d_voidtty'
16172 d_volatile='$d_volatile'
16173 d_vprintf='$d_vprintf'
16175 d_waitpid='$d_waitpid'
16176 d_wcstombs='$d_wcstombs'
16177 d_wctomb='$d_wctomb'
16180 db_hashtype='$db_hashtype'
16181 db_prefixtype='$db_prefixtype'
16182 defvoidused='$defvoidused'
16183 direntrytype='$direntrytype'
16186 doublesize='$doublesize'
16188 dynamic_ext='$dynamic_ext'
16194 eunicefix='$eunicefix'
16197 extensions='$extensions'
16198 fflushNULL='$fflushNULL'
16199 fflushall='$fflushall'
16201 firstmakefile='$firstmakefile'
16203 fpossize='$fpossize'
16204 fpostype='$fpostype'
16205 freetype='$freetype'
16207 full_csh='$full_csh'
16208 full_sed='$full_sed'
16209 gccosandvers='$gccosandvers'
16210 gccversion='$gccversion'
16211 gidformat='$gidformat'
16217 groupcat='$groupcat'
16218 groupstype='$groupstype'
16221 h_sysfile='$h_sysfile'
16232 i_arpainet='$i_arpainet'
16233 i_bsdioctl='$i_bsdioctl'
16236 i_dirent='$i_dirent'
16244 i_ieeefp='$i_ieeefp'
16245 i_inttypes='$i_inttypes'
16246 i_libutil='$i_libutil'
16247 i_limits='$i_limits'
16248 i_locale='$i_locale'
16249 i_machcthr='$i_machcthr'
16250 i_malloc='$i_malloc'
16252 i_memory='$i_memory'
16253 i_mntent='$i_mntent'
16256 i_neterrno='$i_neterrno'
16257 i_netinettcp='$i_netinettcp'
16261 i_pthread='$i_pthread'
16263 i_rpcsvcdbm='$i_rpcsvcdbm'
16266 i_shadow='$i_shadow'
16268 i_stdarg='$i_stdarg'
16269 i_stddef='$i_stddef'
16270 i_stdlib='$i_stdlib'
16271 i_string='$i_string'
16272 i_sunmath='$i_sunmath'
16273 i_sysaccess='$i_sysaccess'
16274 i_sysdir='$i_sysdir'
16275 i_sysfile='$i_sysfile'
16276 i_sysfilio='$i_sysfilio'
16278 i_sysioctl='$i_sysioctl'
16279 i_syslog='$i_syslog'
16280 i_sysmman='$i_sysmman'
16281 i_sysmode='$i_sysmode'
16282 i_sysmount='$i_sysmount'
16283 i_sysndir='$i_sysndir'
16284 i_sysparam='$i_sysparam'
16285 i_sysresrc='$i_sysresrc'
16286 i_syssecrt='$i_syssecrt'
16287 i_sysselct='$i_sysselct'
16288 i_syssockio='$i_syssockio'
16289 i_sysstat='$i_sysstat'
16290 i_sysstatfs='$i_sysstatfs'
16291 i_sysstatvfs='$i_sysstatvfs'
16292 i_systime='$i_systime'
16293 i_systimek='$i_systimek'
16294 i_systimes='$i_systimes'
16295 i_systypes='$i_systypes'
16296 i_sysuio='$i_sysuio'
16298 i_sysutsname='$i_sysutsname'
16299 i_sysvfs='$i_sysvfs'
16300 i_syswait='$i_syswait'
16301 i_termio='$i_termio'
16302 i_termios='$i_termios'
16304 i_unistd='$i_unistd'
16307 i_values='$i_values'
16308 i_varargs='$i_varargs'
16309 i_varhdr='$i_varhdr'
16311 ignore_versioned_solibs='$ignore_versioned_solibs'
16312 inc_version_list='$inc_version_list'
16313 inc_version_list_init='$inc_version_list_init'
16316 installarchlib='$installarchlib'
16317 installbin='$installbin'
16318 installman1dir='$installman1dir'
16319 installman3dir='$installman3dir'
16320 installprefix='$installprefix'
16321 installprefixexp='$installprefixexp'
16322 installprivlib='$installprivlib'
16323 installscript='$installscript'
16324 installsitearch='$installsitearch'
16325 installsitebin='$installsitebin'
16326 installsitelib='$installsitelib'
16327 installstyle='$installstyle'
16328 installusrbinperl='$installusrbinperl'
16329 installvendorarch='$installvendorarch'
16330 installvendorbin='$installvendorbin'
16331 installvendorlib='$installvendorlib'
16333 issymlink='$issymlink'
16334 ivdformat='$ivdformat'
16337 known_extensions='$known_extensions'
16340 lddlflags='$lddlflags'
16342 ldflags_uselargefiles='$ldflags_uselargefiles'
16343 ldlibpthname='$ldlibpthname'
16350 libsdirs='$libsdirs'
16351 libsfiles='$libsfiles'
16352 libsfound='$libsfound'
16353 libspath='$libspath'
16354 libswanted='$libswanted'
16355 libswanted_uselargefiles='$libswanted_uselargefiles'
16361 locincpth='$locincpth'
16362 loclibpth='$loclibpth'
16363 longdblsize='$longdblsize'
16364 longlongsize='$longlongsize'
16365 longsize='$longsize'
16369 lseeksize='$lseeksize'
16370 lseektype='$lseektype'
16374 make_set_make='$make_set_make'
16375 mallocobj='$mallocobj'
16376 mallocsrc='$mallocsrc'
16377 malloctype='$malloctype'
16379 man1direxp='$man1direxp'
16382 man3direxp='$man3direxp'
16384 mips_type='$mips_type'
16386 mmaptype='$mmaptype'
16387 modetype='$modetype'
16389 multiarch='$multiarch'
16391 myarchname='$myarchname'
16392 mydomain='$mydomain'
16393 myhostname='$myhostname'
16396 need_va_copy='$need_va_copy'
16397 netdb_hlen_type='$netdb_hlen_type'
16398 netdb_host_type='$netdb_host_type'
16399 netdb_name_type='$netdb_name_type'
16400 netdb_net_type='$netdb_net_type'
16403 nm_so_opt='$nm_so_opt'
16404 nonxs_ext='$nonxs_ext'
16406 nvEUformat='$nvEUformat'
16407 nvFUformat='$nvFUformat'
16408 nvGUformat='$nvGUformat'
16409 nveformat='$nveformat'
16410 nvfformat='$nvfformat'
16411 nvgformat='$nvgformat'
16414 o_nonblock='$o_nonblock'
16416 old_pthread_create_joinable='$old_pthread_create_joinable'
16417 optimize='$optimize'
16418 orderlib='$orderlib'
16421 otherlibdirs='$otherlibdirs'
16425 patchlevel='$patchlevel'
16426 path_sep='$path_sep'
16429 perladmin='$perladmin'
16430 perllibs='$perllibs'
16431 perlpath='$perlpath'
16433 phostname='$phostname'
16436 pm_apiversion='$pm_apiversion'
16440 prefixexp='$prefixexp'
16442 privlibexp='$privlibexp'
16443 prototype='$prototype'
16445 quadkind='$quadkind'
16446 quadtype='$quadtype'
16447 randbits='$randbits'
16448 randfunc='$randfunc'
16449 randseedtype='$randseedtype'
16451 rd_nodata='$rd_nodata'
16452 revision='$revision'
16456 sPRIEUldbl='$sPRIEUldbl'
16457 sPRIFUldbl='$sPRIFUldbl'
16458 sPRIGUldbl='$sPRIGUldbl'
16459 sPRIXU64='$sPRIXU64'
16461 sPRIeldbl='$sPRIeldbl'
16462 sPRIfldbl='$sPRIfldbl'
16463 sPRIgldbl='$sPRIgldbl'
16468 sSCNfldbl='$sSCNfldbl'
16469 sched_yield='$sched_yield'
16470 scriptdir='$scriptdir'
16471 scriptdirexp='$scriptdirexp'
16473 seedfunc='$seedfunc'
16474 selectminbits='$selectminbits'
16475 selecttype='$selecttype'
16476 sendmail='$sendmail'
16479 sharpbang='$sharpbang'
16480 shmattype='$shmattype'
16481 shortsize='$shortsize'
16484 sig_count='$sig_count'
16485 sig_name='$sig_name'
16486 sig_name_init='$sig_name_init'
16488 sig_num_init='$sig_num_init'
16489 sig_size='$sig_size'
16490 signal_t='$signal_t'
16491 sitearch='$sitearch'
16492 sitearchexp='$sitearchexp'
16494 sitebinexp='$sitebinexp'
16496 sitelib_stem='$sitelib_stem'
16497 sitelibexp='$sitelibexp'
16498 siteprefix='$siteprefix'
16499 siteprefixexp='$siteprefixexp'
16500 sizesize='$sizesize'
16501 sizetype='$sizetype'
16505 sockethdr='$sockethdr'
16506 socketlib='$socketlib'
16507 socksizetype='$socksizetype'
16509 spackage='$spackage'
16510 spitshell='$spitshell'
16512 ssizetype='$ssizetype'
16513 startperl='$startperl'
16515 static_ext='$static_ext'
16517 stdio_base='$stdio_base'
16518 stdio_bufsiz='$stdio_bufsiz'
16519 stdio_cnt='$stdio_cnt'
16520 stdio_filbuf='$stdio_filbuf'
16521 stdio_ptr='$stdio_ptr'
16522 stdio_stream_array='$stdio_stream_array'
16525 subversion='$subversion'
16532 timeincl='$timeincl'
16533 timetype='$timetype'
16546 uidformat='$uidformat'
16552 uquadtype='$uquadtype'
16553 use5005threads='$use5005threads'
16554 use64bitall='$use64bitall'
16555 use64bitint='$use64bitint'
16557 useithreads='$useithreads'
16558 uselargefiles='$uselargefiles'
16559 uselongdouble='$uselongdouble'
16560 usemorebits='$usemorebits'
16561 usemultiplicity='$usemultiplicity'
16562 usemymalloc='$usemymalloc'
16564 useopcode='$useopcode'
16565 useperlio='$useperlio'
16566 useposix='$useposix'
16568 useshrplib='$useshrplib'
16569 usesocks='$usesocks'
16570 usethreads='$usethreads'
16571 usevendorprefix='$usevendorprefix'
16572 usevfork='$usevfork'
16575 uvXUformat='$uvXUformat'
16576 uvoformat='$uvoformat'
16579 uvuformat='$uvuformat'
16580 uvxformat='$uvxformat'
16581 vendorarch='$vendorarch'
16582 vendorarchexp='$vendorarchexp'
16583 vendorbin='$vendorbin'
16584 vendorbinexp='$vendorbinexp'
16585 vendorlib='$vendorlib'
16586 vendorlib_stem='$vendorlib_stem'
16587 vendorlibexp='$vendorlibexp'
16588 vendorprefix='$vendorprefix'
16589 vendorprefixexp='$vendorprefixexp'
16591 versiononly='$versiononly'
16593 voidflags='$voidflags'
16595 xs_apiversion='$xs_apiversion'
16600 : Add in command line options if available
16601 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16603 : add special variables
16604 $test -f $src/patchlevel.h && \
16605 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16606 echo "CONFIGDOTSH=true" >>config.sh
16608 : propagate old symbols
16609 if $test -f UU/config.sh; then
16610 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16611 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16612 $sort | $uniq -u >UU/oldsyms
16613 set X `cat UU/oldsyms`
16619 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16621 echo "# Variables propagated from previous config.sh file." >>config.sh
16622 for sym in `cat UU/oldsyms`; do
16623 echo " Propagating $hint variable "'$'"$sym..."
16624 eval 'tmp="$'"${sym}"'"'
16626 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16632 : Finish up by extracting the .SH files
16646 If you'd like to make any changes to the config.sh file before I begin
16647 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16650 rp="Press return or use a shell escape to edit config.sh:"
16655 *) : in case they cannot read
16656 sh 1>&4 -c "$ans";;
16661 : if this fails, just run all the .SH files by hand
16668 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16675 Now you need to generate make dependencies by running "$make depend".
16676 You might prefer to run it in background: "$make depend > makedepend.out &"
16677 It can take a while, so you might not want to run it right now.
16682 rp="Run $make depend now?"
16686 $make depend && echo "Now you must run '$make'."
16689 echo "You must run '$make depend' then '$make'."
16692 elif test -f [Mm]akefile; then
16694 echo "Now you must run a $make."
16699 if $test -f Policy.sh; then
16702 If you compile $package on a different machine or from a different object
16703 directory, copy the Policy.sh file from this object directory to the
16704 new one before you run Configure -- this will help you with most of
16705 the policy defaults.
16709 if $test -f config.msg; then
16710 echo "Hmm. I also noted the following information while running:"
16712 $cat config.msg >&4
16715 $rm -f kit*isdone ark*isdone