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 so you may fetch it yourself from your nearest
18 # archive site. Check with Archie if you don't know where that can be.)
21 # $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
23 # Generated on Thu Aug 8 17:48:02 BST 1996 [metaconfig 3.0 PL60]
28 SCO csh still thinks true is false. Write to SCO today and tell them that next
29 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
32 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34 [End of diatribe. We now return you to your regularly scheduled programming...]
38 OOPS! You naughty creature! You didn't run Configure with sh!
39 I will attempt to remedy the situation by running sh for you...
42 true || cat /tmp/c1$$ /tmp/c2$$
43 true || exec sh $0 $argv:q
45 (exit $?0) || cat /tmp/c2$$
46 (exit $?0) || exec sh $0 $argv:q
47 rm -f /tmp/c1$$ /tmp/c2$$
49 : compute my invocation name
53 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
58 : Proper PATH separator
60 : On OS/2 this directory should exist if this is not floppy only system :-]
63 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
64 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
68 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
69 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
70 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
71 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
72 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
73 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
74 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
75 paths="$paths /sbin /usr/sbin /usr/libexec"
81 *) test -d $p && PATH=$PATH$p_$p ;;
90 echo "Say 'sh $me', not 'sh <$me'"
94 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
95 if test -f /hp-ux -a -f /bin/ksh; then
96 if (PATH=.; alias -x) >/dev/null 2>&1; then
97 : already under /bin/ksh
100 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
103 exec /bin/ksh $0 "$@"
106 : Warn them if they use ksh on other systems
107 (PATH=.; alias -x) >/dev/null 2>&1 && \
109 (I see you are using the Korn shell. Some ksh's blow up on $me,
110 especially on exotic machines. If yours does, try the Bourne shell instead.)
114 : Configure runs within the UU subdirectory
115 test -d UU || mkdir UU
597 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
600 : We must find out about Eunice early
602 if test -f /etc/unixtovms; then
603 eunicefix=/etc/unixtovms
605 if test -f /etc/unixtovms.exe; then
606 eunicefix=/etc/unixtovms.exe
609 : list of known cpp symbols, sorted alphabetically
610 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
611 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
612 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
613 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
614 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
615 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
616 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
617 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
618 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
619 al="$al VMS Xenix286"
620 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
621 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
622 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
623 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
624 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
625 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
626 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
627 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
628 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
629 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
630 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
631 al="$al __SVR4_2__ __UMAXV__"
632 al="$al ____386BSD____ __alpha __alpha__ __amiga"
633 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
634 al="$al __host_mips__"
635 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
636 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
637 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
638 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
639 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
640 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
641 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
642 al="$al __mc88100 __mc88100__ __mips __mips__"
643 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
644 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
645 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
646 al="$al _host_mips _mips _unix"
647 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
648 al="$al apollo ardent att386 att3b"
649 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
650 al="$al cadmus clipper concurrent convex cray ctix"
651 al="$al dmert encore gcos gcx gimpel gould"
652 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
653 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
654 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
655 al="$al i186 i286 i386 i486 i8086"
656 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
657 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
658 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
659 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
660 al="$al mc88000 mc88100 merlin mert mips mvs n16"
661 al="$al ncl_el ncl_mr"
662 al="$al news1500 news1700 news1800 news1900 news3700"
663 al="$al news700 news800 news900 ns16000 ns32000"
664 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
665 al="$al parisc pc532 pdp11 plexus posix pyr"
666 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
667 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
668 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
669 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
670 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
671 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
676 : default library list
678 : set useposix=false in your hint file to disable the POSIX extension.
680 : set usesafe=false in your hint if you want to skip the Safe extension.
682 : Define several unixisms. These can be used in hint files.
684 : Extra object files, if any, needed on this platform.
687 : Possible local include directories to search.
688 : Set locincpth to "" in a hint file to defeat local include searches.
689 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
690 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
692 : no include file wanted by default
695 : change the next line if compiling for Xenix/286 on Xenix/386
696 xlibpth='/usr/lib/386 /lib/386'
698 : Possible local library directories to search.
699 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
700 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
702 : general looking path for locating libraries
703 glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib"
704 glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small"
705 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib"
707 : Private path used by Configure to find libraries. Its value
708 : is prepended to libpth. This variable takes care of special
709 : machines, like the mips. Usually, it should be empty.
713 : full support for void wanted by default
716 : List of libraries we want.
717 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
718 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
719 libswanted="$libswanted ucb bsd BSD PW x"
720 : We probably want to search /usr/shlib before most other libraries.
721 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
722 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
723 glibpth="/usr/shlib $glibpth"
724 : Do not use vfork unless overridden by a hint file.
727 : see if sh knows # comments
729 echo "Checking your sh to see if it knows about # comments..." >&4
730 if `sh -c '#' >/dev/null 2>&1`; then
731 echo "Your sh handles # comments correctly."
735 echo "Okay, let's see if #! works on this system..."
737 test -f $xcat || xcat=/usr/bin/cat
742 if test -s today; then
746 echo "#! $xcat" > try
750 if test -s today; then
754 echo "It's just a comment."
759 echo "Your sh doesn't grok # comments--I will strip them later on."
762 echo "exec grep -v '^[ ]*#'" >spitshell
765 spitshell=`pwd`/spitshell
767 echo "I presume that if # doesn't work, #! won't work either!"
772 : figure out how to guarantee sh startup
774 echo "Checking out how to guarantee sh startup..." >&4
776 *bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
777 *) startsh=$sharpbang'/bin/sh';;
779 echo "Let's see if '$startsh' works..."
791 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
795 : script used to extract .SH files with variable substitutions
799 cat >>extract <<'EOS'
801 echo "Doing variable substitutions on .SH files..."
802 if test -f MANIFEST; then
803 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
804 : Pick up possible extension manifests.
805 for dir in ext/* ; do
806 if test -f $dir/MANIFEST; then
807 xxx=`awk '{print $1}' < $dir/MANIFEST |
808 sed -n "/\.SH$/ s@^@$dir/@p"`
809 shlist="$shlist $xxx"
814 echo "(Looking for .SH files under the current directory.)"
815 set x `find . -name "*.SH" -print`
819 0) set x *.SH; shift;;
821 if test ! -f $1; then
827 dir=`expr X$file : 'X\(.*\)/'`
828 file=`expr X$file : 'X.*/\(.*\)'`
829 (cd $dir && . ./$file)
836 if test -f config_h.SH; then
837 if test ! -f config.h; then
838 : oops, they left it out of MANIFEST, probably, so do it anyway.
844 : produce awk script to parse command line options
845 cat >options.awk <<'EOF'
847 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
849 len = length(optstr);
850 for (i = 1; i <= len; i++) {
851 c = substr(optstr, i, 1);
852 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
863 if (substr(str, 1, 1) != "-") {
864 printf("'%s'\n", str);
868 for (i = 2; i <= len; i++) {
869 c = substr(str, i, 1);
871 printf("-%s\n", substr(str, i));
877 printf("'%s'\n", substr(str, i + 1));
890 : process the command line options
891 set X `for arg in "$@"; do echo "X$arg"; done |
892 sed -e s/X// | awk -f options.awk`
897 : set up default values
910 while test $# -gt 0; do
912 -d) shift; fastread=yes;;
913 -e) shift; alldone=cont;;
917 if test -r "$1"; then
920 echo "$me: cannot read config file $1." >&2
925 -h) shift; error=true;;
926 -r) shift; reuseval=true;;
927 -s) shift; silent=true;;
928 -E) shift; alldone=exit;;
929 -K) shift; knowitall=true;;
930 -O) shift; override=true;;
931 -S) shift; extractsh=true;;
936 echo "$me: use '-U symbol=', not '-D symbol='." >&2
937 echo "$me: ignoring -D $1" >&2
940 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
941 *) echo "$1='define'" >> optdef.sh;;
948 *=) echo "$1" >> optdef.sh;;
950 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
951 echo "$me: ignoring -U $1" >&2
953 *) echo "$1='undef'" >> optdef.sh;;
957 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
960 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
968 Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
969 [-U symbol] [-U symbol=]
970 -d : use defaults for all answers.
971 -e : go on without questioning past the production of config.sh.
972 -f : specify an alternate default configuration file.
973 -h : print this help message and exit (with an error status).
974 -r : reuse C symbols value if possible (skips costly nm extraction).
975 -s : silent mode, only echoes questions and essential information.
976 -D : define symbol to have some value:
977 -D symbol symbol gets the value 'define'
978 -D symbol=value symbol gets the value 'value'
979 -E : stop at the end of questions, after having produced config.sh.
980 -K : do not use unless you know what you are doing.
981 -O : let -D and -U override definitions from loaded configuration file.
982 -S : perform variable substitutions on all .SH files (can mix with -f)
983 -U : undefine symbol:
984 -U symbol symbol gets the value 'undef'
985 -U symbol= symbol gets completely empty
986 -V : print version number and exit (with a zero status).
994 true) exec 1>/dev/null;;
997 : run the defines and the undefines, if any, but leave the file out there...
1001 case "$extractsh" in
1003 case "$config_sh" in
1004 '') config_sh='config.sh'; config='./config.sh';;
1005 /*) config="$config_sh";;
1006 *) config="./$config_sh";;
1009 echo "Fetching answers from $config_sh..."
1012 test "$override" && . ./optdef.sh
1023 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1024 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1025 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1026 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1027 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1030 : Eunice requires " " instead of "", can you believe it
1033 echo "Beginning of configuration questions for $package."
1035 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1037 : Some greps do not return status, grrr.
1038 echo "grimblepritz" >grimble
1039 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1041 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1047 : the following should work in any shell
1051 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1052 cat >contains <<'EOSS'
1053 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1058 : first determine how to suppress newline on echo command
1060 echo "Checking echo to see how to suppress newlines..."
1061 (echo "hi there\c" ; echo " ") >.echotmp
1062 if $contains c .echotmp >/dev/null 2>&1 ; then
1073 echo $n "The star should be here-->$c"
1077 : Now test for existence of everything in MANIFEST
1079 if test -f ../MANIFEST; then
1080 echo "First let's make sure your kit is complete. Checking..." >&4
1081 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1083 for filelist in x??; do
1084 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1086 if test -s missing; then
1090 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1092 You have the option of continuing the configuration process, despite the
1093 distinct possibility that your kit is damaged, by typing 'y'es. If you
1094 do, don't blame me if something goes wrong. I advise you to type 'n'o
1095 and contact the author (lwall@sems.com).
1098 echo $n "Continue? [n] $c" >&4
1102 echo "Continuing..." >&4
1106 echo "ABORTING..." >&4
1111 echo "Looks good..." >&4
1114 echo "There is no MANIFEST file. I hope your kit is complete !"
1118 : compute the number of columns on the terminal for proper question formatting
1123 : set up the echo used in my read
1124 myecho="case \"\$xxxm\" in
1125 '') echo $n \"\$rp $c\" >&4;;
1127 '') echo $n \"[\$xxxm] $c\";;
1129 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1131 echo $n \"[\$xxxm] $c\" >&4
1133 echo $n \"\$rp [\$xxxm] $c\" >&4
1139 : now set up to do reads with possible shell escape and default assignment
1144 case "\$fastread" in
1145 yes) case "\$dflt" in
1148 case "\$silent-\$rp" in
1153 *) case "\$silent" in
1154 true) case "\$rp" in
1159 while expr "X\$ans" : "X!" >/dev/null; do
1163 aok=''; eval "ans=\"\$answ\"" && aok=y
1168 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1173 echo "(OK, I'll run with -d after this question.)" >&4
1176 echo "*** Sorry, \$1 not supported yet." >&4
1188 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1198 echo "*** Substitution done -- please confirm."
1200 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1205 echo "*** Error -- try again."
1212 case "\$ans\$xxxm\$nostick" in
1224 : create .config dir to save info across Configure sessions
1225 test -d ../.config || mkdir ../.config
1226 cat >../.config/README <<EOF
1227 This directory created by Configure to save information that should
1228 persist across sessions.
1230 You may safely delete it if you wish.
1233 : general instructions
1236 user=`(logname) 2>/dev/null`
1238 user=`whoami 2>&1` ;;
1240 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1243 rp='Would you like to see the instructions?'
1254 This installation shell script will examine your system and ask you questions
1255 to determine how the perl5 package should be installed. If you get
1256 stuck on a question, you may use a ! shell escape to start a subshell or
1257 execute a command. Many of the questions will have default answers in square
1258 brackets; typing carriage return will give you the default.
1260 On some of the questions which ask for file or directory names you are allowed
1261 to use the ~name construct to specify the login directory belonging to "name",
1262 even if you don't have a shell which knows about that. Questions where this is
1263 allowed will be marked "(~name ok)".
1267 dflt='Type carriage return to continue'
1271 The prompter used in this script allows you to use shell variables and
1272 backticks in your answers. You may use $1, $2, etc... to refer to the words
1273 in the default answer, as if the default line was a set of arguments given to a
1274 script shell. This means you may also use $* to repeat the whole default line,
1275 so you do not have to re-type everything to add something to the default.
1277 Everytime there is a substitution, you will have to confirm. If there is an
1278 error (e.g. an unmatched backtick), the default answer will remain unchanged
1279 and you will be prompted again.
1281 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1282 the questions and use the computed defaults (or the previous answers if there
1283 was already a config.sh file). Type 'Configure -h' for a list of options.
1284 You may also start interactively and then answer '& -d' at any prompt to turn
1285 on the non-interactive behaviour for the remaining of the execution.
1291 Much effort has been expended to ensure that this shell script will run on any
1292 Unix system. If despite that it blows up on yours, your best bet is to edit
1293 Configure and run it again. If you can't run Configure for some reason,
1294 you'll have to generate a config.sh file by hand. Whatever problems you
1295 have, let me (lwall@sems.com) know how I blew it.
1297 This installation script affects things in two ways:
1299 1) it may do direct variable substitutions on some of the files included
1301 2) it builds a config.h file for inclusion in C programs. You may edit
1302 any of these files as the need arises after running this script.
1304 If you make a mistake on a question, there is no easy way to back up to it
1305 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1306 files. Configure will offer to let you do this before it runs the SH files.
1309 dflt='Type carriage return to continue'
1311 case "$firsttime" in
1312 true) echo $user >>../.config/instruct;;
1316 : find out where common programs are
1318 echo "Locating common programs..." >&4
1331 if test -d \$dir/\$thing; then
1337 for thisthing in \$dir/\$thing; do
1338 : just loop through to pick last item
1340 if test -f \$thisthing; then
1343 elif test -f \$dir/\$thing.exe; then
1344 : on Eunice apparently
1392 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1393 pth="$pth /lib /usr/lib"
1394 for file in $loclist; do
1395 xxx=`./loc $file $file $pth`
1400 echo $file is in $xxx.
1403 echo $file is in $xxx.
1406 echo "I don't know where '$file' is, and my life depends on it." >&4
1407 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1413 echo "Don't worry if any of the following aren't found..."
1415 for file in $trylist; do
1416 xxx=`./loc $file $file $pth`
1421 echo $file is in $xxx.
1424 echo $file is in $xxx.
1427 echo "I don't see $file out there, $say."
1434 echo "Substituting grep for egrep."
1440 echo "Hopefully test is built into your sh."
1443 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1444 echo "Using the test built into your sh."
1452 echo "Hopefully echo is built into your sh."
1457 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1458 $echo $n "hi there$c" >foo1
1459 echo $n "hi there$c" >foo2
1460 if cmp foo1 foo2 >/dev/null 2>&1; then
1461 echo "They are compatible. In fact, they may be identical."
1468 They are not compatible! You are probably running ksh on a non-USG system.
1469 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1470 have echo built in and we may have to run some Bourne shell scripts. That
1471 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1474 $echo $n "The star should be here-->$c"
1481 : determine whether symbolic links are supported
1484 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1485 echo "Symbolic links are supported." >&4
1488 echo "Symbolic links are NOT supported." >&4
1493 : see whether [:lower:] and [:upper:] are supported character classes
1497 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1499 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1504 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1507 : set up the translation script tr, must be called with ./tr of course
1511 '[A-Z][a-z]') exec $tr '$up' '$low';;
1512 '[a-z][A-Z]') exec $tr '$low' '$up';;
1519 : Try to determine whether config.sh was made on this system
1520 case "$config_sh" in
1522 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1523 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1524 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1525 newmyuname="$myuname"
1527 case "$knowitall" in
1529 if test -f ../config.sh; then
1530 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1531 eval "`grep myuname= ../config.sh`"
1533 if test "X$myuname" = "X$newmyuname"; then
1541 : Get old answers from old config file if Configure was run on the
1542 : same system, otherwise use the hints.
1545 if test -f config.sh; then
1547 rp="I see a config.sh file. Shall I use it to set the defaults?"
1550 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1551 *) echo "Fetching default answers from your old config.sh file..." >&4
1562 if test ! -f config.sh; then
1565 First time through, eh? I have some defaults handy for the following systems:
1568 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1570 : Half the following guesses are probably wrong... If you have better
1571 : tests or hints, please send them to lwall@sems.com
1572 : The metaconfig authors would also appreciate a copy...
1573 $test -f /irix && osname=irix
1574 $test -f /xenix && osname=sco_xenix
1575 $test -f /dynix && osname=dynix
1576 $test -f /dnix && osname=dnix
1577 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1578 $test -f /bin/mips && /bin/mips && osname=mips
1579 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1580 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1581 $test -d /usr/apollo/bin && osname=apollo
1582 $test -f /etc/saf/_sactab && osname=svr4
1583 $test -d /usr/include/minix && osname=minix
1584 if $test -d /MachTen; then
1586 if $test -x /sbin/version; then
1587 osvers=`/sbin/version | $awk '{print $2}' |
1588 $sed -e 's/[A-Za-z]$//'`
1589 elif $test -x /usr/etc/version; then
1590 osvers=`/usr/etc/version | $awk '{print $2}' |
1591 $sed -e 's/[A-Za-z]$//'`
1596 if $test -f $uname; then
1604 umips) osname=umips ;;
1607 [23]100) osname=mips ;;
1608 next*) osname=next ;;
1609 news*) osname=news ;;
1611 if $test -f /etc/kconfig; then
1613 if test "$lns" = "ln -s"; then
1615 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1617 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1626 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1628 'not found') osvers="$4"."$3" ;;
1629 '<3240'|'<>3240') osvers=3.2.0 ;;
1630 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1631 '=3250'|'>3250') osvers=3.2.5 ;;
1638 domainos) osname=apollo
1644 dynixptx*) osname=dynixptx
1647 freebsd) osname=freebsd
1649 genix) osname=genix ;;
1654 *.10.*) osvers=10 ;;
1671 netbsd*) osname=netbsd
1674 bsd386) osname=bsd386
1677 next*) osname=next ;;
1678 solaris) osname=solaris
1680 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1687 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1691 titanos) osname=titanos
1700 ultrix) osname=ultrix
1706 osvers=`echo "$3" | sed 's/^[vt]//'`
1708 hp*) osname=hp_osf1 ;;
1709 mips) osname=mips_osf1 ;;
1715 $2) case "$osname" in
1719 : svr4.x or possibly later
1729 if test -f /stand/boot ; then
1730 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1731 if test -n "$INITPROG" -a -f "$INITPROG"; then
1732 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1733 if test -n "$isesix"; then
1741 *) if test -f /etc/systemid; then
1743 set `echo $3 | $sed 's/\./ /g'` $4
1744 if $test -f sco_$1_$2_$3.sh; then
1746 elif $test -f sco_$1_$2.sh; then
1748 elif $test -f sco_$1.sh; then
1753 '') : Still unknown. Probably a generic Sys V.
1762 *) case "$osname" in
1763 '') : Still unknown. Probably a generic BSD.
1771 if test -f /vmunix -a -f news_os.sh; then
1772 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1773 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1776 $rm -f ../UU/kernel.what
1777 elif test -d c:/.; then
1784 : Now look for a hint file osname_osvers, unless one has been
1785 : specified already.
1788 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1789 : Also try without trailing minor version numbers.
1790 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1791 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1792 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1793 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1796 *) case "$osvers" in
1799 *) if $test -f $file.sh ; then
1801 elif $test -f $xfile.sh ; then
1803 elif $test -f $xxfile.sh ; then
1805 elif $test -f $xxxfile.sh ; then
1807 elif $test -f $xxxxfile.sh ; then
1809 elif $test -f "${osname}.sh" ; then
1820 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1826 You may give one or more space-separated answers, or "none" if appropriate.
1827 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1830 rp="Which of these apply, if any?"
1833 for file in $tans; do
1834 if $test -f $file.sh; then
1836 $cat $file.sh >> ../UU/config.sh
1837 elif $test X$tans = X -o X$tans = Xnone ; then
1840 : Give one chance to correct a possible typo.
1841 echo "$file.sh does not exist"
1843 rp="hint to use instead?"
1845 for file in $ans; do
1846 if $test -f "$file.sh"; then
1848 $cat $file.sh >> ../UU/config.sh
1849 elif $test X$ans = X -o X$ans = Xnone ; then
1852 echo "$file.sh does not exist -- ignored."
1859 : Remember our hint file for later.
1860 if $test -f "$file.sh" ; then
1872 echo "Fetching default answers from $config_sh..." >&4
1876 cp $config_sh config.sh 2>/dev/null
1886 test "$override" && . ./optdef.sh
1887 myuname="$newmyuname"
1889 : Restore computed paths
1890 for file in $loclist $trylist; do
1891 eval $file="\$_$file"
1896 Configure uses the operating system name and version to set some defaults.
1897 The default value is probably right if the name rings a bell. Otherwise,
1898 since spelling matters for me, either accept the default or answer "none"
1905 ''|' '|none) dflt=none ;;
1906 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1909 *) dflt="$osname" ;;
1911 rp="Operating system name?"
1915 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1919 : who configured the system
1920 cf_time=`$date 2>&1`
1921 (logname > .temp) >/dev/null 2>&1
1922 $test -s .temp || (whoami > .temp) >/dev/null 2>&1
1923 $test -s .temp || echo unknown > .temp
1927 : determine the architecture name
1929 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
1930 tarch=`arch`"-$osname"
1931 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
1932 if uname -m > tmparch 2>&1 ; then
1933 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
1941 case "$myarchname" in
1944 echo "(Your architecture name used to be $myarchname.)"
1950 *) dflt="$archname";;
1952 rp='What is your architecture name'
1959 if test -d /afs; then
1960 echo "AFS may be running... I'll be extra cautious then..." >&4
1963 echo "AFS does not seem to be running..." >&4
1967 : decide how portable to be. Allow command line overrides.
1968 case "$d_portable" in
1970 *) d_portable="$define" ;;
1973 : set up shell script to do ~ expansion
1979 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
1982 if $test -f /bin/csh; then
1983 /bin/csh -f -c "glob \$1"
1988 name=\`$expr x\$1 : '..\([^/]*\)'\`
1989 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
1990 if $test ! -d "\$dir"; then
1992 echo "\$me: can't locate home directory for: \$name" >&2
1997 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2013 : now set up to get a file name
2014 cat <<'EOSC' >getfile
2027 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2028 fn=`echo $fn | sed 's/(.*)//'`
2034 loc_file=`expr $fn : '.*:\(.*\)'`
2035 fn=`expr $fn : '\(.*\):.*'`
2043 */*) fullpath=true;;
2052 *e*) exp_file=true;;
2055 *p*) nopath_ok=true;;
2060 *d*) type='Directory';;
2061 *l*) type='Locate';;
2066 Locate) what='File';;
2071 case "$d_portable" in
2079 while test "$type"; do
2084 true) rp="$rp (~name ok)";;
2087 if test -f UU/getfile.ok && \
2088 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2107 value=`UU/filexp $ans`
2110 if test "$ans" != "$value"; then
2111 echo "(That expands to $value on this system.)"
2125 /*) value="$ansexp" ;;
2130 echo "I shall only accept a full path name, as in /bin/ls." >&4
2131 echo "Use a ! shell escape if you wish to check pathnames." >&4
2134 echo "Please give a full path name, starting with slash." >&4
2137 echo "Note that using ~name is ok provided it expands well." >&4
2150 if test -f "$ansexp"; then
2152 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2154 echo "($value is not a plain file, but that's ok.)"
2159 if test -d "$ansexp"; then
2164 if test -d "$ansexp"; then
2165 echo "(Looking for $loc_file in directory $value.)"
2166 value="$value/$loc_file"
2167 ansexp="$ansexp/$loc_file"
2169 if test -f "$ansexp"; then
2172 case "$nopath_ok" in
2173 true) case "$value" in
2175 *) echo "Assuming $value will be in people's path."
2191 if test "$fastread" = yes; then
2196 rp="$what $value doesn't exist. Use that name anyway?"
2217 : determine root of directory hierarchy where package will be installed.
2220 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2228 By default, $package will be installed in $dflt/bin, manual
2229 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2230 all installation directories. Typically set to /usr/local, but you
2231 may choose /usr if you wish to install $package among your system
2232 binaries. If you wish to have binaries under /bin but manual pages
2233 under /usr/local/man, that's ok: you will be prompted separately
2234 for each of the installation directories, the prefix being only used
2235 to set the defaults.
2239 rp='Installation prefix to use?'
2247 *) oldprefix="$prefix";;
2254 : set the prefixit variable, to compute a suitable default value
2255 prefixit='case "$3" in
2257 case "$oldprefix" in
2258 "") eval "$1=\"\$$2\"";;
2265 ""|" ") eval "$1=\"\$$2\"";;
2271 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2273 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2274 /*-$oldprefix/*|\~*-$oldprefix/*)
2275 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2276 *) eval "$1=\"\$$2\"";;
2280 : determine where private library files go
2281 : Usual default is /usr/local/lib/perl5. Also allow things like
2282 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2284 *perl*) set dflt privlib lib ;;
2285 *) set dflt privlib lib/$package ;;
2290 There are some auxiliary files for $package that need to be put into a
2291 private library directory that is accessible by everyone.
2295 rp='Pathname where the private library files will reside?'
2297 if $test "X$privlibexp" != "X$ansexp"; then
2301 privlibexp="$ansexp"
2305 Since you are running AFS, I need to distinguish the directory in which
2306 private files reside from the directory in which they are installed (and from
2307 which they are presumably copied to the former directory by occult means).
2310 case "$installprivlib" in
2311 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2312 *) dflt="$installprivlib";;
2315 rp='Where will private files be installed?'
2317 installprivlib="$ans"
2319 installprivlib="$privlibexp"
2322 : set the base revision
2325 : get the patchlevel
2327 echo "Getting the current patchlevel..." >&4
2328 if $test -r ../patchlevel.h;then
2329 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2330 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2335 echo "(You have $package $baserev patchlevel $patchlevel subversion $subversion.)"
2337 : set the prefixup variable, to restore leading tilda escape
2338 prefixup='case "$prefixexp" in
2340 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2343 : determine where public architecture dependent libraries go
2349 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2353 *) version=`LC_ALL=C;export LC_ALL;\
2354 echo $baserev $patchlevel $subversion | \
2355 $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
2356 dflt="$privlib/$archname/$version"
2360 *) dflt="$archlib";;
2364 $spackage contains architecture-dependent library files. If you are
2365 sharing libraries in a heterogeneous environment, you might store
2366 these files in a separate location. Otherwise, you can just include
2367 them with the rest of the public library files.
2371 rp='Where do you want to put the public architecture-dependent libraries?'
2374 archlibexp="$ansexp"
2379 Since you are running AFS, I need to distinguish the directory in which
2380 private files reside from the directory in which they are installed (and from
2381 which they are presumably copied to the former directory by occult means).
2384 case "$installarchlib" in
2385 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2386 *) dflt="$installarchlib";;
2389 rp='Where will architecture-dependent library files be installed?'
2391 installarchlib="$ans"
2393 installarchlib="$archlibexp"
2395 if $test X"$archlib" = X"$privlib"; then
2401 : set up the script used to warn in case of inconsistency
2405 echo "*** WHOA THERE!!! ***" >&4
2406 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2407 rp=" Keep the $hint value?"
2410 y) td=$was; tu=$was;;
2414 : function used to set $1 to $val
2415 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2417 $define$undef) . ./whoa; eval "$var=\$td";;
2418 $undef$define) . ./whoa; eval "$var=\$tu";;
2419 *) eval "$var=$val";;
2422 : make some quick guesses about what we are up against
2424 $echo $n "Hmm... $c"
2433 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2434 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2436 echo "Looks kind of like an OSF/1 system, but we'll see..."
2438 elif test `echo abc | tr a-z A-Z` = Abc ; then
2439 xxx=`./loc addbib blurfl $pth`
2440 if $test -f $xxx; then
2441 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2445 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2446 echo "Looks kind of like an extended USG system, but we'll see..."
2448 echo "Looks kind of like a USG system, but we'll see..."
2452 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2453 echo "Looks kind of like a BSD system, but we'll see..."
2457 echo "Looks kind of like a Version 7 system, but we'll see..."
2460 case "$eunicefix" in
2463 There is, however, a strange, musty smell in the air that reminds me of
2464 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2468 : it so happens the Eunice I know will not run shell scripts in Unix format
2472 echo "Congratulations. You aren't running Eunice."
2476 if test -f /xenix; then
2477 echo "Actually, this looks more like a XENIX system..."
2482 echo "It's not Xenix..."
2487 if test -f /venix; then
2488 echo "Actually, this looks more like a VENIX system..."
2495 echo "Nor is it Venix..."
2498 chmod +x bsd usg v7 osf1 eunice xenix venix
2499 $eunicefix bsd usg v7 osf1 eunice xenix venix
2502 : see if setuid scripts can be secure
2505 Some kernels have a bug that prevents setuid #! scripts from being
2506 secure. Some sites have disabled setuid #! scripts because of this.
2508 First let's decide if your kernel supports secure setuid #! scripts.
2509 (If setuid #! scripts would be secure but have been disabled anyway,
2510 don't say that they are secure if asked.)
2515 if $test -d /dev/fd; then
2516 echo "#!$ls" >reflect
2517 chmod +x,u+s reflect
2518 ./reflect >flect 2>&1
2519 if $contains "/dev/fd" flect >/dev/null; then
2520 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2524 If you are not sure if they are secure, I can check but I'll need a
2525 username and password different from the one you are using right now.
2526 If you don't have such a username or don't want me to test, simply
2530 rp='Other username to test security of setuid scripts with?'
2535 case "$d_suidsafe" in
2536 '') echo "I'll assume setuid scripts are *not* secure." >&4
2539 echo "Well, the $hint value is *not* secure." >&4
2541 *) echo "Well, the $hint value *is* secure." >&4
2546 $rm -f reflect flect
2547 echo "#!$ls" >reflect
2548 chmod +x,u+s reflect
2551 echo '"su" will (probably) prompt you for '"$ans's password."
2552 su $ans -c './reflect >flect'
2553 if $contains "/dev/fd" flect >/dev/null; then
2554 echo "Okay, it looks like setuid scripts are secure." >&4
2557 echo "I don't think setuid scripts are secure." >&4
2562 rp='Does your kernel have *secure* setuid scripts?'
2565 [yY]*) val="$define";;
2570 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2571 echo "(That's for file descriptors, not floppy disks.)"
2577 $rm -f reflect flect
2579 : now see if they want to do setuid emulation
2582 case "$d_suidsafe" in
2585 echo "No need to emulate SUID scripts since they are secure here." >& 4
2589 Some systems have disabled setuid scripts, especially systems where
2590 setuid scripts cannot be secure. On systems where setuid scripts have
2591 been disabled, the setuid/setgid bits on scripts are currently
2592 useless. It is possible for $package to detect those bits and emulate
2593 setuid/setgid in a secure fashion. This emulation will only work if
2594 setuid scripts have been disabled in your kernel.
2598 "$define") dflt=y ;;
2601 rp="Do you want to do setuid/setgid emulation?"
2604 [yY]*) val="$define";;
2612 : determine where site specific libraries go.
2616 '') dflt="$privlib/site_perl" ;;
2617 *) dflt="$sitelib" ;;
2621 The installation process will also create a directory for
2622 site-specific extensions and modules. Some users find it convenient
2623 to place all local files in this directory rather than in the main
2624 distribution directory.
2628 rp='Pathname for the site-specific library files?'
2630 if $test "X$sitelibexp" != "X$ansexp"; then
2634 sitelibexp="$ansexp"
2638 Since you are running AFS, I need to distinguish the directory in which
2639 private files reside from the directory in which they are installed (and from
2640 which they are presumably copied to the former directory by occult means).
2643 case "$installsitelib" in
2644 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2645 *) dflt="$installsitelib";;
2648 rp='Where will private files be installed?'
2650 installsitelib="$ans"
2652 installsitelib="$sitelibexp"
2655 : determine where site specific architecture-dependent libraries go.
2656 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2657 : xxx is usuually lib/site_perl/archname.
2658 set sitearch sitearch none
2661 '') dflt="$sitelib/$archname" ;;
2662 *) dflt="$sitearch" ;;
2666 The installation process will also create a directory for
2667 architecture-dependent site-specific extensions and modules.
2671 rp='Pathname for the site-specific architecture-dependent library files?'
2673 if $test "X$sitearchexp" != "X$ansexp"; then
2677 sitearchexp="$ansexp"
2681 Since you are running AFS, I need to distinguish the directory in which
2682 private files reside from the directory in which they are installed (and from
2683 which they are presumably copied to the former directory by occult means).
2686 case "$installsitearch" in
2687 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2688 *) dflt="$installsitearch";;
2691 rp='Where will private files be installed?'
2693 installsitearch="$ans"
2695 installsitearch="$sitearchexp"
2698 : determine where old public architecture dependent libraries might be
2699 case "$oldarchlib" in
2700 '') case "$privlib" in
2702 *) dflt="$privlib/$archname"
2706 *) dflt="$oldarchlib"
2709 if $test ! -d "$dflt/auto"; then
2714 In 5.001, Perl stored architecture-dependent library files in a directory
2715 with a name such as $privlib/$archname,
2716 and this directory contained files from the standard extensions and
2717 files from any additional extensions you might have added. Starting
2718 with version 5.002, all the architecture-dependent standard extensions
2719 will go into a version-specific directory such as
2721 while locally-added extensions will go into
2724 If you wish Perl to continue to search the old architecture-dependent
2725 library for your local extensions, give the path to that directory.
2726 If you do not wish to use your old architecture-dependent library
2727 files, answer 'none'.
2731 rp='Directory for your old 5.001 architecture-dependent libraries?'
2734 oldarchlibexp="$ansexp"
2735 case "$oldarchlib" in
2736 ''|' ') val="$undef" ;;
2747 echo "$package can now use alternate file IO mechanisms to ANSI stdio."
2748 echo "However these are experimental and may cause problems with some"
2749 echo "extension modules"
2750 rp="Use stdio as with previous versions?"
2754 echo "Ok, doing things the stdio way"
2763 case "$d_perlstdio" in
2764 $define) usestdio='true';;
2765 *) usestdio='false';;
2770 : determine where public executables go
2775 rp='Pathname where the public executables will reside?'
2777 if $test "X$ansexp" != "X$binexp"; then
2785 Since you are running AFS, I need to distinguish the directory in which
2786 executables reside from the directory in which they are installed (and from
2787 which they are presumably copied to the former directory by occult means).
2790 case "$installbin" in
2791 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2792 *) dflt="$installbin";;
2795 rp='Where will public executables be installed?'
2799 installbin="$binexp"
2802 : determine where manual pages are on this system
2806 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2807 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2808 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2809 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2810 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2811 sysman=`./loc . /usr/man/man1 $syspath`
2814 if $test -d "$sysman"; then
2815 echo "System manual is in $sysman." >&4
2817 echo "Could not find manual pages in source form." >&4
2820 : determine where manual pages go
2821 set man1dir man1dir none
2825 $spackage has manual pages available in source form.
2829 echo "However, you don't have nroff, so they're probably useless to you."
2831 '') man1dir="none";;
2834 echo "If you don't want the manual sources installed, answer 'none'."
2839 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
2840 lookpath="$lookpath $prefixexp/man/p_man/man1"
2841 lookpath="$lookpath $prefixexp/man/u_man/man1"
2842 lookpath="$lookpath $prefixexp/man/man.1"
2843 : If prefix contains 'perl' then we want to keep the man pages
2844 : under the prefix directory. Otherwise, look in a variety of
2845 : other possible places. This is debatable, but probably a
2846 : good compromise. Well, apparently not.
2847 : Experience has shown people expect man1dir to be under prefix,
2848 : so we now always put it there. Users who want other behavior
2849 : can answer interactively or use a command line option.
2850 : Does user have System V-style man paths.
2852 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
2853 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
2863 rp="Where do the main $spackage manual pages (source) go?"
2865 if $test "X$man1direxp" != "X$ansexp"; then
2869 man1direxp="$ansexp"
2877 Since you are running AFS, I need to distinguish the directory in which
2878 manual pages reside from the directory in which they are installed (and from
2879 which they are presumably copied to the former directory by occult means).
2882 case "$installman1dir" in
2883 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
2884 *) dflt="$installman1dir";;
2887 rp='Where will man pages be installed?'
2889 installman1dir="$ans"
2891 installman1dir="$man1direxp"
2894 : What suffix to use on installed man pages
2901 rp="What suffix should be used for the main $spackage man pages?"
2903 '') case "$man1dir" in
2917 *) dflt="$man1ext";;
2924 : see if we can have long filenames
2926 rmlist="$rmlist /tmp/cf$$"
2927 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
2928 first=123456789abcdef
2929 second=/tmp/cf$$/$first
2930 $rm -f $first $second
2931 if (echo hi >$first) 2>/dev/null; then
2932 if $test -f 123456789abcde; then
2933 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
2936 if (echo hi >$second) 2>/dev/null; then
2937 if $test -f /tmp/cf$$/123456789abcde; then
2939 That's peculiar... You can have filenames longer than 14 characters, but only
2940 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
2941 I shall consider your system cannot support long filenames at all.
2945 echo 'You can have filenames longer than 14 characters.' >&4
2950 How confusing! Some of your filesystems are sane enough to allow filenames
2951 longer than 14 characters but some others like /tmp can't even think about them.
2952 So, for now on, I shall assume your kernel does not allow them at all.
2959 You can't have filenames longer than 14 chars. You can't even think about them!
2965 $rm -rf /tmp/cf$$ 123456789abcde*
2967 : determine where library module manual pages go
2968 set man3dir man3dir none
2972 $spackage has manual pages for many of the library modules.
2978 However, you don't have nroff, so they're probably useless to you.
2979 You can use the supplied perldoc script instead.
2982 '') man3dir="none";;
2986 case "$d_flexfnam" in
2989 However, your system can't handle the long file names like File::Basename.3.
2990 You can use the supplied perldoc script instead.
2993 '') man3dir="none";;
2997 echo "If you don't want the manual sources installed, answer 'none'."
2998 : We dont use /usr/local/man/man3 because some man programs will
2999 : only show the /usr/local/man/man3 contents, and not the system ones,
3000 : thus man less will show the perl module less.pm, but not the system
3001 : less command. We might also conflict with TCL man pages.
3002 : However, something like /opt/perl/man/man3 is fine.
3004 '') case "$prefix" in
3005 *perl*) dflt=`echo $man1dir |
3006 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
3007 *) dflt="$privlib/man/man3" ;;
3011 *) dflt="$man3dir" ;;
3016 rp="Where do the $spackage library man pages (source) go?"
3018 if test "X$man3direxp" != "X$ansexp"; then
3023 man3direxp="$ansexp"
3031 Since you are running AFS, I need to distinguish the directory in which
3032 manual pages reside from the directory in which they are installed (and from
3033 which they are presumably copied to the former directory by occult means).
3036 case "$installman3dir" in
3037 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
3038 *) dflt="$installman3dir";;
3041 rp='Where will man pages be installed?'
3043 installman3dir="$ans"
3045 installman3dir="$man3direxp"
3048 : What suffix to use on installed man pages
3055 rp="What suffix should be used for the $spackage library man pages?"
3057 '') case "$man3dir" in
3071 *) dflt="$man3ext";;
3078 : see what memory models we can support
3081 $cat >pdp11.c <<'EOP'
3090 cc -o pdp11 pdp11.c >/dev/null 2>&1
3091 if ./pdp11 2>/dev/null; then
3092 dflt='unsplit split'
3094 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3097 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3102 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3105 if $test -d /lib/large || $test -d /usr/lib/large; then
3108 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3117 Some systems have different model sizes. On most systems they are called
3118 small, medium, large, and huge. On the PDP11 they are called unsplit and
3119 split. If your system doesn't support different memory models, say "none".
3120 If you wish to force everything to one memory model, say "none" here and
3121 put the appropriate flags later when it asks you for other cc and ld flags.
3122 Venix systems may wish to put "none" and let the compiler figure things out.
3123 (In the following question multiple model names should be space separated.)
3126 rp="Which memory models are supported?"
3141 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3142 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3149 rp="What flag indicates separate I and D space?"
3157 *large*|*small*|*medium*|*huge*)
3164 rp="What flag indicates large model?"
3174 *huge*) case "$huge" in
3178 rp="What flag indicates huge model?"
3188 *medium*) case "$medium" in
3192 rp="What flag indicates medium model?"
3199 *) medium="$large";;
3202 *small*) case "$small" in
3206 rp="What flag indicates small model?"
3217 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3221 : see if we need a special compiler
3229 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3230 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3243 On some systems the default C compiler will not resolve multiple global
3244 references that happen to have the same name. On some such systems the "Mcc"
3245 command may be used to force these to be resolved. On other systems a "cc -M"
3246 command is required. (Note that the -M flag on other systems indicates a
3247 memory model to use!) If you have the Gnu C compiler, you might wish to use
3251 rp="What command will force resolution on this system?"
3259 rp="Use which C compiler?"
3264 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3265 $cat >gccvers.c <<EOM
3270 printf("%s\n", __VERSION__);
3272 printf("%s\n", "1");
3278 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3279 gccversion=`./gccvers`
3280 case "$gccversion" in
3281 '') echo "You are not using GNU cc." ;;
3282 *) echo "You are using GNU cc $gccversion." ;;
3286 echo "*** WHOA THERE!!! ***" >&4
3287 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3288 case "$knowitall" in
3290 echo " You'd better start hunting for one and let me know about it." >&4
3296 case "$gccversion" in
3297 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3300 : What should the include directory be ?
3302 $echo $n "Hmm... $c"
3306 if $test -f /bin/mips && /bin/mips; then
3307 echo "Looks like a MIPS system..."
3308 $cat >usr.c <<'EOCP'
3309 #ifdef SYSTYPE_BSD43
3313 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3314 dflt='/bsd43/usr/include'
3318 mips_type='System V'
3320 $rm -f usr.c usr.out
3321 echo "and you're compiling with the $mips_type compiler and libraries."
3325 echo "Doesn't look like a MIPS system."
3336 case "$xxx_prompt" in
3338 rp='Where are the include files you want to use?'
3346 : see if we have to deal with yellow pages, now NIS.
3347 if $test -d /usr/etc/yp || $test -d /etc/yp; then
3348 if $test -f /usr/etc/nibindd; then
3350 echo "I'm fairly confident you're on a NeXT."
3352 rp='Do you get the hosts file via NetInfo?'
3361 y*) hostcat='nidump hosts .';;
3362 *) case "$hostcat" in
3363 nidump*) hostcat='';;
3373 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
3381 rp='Are you getting the hosts file via yellow pages?'
3384 y*) hostcat='ypcat hosts';;
3385 *) hostcat='cat /etc/hosts';;
3391 : now get the host name
3393 echo "Figuring out host name..." >&4
3394 case "$myhostname" in
3396 echo 'Maybe "hostname" will work...'
3397 if tans=`sh -c hostname 2>&1` ; then
3405 if $test "$cont"; then
3407 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
3408 if tans=`cat /etc/systemid 2>&1` ; then
3410 phostname='cat /etc/systemid'
3411 echo "Whadyaknow. Xenix always was a bit strange..."
3414 elif $test -r /etc/systemid; then
3415 echo "(What is a non-Xenix system doing with /etc/systemid?)"
3418 if $test "$cont"; then
3419 echo 'No, maybe "uuname -l" will work...'
3420 if tans=`sh -c 'uuname -l' 2>&1` ; then
3422 phostname='uuname -l'
3424 echo 'Strange. Maybe "uname -n" will work...'
3425 if tans=`sh -c 'uname -n' 2>&1` ; then
3427 phostname='uname -n'
3429 echo 'Oh well, maybe I can mine it out of whoami.h...'
3430 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
3431 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
3432 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
3434 case "$myhostname" in
3435 '') echo "Does this machine have an identity crisis or something?"
3438 echo "Well, you said $myhostname before..."
3439 phostname='echo $myhostname';;
3445 : you do not want to know about this
3450 if $test "$myhostname" ; then
3452 rp='Your host name appears to be "'$myhostname'".'" Right?"
3460 : bad guess or no guess
3461 while $test "X$myhostname" = X ; do
3463 rp="Please type the (one word) name of your host:"
3468 : translate upper to lower if necessary
3469 case "$myhostname" in
3471 echo "(Normalizing case in your host name)"
3472 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
3476 case "$myhostname" in
3478 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
3479 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
3480 echo "(Trimming domain name from host name--host name is now $myhostname)"
3482 *) case "$mydomain" in
3485 : If we use NIS, try ypmatch.
3486 : Is there some reason why this was not done before?
3487 test "X$hostcat" = "Xypcat hosts" &&
3488 ypmatch "$myhostname" hosts 2>/dev/null |\
3489 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
3492 : Extract only the relevant hosts, reducing file size,
3493 : remove comments, insert trailing space for later use.
3494 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
3495 /[ ]$myhostname[ . ]/p" > hosts
3498 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
3499 END { print sum }" hosts` = x1 || tmp_re="[ ]"
3500 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
3501 hosts | $sort | $uniq | \
3502 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
3503 case `$echo X$dflt` in
3504 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
3507 .) echo "(You do not have fully-qualified names in /etc/hosts)"
3512 tans=`./loc resolv.conf X /etc /usr/etc`
3513 if $test -f "$tans"; then
3514 echo "(Attempting domain name extraction from $tans)"
3515 : Why was there an Egrep here, when Sed works?
3516 dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \
3517 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
3522 .) echo "(No help from resolv.conf either -- attempting clever guess)"
3523 dflt=.`sh -c domainname 2>/dev/null`
3526 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
3531 .) echo "(Lost all hope -- silly guess then)"
3537 *) dflt="$mydomain";;
3541 rp="What is your domain name?"
3551 : translate upper to lower if necessary
3554 echo "(Normalizing case in your domain name)"
3555 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
3559 : a little sanity check here
3560 case "$phostname" in
3563 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
3564 $myhostname$mydomain|$myhostname) ;;
3566 case "$phostname" in
3568 echo "(That doesn't agree with your whoami.h file, by the way.)"
3571 echo "(That doesn't agree with your $phostname command, by the way.)"
3581 I need to get your e-mail address in Internet format if possible, i.e.
3582 something like user@host.domain. Please answer accurately since I have
3583 no easy means to double check it. The default value provided below
3584 is most probably close to the reality but may not be valid from outside
3585 your organization...
3589 while test "$cont"; do
3591 '') dflt="$cf_by@$myhostname$mydomain";;
3592 *) dflt="$cf_email";;
3594 rp='What is your e-mail address?'
3600 rp='Address does not look like an Internet one. Use it anyway?'
3616 If you or somebody else will be maintaining perl at your site, please
3617 fill in the correct e-mail address here so that they may be contacted
3618 if necessary. Currently, the "perlbug" program included with perl
3619 will send mail to this address in addition to perlbug@perl.com. You may
3620 enter "none" for no administrator.
3623 case "$perladmin" in
3624 '') dflt="$cf_email";;
3625 *) dflt="$perladmin";;
3627 rp='Perl administrator e-mail address'
3631 : determine where public executable scripts go
3632 set scriptdir scriptdir
3634 case "$scriptdir" in
3637 : guess some guesses
3638 $test -d /usr/share/scripts && dflt=/usr/share/scripts
3639 $test -d /usr/share/bin && dflt=/usr/share/bin
3640 $test -d /usr/local/script && dflt=/usr/local/script
3641 $test -d $prefixexp/script && dflt=$prefixexp/script
3645 *) dflt="$scriptdir"
3650 Some installations have a separate directory just for executable scripts so
3651 that they can mount it across multiple architectures but keep the scripts in
3652 one spot. You might, for example, have a subdirectory of /usr/share for this.
3653 Or you might just lump your scripts in with all your other executables.
3657 rp='Where do you keep publicly executable scripts?'
3659 if $test "X$ansexp" != "X$scriptdirexp"; then
3663 scriptdirexp="$ansexp"
3667 Since you are running AFS, I need to distinguish the directory in which
3668 scripts reside from the directory in which they are installed (and from
3669 which they are presumably copied to the former directory by occult means).
3672 case "$installscript" in
3673 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
3674 *) dflt="$installscript";;
3677 rp='Where will public scripts be installed?'
3679 installscript="$ans"
3681 installscript="$scriptdirexp"
3684 : determine perl absolute location
3686 '') perlpath=$binexp/perl ;;
3689 : figure out how to guarantee perl startup
3690 case "$startperl" in
3692 case "$sharpbang" in
3696 I can use the #! construct to start perl on your system. This will
3697 make startup of perl scripts faster, but may cause problems if you
3698 want to share those scripts and perl is not in a standard place
3699 ($perlpath) on all your platforms. The alternative is to force
3700 a shell by starting the script with a single ':' character.
3704 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
3707 none) startperl=": # use perl";;
3708 *) startperl="#!$ans";;
3711 *) startperl=": # use perl"
3716 echo "I'll use $startperl to start perl scripts."
3718 : see how we invoke the C preprocessor
3720 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3721 cat <<'EOT' >testcpp.c
3727 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3729 wrapper=`pwd`/cppstdin
3733 if $test "X$cppstdin" != "X" && \
3734 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3735 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3737 echo "You used to use $cppstdin $cppminus so we'll use that again."
3739 '') echo "But let's see if we can live without a wrapper..." ;;
3741 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3742 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3744 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3747 echo "(However, $cpprun $cpplast does not work, let's see...)"
3755 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3762 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3763 $cc -E <testcpp.c >testcpp.out 2>&1; \
3764 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3765 echo "Yup, it does."
3768 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3769 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3770 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3771 echo "Yup, it does."
3774 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3775 $cc -P <testcpp.c >testcpp.out 2>&1; \
3776 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3777 echo "Yipee, that works!"
3780 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3781 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3782 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3783 echo "At long last!"
3786 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3787 $cpp <testcpp.c >testcpp.out 2>&1; \
3788 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3792 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3793 $cpp - <testcpp.c >testcpp.out 2>&1; \
3794 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3795 echo "Hooray, it works! I was beginning to wonder."
3798 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3799 $wrapper <testcpp.c >testcpp.out 2>&1; \
3800 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3806 rp="No dice. I can't find a C preprocessor. Name one:"
3810 $x_cpp <testcpp.c >testcpp.out 2>&1
3811 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3812 echo "OK, that will do." >&4
3814 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3829 echo "Perhaps can we force $cc -E using a wrapper..."
3830 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3831 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3837 echo "Nope, we'll have to live without it..."
3852 *) $rm -f $wrapper;;
3854 $rm -f testcpp.c testcpp.out
3856 : Set private lib path
3859 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3864 '') dlist="$loclibpth $plibpth $glibpth";;
3865 *) dlist="$libpth";;
3868 : Now check and see which directories actually exist, avoiding duplicates
3872 if $test -d $xxx; then
3875 *) libpth="$libpth $xxx";;
3881 Some systems have incompatible or broken versions of libraries. Among
3882 the directories listed in the question below, please remove any you
3883 know not to be holding relevant libraries, and add any that are needed.
3884 Say "none" for none.
3895 rp="Directories to use for library searches?"
3902 : determine optimize, if desired, or use for debug flag also
3906 *) dflt="$optimize";;
3910 Some C compilers have problems with their optimizers. By default, $package
3911 compiles with the -O flag to use the optimizer. Alternately, you might want
3912 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3913 systems). Either flag can be specified here. To use neither flag, specify
3917 rp="What optimizer/debugger flag should be used?"
3921 'none') optimize=" ";;
3925 : We will not override a previous value, but we might want to
3926 : augment a hint file
3929 case "$gccversion" in
3930 1*) dflt='-fpcc-struct-return' ;;
3933 *-g*) dflt="$dflt -DDEBUGGING";;
3935 case "$gccversion" in
3936 2*) if test -d /etc/conf/kconfig.d &&
3937 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3946 case "$mips_type" in
3947 *BSD*|'') inclwanted="$locincpth $usrinc";;
3948 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3950 for thisincl in $inclwanted; do
3951 if $test -d $thisincl; then
3952 if $test x$thisincl != x$usrinc; then
3955 *) dflt="$dflt -I$thisincl";;
3961 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3963 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3971 *) dflt="$dflt -D$2";;
3976 set signal.h __LANGUAGE_C__; eval $inctest
3978 set signal.h LANGUAGE_C; eval $inctest
3980 set signal.h NO_PROTOTYPE; eval $inctest
3981 set signal.h _NO_PROTO; eval $inctest
3984 none|recommended) dflt="$ccflags $dflt" ;;
3985 *) dflt="$ccflags";;
3993 Your C compiler may want other flags. For this question you should include
3994 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3995 but you should NOT include libraries or ld flags like -lwhatever. If you
3996 want $package to honor its debug switch, you should include -DDEBUGGING here.
3997 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3998 -DHIDEMYMALLOC or -DCRIPPLED_CC.
4000 To use no flags, specify the word "none".
4006 rp="Any additional cc flags?"
4013 : the following weeds options from ccflags that are of no interest to cpp
4015 case "$gccversion" in
4016 1*) cppflags="$cppflags -D__GNUC__"
4018 case "$mips_type" in
4020 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4026 echo "Let me guess what the preprocessor flags are..." >&4
4040 *) ftry="$previous $flag";;
4042 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
4043 >cpp1.out 2>/dev/null && \
4044 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
4045 >cpp2.out 2>/dev/null && \
4046 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4047 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4049 cppflags="$cppflags $ftry"
4059 *-*) echo "They appear to be: $cppflags";;
4061 $rm -f cpp.c cpp?.out
4065 : flags used in final linking phase
4068 '') if ./venix; then
4074 *-posix*) dflt="$dflt -posix" ;;
4077 *) dflt="$ldflags";;
4080 : Try to guess additional flags to pick up local libraries.
4081 for thislibdir in $libpth; do
4082 case " $loclibpth " in
4085 *"-L$thislibdir "*) ;;
4086 *) dflt="$dflt -L$thislibdir" ;;
4098 Your C linker may need flags. For this question you should
4099 include -L/whatever and any other flags used by the C linker, but you
4100 should NOT include libraries like -lwhatever.
4102 Make sure you include the appropriate -L/path flags if your C linker
4103 does not normally search all of the directories you specified above,
4106 To use no flags, specify the word "none".
4110 rp="Any additional ld flags (NOT including libraries)?"
4116 rmlist="$rmlist pdp11"
4120 echo "Checking your choice of C compiler and flags for coherency..." >&4
4121 set X $cc $optimize $ccflags $ldflags try.c -o try
4124 I've tried to compile and run a simple program with:
4129 and I got the following output:
4132 $cat > try.c <<'EOF'
4137 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
4138 if sh -c './try' >>try.msg 2>&1; then
4141 echo "The program compiled OK, but exited with status $?." >>try.msg
4142 rp="You have a problem. Shall I abort Configure"
4146 echo "I can't compile the test program." >>try.msg
4147 rp="You have a BIG problem. Shall I abort Configure"
4153 case "$knowitall" in
4155 echo "(The supplied flags might be incorrect with this C compiler.)"
4163 *) echo "Ok. Stopping Configure." >&4
4168 n) echo "OK, that should do.";;
4170 $rm -f try try.* core
4172 : compute shared library extension
4175 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4185 On some systems, shared libraries may be available. Answer 'none' if
4186 you want to suppress searching of shared libraries for the remaining
4187 of this configuration.
4190 rp='What is the file extension used for shared libraries?'
4194 : Looking for optional libraries
4196 echo "Checking for optional libraries..." >&4
4201 case "$libswanted" in
4202 '') libswanted='c_s';;
4204 for thislib in $libswanted; do
4206 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
4207 echo "Found -l$thislib (shared)."
4210 *) dflt="$dflt -l$thislib";;
4212 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4213 echo "Found -l$thislib (shared)."
4216 *) dflt="$dflt -l$thislib";;
4218 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
4219 echo "Found -l$thislib."
4222 *) dflt="$dflt -l$thislib";;
4224 elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
4225 echo "Found -l$thislib."
4228 *) dflt="$dflt -l$thislib";;
4230 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
4231 echo "Found -l${thislib}_s."
4234 *) dflt="$dflt -l${thislib}_s";;
4236 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
4237 echo "Found -l$thislib."
4240 *) dflt="$dflt -l$thislib";;
4243 echo "No -l$thislib."
4254 ' '|'') dflt='none';;
4259 Some versions of Unix support shared libraries, which make executables smaller
4260 but make load time slightly longer.
4262 On some systems, mostly newer Unix System V's, the shared library is included
4263 by putting the option "-lc_s" as the last thing on the cc command line when
4264 linking. Other systems use shared libraries by default. There may be other
4265 libraries needed to compile $package on your machine as well. If your system
4266 needs the "-lc_s" option, include it here. Include any other special libraries
4267 here as well. Say "none" for none.
4271 rp="Any additional libraries?"
4278 : see if nm is to be used to determine whether a symbol is defined or not
4281 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
4282 if $test $dflt -gt 20; then
4297 I can use 'nm' to extract the symbols from your C libraries. This is a time
4298 consuming task which may generate huge output on the disk (up to 3 megabytes)
4299 but that should make the symbols extraction faster. The alternative is to skip
4300 the 'nm' extraction part and to compile a small test program instead to
4301 determine whether each symbol is present. If you have a fast C compiler and/or
4302 if your 'nm' output cannot be parsed, this may be the best solution.
4305 rp='Shall I use nm to extract C symbols from the libraries?'
4317 : nm options which may be necessary
4319 '') if $test -f /mach_boot; then
4321 elif $test -d /usr/ccs/lib; then
4323 elif $test -f /dgux; then
4330 : nm options which may be necessary for shared libraries but illegal
4331 : for archive libraries. Thank you, Linux.
4332 case "$nm_so_opt" in
4333 '') case "$myuname" in
4335 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4336 nm_so_opt='--dynamic'
4345 : get list of predefined functions in a handy place
4350 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
4357 *) for thislib in $libs; do
4360 : Handle C library specially below.
4363 thislib=`echo $thislib | $sed -e 's/^-l//'`
4364 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4366 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4368 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
4370 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4372 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4374 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
4379 libnames="$libnames $try"
4381 *) libnames="$libnames $thislib" ;;
4390 for xxx in $libpth; do
4391 $test -r $1 || set $xxx/libc.$so
4392 : The messy sed command sorts on library version numbers.
4394 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4395 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
4397 s/[0-9][0-9]*/0000&/g
4398 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4401 sort | $sed -e 's/^.* //'`
4404 $test -r $1 || set /usr/ccs/lib/libc.$so
4405 $test -r $1 || set /lib/libsys_s.a
4411 if $test -r "$1"; then
4412 echo "Your (shared) C library seems to be in $1."
4414 elif $test -r /lib/libc && $test -r /lib/clib; then
4415 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4417 libc='/lib/clib /lib/libc'
4418 if $test -r /lib/syslib; then
4419 echo "(Your math library is in /lib/syslib.)"
4420 libc="$libc /lib/syslib"
4422 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4423 echo "Your C library seems to be in $libc, as you said before."
4424 elif $test -r $incpath/usr/lib/libc.a; then
4425 libc=$incpath/usr/lib/libc.a;
4426 echo "Your C library seems to be in $libc. That's fine."
4427 elif $test -r /lib/libc.a; then
4429 echo "Your C library seems to be in $libc. You're normal."
4431 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
4433 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4434 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4435 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4437 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4439 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4442 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
4444 if $test -r "$tans"; then
4445 echo "Your C library seems to be in $tans, of all places."
4451 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4455 If the guess above is wrong (which it might be if you're using a strange
4456 compiler, or your machine supports multiple models), you can override it here.
4461 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4463 I can't seem to find your C library. I've looked in the following places:
4466 $sed 's/^/ /' libpath
4469 None of these seems to contain your C library. I need to get its name...
4474 rp='Where is your C library?'
4479 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4480 set X `cat libnames`
4483 case $# in 1) xxx=file; esac
4484 echo "Extracting names from the following $xxx for later perusal:" >&4
4486 $sed 's/^/ /' libnames >&4
4488 $echo $n "This may take a while...$c" >&4
4490 : Linux may need the special Dynamic option to nm for shared libraries.
4491 : In general, this is stored in the nm_so_opt variable.
4492 : Unfortunately, that option may be fatal on non-shared libraries.
4493 for nm_libs_ext in $*; do
4494 case $nm_libs_ext in
4495 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4496 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4501 $grep fprintf libc.tmp > libc.ptf
4502 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4503 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4505 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx //p'";\
4507 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4509 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4511 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4513 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4515 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4517 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4519 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4521 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4523 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4525 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4527 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4529 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4530 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4532 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4534 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4536 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4538 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4540 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4542 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4544 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4546 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4548 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4551 nm -p $* 2>/dev/null >libc.tmp
4552 $grep fprintf libc.tmp > libc.ptf
4553 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4554 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4560 echo "nm didn't seem to work right. Trying ar instead..." >&4
4562 if ar t $libc > libc.tmp; then
4563 for thisname in $libnames; do
4564 ar t $thisname >>libc.tmp
4566 $sed -e 's/\.o$//' < libc.tmp > libc.list
4569 echo "ar didn't seem to work right." >&4
4570 echo "Maybe this is a Cray...trying bld instead..." >&4
4571 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4573 for thisname in $libnames; do
4575 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4576 ar t $thisname >>libc.tmp
4580 echo "That didn't work either. Giving up." >&4
4587 if $test -f /lib/syscalls.exp; then
4589 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4590 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4594 $rm -f libnames libpath
4596 : is a C symbol defined?
4599 -v) tf=libc.tmp; tc=""; tdc="";;
4600 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4601 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4604 case "$reuseval-$4" in
4606 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4612 if $contains $tlook $tf >/dev/null 2>&1;
4617 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4618 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4626 $define) tval=true;;
4632 : define an is-in-libc? function
4633 inlibc='echo " "; td=$define; tu=$undef;
4634 sym=$1; var=$2; eval "was=\$$2";
4636 case "$reuseval$was" in
4646 echo "$sym() found." >&4;
4647 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4649 echo "$sym() NOT found." >&4;
4650 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4654 $define) echo "$sym() found." >&4;;
4655 *) echo "$sym() NOT found." >&4;;
4659 : Check how to convert floats to strings.
4661 echo "Checking for an efficient way to convert floats to strings."
4664 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
4667 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
4670 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
4674 Gconvert(1.0, 8, 0, buf);
4675 if (buf[0] != '1' || buf[1] != '\0')
4677 Gconvert(0.0, 8, 0, buf);
4678 if (buf[0] != '0' || buf[1] != '\0')
4680 Gconvert(-1.0, 8, 0, buf);
4681 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
4686 case "$d_Gconvert" in
4687 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
4688 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
4689 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
4690 *) xxx_list='gconvert gcvt sprintf' ;;
4693 for xxx_convert in $xxx_list; do
4694 echo "Trying $xxx_convert"
4696 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
4697 try.c $libs > /dev/null 2>&1 ; then
4698 echo "$xxx_convert" found. >&4
4700 echo "Good, $xxx_convert drops a trailing decimal point."
4701 echo "I'll use $xxx_convert to convert floats into a string." >&4
4704 echo "But $xxx_convert keeps a trailing decimal point".
4707 echo "$xxx_convert NOT found." >&4
4711 case "$xxx_convert" in
4712 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
4713 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
4714 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
4717 : Initialize h_fcntl
4720 : Initialize h_sysfile
4723 : determine filename position in cpp output
4725 echo "Computing filename position in cpp output for #include directives..." >&4
4726 echo '#include <stdio.h>' > foo.c
4729 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4730 $grep '^[ ]*#.*stdio\.h' | \
4731 while read cline; do
4734 while $test \$# -gt 0; do
4735 if $test -r \`echo \$1 | $tr -d '"'\`; then
4740 pos=\`expr \$pos + 1\`
4752 *) pos="${fieldn}th";;
4754 echo "Your cpp writes the filename in the $pos field of the line."
4756 : locate header file
4761 if test -f $usrinc/\$wanted; then
4762 echo "$usrinc/\$wanted"
4765 awkprg='{ print \$$fieldn }'
4766 echo "#include <\$wanted>" > foo\$\$.c
4767 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4768 $grep "^[ ]*#.*\$wanted" | \
4769 while read cline; do
4770 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4772 */\$wanted) echo "\$name"; exit 0;;
4783 : access call always available on UNIX
4787 : locate the flags for 'access()'
4791 $cat >access.c <<'EOCP'
4792 #include <sys/types.h>
4797 #include <sys/file.h>
4806 : check sys/file.h first, no particular reason here
4807 if $test `./findhdr sys/file.h` && \
4808 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
4810 echo "<sys/file.h> defines the *_OK access constants." >&4
4811 elif $test `./findhdr fcntl.h` && \
4812 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
4814 echo "<fcntl.h> defines the *_OK access constants." >&4
4815 elif $test `./findhdr unistd.h` && \
4816 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
4817 echo "<unistd.h> defines the *_OK access constants." >&4
4819 echo "I can't find the four *_OK access constants--I'll use mine." >&4
4825 : see if alarm exists
4829 : Look for GNU-cc style attribute checking
4831 echo "Checking whether your compiler can handle __attribute__ ..." >&4
4832 $cat >attrib.c <<'EOCP'
4834 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
4836 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
4837 if $contains 'warning' attrib.out >/dev/null 2>&1; then
4838 echo "Your C compiler doesn't fully support __attribute__."
4841 echo "Your C compiler supports __attribute__."
4845 echo "Your C compiler doesn't seem to understand __attribute__ at all."
4852 : see if bcmp exists
4856 : see if bcopy exists
4860 : see if setpgrp exists
4861 set setpgrp d_setpgrp
4864 : see which flavor of setpgrp is in use
4865 case "$d_setpgrp" in
4871 if (getuid() == 0) {
4872 printf("(I see you are running Configure as super-user...)\n");
4875 if (-1 == setpgrp(1, 1))
4880 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
4883 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
4885 *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
4890 xxx="USG one, i.e. you use setpgrp()."
4893 xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
4896 echo "Assuming your setpgrp is a $xxx" >&4
4905 : see if bzero exists
4909 : check for length of integer
4913 echo "Checking to see how big your integers are..." >&4
4914 $cat >try.c <<'EOCP'
4918 printf("%d\n", sizeof(int));
4922 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
4924 echo "Your integers are $intsize bytes long."
4927 echo "(I can't seem to compile the test program. Guessing...)"
4928 rp="What is the size of an integer (in bytes)?"
4936 : see if signal is declared as pointer to function returning int or void
4938 xxx=`./findhdr signal.h`
4939 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
4940 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4941 echo "You have int (*signal())() instead of void." >&4
4943 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4944 echo "You have void (*signal())() instead of int." >&4
4946 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
4947 echo "You have int (*signal())() instead of void." >&4
4950 case "$d_voidsig" in
4952 echo "I can't determine whether signal handler returns void or int..." >&4
4954 rp="What type does your signal handler return?"
4961 echo "As you already told me, signal handler returns void." >&4;;
4963 echo "As you already told me, signal handler returns int." >&4;;
4968 case "$d_voidsig" in
4969 "$define") signal_t="void";;
4974 : check for ability to cast large floats to 32-bit ints.
4976 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
4977 if $test "$intsize" -eq 4; then
4983 #include <sys/types.h>
4985 $signal_t blech() { exit(3); }
4991 signal(SIGFPE, blech);
4993 f = (double) 0x7fffffff;
4997 if (i32 != ($xxx) f)
5002 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5006 echo "(I can't seem to compile the test program--assuming it can't)"
5014 echo "Nope, it can't."
5021 : check for ability to cast negative floats to unsigned
5023 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
5025 #include <sys/types.h>
5027 $signal_t blech() { exit(7); }
5028 $signal_t blech_in_list() { exit(4); }
5029 unsigned long dummy_long(p) unsigned long p; { return p; }
5030 unsigned int dummy_int(p) unsigned int p; { return p; }
5031 unsigned short dummy_short(p) unsigned short p; { return p; }
5035 unsigned long along;
5037 unsigned short ashort;
5040 signal(SIGFPE, blech);
5041 along = (unsigned long)f;
5042 aint = (unsigned int)f;
5043 ashort = (unsigned short)f;
5044 if (along != (unsigned long)-123)
5046 if (aint != (unsigned int)-123)
5048 if (ashort != (unsigned short)-123)
5050 f = (double)0x40000000;
5053 along = (unsigned long)f;
5054 if (along != 0x80000000)
5058 along = (unsigned long)f;
5059 if (along != 0x7fffffff)
5063 along = (unsigned long)f;
5064 if (along != 0x80000001)
5068 signal(SIGFPE, blech_in_list);
5070 along = dummy_long((unsigned long)f);
5071 aint = dummy_int((unsigned int)f);
5072 ashort = dummy_short((unsigned short)f);
5073 if (along != (unsigned long)123)
5075 if (aint != (unsigned int)123)
5077 if (ashort != (unsigned short)123)
5083 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5087 echo "(I can't seem to compile the test program--assuming it can't)"
5090 case "$castflags" in
5095 echo "Nope, it can't."
5102 : see if vprintf exists
5104 if set vprintf val -f d_vprintf; eval $csym; $val; then
5105 echo 'vprintf() found.' >&4
5107 $cat >vprintf.c <<'EOF'
5108 #include <varargs.h>
5110 main() { xxx("foo"); }
5119 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
5122 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
5123 echo "Your vsprintf() returns (int)." >&4
5126 echo "Your vsprintf() returns (char*)." >&4
5130 echo 'vprintf() NOT found.' >&4
5140 : see if chown exists
5144 : see if chroot exists
5148 : see if chsize exists
5152 : check for const keyword
5154 echo 'Checking to see if your C compiler knows about "const"...' >&4
5155 $cat >const.c <<'EOCP'
5156 typedef struct spug { int drokk; } spug;
5163 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
5165 echo "Yup, it does."
5168 echo "Nope, it doesn't."
5173 : see if crypt exists
5175 if set crypt val -f d_crypt; eval $csym; $val; then
5176 echo 'crypt() found.' >&4
5180 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
5181 if $test -z "$cryptlib"; then
5182 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
5186 if $test -z "$cryptlib"; then
5187 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
5191 if $test -z "$cryptlib"; then
5192 cryptlib=`./loc libcrypt.a "" $libpth`
5196 if $test -z "$cryptlib"; then
5197 echo 'crypt() NOT found.' >&4
5206 : get csh whereabouts
5208 'csh') val="$undef" ;;
5215 : see if cuserid exists
5216 set cuserid d_cuserid
5219 : define an alternate in-header-list? function
5220 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5221 cont=true; xxf="echo \"<\$1> found.\" >&4";
5222 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5223 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5225 case $# in 4) instead=instead;; *) instead="at last";; esac;
5226 while $test "$cont"; do
5228 var=$2; eval "was=\$$2";
5229 if $test "$xxx" && $test -r "$xxx";
5231 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5234 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5235 set $yyy; shift; shift; yyy=$@;
5236 case $# in 0) cont="";;
5237 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5238 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5239 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5240 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5244 do set $yyy; var=$2; eval "was=\$$2";
5245 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5246 set $yyy; shift; shift; yyy=$@;
5249 : see if this is a limits.h system
5250 set limits.h i_limits
5253 : see if this is a float.h system
5257 : See if number of significant digits in a double precision number is known
5259 $cat >dbl_dig.c <<EOM
5269 printf("Contains DBL_DIG");
5272 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
5273 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
5274 echo "DBL_DIG found." >&4
5277 echo "DBL_DIG NOT found." >&4
5284 : see if difftime exists
5285 set difftime d_difftime
5288 : see if this is a dirent system
5290 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
5292 echo "<dirent.h> found." >&4
5295 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
5296 echo "<sys/dir.h> found." >&4
5299 xinc=`./findhdr sys/ndir.h`
5301 echo "<dirent.h> NOT found." >&4
5306 : Look for type of directory structure.
5308 $cppstdin $cppflags $cppminus < "$xinc" > try.c
5310 case "$direntrytype" in
5313 $define) guess1='struct dirent' ;;
5314 *) guess1='struct direct' ;;
5317 *) guess1="$direntrytype"
5322 'struct dirent') guess2='struct direct' ;;
5323 *) guess2='struct dirent' ;;
5326 if $contains "$guess1" try.c >/dev/null 2>&1; then
5327 direntrytype="$guess1"
5328 echo "Your directory entries are $direntrytype." >&4
5329 elif $contains "$guess2" try.c >/dev/null 2>&1; then
5330 direntrytype="$guess2"
5331 echo "Your directory entries seem to be $direntrytype." >&4
5333 echo "I don't recognize your system's directory entries." >&4
5334 rp="What type is used for directory entries on this system?"
5342 : see if the directory entry stores field length
5344 $cppstdin $cppflags $cppminus < "$xinc" > try.c
5345 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
5346 echo "Good, your directory entry keeps length information in d_namlen." >&4
5349 echo "Your directory entry does not know about the d_namlen field." >&4
5356 : see if dlerror exists
5359 set dlerror d_dlerror
5363 : see if dld is available
5367 : see if dlopen exists
5374 : determine which dynamic loading, if any, to compile in
5376 dldir="ext/DynaLoader"
5389 $define) dflt='y' ;;
5392 $define) dflt='y' ;;
5394 : Does a dl_xxx.xs file exist for this operating system
5395 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
5398 rp="Do you wish to use dynamic loading?"
5405 if $test -f ../$dldir/dl_${osname}.xs ; then
5406 dflt="$dldir/dl_${osname}.xs"
5407 elif $test "$d_dlopen" = "$define" ; then
5408 dflt="$dldir/dl_dlopen.xs"
5409 elif $test "$i_dld" = "$define" ; then
5410 dflt="$dldir/dl_dld.xs"
5415 *) dflt="$dldir/$dlsrc"
5418 echo "The following dynamic loading files are available:"
5419 : Can not go over to $dldir because getfile has path hard-coded in.
5420 cd ..; ls -C $dldir/dl*.xs; cd UU
5421 rp="Source file to use for dynamic loading"
5426 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5430 Some systems may require passing special flags to $cc -c to
5431 compile modules that will be used to create a shared library.
5432 To use no flags, say "none".
5435 case "$cccdlflags" in
5436 '') case "$gccversion" in
5437 '') case "$osname" in
5439 next) dflt='none' ;;
5440 solaris|svr4*|esix*) dflt='-Kpic' ;;
5441 irix*) dflt='-KPIC' ;;
5442 sunos) dflt='-pic' ;;
5447 *) dflt="$cccdlflags" ;;
5449 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5452 none) cccdlflags=' ' ;;
5453 *) cccdlflags="$ans" ;;
5458 Some systems use ld to create libraries that can be dynamically loaded,
5459 while other systems (such as those using ELF) use $cc.
5463 '') $cat >try.c <<'EOM'
5464 /* Test for whether ELF binaries are produced */
5469 int i = open("a.out",O_RDONLY);
5472 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5473 exit(0); /* succeed (yes, it's ELF) */
5478 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5480 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5484 echo "I'll use ld to build dynamic libraries."
5493 rp="What command should be used to create dynamic libraries?"
5499 Some systems may require passing special flags to $ld to create a
5500 library that can be dynamically loaded. If your ld flags include
5501 -L/other/path options to locate libraries outside your loader's normal
5502 search path, you may need to specify those -L options here as well. To
5503 use no flags, say "none".
5506 case "$lddlflags" in
5507 '') case "$osname" in
5509 linux|irix*) dflt='-shared' ;;
5510 next) dflt='none' ;;
5511 solaris) dflt='-G' ;;
5512 sunos) dflt='-assert nodefinitions' ;;
5513 svr4*|esix*) dflt="-G $ldflags" ;;
5517 *) dflt="$lddlflags" ;;
5520 : Try to guess additional flags to pick up local libraries.
5521 for thisflag in $ldflags; do
5526 *) dflt="$dflt $thisflag" ;;
5536 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5539 none) lddlflags=' ' ;;
5540 *) lddlflags="$ans" ;;
5545 Some systems may require passing special flags to $cc to indicate that
5546 the resulting executable will use dynamic linking. To use no flags,
5550 case "$ccdlflags" in
5551 '') case "$osname" in
5552 hpux) dflt='-Wl,-E' ;;
5553 linux) dflt='-rdynamic' ;;
5554 next) dflt='none' ;;
5555 sunos) dflt='none' ;;
5558 *) dflt="$ccdlflags" ;;
5560 rp="Any special flags to pass to $cc to use dynamic loading?"
5563 none) ccdlflags=' ' ;;
5564 *) ccdlflags="$ans" ;;
5582 System V Release 4 systems can support dynamic loading
5583 only if libperl is created as a shared library.
5590 set d_shrplib; eval $setvar
5591 case "$d_shrplib" in
5595 Be sure to add the perl source directory to the LD_LIBRARY_PATH
5596 environment variable before running make:
5597 LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH
5599 setenv LD_LIBRARY_PATH `cd ..;pwd`
5604 case "$d_shrplib" in
5607 "") dflt="$archlib/CORE";;
5608 *) dflt="$shrpdir";;
5610 rp="What directory should we install the shared libperl into?"
5619 : see if dlfcn is available
5627 On a few systems, the dynamically loaded modules that perl generates and uses
5628 will need a different extension then shared libs. The default will probably
5636 rp='What is the extension of dynamically loaded modules'
5645 : Check if dlsym need a leading underscore
5651 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
5652 $cat >dyna.c <<'EOM'
5661 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
5663 #include <sys/types.h>
5677 int mode = RTLD_LAZY ;
5679 handle = dlopen("./dyna.$dlext", mode) ;
5680 if (handle == NULL) {
5684 symbol = dlsym(handle, "fred") ;
5685 if (symbol == NULL) {
5686 /* try putting a leading underscore */
5687 symbol = dlsym(handle, "_fred") ;
5688 if (symbol == NULL) {
5699 : Call the object file tmp-dyna.o in case dlext=o.
5700 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
5701 mv dyna.o tmp-dyna.o > /dev/null 2>&1 &&
5702 $ld $lddlflags -o dyna.$dlext tmp-dyna.o > /dev/null 2>&1 &&
5703 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
5706 1) echo "Test program failed using dlopen." >&4
5707 echo "Perhaps you should not use dynamic loading." >&4;;
5708 2) echo "Test program failed using dlsym." >&4
5709 echo "Perhaps you should not use dynamic loading." >&4;;
5710 3) echo "dlsym needs a leading underscore" >&4
5712 4) echo "dlsym doesn't need a leading underscore." >&4;;
5715 echo "I can't compile and run the test program." >&4
5720 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
5725 : see if dup2 exists
5729 : Locate the flags for 'open()'
5731 $cat >open3.c <<'EOCP'
5732 #include <sys/types.h>
5737 #include <sys/file.h>
5748 : check sys/file.h first to get FREAD on Sun
5749 if $test `./findhdr sys/file.h` && \
5750 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
5752 echo "<sys/file.h> defines the O_* constants..." >&4
5754 echo "and you have the 3 argument form of open()." >&4
5757 echo "but not the 3 argument form of open(). Oh, well." >&4
5760 elif $test `./findhdr fcntl.h` && \
5761 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
5763 echo "<fcntl.h> defines the O_* constants..." >&4
5765 echo "and you have the 3 argument form of open()." >&4
5768 echo "but not the 3 argument form of open(). Oh, well." >&4
5773 echo "I can't find the O_* constant definitions! You got problems." >&4
5779 : check for non-blocking I/O stuff
5780 case "$h_sysfile" in
5781 true) echo "#include <sys/file.h>" > head.c;;
5784 true) echo "#include <fcntl.h>" > head.c;;
5785 *) echo "#include <sys/fcntl.h>" > head.c;;
5790 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
5791 case "$o_nonblock" in
5794 $cat >>try.c <<'EOCP'
5797 printf("O_NONBLOCK\n");
5801 printf("O_NDELAY\n");
5805 printf("FNDELAY\n");
5811 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5813 case "$o_nonblock" in
5814 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
5815 *) echo "Seems like we can use $o_nonblock.";;
5818 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
5821 *) echo "Using $hint value $o_nonblock.";;
5823 $rm -f try try.* .out core
5826 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
5832 #include <sys/types.h>
5834 #define MY_O_NONBLOCK $o_nonblock
5836 $signal_t blech(x) int x; { exit(3); }
5838 $cat >> try.c <<'EOCP'
5846 pipe(pd); /* Down: child -> parent */
5847 pipe(pu); /* Up: parent -> child */
5850 close(pd[1]); /* Parent reads from pd[0] */
5851 close(pu[0]); /* Parent writes (blocking) to pu[1] */
5852 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
5854 signal(SIGALRM, blech);
5856 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
5858 sprintf(string, "%d\n", ret);
5859 write(2, string, strlen(string));
5862 if (errno == EAGAIN) {
5868 if (errno == EWOULDBLOCK)
5869 printf("EWOULDBLOCK\n");
5872 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
5873 sleep(2); /* Give it time to close our pipe */
5875 ret = read(pd[0], buf, 1); /* Should read EOF */
5877 sprintf(string, "%d\n", ret);
5878 write(3, string, strlen(string));
5882 close(pd[0]); /* We write to pd[1] */
5883 close(pu[1]); /* We read from pu[0] */
5884 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
5885 close(pd[1]); /* Pipe pd is now fully closed! */
5886 exit(0); /* Bye bye, thank you for playing! */
5889 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5890 echo "$startsh" >mtry
5891 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
5893 ./mtry >/dev/null 2>&1
5895 0) eagain=`$cat try.out`;;
5896 1) echo "Could not perform non-blocking setting!";;
5897 2) echo "I did a successful read() for something that was not there!";;
5898 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
5899 *) echo "Something terribly wrong happened during testing.";;
5901 rd_nodata=`$cat try.ret`
5902 echo "A read() system call with no data present returns $rd_nodata."
5903 case "$rd_nodata" in
5906 echo "(That's peculiar, fixing that to be -1.)"
5912 echo "Forcing errno EAGAIN on read() with no data available."
5916 echo "Your read() sets errno to $eagain when no data is available."
5919 status=`$cat try.err`
5921 0) echo "And it correctly returns 0 to signal EOF.";;
5922 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
5923 *) echo "However, your read() returns '$status' on EOF??";;
5926 if test "$status" -eq "$rd_nodata"; then
5927 echo "WARNING: you can't distinguish between EOF and no data!"
5931 echo "I can't compile the test program--assuming errno EAGAIN will do."
5938 echo "Using $hint value $eagain."
5939 echo "Your read() returns $rd_nodata when no data is present."
5940 case "$d_eofnblk" in
5941 "$define") echo "And you can see EOF because read() returns 0.";;
5942 "$undef") echo "But you can't see EOF status from read() returned value.";;
5944 echo "(Assuming you can't see EOF status from read anyway.)"
5950 $rm -f try try.* .out core head.c mtry
5952 : see if fchmod exists
5956 : see if fchown exists
5960 : see if this is an fcntl system
5964 : see if fgetpos exists
5965 set fgetpos d_fgetpos
5968 : see if flock exists
5972 : see if fork exists
5976 : see if pathconf exists
5977 set pathconf d_pathconf
5980 : see if fpathconf exists
5981 set fpathconf d_fpathconf
5984 : see if fsetpos exists
5985 set fsetpos d_fsetpos
5988 : see if gethostent exists
5989 set gethostent d_gethent
5992 : see if getlogin exists
5993 set getlogin d_getlogin
5996 : see if getpgrp exists
5997 set getpgrp d_getpgrp
6000 : see if getpgrp2 exists
6001 set getpgrp2 d_getpgrp2
6004 : see if getppid exists
6005 set getppid d_getppid
6008 : see if getpriority exists
6009 set getpriority d_getprior
6012 : see if this is a netinet/in.h or sys/in.h system
6013 set netinet/in.h i_niin sys/in.h i_sysin
6016 : see if htonl --and friends-- exists
6021 : Maybe they are macros.
6026 #include <sys/types.h>
6027 #$i_niin I_NETINET_IN
6030 #include <netinet/in.h>
6036 printf("Defined as a macro.");
6039 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
6040 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
6042 echo "But it seems to be defined as a macro." >&4
6050 : see which of string.h or strings.h is needed
6052 strings=`./findhdr string.h`
6053 if $test "$strings" && $test -r "$strings"; then
6054 echo "Using <string.h> instead of <strings.h>." >&4
6058 strings=`./findhdr strings.h`
6059 if $test "$strings" && $test -r "$strings"; then
6060 echo "Using <strings.h> instead of <string.h>." >&4
6062 echo "No string header found -- You'll surely have problems." >&4
6068 "$undef") strings=`./findhdr strings.h`;;
6069 *) strings=`./findhdr string.h`;;
6074 if set index val -f; eval $csym; $val; then
6075 if set strchr val -f d_strchr; eval $csym; $val; then
6076 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6079 echo "strchr() found." >&4
6083 echo "index() found." >&4
6088 echo "index() found." >&4
6091 if set strchr val -f d_strchr; eval $csym; $val; then
6094 echo "strchr() found." >&4
6096 echo "No index() or strchr() found!" >&4
6101 set d_strchr; eval $setvar
6103 set d_index; eval $setvar
6107 $cat >isascii.c <<'EOCP'
6118 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6119 echo "isascii() found." >&4
6122 echo "isascii() NOT found." >&4
6129 : see if killpg exists
6133 : see if link exists
6137 : see if localeconv exists
6138 set localeconv d_locconv
6141 : see if lockf exists
6145 : see if lstat exists
6149 : see if mblen exists
6153 : see if mbstowcs exists
6154 set mbstowcs d_mbstowcs
6157 : see if mbtowc exists
6161 : see if memcmp exists
6165 : see if memcpy exists
6169 : see if memmove exists
6170 set memmove d_memmove
6173 : see if memset exists
6177 : see if mkdir exists
6181 : see if mkfifo exists
6185 : see if mktime exists
6189 : see if msgctl exists
6193 : see if msgget exists
6197 : see if msgsnd exists
6201 : see if msgrcv exists
6205 : see how much of the 'msg*(2)' library is present.
6208 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6209 *"$undef"*) h_msg=false;;
6211 : we could also check for sys/ipc.h ...
6212 if $h_msg && $test `./findhdr sys/msg.h`; then
6213 echo "You have the full msg*(2) library." >&4
6216 echo "You don't have the full msg*(2) library." >&4
6222 : see if this is a malloc.h system
6223 set malloc.h i_malloc
6226 : see if stdlib is available
6227 set stdlib.h i_stdlib
6230 : determine which malloc to compile in
6232 case "$usemymalloc" in
6233 ''|y*|true) dflt='y' ;;
6234 n*|false) dflt='n' ;;
6235 *) dflt="$usemymalloc" ;;
6237 rp="Do you wish to attempt to use the malloc that comes with $package?"
6243 mallocsrc='malloc.c'
6244 mallocobj='malloc.o'
6245 d_mymalloc="$define"
6248 : Remove malloc from list of libraries to use
6249 echo "Removing unneeded -lmalloc from library list" >&4
6250 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6253 echo "libs = $libs" >&4
6265 : compute the return types of malloc and free
6267 $cat >malloc.c <<END
6271 #include <sys/types.h>
6285 case "$malloctype" in
6287 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6294 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6298 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6305 echo "Your system uses $freetype free(), it would seem." >&4
6307 : see if nice exists
6311 : see if pause exists
6315 : see if pipe exists
6319 : see if poll exists
6323 : see if this is a pwd.h system
6329 xxx=`./findhdr pwd.h`
6330 $cppstdin $cppflags $cppminus < $xxx >$$.h
6332 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6340 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
6348 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
6356 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
6364 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
6372 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
6384 set d_pwquota; eval $setvar
6385 set d_pwage; eval $setvar
6386 set d_pwchange; eval $setvar
6387 set d_pwclass; eval $setvar
6388 set d_pwexpire; eval $setvar
6389 set d_pwcomment; eval $setvar
6393 : see if readdir and friends exist
6394 set readdir d_readdir
6396 set seekdir d_seekdir
6398 set telldir d_telldir
6400 set rewinddir d_rewinddir
6403 : see if readlink exists
6404 set readlink d_readlink
6407 : see if rename exists
6411 : see if rmdir exists
6415 : can bcopy handle overlapping blocks?
6420 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
6421 $cat >foo.c <<'EOCP'
6424 char buf[128], abc[128];
6430 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
6432 for (align = 7; align >= 0; align--) {
6433 for (len = 36; len; len--) {
6436 for (off = 1; off <= len; off++) {
6437 bcopy(b, b+off, len);
6438 bcopy(b+off, b, len);
6439 if (bcmp(b, abc, len))
6447 if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
6448 if ./safebcpy 2>/dev/null; then
6452 echo "It can't, sorry."
6455 echo "(I can't compile the test program, so we'll assume not...)"
6459 $rm -f foo.* safebcpy core
6463 : can memcpy handle overlapping blocks?
6468 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
6469 $cat >foo.c <<'EOCP'
6472 char buf[128], abc[128];
6478 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
6480 for (align = 7; align >= 0; align--) {
6481 for (len = 36; len; len--) {
6483 memcpy(b, abc, len);
6484 for (off = 1; off <= len; off++) {
6485 memcpy(b+off, b, len);
6486 memcpy(b, b+off, len);
6487 if (memcmp(b, abc, len))
6495 if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
6496 if ./safemcpy 2>/dev/null; then
6500 echo "It can't, sorry."
6503 echo "(I can't compile the test program, so we'll assume not...)"
6507 $rm -f foo.* safemcpy core
6511 : see if select exists
6515 : see if semctl exists
6519 : see if semget exists
6523 : see if semop exists
6527 : see how much of the 'sem*(2)' library is present.
6530 case "$d_semctl$d_semget$d_semop" in
6531 *"$undef"*) h_sem=false;;
6533 : we could also check for sys/ipc.h ...
6534 if $h_sem && $test `./findhdr sys/sem.h`; then
6535 echo "You have the full sem*(2) library." >&4
6538 echo "You don't have the full sem*(2) library." >&4
6544 : see if setegid exists
6545 set setegid d_setegid
6548 : see if seteuid exists
6549 set seteuid d_seteuid
6552 : see if setlinebuf exists
6553 set setlinebuf d_setlinebuf
6556 : see if setlocale exists
6557 set setlocale d_setlocale
6560 : see if setpgid exists
6561 set setpgid d_setpgid
6564 : see if setpgrp2 exists
6565 set setpgrp2 d_setpgrp2
6568 : see if setpriority exists
6569 set setpriority d_setprior
6572 : see if setregid exists
6573 set setregid d_setregid
6575 set setresgid d_setresgid
6578 : see if setreuid exists
6579 set setreuid d_setreuid
6581 set setresuid d_setresuid
6584 : see if setrgid exists
6585 set setrgid d_setrgid
6588 : see if setruid exists
6589 set setruid d_setruid
6592 : see if setsid exists
6596 : see if sfio.h is available
6601 : see if sfio is available
6618 echo "$package can use sfio library, but this is experimental."
6619 rp="You seem to have sfio available, do you want to try using it?"
6625 echo "Ok, avoiding sfio this time"
6634 echo "Sorry cannot find sfio on this machine"
6642 $define) usesfio='true';;
6643 *) usesfio='false';;
6647 : see if shmctl exists
6651 : see if shmget exists
6655 : see if shmat exists
6658 : see what shmat returns
6661 $cat >shmat.c <<'END'
6662 #include <sys/shm.h>
6665 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
6670 echo "and it returns ($shmattype)." >&4
6671 : see if a prototype for shmat is available
6672 xxx=`./findhdr sys/shm.h`
6673 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
6674 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
6685 set d_shmatprototype
6688 : see if shmdt exists
6692 : see how much of the 'shm*(2)' library is present.
6695 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
6696 *"$undef"*) h_shm=false;;
6698 : we could also check for sys/ipc.h ...
6699 if $h_shm && $test `./findhdr sys/shm.h`; then
6700 echo "You have the full shm*(2) library." >&4
6703 echo "You don't have the full shm*(2) library." >&4
6709 : see if sigvector exists -- since sigvec will match the substring
6711 if set sigvector val -f d_sigvectr; eval $csym; $val; then
6712 echo 'sigvector() found--you must be running HP-UX.' >&4
6713 val="$define"; set d_sigvectr; eval $setvar
6714 val="$define"; set d_sigvec; eval $setvar
6716 : try the original name
6718 if set sigvec val -f d_sigvec; eval $csym; $val; then
6719 echo 'sigvec() found.' >&4
6720 val="$define"; set d_sigvec; eval $setvar
6722 echo 'sigvec() not found--race conditions with signals may occur.' >&4
6723 val="$undef"; set d_sigvec; eval $setvar
6727 : see if we have sigaction
6728 set sigaction d_sigaction
6731 : see if sigsetjmp exists
6733 case "$d_sigsetjmp" in
6741 if (sigsetjmp(env,1))
6748 if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then
6749 if ./set >/dev/null 2>&1; then
6750 echo "POSIX sigsetjmp found." >&4
6754 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
6760 echo "sigsetjmp not found." >&4
6764 *) val="$d_sigsetjmp"
6765 case "$d_sigsetjmp" in
6766 $define) echo "POSIX sigsetjmp found." >&4;;
6767 $undef) echo "sigsetjmp not found." >&4;;
6777 : see whether socket exists
6779 $echo $n "Hmm... $c" >&4
6780 if set socket val -f d_socket; eval $csym; $val; then
6781 echo "Looks like you have Berkeley networking support." >&4
6783 if set setsockopt val -f; eval $csym; $val; then
6786 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
6790 if $contains socklib libc.list >/dev/null 2>&1; then
6791 echo "Looks like you have Berkeley networking support." >&4
6793 : we will have to assume that it supports the 4.2 BSD interface
6796 echo "You don't have Berkeley networking in libc.a..." >&4
6797 if test -f /usr/lib/libnet.a; then
6798 ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \
6799 ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list
6800 if $contains socket libc.list >/dev/null 2>&1; then
6801 echo "...but the Wollongong group seems to have hacked it in." >&4
6803 sockethdr="-I/usr/netinclude"
6805 if $contains setsockopt libc.list >/dev/null 2>&1; then
6808 echo "...using the old 4.1c interface, rather than 4.2" >&4
6812 echo "or even in libnet.a, which is peculiar." >&4
6817 echo "or anywhere else I see." >&4
6824 : see if socketpair exists
6825 set socketpair d_sockpair
6828 : see if stat knows about block sizes
6830 xxx=`./findhdr sys/stat.h`
6831 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
6832 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
6833 echo "Your stat() knows about block sizes." >&4
6836 echo "Your stat() doesn't know about block sizes." >&4
6840 echo "Your stat() doesn't know about block sizes." >&4
6846 : see if _ptr and _cnt from stdio act std
6848 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
6849 echo "(Looks like you have stdio.h from Linux.)"
6850 case "$stdio_ptr" in
6851 '') stdio_ptr='((fp)->_IO_read_ptr)'
6854 *) ptr_lval=$d_stdio_ptr_lval;;
6856 case "$stdio_cnt" in
6857 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
6860 *) cnt_lval=$d_stdio_cnt_lval;;
6862 case "$stdio_base" in
6863 '') stdio_base='((fp)->_IO_read_base)';;
6865 case "$stdio_bufsiz" in
6866 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
6869 case "$stdio_ptr" in
6870 '') stdio_ptr='((fp)->_ptr)'
6873 *) ptr_lval=$d_stdio_ptr_lval;;
6875 case "$stdio_cnt" in
6876 '') stdio_cnt='((fp)->_cnt)'
6879 *) cnt_lval=$d_stdio_cnt_lval;;
6881 case "$stdio_base" in
6882 '') stdio_base='((fp)->_base)';;
6884 case "$stdio_bufsiz" in
6885 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
6888 : test whether _ptr and _cnt really work
6889 echo "Checking how std your stdio is..." >&4
6892 #define FILE_ptr(fp) $stdio_ptr
6893 #define FILE_cnt(fp) $stdio_cnt
6895 FILE *fp = fopen("try.c", "r");
6898 18 <= FILE_cnt(fp) &&
6899 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
6906 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
6908 echo "Your stdio acts pretty std."
6911 echo "Your stdio isn't very std."
6914 echo "Your stdio doesn't appear very std."
6920 : Can _ptr be used as an lvalue?
6921 case "$d_stdstdio$ptr_lval" in
6922 $define$define) val=$define ;;
6925 set d_stdio_ptr_lval
6928 : Can _cnt be used as an lvalue?
6929 case "$d_stdstdio$cnt_lval" in
6930 $define$define) val=$define ;;
6933 set d_stdio_cnt_lval
6936 : see if _base is also standard
6938 case "$d_stdstdio" in
6942 #define FILE_base(fp) $stdio_base
6943 #define FILE_bufsiz(fp) $stdio_bufsiz
6945 FILE *fp = fopen("try.c", "r");
6948 19 <= FILE_bufsiz(fp) &&
6949 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
6955 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
6957 echo "Even its _base field acts std."
6960 echo "But its _base field isn't std."
6963 echo "However, it seems to be lacking the _base field."
6971 : see if strcoll exists
6972 set strcoll d_strcoll
6975 : check for structure copying
6977 echo "Checking to see if your C compiler can copy structs..." >&4
6978 $cat >try.c <<'EOCP'
6988 if $cc -c try.c >/dev/null 2>&1 ; then
6993 echo "Nope, it can't."
6999 : see if strerror and/or sys_errlist[] exist
7001 if set strerror val -f d_strerror; eval $csym; $val; then
7002 echo 'strerror() found.' >&4
7003 d_strerror="$define"
7004 d_strerrm='strerror(e)'
7005 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7006 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
7007 d_syserrlst="$define"
7009 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
7010 d_syserrlst="$undef"
7012 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
7013 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
7014 echo 'strerror() found in string header.' >&4
7015 d_strerror="$define"
7016 d_strerrm='strerror(e)'
7017 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7018 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
7019 d_syserrlst="$define"
7021 echo "(You don't appear to have any sys_errlist[], how can this be?)"
7022 d_syserrlst="$undef"
7024 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7025 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
7027 d_syserrlst="$define"
7028 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
7030 echo 'strerror() and sys_errlist[] NOT found.' >&4
7032 d_syserrlst="$undef"
7033 d_strerrm='"unknown"'
7036 : see if strxfrm exists
7037 set strxfrm d_strxfrm
7040 : see if symlink exists
7041 set symlink d_symlink
7044 : see if syscall exists
7045 set syscall d_syscall
7048 : see if sysconf exists
7049 set sysconf d_sysconf
7052 : see if system exists
7056 : see if tcgetpgrp exists
7057 set tcgetpgrp d_tcgetpgrp
7060 : see if tcsetpgrp exists
7061 set tcsetpgrp d_tcsetpgrp
7064 : define an is-a-typedef? function
7065 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
7067 "") inclist="sys/types.h";;
7069 eval "varval=\$$var";
7073 for inc in $inclist; do
7074 echo "#include <$inc>" >>temp.c;
7076 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
7077 if $contains $type temp.E >/dev/null 2>&1; then
7083 *) eval "$var=\$varval";;
7086 : see if this is a sys/times.h system
7087 set sys/times.h i_systimes
7090 : see if times exists
7092 if set times val -f d_times; eval $csym; $val; then
7093 echo 'times() found.' >&4
7096 case "$i_systimes" in
7097 "$define") inc='sys/times.h';;
7099 set clock_t clocktype long stdio.h sys/types.h $inc
7103 rp="What type is returned by times() on this system?"
7107 echo 'times() NOT found, hope that will do.' >&4
7112 : see if truncate exists
7113 set truncate d_truncate
7116 : see if tzname[] exists
7118 if set tzname val -a d_tzname; eval $csym; $val; then
7120 echo 'tzname[] found.' >&4
7123 echo 'tzname[] NOT found.' >&4
7128 : see if umask exists
7132 : see how we will look up host name
7135 : dummy stub to allow use of elif
7136 elif set uname val -f d_uname; eval $csym; $val; then
7139 uname() was found, but you're running xenix, and older versions of xenix
7140 have a broken uname(). If you don't really know whether your xenix is old
7141 enough to have a broken system call, use the default answer.
7148 rp='Is your uname() broken?'
7151 n*) d_uname="$define"; call=uname;;
7154 echo 'uname() found.' >&4
7159 case "$d_gethname" in
7160 '') d_gethname="$undef";;
7163 '') d_uname="$undef";;
7165 case "$d_phostname" in
7166 '') d_phostname="$undef";;
7169 : backward compatibility for d_hvfork
7170 if test X$d_hvfork != X; then
7174 : see if there is a vfork
7179 : Ok, but do we want to use it. vfork is reportedly unreliable in
7180 : perl on Solaris 2.x, and probably elsewhere.
7188 rp="Some systems have problems with vfork(). Do you want to use it?"
7193 echo "Ok, we won't use vfork()."
7202 $define) usevfork='true';;
7203 *) usevfork='false';;
7206 : see if this is an sysdir system
7207 set sys/dir.h i_sysdir
7210 : see if this is an sysndir system
7211 set sys/ndir.h i_sysndir
7214 : see if closedir exists
7215 set closedir d_closedir
7218 case "$d_closedir" in
7221 echo "Checking whether closedir() returns a status..." >&4
7222 cat > closedir.c <<EOM
7223 #$i_dirent I_DIRENT /**/
7224 #$i_sysdir I_SYS_DIR /**/
7225 #$i_sysndir I_SYS_NDIR /**/
7227 #if defined(I_DIRENT)
7229 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
7230 #include <sys/dir.h>
7234 #include <sys/ndir.h>
7238 #include <ndir.h> /* may be wrong in the future */
7240 #include <sys/dir.h>
7245 int main() { return closedir(opendir(".")); }
7247 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
7248 if ./closedir > /dev/null 2>&1 ; then
7249 echo "Yes, it does."
7252 echo "No, it doesn't."
7256 echo "(I can't seem to compile the test program--assuming it doesn't)"
7267 : check for volatile keyword
7269 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
7270 $cat >try.c <<'EOCP'
7273 typedef struct _goo_struct goo_struct;
7274 goo_struct * volatile goo = ((goo_struct *)0);
7275 struct _goo_struct {
7280 typedef unsigned short foo_t;
7283 volatile foo_t blech;
7287 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
7289 echo "Yup, it does."
7292 echo "Nope, it doesn't."
7298 : see if there is a wait4
7302 : see if waitpid exists
7303 set waitpid d_waitpid
7306 : see if wcstombs exists
7307 set wcstombs d_wcstombs
7310 : see if wctomb exists
7314 : preserve RCS keywords in files with variable substitution, grrr
7319 Revision='$Revision'
7321 : check for alignment requirements
7323 case "$alignbytes" in
7324 '') echo "Checking alignment constraints..." >&4
7325 $cat >try.c <<'EOCP'
7332 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
7335 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
7339 echo"(I can't seem to compile the test program...)"
7342 *) dflt="$alignbytes"
7345 rp="Doubles must be aligned on a how-many-byte boundary?"
7350 : Define several unixisms. Hints files or command line options
7351 : can be used to override them.
7364 : Which makefile gets called first. This is used by make depend.
7365 case "$firstmakefile" in
7366 '') firstmakefile='makefile';;
7369 : check for ordering of bytes in a long
7370 case "$byteorder" in
7374 In the following, larger digits indicate more significance. A big-endian
7375 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
7376 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
7377 machines may have weird orders like 3412. A Cray will report 87654321. If
7378 the test program works the default is probably right.
7379 I'm now running the test program...
7381 $cat >try.c <<'EOCP'
7388 char c[sizeof(long)];
7391 if (sizeof(long) > 4)
7392 u.l = (0x08070605L << 32) | 0x04030201L;
7395 for (i = 0; i < sizeof(long); i++)
7396 printf("%c", u.c[i]+'0');
7402 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
7405 [1-4][1-4][1-4][1-4]|12345678|87654321)
7406 echo "(The test program ran ok.)"
7407 echo "byteorder=$dflt"
7410 ????|????????) echo "(The test program ran ok.)" ;;
7411 *) echo "(The test program didn't run right for some reason.)" ;;
7416 (I can't seem to compile the test program. Guessing big-endian...)
7419 case "$xxx_prompt" in
7421 rp="What is the order of bytes in a long?"
7432 : how do we catenate cpp tokens here?
7434 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
7435 $cat >cpp_stuff.c <<'EOCP'
7436 #define RCAT(a,b)a/**/b
7437 #define ACAT(a,b)a ## b
7441 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
7442 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
7443 echo "Oh! Smells like ANSI's been here."
7444 echo "We can catify or stringify, separately or together!"
7446 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
7447 echo "Ah, yes! The good old days!"
7448 echo "However, in the good old days we don't know how to stringify and"
7449 echo "catify at the same time."
7453 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
7454 to have to edit the values of CAT[2-5] in config.h...
7456 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
7460 : see if this is a db.h system
7466 : Check the return type needed for hash
7468 echo "Checking return type needed for hash for Berkeley DB ..." >&4
7474 #include <sys/types.h>
7476 u_int32_t hash_cb (ptr, size)
7484 info.hash = hash_cb;
7487 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7488 if $contains warning try.out >>/dev/null 2>&1 ; then
7491 db_hashtype='u_int32_t'
7494 echo "I can't seem to compile the test program." >&4
7498 echo "Your version of Berkeley DB uses $db_hashtype for hash."
7506 : Check the return type needed for prefix
7508 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
7514 #include <sys/types.h>
7516 size_t prefix_cb (key1, key2)
7524 info.prefix = prefix_cb;
7527 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7528 if $contains warning try.out >>/dev/null 2>&1 ; then
7531 db_prefixtype='size_t'
7534 echo "I can't seem to compile the test program." >&4
7538 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
7540 *) db_prefixtype='int'
7544 : check for void type
7546 echo "Checking to see how well your C compiler groks the void type..." >&4
7549 Support flag bits are:
7550 1: basic void declarations.
7551 2: arrays of pointers to functions returning void.
7552 4: operations between pointers to and addresses of void functions.
7553 8: generic void pointers.
7556 case "$voidflags" in
7558 $cat >try.c <<'EOCP'
7564 extern void moo(); /* function returning void */
7565 void (*goo)(); /* ptr to func returning void */
7567 void *hue; /* generic ptr */
7582 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
7583 voidflags=$defvoidused
7584 echo "It appears to support void to the level $package wants ($defvoidused)."
7585 if $contains warning .out >/dev/null 2>&1; then
7586 echo "However, you might get some warnings that look like this:"
7590 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
7591 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
7592 echo "It supports 1..."
7593 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
7594 echo "It also supports 2..."
7595 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
7597 echo "And it supports 4 but not 8 definitely."
7599 echo "It doesn't support 4..."
7600 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
7602 echo "But it supports 8."
7605 echo "Neither does it support 8."
7609 echo "It does not support 2..."
7610 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
7612 echo "But it supports 4 and 8."
7614 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
7616 echo "And it supports 4 but has not heard about 8."
7618 echo "However it supports 8 but not 4."
7623 echo "There is no support at all for void."
7628 : Only prompt user if support does not match the level we want
7629 case "$voidflags" in
7633 rp="Your void support flags add up to what?"
7640 : see what type file positions are declared as in the library
7641 set fpos_t fpostype long stdio.h sys/types.h
7645 rp="What is the type for file position used by fsetpos()?"
7649 : Store the full pathname to the sed program for use in the C program
7652 : see what type gids are declared as in the kernel
7653 set gid_t gidtype xxx stdio.h sys/types.h
7657 xxx=`./findhdr sys/user.h`
7658 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
7660 unsigned) dflt="$1 $2" ;;
7664 *) dflt="$gidtype";;
7667 rp="What is the type for group ids returned by getgid()?"
7671 : see if getgroups exists
7672 set getgroups d_getgrps
7675 : Find type of 2nd arg to getgroups
7677 case "$d_getgrps" in
7679 case "$groupstype" in
7680 '') dflt="$gidtype" ;;
7681 *) dflt="$groupstype" ;;
7684 What is the type of the second argument to getgroups()? Usually this
7685 is the same as group ids, $gidtype, but not always.
7688 rp='What type is the second argument to getgroups()?'
7692 *) groupstype="$gidtype";;
7695 : see what type lseek is declared as in the kernel
7696 set off_t lseektype long stdio.h sys/types.h
7700 rp="What type is lseek's offset on this system declared as?"
7704 : see what type is used for mode_t
7705 set mode_t modetype int stdio.h sys/types.h
7709 rp="What type is used for file modes?"
7713 : locate the preferred pager for this system
7727 '') dflt=/usr/ucb/more;;
7734 rp='What pager is used on your system?'
7738 : Cruising for prototypes
7740 echo "Checking out function prototypes..." >&4
7741 $cat >prototype.c <<'EOCP'
7742 main(int argc, char *argv[]) {
7745 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7746 echo "Your C compiler appears to support function prototypes."
7749 echo "Your C compiler doesn't seem to understand function prototypes."
7756 : check for size of random number generator
7760 echo "Checking to see how many bits your rand function produces..." >&4
7761 $cat >try.c <<'EOCP'
7766 register unsigned long tmp;
7767 register unsigned long max = 0L;
7769 for (i = 1000; i; i--) {
7770 tmp = (unsigned long)rand();
7771 if (tmp > max) max = tmp;
7773 for (i = 0; max; i++)
7778 if $cc try.c -o try >/dev/null 2>&1 ; then
7782 echo "(I can't seem to compile the test program...)"
7789 rp='How many bits does your rand() function produce?'
7794 : see if ar generates random libraries by itself
7796 echo "Checking how to generate random libraries on your machine..." >&4
7797 echo 'int bar1() { return bar2(); }' > bar1.c
7798 echo 'int bar2() { return 2; }' > bar2.c
7799 $cat > foo.c <<'EOP'
7800 main() { printf("%d\n", bar1()); exit(0); }
7802 $cc $ccflags -c bar1.c >/dev/null 2>&1
7803 $cc $ccflags -c bar2.c >/dev/null 2>&1
7804 $cc $ccflags -c foo.c >/dev/null 2>&1
7805 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
7806 if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7807 ./foobar >/dev/null 2>&1; then
7808 echo "ar appears to generate random libraries itself."
7811 elif ar ts bar.a >/dev/null 2>&1 &&
7812 $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7813 ./foobar >/dev/null 2>&1; then
7814 echo "a table of contents needs to be added with 'ar ts'."
7821 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
7822 $test -f $ranlib || ranlib=''
7825 if $test -n "$ranlib"; then
7826 echo "your system has '$ranlib'; we'll use that."
7829 echo "your system doesn't seem to support random libraries"
7830 echo "so we'll use lorder and tsort to order the libraries."
7837 : see if sys/select.h has to be included
7838 set sys/select.h i_sysselct
7841 : see if we should include time.h, sys/time.h, or both
7843 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7844 $echo $n "I'm now running the test program...$c"
7845 $cat >try.c <<'EOCP'
7846 #include <sys/types.h>
7851 #ifdef SYSTIMEKERNEL
7854 #include <sys/time.h>
7857 #include <sys/select.h>
7866 struct timezone tzp;
7868 if (foo.tm_sec == foo.tm_sec)
7871 if (bar.tv_sec == bar.tv_sec)
7878 for s_timezone in '-DS_TIMEZONE' ''; do
7880 for s_timeval in '-DS_TIMEVAL' ''; do
7881 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7882 for i_time in '' '-DI_TIME'; do
7883 for i_systime in '-DI_SYSTIME' ''; do
7887 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
7888 try.c -o try >/dev/null 2>&1 ; then
7889 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7893 $echo $n "Succeeded with $flags$c"
7905 *SYSTIMEKERNEL*) i_systimek="$define"
7906 timeincl=`./findhdr sys/time.h`
7907 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7908 *) i_systimek="$undef";;
7911 *I_TIME*) i_time="$define"
7912 timeincl=`./findhdr time.h`" $timeincl"
7913 echo "We'll include <time.h>." >&4;;
7914 *) i_time="$undef";;
7917 *I_SYSTIME*) i_systime="$define"
7918 timeincl=`./findhdr sys/time.h`" $timeincl"
7919 echo "We'll include <sys/time.h>." >&4;;
7920 *) i_systime="$undef";;
7924 : check for fd_set items
7927 Checking to see how well your C compiler handles fd_set and friends ...
7929 $cat >fd_set.c <<EOCP
7930 #$i_systime I_SYS_TIME
7931 #$i_sysselct I_SYS_SELECT
7932 #$d_socket HAS_SOCKET
7933 #include <sys/types.h>
7935 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7938 #include <sys/time.h>
7941 #include <sys/select.h>
7951 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7958 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7959 d_fds_bits="$define"
7961 echo "Well, your system knows about the normal fd_set typedef..." >&4
7963 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7964 d_fd_macros="$define"
7967 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7969 d_fd_macros="$undef"
7973 Hmm, your compiler has some difficulty with fd_set. Checking further...
7975 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7978 echo "Well, your system has some sort of fd_set available..." >&4
7980 echo "and you have the normal fd_set macros." >&4
7981 d_fd_macros="$define"
7984 but not the normal fd_set macros! Gross! More work for me...
7986 d_fd_macros="$undef"
7989 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7992 d_fd_macros="$undef"
7998 : check for type of arguments to select. This will only really
7999 : work if the system supports prototypes and provides one for
8003 : Make initial guess
8004 case "$selecttype" in
8007 $define) xxx='fd_set *' ;;
8011 *) xxx="$selecttype"
8016 'fd_set *') yyy='int *' ;;
8017 'int *') yyy='fd_set *' ;;
8022 Checking to see what type of arguments are expected by select().
8025 #$i_systime I_SYS_TIME
8026 #$i_sysselct I_SYS_SELECT
8027 #$d_socket HAS_SOCKET
8028 #include <sys/types.h>
8030 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8033 #include <sys/time.h>
8036 #include <sys/select.h>
8042 Select_fd_set_t readfds;
8043 Select_fd_set_t writefds;
8044 Select_fd_set_t exceptfds;
8045 struct timeval timeout;
8046 select(width, readfds, writefds, exceptfds, &timeout);
8050 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
8052 echo "Your system uses $xxx for the arguments to select." >&4
8053 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
8055 echo "Your system uses $yyy for the arguments to select." >&4
8057 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
8064 *) selecttype='int *'
8068 : Trace out the files included by signal.h, then look for SIGxxx names.
8069 : Remove SIGARRAYSIZE used by HPUX.
8070 : Remove SIGTYP void lines used by OS2.
8071 xxx=`echo '#include <signal.h>' |
8072 $cppstdin $cppminus $cppflags 2>/dev/null |
8073 $grep '^[ ]*#.*include' |
8074 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
8075 : Check this list of files to be sure we have parsed the cpp output ok.
8076 : This will also avoid potentially non-existent files, such
8079 for xx in $xxx /dev/null ; do
8080 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
8082 : If we have found no files, at least try signal.h
8084 '') xxxfiles=`./findhdr signal.h` ;;
8087 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
8088 print substr($2, 4, 20)
8090 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8091 print substr($3, 4, 20)
8093 : Append some common names just in case the awk scan failed.
8094 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
8095 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
8096 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
8097 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
8098 : generate a few handy files for later
8099 $cat > signal.c <<'EOP'
8100 #include <sys/types.h>
8104 /* Strange style to avoid deeply-nested #if/#else/#endif */
8107 # define NSIG (_NSIG)
8113 # define NSIG (SIGMAX+1)
8119 # define NSIG (SIG_MAX+1)
8125 # define NSIG (MAXSIG+1)
8131 # define NSIG (MAX_SIG+1)
8136 # ifdef SIGARRAYSIZE
8137 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
8143 # define NSIG (_sys_nsig) /* Solaris 2.5 */
8147 /* Default to some arbitrary number that's big enough to get most
8148 of the common signals.
8154 printf("NSIG %d\n", NSIG);
8157 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
8159 printf "#ifdef SIG"; printf $1; printf "\n"
8160 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
8161 printf $1; printf ");\n"
8168 $cat >signal.awk <<'EOP'
8170 $1 ~ /^NSIG$/ { nsig = $2 }
8171 ($1 !~ /^NSIG$/) && (NF == 2) {
8172 if ($2 > maxsig) { maxsig = $2 }
8174 dup_name[ndups] = $1
8185 if (nsig == 0) { nsig = maxsig + 1 }
8186 for (n = 1; n < nsig; n++) {
8188 printf("%s %d\n", sig_name[n], sig_num[n])
8191 printf("NUM%d %d\n", n, n)
8194 for (n = 0; n < ndups; n++) {
8195 printf("%s %d\n", dup_name[n], dup_num[n])
8199 $cat >signal_cmd <<EOS
8201 $test -s signal.lst && exit 0
8202 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
8203 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8205 echo "(I can't seem be able to compile the test program -- Guessing)"
8206 echo 'kill -l' >signal
8207 set X \`csh -f <signal\`
8211 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
8213 echo \$@ | $tr ' ' '\012' | \
8214 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
8216 $rm -f signal.c signal signal.o
8218 chmod a+x signal_cmd
8219 $eunicefix signal_cmd
8221 : generate list of signal names
8231 echo "Generating a list of signal names and numbers..." >&4
8233 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
8234 sig_name="ZERO $sig_name"
8235 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
8236 sig_num="0 $sig_num"
8239 echo "The following signals are available:"
8241 echo $sig_name | $awk \
8242 'BEGIN { linelen = 0 }
8244 for (i = 1; i <= NF; i++) {
8246 linelen = linelen + length(name)
8249 linelen = length(name)
8255 $rm -f signal signal.c signal.awk signal.lst signal_cmd
8257 : see what type is used for size_t
8258 set size_t sizetype 'unsigned int' stdio.h sys/types.h
8262 rp="What type is used for the length parameter for string functions?"
8266 : see what type is used for signed size_t
8267 set ssize_t ssizetype int stdio.h sys/types.h
8270 $cat > ssize.c <<EOM
8272 #include <sys/types.h>
8273 #define Size_t $sizetype
8274 #define SSize_t $dflt
8277 if (sizeof(Size_t) == sizeof(SSize_t))
8279 else if (sizeof(Size_t) == sizeof(int))
8287 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 &&
8288 ./ssize > /dev/null 2>&1 ; then
8290 echo "I'll be using $ssizetype for functions returning a byte count." >&4
8292 echo "(I can't compile and run the test program--please enlighten me!)"
8295 I need a type that is the same size as $sizetype, but is guaranteed to
8296 be signed. Common values are int and long.
8299 rp="What signed type is the same size as $sizetype?"
8303 $rm -f ssize ssize.[co]
8305 : see what type of char stdio uses.
8307 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
8308 echo "Your stdio uses unsigned chars." >&4
8309 stdchar="unsigned char"
8311 echo "Your stdio uses signed chars." >&4
8315 : see if time exists
8317 if set time val -f d_time; eval $csym; $val; then
8318 echo 'time() found.' >&4
8320 set time_t timetype long stdio.h sys/types.h
8324 rp="What type is returned by time() on this system?"
8328 echo 'time() not found, hope that will do.' >&4
8335 : see what type uids are declared as in the kernel
8336 set uid_t uidtype xxx stdio.h sys/types.h
8340 xxx=`./findhdr sys/user.h`
8341 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
8343 unsigned) dflt="$1 $2" ;;
8347 *) dflt="$uidtype";;
8350 rp="What is the type for user ids returned by getuid()?"
8354 : see if dbm.h is available
8355 : see if dbmclose exists
8356 set dbmclose d_dbmclose
8359 case "$d_dbmclose" in
8369 *) set rpcsvc/dbm.h i_rpcsvcdbm
8374 *) echo "We won't be including <dbm.h>"
8384 : see if this is a sys/file.h system
8389 : do we need to include sys/file.h ?
8395 echo "We'll be including <sys/file.h>." >&4
8398 echo "We won't be including <sys/file.h>." >&4
8408 : see if fcntl.h is there
8413 : see if we can include fcntl.h
8419 echo "We'll be including <fcntl.h>." >&4
8423 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
8425 echo "We won't be including <fcntl.h>." >&4
8437 : see if this is an grp system
8441 : see if locale.h is available
8442 set locale.h i_locale
8445 : see if this is a math.h system
8449 : see if memory.h is available.
8454 : See if it conflicts with string.h
8460 $cppstdin $cppflags $cppminus < $strings > mem.h
8461 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8463 echo "We won't be including <memory.h>."
8473 : see if ndbm.h is available
8478 : see if dbm_open exists
8479 set dbm_open d_dbm_open
8481 case "$d_dbm_open" in
8484 echo "We won't be including <ndbm.h>"
8493 : see if net/errno.h is available
8498 : Unfortunately, it causes problems on some systems. Arrgh.
8504 #include <net/errno.h>
8510 if $cc $ccflags -c try.c >/dev/null 2>&1; then
8511 echo "We'll be including <net/errno.h>." >&4
8513 echo "We won't be including <net/errno.h>." >&4
8522 : get C preprocessor symbols handy
8524 $echo $n "Hmm... $c"
8525 echo $al | $tr ' ' '\012' >Cppsym.know
8537 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
8539 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
8542 unknown="\$unknown \$sym"
8552 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
8554 exit 0; _ _ _ _\1\\ \1\\
8557 echo "exit 1; _ _ _" >>Cppsym\$\$
8558 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
8560 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
8566 $rm -f Cppsym\$\$ Cppsym2\$\$
8571 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
8573 : now check the C compiler for additional symbols
8579 for i in \`$cc -v -c tmp.c 2>&1\`
8582 -D*) echo "\$i" | $sed 's/^-D//';;
8583 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
8590 ./ccsym | $sort | $uniq >ccsym.raw
8591 $awk '/\=/ { print $0; next }
8592 { print $0"=1" }' ccsym.raw >ccsym.list
8593 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
8594 $comm -13 ccsym.true ccsym.list >ccsym.own
8595 $comm -12 ccsym.true ccsym.list >ccsym.com
8596 $comm -23 ccsym.true ccsym.list >ccsym.cpp
8599 if $test -z ccsym.raw; then
8600 echo "Your C compiler doesn't seem to define any symbol!" >&4
8602 echo "However, your C preprocessor defines the following ones:"
8605 if $test -s ccsym.com; then
8606 echo "Your C compiler and pre-processor define these symbols:"
8607 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
8610 $test "$silent" || sleep 1
8612 if $test -s ccsym.cpp; then
8613 $test "$also" && echo " "
8614 echo "Your C pre-processor ${also}defines the following $symbols:"
8615 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
8617 $test "$silent" || sleep 1
8619 if $test -s ccsym.own; then
8620 $test "$also" && echo " "
8621 echo "Your C compiler ${also}defines the following cpp variables:"
8622 $sed -e 's/\(.*\)=1/\1/' ccsym.own
8623 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
8624 $test "$silent" || sleep 1
8629 : see if this is a termio system
8633 if $test `./findhdr termios.h`; then
8634 set tcsetattr i_termios
8640 "$define") echo "You have POSIX termios.h... good!" >&4;;
8641 *) if ./Cppsym pyr; then
8642 case "`/bin/universe`" in
8643 ucb) if $test `./findhdr sgtty.h`; then
8645 echo "<sgtty.h> found." >&4
8647 echo "System is pyramid with BSD universe."
8648 echo "<sgtty.h> not found--you could have problems." >&4
8650 *) if $test `./findhdr termio.h`; then
8652 echo "<termio.h> found." >&4
8654 echo "System is pyramid with USG universe."
8655 echo "<termio.h> not found--you could have problems." >&4
8659 if $test `./findhdr termio.h`; then
8660 echo "<termio.h> found." >&4
8662 elif $test `./findhdr sgtty.h`; then
8663 echo "<sgtty.h> found." >&4
8666 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
8669 if $test `./findhdr sgtty.h`; then
8670 echo "<sgtty.h> found." >&4
8672 elif $test `./findhdr termio.h`; then
8673 echo "<termio.h> found." >&4
8676 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
8680 set i_termio; eval $setvar
8681 val=$val2; set i_sgtty; eval $setvar
8682 val=$val3; set i_termios; eval $setvar
8684 : see if stdarg is available
8686 if $test `./findhdr stdarg.h`; then
8687 echo "<stdarg.h> found." >&4
8690 echo "<stdarg.h> NOT found." >&4
8694 : see if varags is available
8696 if $test `./findhdr varargs.h`; then
8697 echo "<varargs.h> found." >&4
8699 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
8702 : set up the varargs testing programs
8703 $cat > varargs.c <<EOP
8708 #include <varargs.h>
8726 p = va_arg(ap, char *);
8731 $cat > varargs <<EOP
8733 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
8742 : now check which varargs header should be included
8747 if `./varargs I_STDARG`; then
8749 elif `./varargs I_VARARGS`; then
8754 if `./varargs I_VARARGS`; then
8761 echo "I could not find the definition for va_dcl... You have problems..." >&4
8762 val="$undef"; set i_stdarg; eval $setvar
8763 val="$undef"; set i_varargs; eval $setvar
8770 val="$define"; set i_stdarg; eval $setvar
8771 val="$undef"; set i_varargs; eval $setvar
8774 val="$undef"; set i_stdarg; eval $setvar
8775 val="$define"; set i_varargs; eval $setvar
8778 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
8782 : see if stddef is available
8783 set stddef.h i_stddef
8786 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
8787 set sys/filio.h i_sysfilio
8790 if $test `./findhdr sys/ioctl.h`; then
8792 echo '<sys/ioctl.h> found.' >&4
8795 if $test $i_sysfilio = "$define"; then
8796 echo '<sys/ioctl.h> NOT found.' >&4
8798 $test $i_sgtty = "$define" && xxx="sgtty.h"
8799 $test $i_termio = "$define" && xxx="termio.h"
8800 $test $i_termios = "$define" && xxx="termios.h"
8801 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
8807 : see if this is a sys/param system
8808 set sys/param.h i_sysparam
8811 : see if sys/stat.h is available
8812 set sys/stat.h i_sysstat
8815 : see if sys/types.h has to be included
8816 set sys/types.h i_systypes
8819 : see if this is a sys/un.h system
8820 set sys/un.h i_sysun
8823 : see if this is a unistd.h system
8824 set unistd.h i_unistd
8827 : see if this is an utime system
8831 : see if this is a values.h system
8832 set values.h i_values
8835 : see if this is a vfork system
8846 : see if gdbm.h is available
8851 : see if gdbm_open exists
8852 set gdbm_open d_gdbm_open
8854 case "$d_gdbm_open" in
8857 echo "We won't be including <gdbm.h>"
8867 echo "Looking for extensions..." >&4
8869 : If we are using the old config.sh, known_extensions may contain
8870 : old or inaccurate or duplicate values.
8872 : We do not use find because it might not be available.
8873 : We do not just use MANIFEST because the user may have dropped
8874 : some additional extensions into the source tree and expect them
8877 if $test -f $xxx/$xxx.xs; then
8878 known_extensions="$known_extensions $xxx"
8880 if $test -d $xxx; then
8883 if $test -f $yyy/$yyy.xs; then
8884 known_extensions="$known_extensions $xxx/$yyy"
8891 set X $known_extensions
8893 known_extensions="$*"
8896 : Now see which are supported on this system.
8898 for xxx in $known_extensions ; do
8900 DB_File) case "$i_db" in
8901 $define) avail_ext="$avail_ext $xxx" ;;
8904 GDBM_File) case "$i_gdbm" in
8905 $define) avail_ext="$avail_ext $xxx" ;;
8908 NDBM_File) case "$i_ndbm" in
8909 $define) avail_ext="$avail_ext $xxx" ;;
8912 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
8913 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
8916 POSIX) case "$useposix" in
8917 true|define|y) avail_ext="$avail_ext $xxx" ;;
8920 SAFE) case "$usesafe" in
8921 true|define|y) avail_ext="$avail_ext $xxx" ;;
8924 Socket) case "$d_socket" in
8925 $define) avail_ext="$avail_ext $xxx" ;;
8928 *) avail_ext="$avail_ext $xxx"
8940 A number of extensions are supplied with $package. You may choose to
8941 compile these extensions for dynamic loading (the default), compile
8942 them into the $package executable (static loading), or not include
8943 them at all. Answer "none" to include no extensions.
8946 case "$dynamic_ext" in
8947 '') dflt="$avail_ext" ;;
8948 *) dflt="$dynamic_ext" ;;
8953 rp="What extensions do you wish to load dynamically?"
8956 none) dynamic_ext=' ' ;;
8957 *) dynamic_ext="$ans" ;;
8960 case "$static_ext" in
8962 : Exclude those already listed in dynamic linking
8964 for xxx in $avail_ext; do
8965 case " $dynamic_ext " in
8967 *) dflt="$dflt $xxx" ;;
8974 *) dflt="$static_ext"
8981 rp="What extensions do you wish to load statically?"
8984 none) static_ext=' ' ;;
8985 *) static_ext="$ans" ;;
8990 A number of extensions are supplied with $package. Answer "none"
8991 to include no extensions.
8994 case "$static_ext" in
8995 '') dflt="$avail_ext" ;;
8996 *) dflt="$static_ext" ;;
9002 rp="What extensions do you wish to include?"
9005 none) static_ext=' ' ;;
9006 *) static_ext="$ans" ;;
9011 set X $dynamic_ext $static_ext
9015 : Remove build directory name from cppstdin so it can be used from
9016 : either the present location or the final installed location.
9018 : Get out of the UU directory to get correct path name.
9022 echo "Stripping down cppstdin path name"
9028 : end of configuration questions
9030 echo "End of configuration questions."
9033 : back to where it started
9034 if test -d ../UU; then
9038 : configuration may be patched via a 'config.over' file
9039 if $test -f config.over; then
9042 rp='I see a config.over file. Do you wish to load it?'
9045 n*) echo "OK, I'll ignore it.";;
9047 echo "Configuration override changes have been loaded."
9052 : in case they want portability, strip down executable paths
9053 case "$d_portable" in
9056 echo "Stripping down executable paths..." >&4
9057 for file in $loclist $trylist; do
9063 : create config.sh file
9065 echo "Creating config.sh..." >&4
9066 $spitshell <<EOT >config.sh
9069 # This file was produced by running the Configure script. It holds all the
9070 # definitions figured out by Configure. Should you modify one of these values,
9071 # do not forget to propagate your changes by running "Configure -der". You may
9072 # instead choose to run each of the .SH files by yourself, or "Configure -S".
9075 # Configuration time: $cf_time
9076 # Configured by: $cf_by
9077 # Target system: $myuname
9087 Revision='$Revision'
9091 alignbytes='$alignbytes'
9092 aphostname='$aphostname'
9095 archlibexp='$archlibexp'
9096 archname='$archname'
9097 archobjs='$archobjs'
9106 byteorder='$byteorder'
9108 castflags='$castflags'
9111 cccdlflags='$cccdlflags'
9112 ccdlflags='$ccdlflags'
9115 cf_email='$cf_email'
9120 clocktype='$clocktype'
9122 compress='$compress'
9123 contains='$contains'
9127 cpp_stuff='$cpp_stuff'
9128 cppflags='$cppflags'
9130 cppminus='$cppminus'
9132 cppstdin='$cppstdin'
9133 cryptlib='$cryptlib'
9135 d_Gconvert='$d_Gconvert'
9136 d_access='$d_access'
9138 d_archlib='$d_archlib'
9139 d_attribut='$d_attribut'
9143 d_bsdpgrp='$d_bsdpgrp'
9145 d_casti32='$d_casti32'
9146 d_castneg='$d_castneg'
9147 d_charvspr='$d_charvspr'
9149 d_chroot='$d_chroot'
9150 d_chsize='$d_chsize'
9151 d_closedir='$d_closedir'
9155 d_cuserid='$d_cuserid'
9156 d_dbl_dig='$d_dbl_dig'
9157 d_difftime='$d_difftime'
9158 d_dirnamlen='$d_dirnamlen'
9159 d_dlerror='$d_dlerror'
9160 d_dlopen='$d_dlopen'
9161 d_dlsymun='$d_dlsymun'
9162 d_dosuid='$d_dosuid'
9164 d_eofnblk='$d_eofnblk'
9165 d_eunice='$d_eunice'
9166 d_fchmod='$d_fchmod'
9167 d_fchown='$d_fchown'
9169 d_fd_macros='$d_fd_macros'
9170 d_fd_set='$d_fd_set'
9171 d_fds_bits='$d_fds_bits'
9172 d_fgetpos='$d_fgetpos'
9173 d_flexfnam='$d_flexfnam'
9176 d_fpathconf='$d_fpathconf'
9177 d_fsetpos='$d_fsetpos'
9178 d_getgrps='$d_getgrps'
9179 d_gethent='$d_gethent'
9180 d_gethname='$d_gethname'
9181 d_getlogin='$d_getlogin'
9182 d_getpgrp2='$d_getpgrp2'
9183 d_getpgrp='$d_getpgrp'
9184 d_getppid='$d_getppid'
9185 d_getprior='$d_getprior'
9188 d_isascii='$d_isascii'
9189 d_killpg='$d_killpg'
9191 d_locconv='$d_locconv'
9195 d_mbstowcs='$d_mbstowcs'
9196 d_mbtowc='$d_mbtowc'
9197 d_memcmp='$d_memcmp'
9198 d_memcpy='$d_memcpy'
9199 d_memmove='$d_memmove'
9200 d_memset='$d_memset'
9202 d_mkfifo='$d_mkfifo'
9203 d_mktime='$d_mktime'
9205 d_msgctl='$d_msgctl'
9206 d_msgget='$d_msgget'
9207 d_msgrcv='$d_msgrcv'
9208 d_msgsnd='$d_msgsnd'
9209 d_mymalloc='$d_mymalloc'
9211 d_oldarchlib='$d_oldarchlib'
9212 d_oldsock='$d_oldsock'
9214 d_pathconf='$d_pathconf'
9216 d_perlstdio='$d_perlstdio'
9217 d_phostname='$d_phostname'
9220 d_portable='$d_portable'
9222 d_pwchange='$d_pwchange'
9223 d_pwclass='$d_pwclass'
9224 d_pwcomment='$d_pwcomment'
9225 d_pwexpire='$d_pwexpire'
9226 d_pwquota='$d_pwquota'
9227 d_readdir='$d_readdir'
9228 d_readlink='$d_readlink'
9229 d_rename='$d_rename'
9230 d_rewinddir='$d_rewinddir'
9232 d_safebcpy='$d_safebcpy'
9233 d_safemcpy='$d_safemcpy'
9234 d_seekdir='$d_seekdir'
9235 d_select='$d_select'
9237 d_semctl='$d_semctl'
9238 d_semget='$d_semget'
9240 d_setegid='$d_setegid'
9241 d_seteuid='$d_seteuid'
9242 d_setlinebuf='$d_setlinebuf'
9243 d_setlocale='$d_setlocale'
9244 d_setpgid='$d_setpgid'
9245 d_setpgrp2='$d_setpgrp2'
9246 d_setpgrp='$d_setpgrp'
9247 d_setprior='$d_setprior'
9248 d_setregid='$d_setregid'
9249 d_setresgid='$d_setresgid'
9250 d_setresuid='$d_setresuid'
9251 d_setreuid='$d_setreuid'
9252 d_setrgid='$d_setrgid'
9253 d_setruid='$d_setruid'
9254 d_setsid='$d_setsid'
9258 d_shmatprototype='$d_shmatprototype'
9259 d_shmctl='$d_shmctl'
9261 d_shmget='$d_shmget'
9262 d_shrplib='$d_shrplib'
9263 d_sigaction='$d_sigaction'
9264 d_sigintrp='$d_sigintrp'
9265 d_sigsetjmp='$d_sigsetjmp'
9266 d_sigvec='$d_sigvec'
9267 d_sigvectr='$d_sigvectr'
9268 d_socket='$d_socket'
9269 d_sockpair='$d_sockpair'
9270 d_statblks='$d_statblks'
9271 d_stdio_cnt_lval='$d_stdio_cnt_lval'
9272 d_stdio_ptr_lval='$d_stdio_ptr_lval'
9273 d_stdiobase='$d_stdiobase'
9274 d_stdstdio='$d_stdstdio'
9275 d_strchr='$d_strchr'
9276 d_strcoll='$d_strcoll'
9277 d_strctcpy='$d_strctcpy'
9278 d_strerrm='$d_strerrm'
9279 d_strerror='$d_strerror'
9280 d_strxfrm='$d_strxfrm'
9281 d_suidsafe='$d_suidsafe'
9282 d_symlink='$d_symlink'
9283 d_syscall='$d_syscall'
9284 d_sysconf='$d_sysconf'
9285 d_sysernlst='$d_sysernlst'
9286 d_syserrlst='$d_syserrlst'
9287 d_system='$d_system'
9288 d_tcgetpgrp='$d_tcgetpgrp'
9289 d_tcsetpgrp='$d_tcsetpgrp'
9290 d_telldir='$d_telldir'
9293 d_truncate='$d_truncate'
9294 d_tzname='$d_tzname'
9298 d_void_closedir='$d_void_closedir'
9299 d_voidsig='$d_voidsig'
9300 d_voidtty='$d_voidtty'
9301 d_volatile='$d_volatile'
9302 d_vprintf='$d_vprintf'
9304 d_waitpid='$d_waitpid'
9305 d_wcstombs='$d_wcstombs'
9306 d_wctomb='$d_wctomb'
9309 db_hashtype='$db_hashtype'
9310 db_prefixtype='$db_prefixtype'
9311 defvoidused='$defvoidused'
9312 direntrytype='$direntrytype'
9315 dynamic_ext='$dynamic_ext'
9320 eunicefix='$eunicefix'
9323 extensions='$extensions'
9325 firstmakefile='$firstmakefile'
9327 fpostype='$fpostype'
9328 freetype='$freetype'
9329 full_csh='$full_csh'
9330 full_sed='$full_sed'
9332 gccversion='$gccversion'
9336 groupcat='$groupcat'
9337 groupstype='$groupstype'
9339 h_sysfile='$h_sysfile'
9343 i_bsdioctl='$i_bsdioctl'
9346 i_dirent='$i_dirent'
9353 i_limits='$i_limits'
9354 i_locale='$i_locale'
9355 i_malloc='$i_malloc'
9357 i_memory='$i_memory'
9359 i_neterrno='$i_neterrno'
9362 i_rpcsvcdbm='$i_rpcsvcdbm'
9365 i_stdarg='$i_stdarg'
9366 i_stddef='$i_stddef'
9367 i_stdlib='$i_stdlib'
9368 i_string='$i_string'
9369 i_sysdir='$i_sysdir'
9370 i_sysfile='$i_sysfile'
9371 i_sysfilio='$i_sysfilio'
9373 i_sysioctl='$i_sysioctl'
9374 i_sysndir='$i_sysndir'
9375 i_sysparam='$i_sysparam'
9376 i_sysselct='$i_sysselct'
9377 i_syssockio='$i_syssockio'
9378 i_sysstat='$i_sysstat'
9379 i_systime='$i_systime'
9380 i_systimek='$i_systimek'
9381 i_systimes='$i_systimes'
9382 i_systypes='$i_systypes'
9384 i_termio='$i_termio'
9385 i_termios='$i_termios'
9387 i_unistd='$i_unistd'
9389 i_values='$i_values'
9390 i_varargs='$i_varargs'
9391 i_varhdr='$i_varhdr'
9395 installarchlib='$installarchlib'
9396 installbin='$installbin'
9397 installman1dir='$installman1dir'
9398 installman3dir='$installman3dir'
9399 installprivlib='$installprivlib'
9400 installscript='$installscript'
9401 installsitearch='$installsitearch'
9402 installsitelib='$installsitelib'
9404 known_extensions='$known_extensions'
9408 lddlflags='$lddlflags'
9415 libswanted='$libswanted'
9421 locincpth='$locincpth'
9422 loclibpth='$loclibpth'
9426 lseektype='$lseektype'
9431 mallocobj='$mallocobj'
9432 mallocsrc='$mallocsrc'
9433 malloctype='$malloctype'
9435 man1direxp='$man1direxp'
9438 man3direxp='$man3direxp'
9442 mips_type='$mips_type'
9445 modetype='$modetype'
9448 myarchname='$myarchname'
9449 mydomain='$mydomain'
9450 myhostname='$myhostname'
9454 nm_so_opt='$nm_so_opt'
9456 o_nonblock='$o_nonblock'
9458 oldarchlib='$oldarchlib'
9459 oldarchlibexp='$oldarchlibexp'
9460 optimize='$optimize'
9461 orderlib='$orderlib'
9467 patchlevel='$patchlevel'
9468 path_sep='$path_sep'
9470 perladmin='$perladmin'
9471 perlpath='$perlpath'
9473 phostname='$phostname'
9478 prefixexp='$prefixexp'
9480 privlibexp='$privlibexp'
9481 prototype='$prototype'
9482 randbits='$randbits'
9484 rd_nodata='$rd_nodata'
9488 scriptdir='$scriptdir'
9489 scriptdirexp='$scriptdirexp'
9491 selecttype='$selecttype'
9492 sendmail='$sendmail'
9495 sharpbang='$sharpbang'
9496 shmattype='$shmattype'
9499 sig_name='$sig_name'
9501 signal_t='$signal_t'
9502 sitearch='$sitearch'
9503 sitearchexp='$sitearchexp'
9505 sitelibexp='$sitelibexp'
9506 sizetype='$sizetype'
9511 sockethdr='$sockethdr'
9512 socketlib='$socketlib'
9514 spackage='$spackage'
9515 spitshell='$spitshell'
9517 ssizetype='$ssizetype'
9518 startperl='$startperl'
9520 static_ext='$static_ext'
9522 stdio_base='$stdio_base'
9523 stdio_bufsiz='$stdio_bufsiz'
9524 stdio_cnt='$stdio_cnt'
9525 stdio_ptr='$stdio_ptr'
9528 subversion='$subversion'
9534 timeincl='$timeincl'
9535 timetype='$timetype'
9543 usemymalloc='$usemymalloc'
9545 useposix='$useposix'
9547 usevfork='$usevfork'
9551 voidflags='$voidflags'
9556 : add special variables
9557 $test -f patchlevel.h && \
9558 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
9559 echo "CONFIG=true" >>config.sh
9561 : propagate old symbols
9562 if $test -f UU/config.sh; then
9563 <UU/config.sh sort | uniq >UU/oldconfig.sh
9564 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
9565 sort | uniq -u >UU/oldsyms
9566 set X `cat UU/oldsyms`
9572 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
9574 echo "# Variables propagated from previous config.sh file." >>config.sh
9575 for sym in `cat UU/oldsyms`; do
9576 echo " Propagating $hint variable "'$'"$sym..."
9577 eval 'tmp="$'"${sym}"'"'
9579 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
9585 : Finish up by extracting the .SH files
9599 If you'd like to make any changes to the config.sh file before I begin
9600 to configure things, do it as a shell escape now (e.g. !vi config.sh).
9603 rp="Press return or use a shell escape to edit config.sh:"
9608 *) : in case they cannot read
9614 : if this fails, just run all the .SH files by hand
9621 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
9628 Now you need to generate make dependencies by running "make depend".
9629 You might prefer to run it in background: "make depend > makedepend.out &"
9630 It can take a while, so you might not want to run it right now.
9635 rp="Run make depend now?"
9639 make depend && echo "Now you must run a make."
9642 echo "You must run 'make depend' then 'make'."
9645 elif test -f [Mm]akefile; then
9647 echo "Now you must run a make."
9652 $rm -f kit*isdone ark*isdone