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 Wed Feb 21 14:26:18 EST 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
592 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
595 : We must find out about Eunice early
597 if test -f /etc/unixtovms; then
598 eunicefix=/etc/unixtovms
600 if test -f /etc/unixtovms.exe; then
601 eunicefix=/etc/unixtovms.exe
604 : list of known cpp symbols, sorted alphabetically
605 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
606 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
607 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
608 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
609 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
610 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
611 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
612 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
613 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
614 al="$al VMS Xenix286"
615 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
616 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
617 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
618 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
619 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
620 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
621 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
622 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
623 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
624 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
625 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
626 al="$al __SVR4_2__ __UMAXV__"
627 al="$al ____386BSD____ __alpha __alpha__ __amiga"
628 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
629 al="$al __host_mips__"
630 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
631 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
632 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
633 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
634 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
635 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
636 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
637 al="$al __mc88100 __mc88100__ __mips __mips__"
638 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
639 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
640 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
641 al="$al _host_mips _mips _unix"
642 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
643 al="$al apollo ardent att386 att3b"
644 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
645 al="$al cadmus clipper concurrent convex cray ctix"
646 al="$al dmert encore gcos gcx gimpel gould"
647 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
648 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
649 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
650 al="$al i186 i286 i386 i486 i8086"
651 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
652 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
653 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
654 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
655 al="$al mc88000 mc88100 merlin mert mips mvs n16"
656 al="$al ncl_el ncl_mr"
657 al="$al news1500 news1700 news1800 news1900 news3700"
658 al="$al news700 news800 news900 ns16000 ns32000"
659 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
660 al="$al parisc pc532 pdp11 plexus posix pyr"
661 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
662 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
663 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
664 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
665 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
666 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
671 : default library list
673 : set useposix=false in your hint file to disable the POSIX extension.
675 : set usesafe=false in your hint if you want to skip the Safe extension.
677 : Define several unixisms. These can be used in hint files.
679 : Extra object files, if any, needed on this platform.
681 : Possible local include directories to search.
682 : Set locincpth to "" in a hint file to defeat local include searches.
683 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
684 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
686 : no include file wanted by default
689 : change the next line if compiling for Xenix/286 on Xenix/386
690 xlibpth='/usr/lib/386 /lib/386'
692 : Possible local library directories to search.
693 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
694 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
696 : general looking path for locating libraries
697 glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib"
698 glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small"
699 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib"
701 : Private path used by Configure to find libraries. Its value
702 : is prepended to libpth. This variable takes care of special
703 : machines, like the mips. Usually, it should be empty.
706 : full support for void wanted by default
709 : List of libraries we want.
710 libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
711 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
712 libswanted="$libswanted ucb bsd BSD PW x"
713 : We probably want to search /usr/shlib before most other libraries.
714 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
715 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
716 glibpth="/usr/shlib $glibpth"
717 : Do not use vfork unless overridden by a hint file.
720 : script used to extract .SH files with variable substitutions
723 echo "Doing variable substitutions on .SH files..."
724 if test -f MANIFEST; then
725 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
726 : Pick up possible extension manifests.
727 for dir in ext/* ; do
728 if test -f $dir/MANIFEST; then
729 xxx=`awk '{print $1}' < $dir/MANIFEST |
730 sed -n "/\.SH$/ s@^@$dir/@p"`
731 shlist="$shlist $xxx"
736 echo "(Looking for .SH files under the current directory.)"
737 set x `find . -name "*.SH" -print`
741 0) set x *.SH; shift;;
743 if test ! -f $1; then
749 dir=`expr X$file : 'X\(.*\)/'`
750 file=`expr X$file : 'X.*/\(.*\)'`
751 (cd $dir && . ./$file)
758 if test -f config_h.SH; then
759 if test ! -f config.h; then
760 : oops, they left it out of MANIFEST, probably, so do it anyway.
766 : produce awk script to parse command line options
767 cat >options.awk <<'EOF'
769 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
771 len = length(optstr);
772 for (i = 1; i <= len; i++) {
773 c = substr(optstr, i, 1);
774 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
785 if (substr(str, 1, 1) != "-") {
786 printf("'%s'\n", str);
790 for (i = 2; i <= len; i++) {
791 c = substr(str, i, 1);
793 printf("-%s\n", substr(str, i));
799 printf("'%s'\n", substr(str, i + 1));
812 : process the command line options
813 set X `for arg in "$@"; do echo "X$arg"; done |
814 sed -e s/X// | awk -f options.awk`
819 : set up default values
832 while test $# -gt 0; do
834 -d) shift; fastread=yes;;
835 -e) shift; alldone=cont;;
839 if test -r "$1"; then
842 echo "$me: cannot read config file $1." >&2
847 -h) shift; error=true;;
848 -r) shift; reuseval=true;;
849 -s) shift; silent=true;;
850 -E) shift; alldone=exit;;
851 -K) shift; knowitall=true;;
852 -O) shift; override=true;;
853 -S) shift; extractsh=true;;
858 echo "$me: use '-U symbol=', not '-D symbol='." >&2
859 echo "$me: ignoring -D $1" >&2
862 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
863 *) echo "$1='define'" >> optdef.sh;;
870 *=) echo "$1" >> optdef.sh;;
872 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
873 echo "$me: ignoring -U $1" >&2
875 *) echo "$1='undef'" >> optdef.sh;;
879 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
882 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
890 Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
891 [-U symbol] [-U symbol=]
892 -d : use defaults for all answers.
893 -e : go on without questioning past the production of config.sh.
894 -f : specify an alternate default configuration file.
895 -h : print this help message and exit (with an error status).
896 -r : reuse C symbols value if possible (skips costly nm extraction).
897 -s : silent mode, only echoes questions and essential information.
898 -D : define symbol to have some value:
899 -D symbol symbol gets the value 'define'
900 -D symbol=value symbol gets the value 'value'
901 -E : stop at the end of questions, after having produced config.sh.
902 -K : do not use unless you know what you are doing.
903 -O : let -D and -U override definitions from loaded configuration file.
904 -S : perform variable substitutions on all .SH files (can mix with -f)
905 -U : undefine symbol:
906 -U symbol symbol gets the value 'undef'
907 -U symbol= symbol gets completely empty
908 -V : print version number and exit (with a zero status).
916 true) exec 1>/dev/null;;
919 : run the defines and the undefines, if any, but leave the file out there...
926 '') config_sh='config.sh'; config='./config.sh';;
927 /*) config="$config_sh";;
928 *) config="./$config_sh";;
931 echo "Fetching answers from $config_sh..."
934 test "$override" && . ./optdef.sh
945 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
946 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
947 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
948 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
949 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
952 : Eunice requires " " instead of "", can you believe it
955 echo "Beginning of configuration questions for $package."
957 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
959 : Some greps do not return status, grrr.
960 echo "grimblepritz" >grimble
961 if grep blurfldyick grimble >/dev/null 2>&1 ; then
963 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
969 : the following should work in any shell
973 echo "AGH! Grep doesn't return a status. Attempting remedial action."
974 cat >contains <<'EOSS'
975 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
980 : first determine how to suppress newline on echo command
982 echo "Checking echo to see how to suppress newlines..."
983 (echo "hi there\c" ; echo " ") >.echotmp
984 if $contains c .echotmp >/dev/null 2>&1 ; then
995 echo $n "The star should be here-->$c"
999 : Now test for existence of everything in MANIFEST
1001 if test -f ../MANIFEST; then
1002 echo "First let's make sure your kit is complete. Checking..." >&4
1003 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1005 for filelist in x??; do
1006 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1008 if test -s missing; then
1012 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1014 You have the option of continuing the configuration process, despite the
1015 distinct possibility that your kit is damaged, by typing 'y'es. If you
1016 do, don't blame me if something goes wrong. I advise you to type 'n'o
1017 and contact the author (doughera@lafcol.lafayette.edu).
1020 echo $n "Continue? [n] $c" >&4
1024 echo "Continuing..." >&4
1028 echo "ABORTING..." >&4
1033 echo "Looks good..." >&4
1036 echo "There is no MANIFEST file. I hope your kit is complete !"
1040 : compute the number of columns on the terminal for proper question formatting
1045 : set up the echo used in my read
1046 myecho="case \"\$xxxm\" in
1047 '') echo $n \"\$rp $c\" >&4;;
1049 '') echo $n \"[\$xxxm] $c\";;
1051 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1053 echo $n \"[\$xxxm] $c\" >&4
1055 echo $n \"\$rp [\$xxxm] $c\" >&4
1061 : now set up to do reads with possible shell escape and default assignment
1066 case "\$fastread" in
1067 yes) case "\$dflt" in
1070 case "\$silent-\$rp" in
1075 *) case "\$silent" in
1076 true) case "\$rp" in
1081 while expr "X\$ans" : "X!" >/dev/null; do
1085 aok=''; eval "ans=\"\$answ\"" && aok=y
1090 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1095 echo "(OK, I'll run with -d after this question.)" >&4
1098 echo "*** Sorry, \$1 not supported yet." >&4
1110 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1120 echo "*** Substitution done -- please confirm."
1122 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1127 echo "*** Error -- try again."
1134 case "\$ans\$xxxm\$nostick" in
1146 : create .config dir to save info across Configure sessions
1147 test -d ../.config || mkdir ../.config
1148 cat >../.config/README <<EOF
1149 This directory created by Configure to save information that should
1150 persist across sessions.
1152 You may safely delete it if you wish.
1155 : general instructions
1158 user=`( (logname) 2>/dev/null || whoami) 2>&1`
1159 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1162 rp='Would you like to see the instructions?'
1173 This installation shell script will examine your system and ask you questions
1174 to determine how the perl5 package should be installed. If you get
1175 stuck on a question, you may use a ! shell escape to start a subshell or
1176 execute a command. Many of the questions will have default answers in square
1177 brackets; typing carriage return will give you the default.
1179 On some of the questions which ask for file or directory names you are allowed
1180 to use the ~name construct to specify the login directory belonging to "name",
1181 even if you don't have a shell which knows about that. Questions where this is
1182 allowed will be marked "(~name ok)".
1186 dflt='Type carriage return to continue'
1190 The prompter used in this script allows you to use shell variables and
1191 backticks in your answers. You may use $1, $2, etc... to refer to the words
1192 in the default answer, as if the default line was a set of arguments given to a
1193 script shell. This means you may also use $* to repeat the whole default line,
1194 so you do not have to re-type everything to add something to the default.
1196 Everytime there is a substitution, you will have to confirm. If there is an
1197 error (e.g. an unmatched backtick), the default answer will remain unchanged
1198 and you will be prompted again.
1200 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1201 the questions and use the computed defaults (or the previous answers if there
1202 was already a config.sh file). Type 'Configure -h' for a list of options.
1203 You may also start interactively and then answer '& -d' at any prompt to turn
1204 on the non-interactive behaviour for the remaining of the execution.
1210 Much effort has been expended to ensure that this shell script will run on any
1211 Unix system. If despite that it blows up on yours, your best bet is to edit
1212 Configure and run it again. If you can't run Configure for some reason,
1213 you'll have to generate a config.sh file by hand. Whatever problems you
1214 have, let me (doughera@lafcol.lafayette.edu) know how I blew it.
1216 This installation script affects things in two ways:
1218 1) it may do direct variable substitutions on some of the files included
1220 2) it builds a config.h file for inclusion in C programs. You may edit
1221 any of these files as the need arises after running this script.
1223 If you make a mistake on a question, there is no easy way to back up to it
1224 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1225 files. Configure will offer to let you do this before it runs the SH files.
1228 dflt='Type carriage return to continue'
1230 case "$firsttime" in
1231 true) echo $user >>../.config/instruct;;
1235 : see if sh knows # comments
1237 echo "Checking your sh to see if it knows about # comments..." >&4
1238 if `sh -c '#' >/dev/null 2>&1`; then
1239 echo "Your sh handles # comments correctly."
1243 echo "Okay, let's see if #! works on this system..."
1245 test -f $xcat || xcat=/usr/bin/cat
1250 if test -s today; then
1254 echo "#! $xcat" > try
1258 if test -s today; then
1262 echo "It's just a comment."
1267 echo "Your sh doesn't grok # comments--I will strip them later on."
1270 echo "exec grep -v '^[ ]*#'" >spitshell
1272 $eunicefix spitshell
1273 spitshell=`pwd`/spitshell
1275 echo "I presume that if # doesn't work, #! won't work either!"
1280 : figure out how to guarantee sh startup
1282 echo "Checking out how to guarantee sh startup..." >&4
1284 *bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
1285 *) startsh=$sharpbang'/bin/sh';;
1287 echo "Let's see if '$startsh' works..."
1297 echo "Yup, it does."
1299 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
1303 : find out where common programs are
1305 echo "Locating common programs..." >&4
1318 if test -d \$dir/\$thing; then
1324 for thisthing in \$dir/\$thing; do
1325 : just loop through to pick last item
1327 if test -f \$thisthing; then
1330 elif test -f \$dir/\$thing.exe; then
1331 : on Eunice apparently
1379 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1380 pth="$pth /lib /usr/lib"
1381 for file in $loclist; do
1382 xxx=`./loc $file $file $pth`
1387 echo $file is in $xxx.
1390 echo $file is in $xxx.
1393 echo "I don't know where '$file' is, and my life depends on it." >&4
1394 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1400 echo "Don't worry if any of the following aren't found..."
1402 for file in $trylist; do
1403 xxx=`./loc $file $file $pth`
1408 echo $file is in $xxx.
1411 echo $file is in $xxx.
1414 echo "I don't see $file out there, $say."
1421 echo "Substituting grep for egrep."
1427 echo "Hopefully test is built into your sh."
1430 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1431 echo "Using the test built into your sh."
1439 echo "Hopefully echo is built into your sh."
1444 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1445 $echo $n "hi there$c" >foo1
1446 echo $n "hi there$c" >foo2
1447 if cmp foo1 foo2 >/dev/null 2>&1; then
1448 echo "They are compatible. In fact, they may be identical."
1455 They are not compatible! You are probably running ksh on a non-USG system.
1456 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1457 have echo built in and we may have to run some Bourne shell scripts. That
1458 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1461 $echo $n "The star should be here-->$c"
1468 : determine whether symbolic links are supported
1471 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1472 echo "Symbolic links are supported." >&4
1475 echo "Symbolic links are NOT supported." >&4
1480 : see whether [:lower:] and [:upper:] are supported character classes
1484 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1486 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1491 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1494 : set up the translation script tr, must be called with ./tr of course
1498 '[A-Z][a-z]') exec $tr '$up' '$low';;
1499 '[a-z][A-Z]') exec $tr '$low' '$up';;
1506 : Try to determine whether config.sh was made on this system
1507 case "$config_sh" in
1509 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1510 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1511 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1512 newmyuname="$myuname"
1514 case "$knowitall" in
1516 if test -f ../config.sh; then
1517 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1518 eval "`grep myuname= ../config.sh`"
1520 if test "X$myuname" = "X$newmyuname"; then
1528 : Get old answers from old config file if Configure was run on the
1529 : same system, otherwise use the hints.
1532 if test -f config.sh; then
1534 rp="I see a config.sh file. Shall I use it to set the defaults?"
1537 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1538 *) echo "Fetching default answers from your old config.sh file..." >&4
1549 if test ! -f config.sh; then
1552 First time through, eh? I have some defaults handy for the following systems:
1555 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1557 : Half the following guesses are probably wrong... If you have better
1558 : tests or hints, please send them to doughera@lafcol.lafayette.edu
1559 : The metaconfig authors would also appreciate a copy...
1560 $test -f /irix && osname=irix
1561 $test -f /xenix && osname=sco_xenix
1562 $test -f /dynix && osname=dynix
1563 $test -f /dnix && osname=dnix
1564 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1565 $test -f /bin/mips && /bin/mips && osname=mips
1566 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1567 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1568 $test -d /usr/apollo/bin && osname=apollo
1569 $test -f /etc/saf/_sactab && osname=svr4
1570 $test -d /usr/include/minix && osname=minix
1571 if $test -d /MachTen; then
1573 if $test -x /sbin/version; then
1574 osvers=`/sbin/version | $awk '{print $2}' |
1575 $sed -e 's/[A-Za-z]$//'`
1576 elif $test -x /usr/etc/version; then
1577 osvers=`/usr/etc/version | $awk '{print $2}' |
1578 $sed -e 's/[A-Za-z]$//'`
1583 if $test -f $uname; then
1591 umips) osname=umips ;;
1594 [23]100) osname=mips ;;
1595 next*) osname=next ;;
1596 news*) osname=news ;;
1598 if $test -f /etc/kconfig; then
1600 if test "$lns" = "ln -s"; then
1602 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1604 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1613 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1615 'not found') osvers="$4"."$3" ;;
1616 '<3240'|'<>3240') osvers=3.2.0 ;;
1617 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1618 '=3250'|'>3250') osvers=3.2.5 ;;
1625 domainos) osname=apollo
1631 freebsd) osname=freebsd
1633 genix) osname=genix ;;
1638 *.10.*) osvers=10 ;;
1655 netbsd*) osname=netbsd
1658 bsd386) osname=bsd386
1661 next*) osname=next ;;
1662 solaris) osname=solaris
1664 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1671 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1675 titanos) osname=titanos
1684 ultrix) osname=ultrix
1690 osvers=`echo "$3" | sed 's/^[vt]//'`
1692 hp*) osname=hp_osf1 ;;
1693 mips) osname=mips_osf1 ;;
1699 $2) case "$osname" in
1703 : svr4.x or possibly later
1713 if test -f /stand/boot ; then
1714 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1715 if test -n "$INITPROG" -a -f "$INITPROG"; then
1716 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1717 if test -n "$isesix"; then
1725 *) if test -f /etc/systemid; then
1727 set `echo $3 | $sed 's/\./ /g'` $4
1728 if $test -f sco_$1_$2_$3.sh; then
1730 elif $test -f sco_$1_$2.sh; then
1732 elif $test -f sco_$1.sh; then
1737 '') : Still unknown. Probably a generic Sys V.
1746 *) case "$osname" in
1747 '') : Still unknown. Probably a generic BSD.
1755 if test -f /vmunix -a -f news_os.sh; then
1756 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1757 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1760 $rm -f ../UU/kernel.what
1761 elif test -d c:/.; then
1768 : Now look for a hint file osname_osvers, unless one has been
1769 : specified already.
1772 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1773 : Also try without trailing minor version numbers.
1774 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1775 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1776 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1777 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1780 *) case "$osvers" in
1783 *) if $test -f $file.sh ; then
1785 elif $test -f $xfile.sh ; then
1787 elif $test -f $xxfile.sh ; then
1789 elif $test -f $xxxfile.sh ; then
1791 elif $test -f $xxxxfile.sh ; then
1793 elif $test -f "${osname}.sh" ; then
1804 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1810 You may give one or more space-separated answers, or "none" if appropriate.
1811 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1814 rp="Which of these apply, if any?"
1817 for file in $tans; do
1818 if $test -f $file.sh; then
1820 $cat $file.sh >> ../UU/config.sh
1821 elif $test X$tans = X -o X$tans = Xnone ; then
1824 : Give one chance to correct a possible typo.
1825 echo "$file.sh does not exist"
1827 rp="hint to use instead?"
1829 for file in $ans; do
1830 if $test -f "$file.sh"; then
1832 $cat $file.sh >> ../UU/config.sh
1833 elif $test X$ans = X -o X$ans = Xnone ; then
1836 echo "$file.sh does not exist -- ignored."
1843 : Remember our hint file for later.
1844 if $test -f "$file.sh" ; then
1856 echo "Fetching default answers from $config_sh..." >&4
1860 cp $config_sh config.sh 2>/dev/null
1870 test "$override" && . ./optdef.sh
1871 myuname="$newmyuname"
1873 : Restore computed paths
1874 for file in $loclist $trylist; do
1875 eval $file="\$_$file"
1880 Configure uses the operating system name and version to set some defaults.
1881 The default value is probably right if the name rings a bell. Otherwise,
1882 since spelling matters for me, either accept the default or answer "none"
1889 ''|' '|none) dflt=none ;;
1890 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1893 *) dflt="$osname" ;;
1895 rp="Operating system name?"
1899 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1901 : who configured the system
1902 cf_time=`$date 2>&1`
1903 (logname > .temp) >/dev/null 2>&1
1904 $test -s .temp || (whoami > .temp) >/dev/null 2>&1
1905 $test -s .temp || echo unknown > .temp
1909 : determine the architecture name
1911 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
1912 tarch=`arch`"-$osname"
1913 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
1914 if uname -m > tmparch 2>&1 ; then
1915 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
1923 case "$myarchname" in
1926 echo "(Your architecture name used to be $myarchname.)"
1932 *) dflt="$archname";;
1934 rp='What is your architecture name'
1941 if test -d /afs; then
1942 echo "AFS may be running... I'll be extra cautious then..." >&4
1945 echo "AFS does not seem to be running..." >&4
1949 : decide how portable to be. Allow command line overrides.
1950 case "$d_portable" in
1952 *) d_portable="$define" ;;
1955 : set up shell script to do ~ expansion
1961 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
1964 if $test -f /bin/csh; then
1965 /bin/csh -f -c "glob \$1"
1970 name=\`$expr x\$1 : '..\([^/]*\)'\`
1971 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
1972 if $test ! -d "\$dir"; then
1974 echo "\$me: can't locate home directory for: \$name" >&2
1979 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
1995 : now set up to get a file name
1996 cat <<'EOSC' >getfile
2009 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2010 fn=`echo $fn | sed 's/(.*)//'`
2016 loc_file=`expr $fn : '.*:\(.*\)'`
2017 fn=`expr $fn : '\(.*\):.*'`
2025 */*) fullpath=true;;
2034 *e*) exp_file=true;;
2037 *p*) nopath_ok=true;;
2042 *d*) type='Directory';;
2043 *l*) type='Locate';;
2048 Locate) what='File';;
2053 case "$d_portable" in
2061 while test "$type"; do
2066 true) rp="$rp (~name ok)";;
2069 if test -f UU/getfile.ok && \
2070 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2089 value=`UU/filexp $ans`
2092 if test "$ans" != "$value"; then
2093 echo "(That expands to $value on this system.)"
2107 /*) value="$ansexp" ;;
2112 echo "I shall only accept a full path name, as in /bin/ls." >&4
2113 echo "Use a ! shell escape if you wish to check pathnames." >&4
2116 echo "Please give a full path name, starting with slash." >&4
2119 echo "Note that using ~name is ok provided it expands well." >&4
2132 if test -f "$ansexp"; then
2134 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2136 echo "($value is not a plain file, but that's ok.)"
2141 if test -d "$ansexp"; then
2146 if test -d "$ansexp"; then
2147 echo "(Looking for $loc_file in directory $value.)"
2148 value="$value/$loc_file"
2149 ansexp="$ansexp/$loc_file"
2151 if test -f "$ansexp"; then
2154 case "$nopath_ok" in
2155 true) case "$value" in
2157 *) echo "Assuming $value will be in people's path."
2173 if test "$fastread" = yes; then
2178 rp="$what $value doesn't exist. Use that name anyway?"
2199 : determine root of directory hierarchy where package will be installed.
2202 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2210 By default, $package will be installed in $dflt/bin, manual
2211 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2212 all installation directories. Typically set to /usr/local, but you
2213 may choose /usr if you wish to install $package among your system
2214 binaries. If you wish to have binaries under /bin but manual pages
2215 under /usr/local/man, that's ok: you will be prompted separately
2216 for each of the installation directories, the prefix being only used
2217 to set the defaults.
2221 rp='Installation prefix to use?'
2229 *) oldprefix="$prefix";;
2236 : set the prefixit variable, to compute a suitable default value
2237 prefixit='case "$3" in
2239 case "$oldprefix" in
2240 "") eval "$1=\"\$$2\"";;
2247 ""|" ") eval "$1=\"\$$2\"";;
2253 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2255 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2256 /*-$oldprefix/*|\~*-$oldprefix/*)
2257 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2258 *) eval "$1=\"\$$2\"";;
2262 : determine where private library files go
2263 : Usual default is /usr/local/lib/perl5. Also allow things like
2264 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2266 *perl*) set dflt privlib lib ;;
2267 *) set dflt privlib lib/$package ;;
2272 There are some auxiliary files for $package that need to be put into a
2273 private library directory that is accessible by everyone.
2277 rp='Pathname where the private library files will reside?'
2279 if $test "X$privlibexp" != "X$ansexp"; then
2283 privlibexp="$ansexp"
2287 Since you are running AFS, I need to distinguish the directory in which
2288 private files reside from the directory in which they are installed (and from
2289 which they are presumably copied to the former directory by occult means).
2292 case "$installprivlib" in
2293 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2294 *) dflt="$installprivlib";;
2297 rp='Where will private files be installed?'
2299 installprivlib="$ans"
2301 installprivlib="$privlibexp"
2304 : set the base revision
2307 : get the patchlevel
2309 echo "Getting the current patchlevel..." >&4
2310 if $test -r ../patchlevel.h;then
2311 patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
2312 subversion=`awk '/SUBVERSION/ {print $3}' < ../patchlevel.h`
2317 echo "(You have $package $baserev PL$patchlevel sub$subversion.)"
2319 : set the prefixup variable, to restore leading tilda escape
2320 prefixup='case "$prefixexp" in
2322 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2325 : determine where public architecture dependent libraries go
2332 dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2336 *) version=`LC_ALL=C;export LC_ALL;\
2337 echo $baserev $patchlevel $subversion | \
2338 $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
2339 dflt="$privlib/$archname/$version"
2343 *) dflt="$archlib";;
2347 $spackage contains architecture-dependent library files. If you are
2348 sharing libraries in a heterogeneous environment, you might store
2349 these files in a separate location. Otherwise, you can just include
2350 them with the rest of the public library files.
2354 rp='Where do you want to put the public architecture-dependent libraries?'
2357 archlibexp="$ansexp"
2362 Since you are running AFS, I need to distinguish the directory in which
2363 private files reside from the directory in which they are installed (and from
2364 which they are presumably copied to the former directory by occult means).
2367 case "$installarchlib" in
2368 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2369 *) dflt="$installarchlib";;
2372 rp='Where will architecture-dependent library files be installed?'
2374 installarchlib="$ans"
2376 installarchlib="$archlibexp"
2378 if $test X"$archlib" = X"$privlib"; then
2384 : set up the script used to warn in case of inconsistency
2388 echo "*** WHOA THERE!!! ***" >&4
2389 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2390 rp=" Keep the $hint value?"
2393 y) td=$was; tu=$was;;
2397 : function used to set $1 to $val
2398 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2400 $define$undef) . ./whoa; eval "$var=\$td";;
2401 $undef$define) . ./whoa; eval "$var=\$tu";;
2402 *) eval "$var=$val";;
2405 : make some quick guesses about what we are up against
2407 $echo $n "Hmm... $c"
2416 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2417 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2419 echo "Looks kind of like an OSF/1 system, but we'll see..."
2421 elif test `echo abc | tr a-z A-Z` = Abc ; then
2422 xxx=`./loc addbib blurfl $pth`
2423 if $test -f $xxx; then
2424 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2428 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2429 echo "Looks kind of like an extended USG system, but we'll see..."
2431 echo "Looks kind of like a USG system, but we'll see..."
2435 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2436 echo "Looks kind of like a BSD system, but we'll see..."
2440 echo "Looks kind of like a Version 7 system, but we'll see..."
2443 case "$eunicefix" in
2446 There is, however, a strange, musty smell in the air that reminds me of
2447 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2451 : it so happens the Eunice I know will not run shell scripts in Unix format
2455 echo "Congratulations. You aren't running Eunice."
2459 if test -f /xenix; then
2460 echo "Actually, this looks more like a XENIX system..."
2465 echo "It's not Xenix..."
2470 if test -f /venix; then
2471 echo "Actually, this looks more like a VENIX system..."
2478 echo "Nor is it Venix..."
2481 chmod +x bsd usg v7 osf1 eunice xenix venix
2482 $eunicefix bsd usg v7 osf1 eunice xenix venix
2485 : see if setuid scripts can be secure
2488 Some kernels have a bug that prevents setuid #! scripts from being
2489 secure. Some sites have disabled setuid #! scripts because of this.
2491 First let's decide if your kernel supports secure setuid #! scripts.
2492 (If setuid #! scripts would be secure but have been disabled anyway,
2493 don't say that they are secure if asked.)
2498 if $test -d /dev/fd; then
2499 echo "#!$ls" >reflect
2500 chmod +x,u+s reflect
2501 ./reflect >flect 2>&1
2502 if $contains "/dev/fd" flect >/dev/null; then
2503 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2507 If you are not sure if they are secure, I can check but I'll need a
2508 username and password different from the one you are using right now.
2509 If you don't have such a username or don't want me to test, simply
2513 rp='Other username to test security of setuid scripts with?'
2518 case "$d_suidsafe" in
2519 '') echo "I'll assume setuid scripts are *not* secure." >&4
2522 echo "Well, the $hint value is *not* secure." >&4
2524 *) echo "Well, the $hint value *is* secure." >&4
2529 $rm -f reflect flect
2530 echo "#!$ls" >reflect
2531 chmod +x,u+s reflect
2534 echo '"su" will (probably) prompt you for '"$ans's password."
2535 su $ans -c './reflect >flect'
2536 if $contains "/dev/fd" flect >/dev/null; then
2537 echo "Okay, it looks like setuid scripts are secure." >&4
2540 echo "I don't think setuid scripts are secure." >&4
2545 rp='Does your kernel have *secure* setuid scripts?'
2548 [yY]*) val="$define";;
2553 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2559 $rm -f reflect flect
2561 : now see if they want to do setuid emulation
2564 case "$d_suidsafe" in
2567 echo "No need to emulate SUID scripts since they are secure here." >& 4
2571 Some systems have disabled setuid scripts, especially systems where
2572 setuid scripts cannot be secure. On systems where setuid scripts have
2573 been disabled, the setuid/setgid bits on scripts are currently
2574 useless. It is possible for $package to detect those bits and emulate
2575 setuid/setgid in a secure fashion. This emulation will only work if
2576 setuid scripts have been disabled in your kernel.
2580 "$define") dflt=y ;;
2583 rp="Do you want to do setuid/setgid emulation?"
2586 [yY]*) val="$define";;
2594 : determine where site specific libraries go.
2598 '') dflt="$privlib/site_perl" ;;
2599 *) dflt="$sitelib" ;;
2603 The installation process will also create a directory for
2604 site-specific extensions and modules. Some users find it convenient
2605 to place all local files in this directory rather than in the main
2606 distribution directory.
2610 rp='Pathname for the site-specific library files?'
2612 if $test "X$sitelibexp" != "X$ansexp"; then
2616 sitelibexp="$ansexp"
2620 Since you are running AFS, I need to distinguish the directory in which
2621 private files reside from the directory in which they are installed (and from
2622 which they are presumably copied to the former directory by occult means).
2625 case "$installsitelib" in
2626 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2627 *) dflt="$installsitelib";;
2630 rp='Where will private files be installed?'
2632 installsitelib="$ans"
2634 installsitelib="$sitelibexp"
2637 : determine where site specific architecture-dependent libraries go.
2638 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2639 : xxx is usuually lib/site_perl/archname.
2640 set sitearch sitearch none
2643 '') dflt="$sitelib/$archname" ;;
2644 *) dflt="$sitearch" ;;
2648 The installation process will also create a directory for
2649 architecture-dependent site-specific extensions and modules.
2653 rp='Pathname for the site-specific architecture-dependent library files?'
2655 if $test "X$sitearchexp" != "X$ansexp"; then
2659 sitearchexp="$ansexp"
2663 Since you are running AFS, I need to distinguish the directory in which
2664 private files reside from the directory in which they are installed (and from
2665 which they are presumably copied to the former directory by occult means).
2668 case "$installsitearch" in
2669 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2670 *) dflt="$installsitearch";;
2673 rp='Where will private files be installed?'
2675 installsitearch="$ans"
2677 installsitearch="$sitearchexp"
2680 : determine where old public architecture dependent libraries might be
2681 case "$oldarchlib" in
2682 '') case "$privlib" in
2684 *) dflt="$privlib/$archname"
2688 *) dflt="$oldarchlib"
2691 if $test ! -d "$dflt/auto"; then
2696 In 5.001, Perl stored architecture-dependent library files in a library
2697 with a name such as $privlib/$archname,
2698 and this directory contained files from the standard extensions and
2699 files from any additional extensions you might have added. Starting
2700 with version 5.002, all the architecture-dependent standard extensions
2701 will go into $archlib,
2702 while locally-added extensions will go into
2705 If you wish Perl to continue to search the old architecture-dependent
2706 library for your local extensions, give the path to that directory.
2707 If you do not wish to use your old architecture-dependent library
2708 files, answer 'none'.
2712 rp='Directory for your old 5.001 architecture-dependent libraries?'
2715 oldarchlibexp="$ansexp"
2716 case "$oldarchlib" in
2717 ''|' ') val="$undef" ;;
2723 : determine where public executables go
2728 rp='Pathname where the public executables will reside?'
2730 if $test "X$ansexp" != "X$binexp"; then
2738 Since you are running AFS, I need to distinguish the directory in which
2739 executables reside from the directory in which they are installed (and from
2740 which they are presumably copied to the former directory by occult means).
2743 case "$installbin" in
2744 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2745 *) dflt="$installbin";;
2748 rp='Where will public executables be installed?'
2752 installbin="$binexp"
2755 : determine where manual pages are on this system
2759 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2760 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2761 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2762 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2763 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2764 sysman=`./loc . /usr/man/man1 $syspath`
2767 if $test -d "$sysman"; then
2768 echo "System manual is in $sysman." >&4
2770 echo "Could not find manual pages in source form." >&4
2773 : determine where manual pages go
2774 set man1dir man1dir none
2778 $spackage has manual pages available in source form.
2782 echo "However, you don't have nroff, so they're probably useless to you."
2784 '') man1dir="none";;
2787 echo "If you don't want the manual sources installed, answer 'none'."
2792 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
2793 lookpath="$lookpath $prefixexp/man/p_man/man1"
2794 lookpath="$lookpath $prefixexp/man/u_man/man1"
2795 lookpath="$lookpath $prefixexp/man/man.1"
2796 : If prefix contains 'perl' then we want to keep the man pages
2797 : under the prefix directory. Otherwise, look in a variety of
2798 : other possible places. This is debatable, but probably a
2799 : good compromise. Well, apparently not.
2800 : Experience has shown people expect man1dir to be under prefix,
2801 : so we now always put it there. Users who want other behavior
2802 : can answer interactively or use a command line option.
2803 : Does user have System V-style man paths.
2805 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
2806 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
2816 rp="Where do the main $spackage manual pages (source) go?"
2818 if $test "X$man1direxp" != "X$ansexp"; then
2822 man1direxp="$ansexp"
2830 Since you are running AFS, I need to distinguish the directory in which
2831 manual pages reside from the directory in which they are installed (and from
2832 which they are presumably copied to the former directory by occult means).
2835 case "$installman1dir" in
2836 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
2837 *) dflt="$installman1dir";;
2840 rp='Where will man pages be installed?'
2842 installman1dir="$ans"
2844 installman1dir="$man1direxp"
2847 : What suffix to use on installed man pages
2854 rp="What suffix should be used for the main $spackage man pages?"
2856 '') case "$man1dir" in
2870 *) dflt="$man1ext";;
2877 : see if we can have long filenames
2879 rmlist="$rmlist /tmp/cf$$"
2880 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
2881 first=123456789abcdef
2882 second=/tmp/cf$$/$first
2883 $rm -f $first $second
2884 if (echo hi >$first) 2>/dev/null; then
2885 if $test -f 123456789abcde; then
2886 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
2889 if (echo hi >$second) 2>/dev/null; then
2890 if $test -f /tmp/cf$$/123456789abcde; then
2892 That's peculiar... You can have filenames longer than 14 characters, but only
2893 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
2894 I shall consider your system cannot support long filenames at all.
2898 echo 'You can have filenames longer than 14 characters.' >&4
2903 How confusing! Some of your filesystems are sane enough to allow filenames
2904 longer than 14 characters but some others like /tmp can't even think about them.
2905 So, for now on, I shall assume your kernel does not allow them at all.
2912 You can't have filenames longer than 14 chars. You can't even think about them!
2918 $rm -rf /tmp/cf$$ 123456789abcde*
2920 : determine where library module manual pages go
2921 set man3dir man3dir none
2925 $spackage has manual pages for many of the library modules.
2931 However, you don't have nroff, so they're probably useless to you.
2932 You can use the supplied perldoc script instead.
2935 '') man3dir="none";;
2939 case "$d_flexfnam" in
2942 However, your system can't handle the long file names like File::Basename.3.
2943 You can use the supplied perldoc script instead.
2946 '') man3dir="none";;
2950 echo "If you don't want the manual sources installed, answer 'none'."
2951 : We dont use /usr/local/man/man3 because some man programs will
2952 : only show the /usr/local/man/man3 contents, and not the system ones,
2953 : thus man less will show the perl module less.pm, but not the system
2954 : less command. We might also conflict with TCL man pages.
2955 : However, something like /opt/perl/man/man3 is fine.
2957 '') case "$prefix" in
2958 *perl*) dflt=`echo $man1dir |
2959 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
2960 *) dflt="$privlib/man/man3" ;;
2964 *) dflt="$man3dir" ;;
2969 rp="Where do the $spackage library man pages (source) go?"
2971 if test "X$man3direxp" != "X$ansexp"; then
2976 man3direxp="$ansexp"
2984 Since you are running AFS, I need to distinguish the directory in which
2985 manual pages reside from the directory in which they are installed (and from
2986 which they are presumably copied to the former directory by occult means).
2989 case "$installman3dir" in
2990 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
2991 *) dflt="$installman3dir";;
2994 rp='Where will man pages be installed?'
2996 installman3dir="$ans"
2998 installman3dir="$man3direxp"
3001 : What suffix to use on installed man pages
3008 rp="What suffix should be used for the $spackage library man pages?"
3010 '') case "$man3dir" in
3024 *) dflt="$man3ext";;
3031 : see what memory models we can support
3034 $cat >pdp11.c <<'EOP'
3043 cc -o pdp11 pdp11.c >/dev/null 2>&1
3044 if ./pdp11 2>/dev/null; then
3045 dflt='unsplit split'
3047 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3050 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3055 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3058 if $test -d /lib/large || $test -d /usr/lib/large; then
3061 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3070 Some systems have different model sizes. On most systems they are called
3071 small, medium, large, and huge. On the PDP11 they are called unsplit and
3072 split. If your system doesn't support different memory models, say "none".
3073 If you wish to force everything to one memory model, say "none" here and
3074 put the appropriate flags later when it asks you for other cc and ld flags.
3075 Venix systems may wish to put "none" and let the compiler figure things out.
3076 (In the following question multiple model names should be space separated.)
3079 rp="Which memory models are supported?"
3094 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3095 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3102 rp="What flag indicates separate I and D space?"
3110 *large*|*small*|*medium*|*huge*)
3117 rp="What flag indicates large model?"
3127 *huge*) case "$huge" in
3131 rp="What flag indicates huge model?"
3141 *medium*) case "$medium" in
3145 rp="What flag indicates medium model?"
3152 *) medium="$large";;
3155 *small*) case "$small" in
3159 rp="What flag indicates small model?"
3170 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3174 : see if we need a special compiler
3182 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3183 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3196 On some systems the default C compiler will not resolve multiple global
3197 references that happen to have the same name. On some such systems the "Mcc"
3198 command may be used to force these to be resolved. On other systems a "cc -M"
3199 command is required. (Note that the -M flag on other systems indicates a
3200 memory model to use!) If you have the Gnu C compiler, you might wish to use
3204 rp="What command will force resolution on this system?"
3212 rp="Use which C compiler?"
3217 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3218 $cat >gccvers.c <<EOM
3223 printf("%s\n", __VERSION__);
3225 printf("%s\n", "1");
3231 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3232 gccversion=`./gccvers`
3233 case "$gccversion" in
3234 '') echo "You are not using GNU cc." ;;
3235 *) echo "You are using GNU cc $gccversion." ;;
3239 echo "*** WHOA THERE!!! ***" >&4
3240 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3241 case "$knowitall" in
3243 echo " You'd better start hunting for one and let me know about it." >&4
3249 case "$gccversion" in
3250 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3253 : What should the include directory be ?
3255 $echo $n "Hmm... $c"
3259 if $test -f /bin/mips && /bin/mips; then
3260 echo "Looks like a MIPS system..."
3261 $cat >usr.c <<'EOCP'
3262 #ifdef SYSTYPE_BSD43
3266 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3267 dflt='/bsd43/usr/include'
3271 mips_type='System V'
3273 $rm -f usr.c usr.out
3274 echo "and you're compiling with the $mips_type compiler and libraries."
3278 echo "Doesn't look like a MIPS system."
3289 case "$xxx_prompt" in
3291 rp='Where are the include files you want to use?'
3299 : see if we have to deal with yellow pages, now NIS.
3300 if $test -d /usr/etc/yp || $test -d /etc/yp; then
3301 if $test -f /usr/etc/nibindd; then
3303 echo "I'm fairly confident you're on a NeXT."
3305 rp='Do you get the hosts file via NetInfo?'
3314 y*) hostcat='nidump hosts .';;
3315 *) case "$hostcat" in
3316 nidump*) hostcat='';;
3326 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
3334 rp='Are you getting the hosts file via yellow pages?'
3337 y*) hostcat='ypcat hosts';;
3338 *) hostcat='cat /etc/hosts';;
3344 : now get the host name
3346 echo "Figuring out host name..." >&4
3347 case "$myhostname" in
3349 echo 'Maybe "hostname" will work...'
3350 if tans=`sh -c hostname 2>&1` ; then
3358 if $test "$cont"; then
3360 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
3361 if tans=`cat /etc/systemid 2>&1` ; then
3363 phostname='cat /etc/systemid'
3364 echo "Whadyaknow. Xenix always was a bit strange..."
3367 elif $test -r /etc/systemid; then
3368 echo "(What is a non-Xenix system doing with /etc/systemid?)"
3371 if $test "$cont"; then
3372 echo 'No, maybe "uuname -l" will work...'
3373 if tans=`sh -c 'uuname -l' 2>&1` ; then
3375 phostname='uuname -l'
3377 echo 'Strange. Maybe "uname -n" will work...'
3378 if tans=`sh -c 'uname -n' 2>&1` ; then
3380 phostname='uname -n'
3382 echo 'Oh well, maybe I can mine it out of whoami.h...'
3383 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
3384 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
3385 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
3387 case "$myhostname" in
3388 '') echo "Does this machine have an identity crisis or something?"
3391 echo "Well, you said $myhostname before..."
3392 phostname='echo $myhostname';;
3398 : you do not want to know about this
3403 if $test "$myhostname" ; then
3405 rp='Your host name appears to be "'$myhostname'".'" Right?"
3413 : bad guess or no guess
3414 while $test "X$myhostname" = X ; do
3416 rp="Please type the (one word) name of your host:"
3421 : translate upper to lower if necessary
3422 case "$myhostname" in
3424 echo "(Normalizing case in your host name)"
3425 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
3429 case "$myhostname" in
3431 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
3432 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
3433 echo "(Trimming domain name from host name--host name is now $myhostname)"
3435 *) case "$mydomain" in
3438 : If we use NIS, try ypmatch.
3439 : Is there some reason why this was not done before?
3440 test "X$hostcat" = "Xypcat hosts" &&
3441 ypmatch "$myhostname" hosts 2>/dev/null |\
3442 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
3445 : Extract only the relevant hosts, reducing file size,
3446 : remove comments, insert trailing space for later use.
3447 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
3448 /[ ]$myhostname[ . ]/p" > hosts
3451 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
3452 END { print sum }" hosts` = x1 || tmp_re="[ ]"
3453 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
3454 hosts | $sort | $uniq | \
3455 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
3456 case `$echo X$dflt` in
3457 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
3460 .) echo "(You do not have fully-qualified names in /etc/hosts)"
3465 tans=`./loc resolv.conf X /etc /usr/etc`
3466 if $test -f "$tans"; then
3467 echo "(Attempting domain name extraction from $tans)"
3468 : Why was there an Egrep here, when Sed works?
3469 dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \
3470 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
3475 .) echo "(No help from resolv.conf either -- attempting clever guess)"
3476 dflt=.`sh -c domainname 2>/dev/null`
3479 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
3484 .) echo "(Lost all hope -- silly guess then)"
3490 *) dflt="$mydomain";;
3494 rp="What is your domain name?"
3504 : translate upper to lower if necessary
3507 echo "(Normalizing case in your domain name)"
3508 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
3512 : a little sanity check here
3513 case "$phostname" in
3516 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
3517 $myhostname$mydomain|$myhostname) ;;
3519 case "$phostname" in
3521 echo "(That doesn't agree with your whoami.h file, by the way.)"
3524 echo "(That doesn't agree with your $phostname command, by the way.)"
3534 I need to get your e-mail address in Internet format if possible, i.e.
3535 something like user@host.domain. Please answer accurately since I have
3536 no easy means to double check it. The default value provided below
3537 is most probably close to the reality but may not be valid from outside
3538 your organization...
3542 while test "$cont"; do
3544 '') dflt="$cf_by@$myhostname$mydomain";;
3545 *) dflt="$cf_email";;
3547 rp='What is your e-mail address?'
3553 rp='Address does not look like an Internet one. Use it anyway?'
3569 If you or somebody else will be maintaining perl at your site, please
3570 fill in the correct e-mail address here so that they may be contacted
3571 if necessary. Currently, the "perlbug" program included with perl
3572 will send mail to this address in addition to perlbug@perl.com. You may
3573 enter "none" for no administrator.
3576 case "$perladmin" in
3577 '') dflt="$cf_email";;
3578 *) dflt="$perladmin";;
3580 rp='Perl administrator e-mail address'
3584 : determine where public executable scripts go
3585 set scriptdir scriptdir
3587 case "$scriptdir" in
3590 : guess some guesses
3591 $test -d /usr/share/scripts && dflt=/usr/share/scripts
3592 $test -d /usr/share/bin && dflt=/usr/share/bin
3593 $test -d /usr/local/script && dflt=/usr/local/script
3594 $test -d $prefixexp/script && dflt=$prefixexp/script
3598 *) dflt="$scriptdir"
3603 Some installations have a separate directory just for executable scripts so
3604 that they can mount it across multiple architectures but keep the scripts in
3605 one spot. You might, for example, have a subdirectory of /usr/share for this.
3606 Or you might just lump your scripts in with all your other executables.
3610 rp='Where do you keep publicly executable scripts?'
3612 if $test "X$ansexp" != "X$scriptdirexp"; then
3616 scriptdirexp="$ansexp"
3620 Since you are running AFS, I need to distinguish the directory in which
3621 scripts reside from the directory in which they are installed (and from
3622 which they are presumably copied to the former directory by occult means).
3625 case "$installscript" in
3626 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
3627 *) dflt="$installscript";;
3630 rp='Where will public scripts be installed?'
3632 installscript="$ans"
3634 installscript="$scriptdirexp"
3637 : determine perl absolute location
3639 '') perlpath=$binexp/perl ;;
3642 : figure out how to guarantee perl startup
3643 case "$startperl" in
3645 case "$sharpbang" in
3649 I can use the #! construct to start perl on your system. This will
3650 make startup of perl scripts faster, but may cause problems if you
3651 want to share those scripts and perl is not in a standard place
3652 ($perlpath) on all your platforms. The alternative is to force
3653 a shell by starting the script with a single ':' character.
3657 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
3660 none) startperl=": # use perl";;
3661 *) startperl="#!$ans";;
3664 *) startperl=": # use perl"
3669 echo "I'll use $startperl to start perl scripts."
3671 : see how we invoke the C preprocessor
3673 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3674 cat <<'EOT' >testcpp.c
3680 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3682 wrapper=`pwd`/cppstdin
3686 if $test "X$cppstdin" != "X" && \
3687 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3688 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3690 echo "You used to use $cppstdin $cppminus so we'll use that again."
3692 '') echo "But let's see if we can live without a wrapper..." ;;
3694 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3695 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3697 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3700 echo "(However, $cpprun $cpplast does not work, let's see...)"
3708 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3715 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3716 $cc -E <testcpp.c >testcpp.out 2>&1; \
3717 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3718 echo "Yup, it does."
3721 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3722 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3723 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3724 echo "Yup, it does."
3727 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3728 $cc -P <testcpp.c >testcpp.out 2>&1; \
3729 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3730 echo "Yipee, that works!"
3733 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3734 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3735 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3736 echo "At long last!"
3739 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3740 $cpp <testcpp.c >testcpp.out 2>&1; \
3741 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3745 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3746 $cpp - <testcpp.c >testcpp.out 2>&1; \
3747 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3748 echo "Hooray, it works! I was beginning to wonder."
3751 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3752 $wrapper <testcpp.c >testcpp.out 2>&1; \
3753 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3759 rp="No dice. I can't find a C preprocessor. Name one:"
3763 $x_cpp <testcpp.c >testcpp.out 2>&1
3764 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3765 echo "OK, that will do." >&4
3767 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3782 echo "Perhaps can we force $cc -E using a wrapper..."
3783 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3784 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3790 echo "Nope, we'll have to live without it..."
3805 *) $rm -f $wrapper;;
3807 $rm -f testcpp.c testcpp.out
3809 : Set private lib path
3812 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3817 '') dlist="$loclibpth $plibpth $glibpth";;
3818 *) dlist="$libpth";;
3821 : Now check and see which directories actually exist, avoiding duplicates
3825 if $test -d $xxx; then
3828 *) libpth="$libpth $xxx";;
3834 Some systems have incompatible or broken versions of libraries. Among
3835 the directories listed in the question below, please remove any you
3836 know not to be holding relevant libraries, and add any that are needed.
3837 Say "none" for none.
3848 rp="Directories to use for library searches?"
3855 : determine optimize, if desired, or use for debug flag also
3859 *) dflt="$optimize";;
3863 Some C compilers have problems with their optimizers, by default, $package
3864 compiles with the -O flag to use the optimizer. Alternately, you might want
3865 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3866 systems). Either flag can be specified here. To use neither flag, specify
3870 rp="What optimizer/debugger flag should be used?"
3874 'none') optimize=" ";;
3878 : We will not override a previous value, but we might want to
3879 : augment a hint file
3882 case "$gccversion" in
3883 1*) dflt='-fpcc-struct-return' ;;
3886 *-g*) dflt="$dflt -DDEBUGGING";;
3888 case "$gccversion" in
3889 2*) if test -d /etc/conf/kconfig.d &&
3890 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3899 case "$mips_type" in
3900 *BSD*|'') inclwanted="$locincpth $usrinc";;
3901 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3903 for thisincl in $inclwanted; do
3904 if $test -d $thisincl; then
3905 if $test x$thisincl != x$usrinc; then
3908 *) dflt="$dflt -I$thisincl";;
3914 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3916 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3924 *) dflt="$dflt -D$2";;
3929 set signal.h __LANGUAGE_C__; eval $inctest
3931 set signal.h LANGUAGE_C; eval $inctest
3933 set signal.h NO_PROTOTYPE; eval $inctest
3934 set signal.h _NO_PROTO; eval $inctest
3937 none|recommended) dflt="$ccflags $dflt" ;;
3938 *) dflt="$ccflags";;
3946 Your C compiler may want other flags. For this question you should include
3947 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3948 but you should NOT include libraries or ld flags like -lwhatever. If you
3949 want $package to honor its debug switch, you should include -DDEBUGGING here.
3950 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3951 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3953 To use no flags, specify the word "none".
3959 rp="Any additional cc flags?"
3966 : the following weeds options from ccflags that are of no interest to cpp
3968 case "$gccversion" in
3969 1*) cppflags="$cppflags -D__GNUC__"
3971 case "$mips_type" in
3973 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3979 echo "Let me guess what the preprocessor flags are..." >&4
3993 *) ftry="$previous $flag";;
3995 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3996 >cpp1.out 2>/dev/null && \
3997 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3998 >cpp2.out 2>/dev/null && \
3999 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4000 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4002 cppflags="$cppflags $ftry"
4012 *-*) echo "They appear to be: $cppflags";;
4014 $rm -f cpp.c cpp?.out
4018 : flags used in final linking phase
4021 '') if ./venix; then
4027 *-posix*) dflt="$dflt -posix" ;;
4030 *) dflt="$ldflags";;
4033 : Try to guess additional flags to pick up local libraries.
4034 for thislibdir in $libpth; do
4035 case " $loclibpth " in
4038 *"-L$thislibdir "*) ;;
4039 *) dflt="$dflt -L$thislibdir" ;;
4051 Your C linker may need flags. For this question you should
4052 include -L/whatever and any other flags used by the C linker, but you
4053 should NOT include libraries like -lwhatever.
4055 Make sure you include the appropriate -L/path flags if your C linker
4056 does not normally search all of the directories you specified above,
4059 To use no flags, specify the word "none".
4063 rp="Any additional ld flags (NOT including libraries)?"
4069 rmlist="$rmlist pdp11"
4073 echo "Checking your choice of C compiler and flags for coherency..." >&4
4074 set X $cc $optimize $ccflags $ldflags try.c -o try
4077 I've tried to compile and run a simple program with:
4082 and I got the following output:
4085 $cat > try.c <<'EOF'
4090 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
4091 if sh -c './try' >>try.msg 2>&1; then
4094 echo "The program compiled OK, but exited with status $?." >>try.msg
4095 rp="You have a problem. Shall I abort Configure"
4099 echo "I can't compile the test program." >>try.msg
4100 rp="You have a BIG problem. Shall I abort Configure"
4106 case "$knowitall" in
4108 echo "(The supplied flags might be incorrect with this C compiler.)"
4116 *) echo "Ok. Stopping Configure." >&4
4121 n) echo "OK, that should do.";;
4123 $rm -f try try.* core
4125 : compute shared library extension
4128 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4138 On some systems, shared libraries may be available. Answer 'none' if
4139 you want to suppress searching of shared libraries for the remaining
4140 of this configuration.
4143 rp='What is the file extension used for shared libraries?'
4147 : Looking for optional libraries
4149 echo "Checking for optional libraries..." >&4
4154 case "$libswanted" in
4155 '') libswanted='c_s';;
4157 for thislib in $libswanted; do
4159 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
4160 echo "Found -l$thislib (shared)."
4163 *) dflt="$dflt -l$thislib";;
4165 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4166 echo "Found -l$thislib (shared)."
4169 *) dflt="$dflt -l$thislib";;
4171 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
4172 echo "Found -l$thislib."
4175 *) dflt="$dflt -l$thislib";;
4177 elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
4178 echo "Found -l$thislib."
4181 *) dflt="$dflt -l$thislib";;
4183 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
4184 echo "Found -l${thislib}_s."
4187 *) dflt="$dflt -l${thislib}_s";;
4189 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
4190 echo "Found -l$thislib."
4193 *) dflt="$dflt -l$thislib";;
4196 echo "No -l$thislib."
4207 ' '|'') dflt='none';;
4212 Some versions of Unix support shared libraries, which make executables smaller
4213 but make load time slightly longer.
4215 On some systems, mostly newer Unix System V's, the shared library is included
4216 by putting the option "-lc_s" as the last thing on the cc command line when
4217 linking. Other systems use shared libraries by default. There may be other
4218 libraries needed to compile $package on your machine as well. If your system
4219 needs the "-lc_s" option, include it here. Include any other special libraries
4220 here as well. Say "none" for none.
4224 rp="Any additional libraries?"
4231 : see if nm is to be used to determine whether a symbol is defined or not
4234 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
4235 if $test $dflt -gt 20; then
4250 I can use 'nm' to extract the symbols from your C libraries. This is a time
4251 consuming task which may generate huge output on the disk (up to 3 megabytes)
4252 but that should make the symbols extraction faster. The alternative is to skip
4253 the 'nm' extraction part and to compile a small test program instead to
4254 determine whether each symbol is present. If you have a fast C compiler and/or
4255 if your 'nm' output cannot be parsed, this may be the best solution.
4258 rp='Shall I use nm to extract C symbols from the libraries?'
4270 : nm options which may be necessary
4272 '') if $test -f /mach_boot; then
4274 elif $test -d /usr/ccs/lib; then
4276 elif $test -f /dgux; then
4283 : nm options which may be necessary for shared libraries but illegal
4284 : for archive libraries. Thank you, Linux.
4285 case "$nm_so_opt" in
4286 '') case "$myuname" in
4288 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4289 nm_so_opt='--dynamic'
4298 : get list of predefined functions in a handy place
4303 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
4310 *) for thislib in $libs; do
4313 : Handle C library specially below.
4316 thislib=`echo $thislib | $sed -e 's/^-l//'`
4317 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4319 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4321 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
4323 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4325 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4327 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
4332 libnames="$libnames $try"
4334 *) libnames="$libnames $thislib" ;;
4343 for xxx in $libpth; do
4344 $test -r $1 || set $xxx/libc.$so
4345 : The messy sed command sorts on library version numbers.
4347 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4348 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
4350 s/[0-9][0-9]*/0000&/g
4351 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4354 sort | $sed -e 's/^.* //'`
4357 $test -r $1 || set /usr/ccs/lib/libc.$so
4358 $test -r $1 || set /lib/libsys_s.a
4364 if $test -r "$1"; then
4365 echo "Your (shared) C library seems to be in $1."
4367 elif $test -r /lib/libc && $test -r /lib/clib; then
4368 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4370 libc='/lib/clib /lib/libc'
4371 if $test -r /lib/syslib; then
4372 echo "(Your math library is in /lib/syslib.)"
4373 libc="$libc /lib/syslib"
4375 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4376 echo "Your C library seems to be in $libc, as you said before."
4377 elif $test -r $incpath/usr/lib/libc.a; then
4378 libc=$incpath/usr/lib/libc.a;
4379 echo "Your C library seems to be in $libc. That's fine."
4380 elif $test -r /lib/libc.a; then
4382 echo "Your C library seems to be in $libc. You're normal."
4384 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
4386 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4387 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4388 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4390 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4392 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4395 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
4397 if $test -r "$tans"; then
4398 echo "Your C library seems to be in $tans, of all places."
4404 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4408 If the guess above is wrong (which it might be if you're using a strange
4409 compiler, or your machine supports multiple models), you can override it here.
4414 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4416 I can't seem to find your C library. I've looked in the following places:
4419 $sed 's/^/ /' libpath
4422 None of these seems to contain your C library. I need to get its name...
4427 rp='Where is your C library?'
4432 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4433 set X `cat libnames`
4436 case $# in 1) xxx=file; esac
4437 echo "Extracting names from the following $xxx for later perusal:" >&4
4439 $sed 's/^/ /' libnames >&4
4441 $echo $n "This may take a while...$c" >&4
4443 : Linux may need the special Dynamic option to nm for shared libraries.
4444 : In general, this is stored in the nm_so_opt variable.
4445 : Unfortunately, that option may be fatal on non-shared libraries.
4446 for nm_libs_ext in $*; do
4447 case $nm_libs_ext in
4448 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4449 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4454 $grep fprintf libc.tmp > libc.ptf
4455 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4456 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4458 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx //p'";\
4460 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4462 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4464 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4466 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4468 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4470 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4472 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4474 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4476 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4478 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4480 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4482 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4483 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4485 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4487 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4489 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4491 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4493 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4495 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4497 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4499 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4501 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4504 nm -p $* 2>/dev/null >libc.tmp
4505 $grep fprintf libc.tmp > libc.ptf
4506 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4507 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4513 echo "nm didn't seem to work right. Trying ar instead..." >&4
4515 if ar t $libc > libc.tmp; then
4516 for thisname in $libnames; do
4517 ar t $thisname >>libc.tmp
4519 $sed -e 's/\.o$//' < libc.tmp > libc.list
4522 echo "ar didn't seem to work right." >&4
4523 echo "Maybe this is a Cray...trying bld instead..." >&4
4524 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4526 for thisname in $libnames; do
4528 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4529 ar t $thisname >>libc.tmp
4533 echo "That didn't work either. Giving up." >&4
4540 if $test -f /lib/syscalls.exp; then
4542 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4543 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4547 $rm -f libnames libpath
4549 : is a C symbol defined?
4552 -v) tf=libc.tmp; tc=""; tdc="";;
4553 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4554 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4557 case "$reuseval-$4" in
4559 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4565 if $contains $tlook $tf >/dev/null 2>&1;
4570 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4571 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4579 $define) tval=true;;
4585 : define an is-in-libc? function
4586 inlibc='echo " "; td=$define; tu=$undef;
4587 sym=$1; var=$2; eval "was=\$$2";
4589 case "$reuseval$was" in
4599 echo "$sym() found." >&4;
4600 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4602 echo "$sym() NOT found." >&4;
4603 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4607 $define) echo "$sym() found." >&4;;
4608 *) echo "$sym() NOT found." >&4;;
4612 : Check how to convert floats to strings.
4614 echo "Checking for an efficient way to convert floats to strings."
4617 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
4620 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
4623 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
4627 /* This test must come first. <AlanBurlison@unn.unisys.com> */
4628 Gconvert(0.1, 8, 0, buf);
4629 if (buf[0] != '.' || buf[1] != '1' || buf[2] != '\0')
4631 Gconvert(1.0, 8, 0, buf);
4632 if (buf[0] != '1' || buf[1] != '\0')
4634 Gconvert(0.0, 8, 0, buf);
4635 if (buf[0] != '0' || buf[1] != '\0')
4637 Gconvert(-1.0, 8, 0, buf);
4638 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
4643 case "$d_Gconvert" in
4644 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
4645 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
4646 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
4647 *) xxx_list='gconvert gcvt sprintf' ;;
4650 for xxx_convert in $xxx_list; do
4651 echo "Trying $xxx_convert"
4653 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
4654 try.c $libs > /dev/null 2>&1 ; then
4655 echo "$xxx_convert" found. >&4
4657 echo "Good, $xxx_convert drops a trailing decimal point."
4658 echo "I'll use $xxx_convert to convert floats into a string." >&4
4661 echo "But $xxx_convert keeps a trailing decimal point".
4664 echo "$xxx_convert NOT found." >&4
4668 case "$xxx_convert" in
4669 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
4670 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
4671 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
4674 : Initialize h_fcntl
4677 : Initialize h_sysfile
4680 : determine filename position in cpp output
4682 echo "Computing filename position in cpp output for #include directives..." >&4
4683 echo '#include <stdio.h>' > foo.c
4686 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4687 $grep '^[ ]*#.*stdio\.h' | \
4688 while read cline; do
4691 while $test \$# -gt 0; do
4692 if $test -r \`echo \$1 | $tr -d '"'\`; then
4697 pos=\`expr \$pos + 1\`
4709 *) pos="${fieldn}th";;
4711 echo "Your cpp writes the filename in the $pos field of the line."
4713 : locate header file
4718 if test -f $usrinc/\$wanted; then
4719 echo "$usrinc/\$wanted"
4722 awkprg='{ print \$$fieldn }'
4723 echo "#include <\$wanted>" > foo\$\$.c
4724 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4725 $grep "^[ ]*#.*\$wanted" | \
4726 while read cline; do
4727 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4729 */\$wanted) echo "\$name"; exit 0;;
4740 : access call always available on UNIX
4744 : locate the flags for 'access()'
4748 $cat >access.c <<'EOCP'
4749 #include <sys/types.h>
4754 #include <sys/file.h>
4763 : check sys/file.h first, no particular reason here
4764 if $test `./findhdr sys/file.h` && \
4765 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
4767 echo "<sys/file.h> defines the *_OK access constants." >&4
4768 elif $test `./findhdr fcntl.h` && \
4769 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
4771 echo "<fcntl.h> defines the *_OK access constants." >&4
4772 elif $test `./findhdr unistd.h` && \
4773 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
4774 echo "<unistd.h> defines the *_OK access constants." >&4
4776 echo "I can't find the four *_OK access constants--I'll use mine." >&4
4782 : see if alarm exists
4786 : Look for GNU-cc style attribute checking
4788 echo "Checking whether your compiler can handle __attribute__ ..." >&4
4789 $cat >attrib.c <<'EOCP'
4791 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
4793 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
4794 if $contains 'warning' attrib.out >/dev/null 2>&1; then
4795 echo "Your C compiler doesn't fully support __attribute__."
4798 echo "Your C compiler supports __attribute__."
4802 echo "Your C compiler doesn't seem to understand __attribute__ at all."
4809 : see if bcmp exists
4813 : see if bcopy exists
4817 : see if setpgrp exists
4818 set setpgrp d_setpgrp
4821 : see which flavor of setpgrp is in use
4822 case "$d_setpgrp" in
4828 if (getuid() == 0) {
4829 printf("(I see you are running Configure as super-user...)\n");
4832 if (-1 == setpgrp(1, 1))
4837 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
4840 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
4842 *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
4847 xxx="USG one, i.e. you use setpgrp()."
4850 xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
4853 echo "Assuming your setpgrp is a $xxx" >&4
4862 : see if bzero exists
4866 : check for length of integer
4870 echo "Checking to see how big your integers are..." >&4
4871 $cat >try.c <<'EOCP'
4875 printf("%d\n", sizeof(int));
4879 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
4881 echo "Your integers are $intsize bytes long."
4884 echo "(I can't seem to compile the test program. Guessing...)"
4885 rp="What is the size of an integer (in bytes)?"
4893 : see if signal is declared as pointer to function returning int or void
4895 xxx=`./findhdr signal.h`
4896 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
4897 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4898 echo "You have int (*signal())() instead of void." >&4
4900 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4901 echo "You have void (*signal())() instead of int." >&4
4903 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
4904 echo "You have int (*signal())() instead of void." >&4
4907 case "$d_voidsig" in
4909 echo "I can't determine whether signal handler returns void or int..." >&4
4911 rp="What type does your signal handler return?"
4918 echo "As you already told me, signal handler returns void." >&4;;
4920 echo "As you already told me, signal handler returns int." >&4;;
4925 case "$d_voidsig" in
4926 "$define") signal_t="void";;
4931 : check for ability to cast large floats to 32-bit ints.
4933 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
4934 if $test "$intsize" -eq 4; then
4940 #include <sys/types.h>
4942 $signal_t blech() { exit(3); }
4948 signal(SIGFPE, blech);
4950 f = (double) 0x7fffffff;
4954 if (i32 != ($xxx) f)
4959 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
4963 echo "(I can't seem to compile the test program--assuming it can't)"
4971 echo "Nope, it can't."
4978 : check for ability to cast negative floats to unsigned
4980 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
4982 #include <sys/types.h>
4984 $signal_t blech() { exit(7); }
4985 $signal_t blech_in_list() { exit(4); }
4986 unsigned long dummy_long(p) unsigned long p; { return p; }
4987 unsigned int dummy_int(p) unsigned int p; { return p; }
4988 unsigned short dummy_short(p) unsigned short p; { return p; }
4992 unsigned long along;
4994 unsigned short ashort;
4997 signal(SIGFPE, blech);
4998 along = (unsigned long)f;
4999 aint = (unsigned int)f;
5000 ashort = (unsigned short)f;
5001 if (along != (unsigned long)-123)
5003 if (aint != (unsigned int)-123)
5005 if (ashort != (unsigned short)-123)
5007 f = (double)0x40000000;
5010 along = (unsigned long)f;
5011 if (along != 0x80000000)
5015 along = (unsigned long)f;
5016 if (along != 0x7fffffff)
5020 along = (unsigned long)f;
5021 if (along != 0x80000001)
5025 signal(SIGFPE, blech_in_list);
5027 along = dummy_long((unsigned long)f);
5028 aint = dummy_int((unsigned int)f);
5029 ashort = dummy_short((unsigned short)f);
5030 if (along != (unsigned long)123)
5032 if (aint != (unsigned int)123)
5034 if (ashort != (unsigned short)123)
5040 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5044 echo "(I can't seem to compile the test program--assuming it can't)"
5047 case "$castflags" in
5052 echo "Nope, it can't."
5059 : see if vprintf exists
5061 if set vprintf val -f d_vprintf; eval $csym; $val; then
5062 echo 'vprintf() found.' >&4
5064 $cat >vprintf.c <<'EOF'
5065 #include <varargs.h>
5067 main() { xxx("foo"); }
5076 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
5079 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
5080 echo "Your vsprintf() returns (int)." >&4
5083 echo "Your vsprintf() returns (char*)." >&4
5087 echo 'vprintf() NOT found.' >&4
5097 : see if chown exists
5101 : see if chroot exists
5105 : see if chsize exists
5109 : check for const keyword
5111 echo 'Checking to see if your C compiler knows about "const"...' >&4
5112 $cat >const.c <<'EOCP'
5113 typedef struct spug { int drokk; } spug;
5120 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
5122 echo "Yup, it does."
5125 echo "Nope, it doesn't."
5130 : see if crypt exists
5132 if set crypt val -f d_crypt; eval $csym; $val; then
5133 echo 'crypt() found.' >&4
5137 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
5138 if $test -z "$cryptlib"; then
5139 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
5143 if $test -z "$cryptlib"; then
5144 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
5148 if $test -z "$cryptlib"; then
5149 cryptlib=`./loc libcrypt.a "" $libpth`
5153 if $test -z "$cryptlib"; then
5154 echo 'crypt() NOT found.' >&4
5163 : get csh whereabouts
5165 'csh') val="$undef" ;;
5172 : see if cuserid exists
5173 set cuserid d_cuserid
5176 : define an alternate in-header-list? function
5177 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5178 cont=true; xxf="echo \"<\$1> found.\" >&4";
5179 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5180 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5182 case $# in 4) instead=instead;; *) instead="at last";; esac;
5183 while $test "$cont"; do
5185 var=$2; eval "was=\$$2";
5186 if $test "$xxx" && $test -r "$xxx";
5188 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5191 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5192 set $yyy; shift; shift; yyy=$@;
5193 case $# in 0) cont="";;
5194 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5195 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5196 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5197 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5201 do set $yyy; var=$2; eval "was=\$$2";
5202 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5203 set $yyy; shift; shift; yyy=$@;
5206 : see if this is a limits.h system
5207 set limits.h i_limits
5210 : see if this is a float.h system
5214 : See if number of significant digits in a double precision number is known
5216 $cat >dbl_dig.c <<EOM
5226 printf("Contains DBL_DIG");
5229 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
5230 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
5231 echo "DBL_DIG found." >&4
5234 echo "DBL_DIG NOT found." >&4
5241 : see if difftime exists
5242 set difftime d_difftime
5245 : see if this is a dirent system
5247 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
5249 echo "<dirent.h> found." >&4
5252 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
5253 echo "<sys/dir.h> found." >&4
5256 xinc=`./findhdr sys/ndir.h`
5258 echo "<dirent.h> NOT found." >&4
5263 : Look for type of directory structure.
5265 $cppstdin $cppflags $cppminus < "$xinc" > try.c
5267 case "$direntrytype" in
5270 $define) guess1='struct dirent' ;;
5271 *) guess1='struct direct' ;;
5274 *) guess1="$direntrytype"
5279 'struct dirent') guess2='struct direct' ;;
5280 *) guess2='struct dirent' ;;
5283 if $contains "$guess1" try.c >/dev/null 2>&1; then
5284 direntrytype="$guess1"
5285 echo "Your directory entries are $direntrytype." >&4
5286 elif $contains "$guess2" try.c >/dev/null 2>&1; then
5287 direntrytype="$guess2"
5288 echo "Your directory entries seem to be $direntrytype." >&4
5290 echo "I don't recognize your system's directory entries." >&4
5291 rp="What type is used for directory entries on this system?"
5299 : see if the directory entry stores field length
5301 $cppstdin $cppflags $cppminus < "$xinc" > try.c
5302 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
5303 echo "Good, your directory entry keeps length information in d_namlen." >&4
5306 echo "Your directory entry does not know about the d_namlen field." >&4
5313 : see if dlerror exists
5316 set dlerror d_dlerror
5320 : see if dld is available
5324 : see if dlopen exists
5331 : determine which dynamic loading, if any, to compile in
5333 dldir="ext/DynaLoader"
5346 $define) dflt='y' ;;
5349 $define) dflt='y' ;;
5351 : Does a dl_xxx.xs file exist for this operating system
5352 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
5355 rp="Do you wish to use dynamic loading?"
5362 if $test -f ../$dldir/dl_${osname}.xs ; then
5363 dflt="$dldir/dl_${osname}.xs"
5364 elif $test "$d_dlopen" = "$define" ; then
5365 dflt="$dldir/dl_dlopen.xs"
5366 elif $test "$i_dld" = "$define" ; then
5367 dflt="$dldir/dl_dld.xs"
5372 *) dflt="$dldir/$dlsrc"
5375 echo "The following dynamic loading files are available:"
5376 : Can not go over to $dldir because getfile has path hard-coded in.
5377 cd ..; ls -C $dldir/dl*.xs; cd UU
5378 rp="Source file to use for dynamic loading"
5383 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5387 Some systems may require passing special flags to $cc -c to
5388 compile modules that will be used to create a shared library.
5389 To use no flags, say "none".
5392 case "$cccdlflags" in
5393 '') case "$gccversion" in
5394 '') case "$osname" in
5396 next) dflt='none' ;;
5397 solaris|svr4*|esix*) dflt='-Kpic' ;;
5398 irix*) dflt='-KPIC' ;;
5399 sunos) dflt='-pic' ;;
5404 *) dflt="$cccdlflags" ;;
5406 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5409 none) cccdlflags=' ' ;;
5410 *) cccdlflags="$ans" ;;
5415 Some systems use ld to create libraries that can be dynamically loaded,
5416 while other systems (such as those using ELF) use $cc.
5420 '') $cat >try.c <<'EOM'
5421 /* Test for whether ELF binaries are produced */
5426 int i = open("a.out",O_RDONLY);
5429 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5430 exit(0); /* succeed (yes, it's ELF) */
5435 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5437 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5441 echo "I'll use ld to build dynamic libraries."
5450 rp="What command should be used to create dynamic libraries?"
5456 Some systems may require passing special flags to $ld to create a
5457 library that can be dynamically loaded. If your ld flags include
5458 -L/other/path options to locate libraries outside your loader's normal
5459 search path, you may need to specify those -L options here as well. To
5460 use no flags, say "none".
5463 case "$lddlflags" in
5464 '') case "$osname" in
5466 linux|irix*) dflt='-shared' ;;
5467 next) dflt='none' ;;
5468 solaris) dflt='-G' ;;
5469 sunos) dflt='-assert nodefinitions' ;;
5470 svr4*|esix*) dflt="-G $ldflags" ;;
5474 *) dflt="$lddlflags" ;;
5477 : Try to guess additional flags to pick up local libraries.
5478 for thisflag in $ldflags; do
5483 *) dflt="$dflt $thisflag" ;;
5493 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5496 none) lddlflags=' ' ;;
5497 *) lddlflags="$ans" ;;
5502 Some systems may require passing special flags to $cc to indicate that
5503 the resulting executable will use dynamic linking. To use no flags,
5507 case "$ccdlflags" in
5508 '') case "$osname" in
5509 hpux) dflt='-Wl,-E' ;;
5510 linux) dflt='-rdynamic' ;;
5511 next) dflt='none' ;;
5512 sunos) dflt='none' ;;
5515 *) dflt="$ccdlflags" ;;
5517 rp="Any special flags to pass to $cc to use dynamic loading?"
5520 none) ccdlflags=' ' ;;
5521 *) ccdlflags="$ans" ;;
5539 System V Release 4 systems can support dynamic loading
5540 only if libperl is created as a shared library.
5547 set d_shrplib; eval $setvar
5548 case "$d_shrplib" in
5552 Be sure to add the perl source directory to the LD_LIBRARY_PATH
5553 environment variable before running make:
5554 LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH
5556 setenv LD_LIBRARY_PATH `cd ..;pwd`
5561 case "$d_shrplib" in
5564 "") dflt="$archlib/CORE";;
5565 *) dflt="$shrpdir";;
5567 rp="What directory should we install the shared libperl into?"
5576 : see if dlfcn is available
5584 On a few systems, the dynamically loaded modules that perl generates and uses
5585 will need a different extension then shared libs. The default will probably
5593 rp='What is the extension of dynamically loaded modules'
5602 : Check if dlsym need a leading underscore
5608 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
5609 $cat >dyna.c <<'EOM'
5618 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
5620 #include <sys/types.h>
5634 int mode = RTLD_LAZY ;
5636 handle = dlopen("./dyna.$dlext", mode) ;
5637 if (handle == NULL) {
5641 symbol = dlsym(handle, "fred") ;
5642 if (symbol == NULL) {
5643 /* try putting a leading underscore */
5644 symbol = dlsym(handle, "_fred") ;
5645 if (symbol == NULL) {
5656 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
5657 mv dyna.o tmp-dyna.o > /dev/null 2>&1 &&
5658 $ld $lddlflags -o dyna.$dlext tmp-dyna.o > /dev/null 2>&1 &&
5659 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
5662 1) echo "Test program failed using dlopen." >&4
5663 echo "Perhaps you should not use dynamic loading." >&4;;
5664 2) echo "Test program failed using dlsym." >&4
5665 echo "Perhaps you should not use dynamic loading." >&4;;
5666 3) echo "dlsym needs a leading underscore" >&4
5668 4) echo "dlsym doesn't need a leading underscore." >&4;;
5671 echo "I can't compile and run the test program." >&4
5676 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
5681 : see if dup2 exists
5685 : Locate the flags for 'open()'
5687 $cat >open3.c <<'EOCP'
5688 #include <sys/types.h>
5693 #include <sys/file.h>
5704 : check sys/file.h first to get FREAD on Sun
5705 if $test `./findhdr sys/file.h` && \
5706 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
5708 echo "<sys/file.h> defines the O_* constants..." >&4
5710 echo "and you have the 3 argument form of open()." >&4
5713 echo "but not the 3 argument form of open(). Oh, well." >&4
5716 elif $test `./findhdr fcntl.h` && \
5717 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
5719 echo "<fcntl.h> defines the O_* constants..." >&4
5721 echo "and you have the 3 argument form of open()." >&4
5724 echo "but not the 3 argument form of open(). Oh, well." >&4
5729 echo "I can't find the O_* constant definitions! You got problems." >&4
5735 : check for non-blocking I/O stuff
5736 case "$h_sysfile" in
5737 true) echo "#include <sys/file.h>" > head.c;;
5740 true) echo "#include <fcntl.h>" > head.c;;
5741 *) echo "#include <sys/fcntl.h>" > head.c;;
5746 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
5747 case "$o_nonblock" in
5750 $cat >>try.c <<'EOCP'
5753 printf("O_NONBLOCK\n");
5757 printf("O_NDELAY\n");
5761 printf("FNDELAY\n");
5767 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5769 case "$o_nonblock" in
5770 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
5771 *) echo "Seems like we can use $o_nonblock.";;
5774 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
5777 *) echo "Using $hint value $o_nonblock.";;
5779 $rm -f try try.* .out core
5782 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
5788 #include <sys/types.h>
5790 #define MY_O_NONBLOCK $o_nonblock
5792 $signal_t blech(x) int x; { exit(3); }
5794 $cat >> try.c <<'EOCP'
5802 pipe(pd); /* Down: child -> parent */
5803 pipe(pu); /* Up: parent -> child */
5806 close(pd[1]); /* Parent reads from pd[0] */
5807 close(pu[0]); /* Parent writes (blocking) to pu[1] */
5808 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
5810 signal(SIGALRM, blech);
5812 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
5814 sprintf(string, "%d\n", ret);
5815 write(2, string, strlen(string));
5818 if (errno == EAGAIN) {
5824 if (errno == EWOULDBLOCK)
5825 printf("EWOULDBLOCK\n");
5828 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
5829 sleep(2); /* Give it time to close our pipe */
5831 ret = read(pd[0], buf, 1); /* Should read EOF */
5833 sprintf(string, "%d\n", ret);
5834 write(3, string, strlen(string));
5838 close(pd[0]); /* We write to pd[1] */
5839 close(pu[1]); /* We read from pu[0] */
5840 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
5841 close(pd[1]); /* Pipe pd is now fully closed! */
5842 exit(0); /* Bye bye, thank you for playing! */
5845 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5846 echo "$startsh" >mtry
5847 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
5849 ./mtry >/dev/null 2>&1
5851 0) eagain=`$cat try.out`;;
5852 1) echo "Could not perform non-blocking setting!";;
5853 2) echo "I did a successful read() for something that was not there!";;
5854 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
5855 *) echo "Something terribly wrong happened during testing.";;
5857 rd_nodata=`$cat try.ret`
5858 echo "A read() system call with no data present returns $rd_nodata."
5859 case "$rd_nodata" in
5862 echo "(That's peculiar, fixing that to be -1.)"
5868 echo "Forcing errno EAGAIN on read() with no data available."
5872 echo "Your read() sets errno to $eagain when no data is available."
5875 status=`$cat try.err`
5877 0) echo "And it correctly returns 0 to signal EOF.";;
5878 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
5879 *) echo "However, your read() returns '$status' on EOF??";;
5882 if test "$status" -eq "$rd_nodata"; then
5883 echo "WARNING: you can't distinguish between EOF and no data!"
5887 echo "I can't compile the test program--assuming errno EAGAIN will do."
5894 echo "Using $hint value $eagain."
5895 echo "Your read() returns $rd_nodata when no data is present."
5896 case "$d_eofnblk" in
5897 "$define") echo "And you can see EOF because read() returns 0.";;
5898 "$undef") echo "But you can't see EOF status from read() returned value.";;
5900 echo "(Assuming you can't see EOF status from read anyway.)"
5906 $rm -f try try.* .out core head.c mtry
5908 : see if fchmod exists
5912 : see if fchown exists
5916 : see if this is an fcntl system
5920 : see if fgetpos exists
5921 set fgetpos d_fgetpos
5924 : see if flock exists
5928 : see if fork exists
5932 : see if pathconf exists
5933 set pathconf d_pathconf
5936 : see if fpathconf exists
5937 set fpathconf d_fpathconf
5940 : see if fsetpos exists
5941 set fsetpos d_fsetpos
5944 : see if gethostent exists
5945 set gethostent d_gethent
5948 : see if getlogin exists
5949 set getlogin d_getlogin
5952 : see if getpgrp exists
5953 set getpgrp d_getpgrp
5956 : see if getpgrp2 exists
5957 set getpgrp2 d_getpgrp2
5960 : see if getppid exists
5961 set getppid d_getppid
5964 : see if getpriority exists
5965 set getpriority d_getprior
5968 : see if this is a netinet/in.h or sys/in.h system
5969 set netinet/in.h i_niin sys/in.h i_sysin
5972 : see if htonl --and friends-- exists
5977 : Maybe they are macros.
5982 #include <sys/types.h>
5983 #$i_niin I_NETINET_IN
5986 #include <netinet/in.h>
5992 printf("Defined as a macro.");
5995 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
5996 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
5998 echo "But it seems to be defined as a macro." >&4
6006 : see which of string.h or strings.h is needed
6008 strings=`./findhdr string.h`
6009 if $test "$strings" && $test -r "$strings"; then
6010 echo "Using <string.h> instead of <strings.h>." >&4
6014 strings=`./findhdr strings.h`
6015 if $test "$strings" && $test -r "$strings"; then
6016 echo "Using <strings.h> instead of <string.h>." >&4
6018 echo "No string header found -- You'll surely have problems." >&4
6024 "$undef") strings=`./findhdr strings.h`;;
6025 *) strings=`./findhdr string.h`;;
6030 if set index val -f; eval $csym; $val; then
6031 if set strchr val -f d_strchr; eval $csym; $val; then
6032 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6035 echo "strchr() found." >&4
6039 echo "index() found." >&4
6044 echo "index() found." >&4
6047 if set strchr val -f d_strchr; eval $csym; $val; then
6050 echo "strchr() found." >&4
6052 echo "No index() or strchr() found!" >&4
6057 set d_strchr; eval $setvar
6059 set d_index; eval $setvar
6063 $cat >isascii.c <<'EOCP'
6074 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6075 echo "isascii() found." >&4
6078 echo "isascii() NOT found." >&4
6085 : see if killpg exists
6089 : see if link exists
6093 : see if localeconv exists
6094 set localeconv d_locconv
6097 : see if lockf exists
6101 : see if lstat exists
6105 : see if mblen exists
6109 : see if mbstowcs exists
6110 set mbstowcs d_mbstowcs
6113 : see if mbtowc exists
6117 : see if memcmp exists
6121 : see if memcpy exists
6125 : see if memmove exists
6126 set memmove d_memmove
6129 : see if memset exists
6133 : see if mkdir exists
6137 : see if mkfifo exists
6141 : see if mktime exists
6145 : see if msgctl exists
6149 : see if msgget exists
6153 : see if msgsnd exists
6157 : see if msgrcv exists
6161 : see how much of the 'msg*(2)' library is present.
6164 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6165 *"$undef"*) h_msg=false;;
6167 : we could also check for sys/ipc.h ...
6168 if $h_msg && $test `./findhdr sys/msg.h`; then
6169 echo "You have the full msg*(2) library." >&4
6172 echo "You don't have the full msg*(2) library." >&4
6178 : see if this is a malloc.h system
6179 set malloc.h i_malloc
6182 : see if stdlib is available
6183 set stdlib.h i_stdlib
6186 : determine which malloc to compile in
6188 case "$usemymalloc" in
6189 ''|y*|true) dflt='y' ;;
6190 n*|false) dflt='n' ;;
6191 *) dflt="$usemymalloc" ;;
6193 rp="Do you wish to attempt to use the malloc that comes with $package?"
6199 mallocsrc='malloc.c'
6200 mallocobj='malloc.o'
6201 d_mymalloc="$define"
6204 : Remove malloc from list of libraries to use
6205 echo "Removing unneeded -lmalloc from library list" >&4
6206 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6209 echo "libs = $libs" >&4
6221 : compute the return types of malloc and free
6223 $cat >malloc.c <<END
6227 #include <sys/types.h>
6241 case "$malloctype" in
6243 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6250 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6254 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6261 echo "Your system uses $freetype free(), it would seem." >&4
6263 : see if nice exists
6267 : see if pause exists
6271 : see if pipe exists
6275 : see if poll exists
6279 : see if this is a pwd.h system
6285 xxx=`./findhdr pwd.h`
6286 $cppstdin $cppflags $cppminus < $xxx >$$.h
6288 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6296 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
6304 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
6312 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
6320 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
6328 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
6340 set d_pwquota; eval $setvar
6341 set d_pwage; eval $setvar
6342 set d_pwchange; eval $setvar
6343 set d_pwclass; eval $setvar
6344 set d_pwexpire; eval $setvar
6345 set d_pwcomment; eval $setvar
6349 : see if readdir and friends exist
6350 set readdir d_readdir
6352 set seekdir d_seekdir
6354 set telldir d_telldir
6356 set rewinddir d_rewinddir
6359 : see if readlink exists
6360 set readlink d_readlink
6363 : see if rename exists
6367 : see if rmdir exists
6371 : can bcopy handle overlapping blocks?
6376 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
6377 $cat >foo.c <<'EOCP'
6380 char buf[128], abc[128];
6386 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
6388 for (align = 7; align >= 0; align--) {
6389 for (len = 36; len; len--) {
6392 for (off = 1; off <= len; off++) {
6393 bcopy(b, b+off, len);
6394 bcopy(b+off, b, len);
6395 if (bcmp(b, abc, len))
6403 if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
6404 if ./safebcpy 2>/dev/null; then
6408 echo "It can't, sorry."
6411 echo "(I can't compile the test program, so we'll assume not...)"
6415 $rm -f foo.* safebcpy core
6419 : can memcpy handle overlapping blocks?
6424 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
6425 $cat >foo.c <<'EOCP'
6428 char buf[128], abc[128];
6434 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
6436 for (align = 7; align >= 0; align--) {
6437 for (len = 36; len; len--) {
6439 memcpy(b, abc, len);
6440 for (off = 1; off <= len; off++) {
6441 memcpy(b+off, b, len);
6442 memcpy(b, b+off, len);
6443 if (memcmp(b, abc, len))
6451 if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
6452 if ./safemcpy 2>/dev/null; then
6456 echo "It can't, sorry."
6459 echo "(I can't compile the test program, so we'll assume not...)"
6463 $rm -f foo.* safemcpy core
6467 : see if select exists
6471 : see if semctl exists
6475 : see if semget exists
6479 : see if semop exists
6483 : see how much of the 'sem*(2)' library is present.
6486 case "$d_semctl$d_semget$d_semop" in
6487 *"$undef"*) h_sem=false;;
6489 : we could also check for sys/ipc.h ...
6490 if $h_sem && $test `./findhdr sys/sem.h`; then
6491 echo "You have the full sem*(2) library." >&4
6494 echo "You don't have the full sem*(2) library." >&4
6500 : see if setegid exists
6501 set setegid d_setegid
6504 : see if seteuid exists
6505 set seteuid d_seteuid
6508 : see if setlinebuf exists
6509 set setlinebuf d_setlinebuf
6512 : see if setlocale exists
6513 set setlocale d_setlocale
6516 : see if setpgid exists
6517 set setpgid d_setpgid
6520 : see if setpgrp2 exists
6521 set setpgrp2 d_setpgrp2
6524 : see if setpriority exists
6525 set setpriority d_setprior
6528 : see if setregid exists
6529 set setregid d_setregid
6531 set setresgid d_setresgid
6534 : see if setreuid exists
6535 set setreuid d_setreuid
6537 set setresuid d_setresuid
6540 : see if setrgid exists
6541 set setrgid d_setrgid
6544 : see if setruid exists
6545 set setruid d_setruid
6548 : see if setsid exists
6552 : see if shmctl exists
6556 : see if shmget exists
6560 : see if shmat exists
6563 : see what shmat returns
6566 $cat >shmat.c <<'END'
6567 #include <sys/shm.h>
6570 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
6575 echo "and it returns ($shmattype)." >&4
6576 : see if a prototype for shmat is available
6577 xxx=`./findhdr sys/shm.h`
6578 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
6579 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
6590 set d_shmatprototype
6593 : see if shmdt exists
6597 : see how much of the 'shm*(2)' library is present.
6600 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
6601 *"$undef"*) h_shm=false;;
6603 : we could also check for sys/ipc.h ...
6604 if $h_shm && $test `./findhdr sys/shm.h`; then
6605 echo "You have the full shm*(2) library." >&4
6608 echo "You don't have the full shm*(2) library." >&4
6614 : see if sigvector exists -- since sigvec will match the substring
6616 if set sigvector val -f d_sigvectr; eval $csym; $val; then
6617 echo 'sigvector() found--you must be running HP-UX.' >&4
6618 val="$define"; set d_sigvectr; eval $setvar
6619 val="$define"; set d_sigvec; eval $setvar
6621 : try the original name
6623 if set sigvec val -f d_sigvec; eval $csym; $val; then
6624 echo 'sigvec() found.' >&4
6625 val="$define"; set d_sigvec; eval $setvar
6627 echo 'sigvec() not found--race conditions with signals may occur.' >&4
6628 val="$undef"; set d_sigvec; eval $setvar
6632 : see if we have sigaction
6633 set sigaction d_sigaction
6637 : see if sigsetjmp exists
6639 case "$d_sigsetjmp" in
6647 if (sigsetjmp(env,1))
6654 if $cc $ccflags $ldflags set.c -o set $libs >/dev/null 2>&1; then
6655 if ./set >/dev/null 2>&1; then
6656 echo "POSIX sigsetjmp found." >&4
6660 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
6665 echo "Sigsetjmp not found." >&4
6669 *) val="$d_sigsetjmp"
6670 case "$d_sigsetjmp" in
6671 $define) echo "POSIX sigsetjmp found." >&4;;
6672 $undef) echo "Sigsetjmp not found." >&4;;
6682 : see whether socket exists
6684 $echo $n "Hmm... $c" >&4
6685 if set socket val -f d_socket; eval $csym; $val; then
6686 echo "Looks like you have Berkeley networking support." >&4
6688 if set setsockopt val -f; eval $csym; $val; then
6691 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
6695 if $contains socklib libc.list >/dev/null 2>&1; then
6696 echo "Looks like you have Berkeley networking support." >&4
6698 : we will have to assume that it supports the 4.2 BSD interface
6701 echo "You don't have Berkeley networking in libc.a..." >&4
6702 if test -f /usr/lib/libnet.a; then
6703 ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \
6704 ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list
6705 if $contains socket libc.list >/dev/null 2>&1; then
6706 echo "...but the Wollongong group seems to have hacked it in." >&4
6708 sockethdr="-I/usr/netinclude"
6710 if $contains setsockopt libc.list >/dev/null 2>&1; then
6713 echo "...using the old 4.1c interface, rather than 4.2" >&4
6717 echo "or even in libnet.a, which is peculiar." >&4
6722 echo "or anywhere else I see." >&4
6729 : see if socketpair exists
6730 set socketpair d_sockpair
6733 : see if stat knows about block sizes
6735 xxx=`./findhdr sys/stat.h`
6736 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
6737 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
6738 echo "Your stat() knows about block sizes." >&4
6741 echo "Your stat() doesn't know about block sizes." >&4
6745 echo "Your stat() doesn't know about block sizes." >&4
6751 : see if _ptr and _cnt from stdio act std
6753 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
6754 echo "(Looks like you have stdio.h from Linux.)"
6755 case "$stdio_ptr" in
6756 '') stdio_ptr='((fp)->_IO_read_ptr)'
6759 *) ptr_lval=$d_stdio_ptr_lval;;
6761 case "$stdio_cnt" in
6762 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
6765 *) cnt_lval=$d_stdio_cnt_lval;;
6767 case "$stdio_base" in
6768 '') stdio_base='((fp)->_IO_read_base)';;
6770 case "$stdio_bufsiz" in
6771 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
6774 case "$stdio_ptr" in
6775 '') stdio_ptr='((fp)->_ptr)'
6778 *) ptr_lval=$d_stdio_ptr_lval;;
6780 case "$stdio_cnt" in
6781 '') stdio_cnt='((fp)->_cnt)'
6784 *) cnt_lval=$d_stdio_cnt_lval;;
6786 case "$stdio_base" in
6787 '') stdio_base='((fp)->_base)';;
6789 case "$stdio_bufsiz" in
6790 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
6793 : test whether _ptr and _cnt really work
6794 echo "Checking how std your stdio is..." >&4
6797 #define FILE_ptr(fp) $stdio_ptr
6798 #define FILE_cnt(fp) $stdio_cnt
6800 FILE *fp = fopen("try.c", "r");
6803 18 <= FILE_cnt(fp) &&
6804 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
6811 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
6813 echo "Your stdio acts pretty std."
6816 echo "Your stdio isn't very std."
6819 echo "Your stdio doesn't appear very std."
6825 : Can _ptr be used as an lvalue?
6826 case "$d_stdstdio$ptr_lval" in
6827 $define$define) val=$define ;;
6830 set d_stdio_ptr_lval
6833 : Can _cnt be used as an lvalue?
6834 case "$d_stdstdio$cnt_lval" in
6835 $define$define) val=$define ;;
6838 set d_stdio_cnt_lval
6841 : see if _base is also standard
6843 case "$d_stdstdio" in
6847 #define FILE_base(fp) $stdio_base
6848 #define FILE_bufsiz(fp) $stdio_bufsiz
6850 FILE *fp = fopen("try.c", "r");
6853 19 <= FILE_bufsiz(fp) &&
6854 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
6860 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
6862 echo "Even its _base field acts std."
6865 echo "But its _base field isn't std."
6868 echo "However, it seems to be lacking the _base field."
6876 : see if strcoll exists
6877 set strcoll d_strcoll
6880 : check for structure copying
6882 echo "Checking to see if your C compiler can copy structs..." >&4
6883 $cat >try.c <<'EOCP'
6893 if $cc -c try.c >/dev/null 2>&1 ; then
6898 echo "Nope, it can't."
6904 : see if strerror and/or sys_errlist[] exist
6906 if set strerror val -f d_strerror; eval $csym; $val; then
6907 echo 'strerror() found.' >&4
6908 d_strerror="$define"
6909 d_strerrm='strerror(e)'
6910 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6911 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
6912 d_syserrlst="$define"
6914 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
6915 d_syserrlst="$undef"
6917 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
6918 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
6919 echo 'strerror() found in string header.' >&4
6920 d_strerror="$define"
6921 d_strerrm='strerror(e)'
6922 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6923 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
6924 d_syserrlst="$define"
6926 echo "(You don't appear to have any sys_errlist[], how can this be?)"
6927 d_syserrlst="$undef"
6929 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6930 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
6932 d_syserrlst="$define"
6933 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
6935 echo 'strerror() and sys_errlist[] NOT found.' >&4
6937 d_syserrlst="$undef"
6938 d_strerrm='"unknown"'
6941 : see if strxfrm exists
6942 set strxfrm d_strxfrm
6945 : see if symlink exists
6946 set symlink d_symlink
6949 : see if syscall exists
6950 set syscall d_syscall
6953 : see if sysconf exists
6954 set sysconf d_sysconf
6957 : see if system exists
6961 : see if tcgetpgrp exists
6962 set tcgetpgrp d_tcgetpgrp
6965 : see if tcsetpgrp exists
6966 set tcsetpgrp d_tcsetpgrp
6969 : define an is-a-typedef? function
6970 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
6972 "") inclist="sys/types.h";;
6974 eval "varval=\$$var";
6978 for inc in $inclist; do
6979 echo "#include <$inc>" >>temp.c;
6981 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
6982 if $contains $type temp.E >/dev/null 2>&1; then
6988 *) eval "$var=\$varval";;
6991 : see if this is a sys/times.h system
6992 set sys/times.h i_systimes
6995 : see if times exists
6997 if set times val -f d_times; eval $csym; $val; then
6998 echo 'times() found.' >&4
7001 case "$i_systimes" in
7002 "$define") inc='sys/times.h';;
7004 set clock_t clocktype long stdio.h sys/types.h $inc
7008 rp="What type is returned by times() on this system?"
7012 echo 'times() NOT found, hope that will do.' >&4
7017 : see if truncate exists
7018 set truncate d_truncate
7021 : see if tzname[] exists
7023 if set tzname val -a d_tzname; eval $csym; $val; then
7025 echo 'tzname[] found.' >&4
7028 echo 'tzname[] NOT found.' >&4
7033 : see if umask exists
7037 : see how we will look up host name
7040 : dummy stub to allow use of elif
7041 elif set uname val -f d_uname; eval $csym; $val; then
7044 uname() was found, but you're running xenix, and older versions of xenix
7045 have a broken uname(). If you don't really know whether your xenix is old
7046 enough to have a broken system call, use the default answer.
7053 rp='Is your uname() broken?'
7056 n*) d_uname="$define"; call=uname;;
7059 echo 'uname() found.' >&4
7064 case "$d_gethname" in
7065 '') d_gethname="$undef";;
7068 '') d_uname="$undef";;
7070 case "$d_phostname" in
7071 '') d_phostname="$undef";;
7074 : backward compatibility for d_hvfork
7075 if test X$d_hvfork != X; then
7079 : see if there is a vfork
7084 : Ok, but do we want to use it. vfork is reportedly unreliable in
7085 : perl on Solaris 2.x, and probably elsewhere.
7093 rp="Some systems have problems with vfork(). Do you want to use it?"
7098 echo "Ok, we won't use vfork()."
7107 $define) usevfork='true';;
7108 *) usevfork='false';;
7111 : see if this is an sysdir system
7112 set sys/dir.h i_sysdir
7115 : see if this is an sysndir system
7116 set sys/ndir.h i_sysndir
7119 : see if closedir exists
7120 set closedir d_closedir
7123 case "$d_closedir" in
7126 echo "Checking whether closedir() returns a status..." >&4
7127 cat > closedir.c <<EOM
7128 #$i_dirent I_DIRENT /**/
7129 #$i_sysdir I_SYS_DIR /**/
7130 #$i_sysndir I_SYS_NDIR /**/
7132 #if defined(I_DIRENT)
7134 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
7135 #include <sys/dir.h>
7139 #include <sys/ndir.h>
7143 #include <ndir.h> /* may be wrong in the future */
7145 #include <sys/dir.h>
7150 int main() { return closedir(opendir(".")); }
7152 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
7153 if ./closedir > /dev/null 2>&1 ; then
7154 echo "Yes, it does."
7157 echo "No, it doesn't."
7161 echo "(I can't seem to compile the test program--assuming it doesn't)"
7172 : check for volatile keyword
7174 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
7175 $cat >try.c <<'EOCP'
7178 typedef struct _goo_struct goo_struct;
7179 goo_struct * volatile goo = ((goo_struct *)0);
7180 struct _goo_struct {
7185 typedef unsigned short foo_t;
7188 volatile foo_t blech;
7192 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
7194 echo "Yup, it does."
7197 echo "Nope, it doesn't."
7203 : see if there is a wait4
7207 : see if waitpid exists
7208 set waitpid d_waitpid
7211 : see if wcstombs exists
7212 set wcstombs d_wcstombs
7215 : see if wctomb exists
7219 : preserve RCS keywords in files with variable substitution, grrr
7224 Revision='$Revision'
7226 : check for alignment requirements
7228 case "$alignbytes" in
7229 '') echo "Checking alignment constraints..." >&4
7230 $cat >try.c <<'EOCP'
7237 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
7240 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
7244 echo"(I can't seem to compile the test program...)"
7247 *) dflt="$alignbytes"
7250 rp="Doubles must be aligned on a how-many-byte boundary?"
7255 : Define several unixisms. Hints files or command line options
7256 : can be used to override them.
7269 : Which makefile gets called first. This is used by make depend.
7270 case "$firstmakefile" in
7271 '') firstmakefile='makefile';;
7274 : check for ordering of bytes in a long
7275 case "$byteorder" in
7279 In the following, larger digits indicate more significance. A big-endian
7280 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
7281 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
7282 machines may have weird orders like 3412. A Cray will report 87654321. If
7283 the test program works the default is probably right.
7284 I'm now running the test program...
7286 $cat >try.c <<'EOCP'
7293 char c[sizeof(long)];
7296 if (sizeof(long) > 4)
7297 u.l = (0x08070605L << 32) | 0x04030201L;
7300 for (i = 0; i < sizeof(long); i++)
7301 printf("%c", u.c[i]+'0');
7307 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
7310 [1-4][1-4][1-4][1-4]|12345678|87654321)
7311 echo "(The test program ran ok.)"
7312 echo "byteorder=$dflt"
7315 ????|????????) echo "(The test program ran ok.)" ;;
7316 *) echo "(The test program didn't run right for some reason.)" ;;
7321 (I can't seem to compile the test program. Guessing big-endian...)
7324 case "$xxx_prompt" in
7326 rp="What is the order of bytes in a long?"
7337 : how do we catenate cpp tokens here?
7339 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
7340 $cat >cpp_stuff.c <<'EOCP'
7341 #define RCAT(a,b)a/**/b
7342 #define ACAT(a,b)a ## b
7346 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
7347 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
7348 echo "Oh! Smells like ANSI's been here."
7349 echo "We can catify or stringify, separately or together!"
7351 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
7352 echo "Ah, yes! The good old days!"
7353 echo "However, in the good old days we don't know how to stringify and"
7354 echo "catify at the same time."
7358 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
7359 to have to edit the values of CAT[2-5] in config.h...
7361 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
7365 : see if this is a db.h system
7371 : Check the return type needed for hash
7373 echo "Checking return type needed for hash for Berkeley DB ..." >&4
7379 #include <sys/types.h>
7381 u_int32_t hash_cb (ptr, size)
7389 info.hash = hash_cb;
7392 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7393 if $contains warning try.out >>/dev/null 2>&1 ; then
7396 db_hashtype='u_int32_t'
7399 echo "I can't seem to compile the test program." >&4
7403 echo "Your version of Berkeley DB uses $db_hashtype for hash."
7411 : Check the return type needed for prefix
7413 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
7419 #include <sys/types.h>
7421 size_t prefix_cb (key1, key2)
7429 info.prefix = prefix_cb;
7432 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7433 if $contains warning try.out >>/dev/null 2>&1 ; then
7436 db_prefixtype='size_t'
7439 echo "I can't seem to compile the test program." >&4
7443 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
7445 *) db_prefixtype='int'
7449 : check for void type
7451 echo "Checking to see how well your C compiler groks the void type..." >&4
7454 Support flag bits are:
7455 1: basic void declarations.
7456 2: arrays of pointers to functions returning void.
7457 4: operations between pointers to and addresses of void functions.
7458 8: generic void pointers.
7461 case "$voidflags" in
7463 $cat >try.c <<'EOCP'
7469 extern void moo(); /* function returning void */
7470 void (*goo)(); /* ptr to func returning void */
7472 void *hue; /* generic ptr */
7486 if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
7487 voidflags=$defvoidused
7488 echo "It appears to support void to the level $package wants ($defvoidused)."
7489 if $contains warning .out >/dev/null 2>&1; then
7490 echo "However, you might get some warnings that look like this:"
7494 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
7495 if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then
7496 echo "It supports 1..."
7497 if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then
7498 echo "It also supports 2..."
7499 if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then
7501 echo "And it supports 4 but not 8 definitely."
7503 echo "It doesn't support 4..."
7504 if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then
7506 echo "But it supports 8."
7509 echo "Neither does it support 8."
7513 echo "It does not support 2..."
7514 if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then
7516 echo "But it supports 4 and 8."
7518 if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then
7520 echo "And it supports 4 but has not heard about 8."
7522 echo "However it supports 8 but not 4."
7527 echo "There is no support at all for void."
7532 : Only prompt user if support does not match the level we want
7533 case "$voidflags" in
7537 rp="Your void support flags add up to what?"
7544 : see what type file positions are declared as in the library
7545 set fpos_t fpostype long stdio.h sys/types.h
7549 rp="What is the type for file position used by fsetpos()?"
7553 : Store the full pathname to the sed program for use in the C program
7556 : see what type gids are declared as in the kernel
7557 set gid_t gidtype xxx stdio.h sys/types.h
7561 xxx=`./findhdr sys/user.h`
7562 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
7564 unsigned) dflt="$1 $2" ;;
7568 *) dflt="$gidtype";;
7571 rp="What is the type for group ids returned by getgid()?"
7575 : see if getgroups exists
7576 set getgroups d_getgrps
7579 : Find type of 2nd arg to getgroups
7581 case "$d_getgrps" in
7583 case "$groupstype" in
7584 '') dflt="$gidtype" ;;
7585 *) dflt="$groupstype" ;;
7588 What is the type of the second argument to getgroups()? Usually this
7589 is the same as group ids, $gidtype, but not always.
7592 rp='What type is the second argument to getgroups()?'
7596 *) groupstype="$gidtype";;
7599 : see what type lseek is declared as in the kernel
7600 set off_t lseektype long stdio.h sys/types.h
7604 rp="What type is lseek's offset on this system declared as?"
7608 : see what type is used for mode_t
7609 set mode_t modetype int stdio.h sys/types.h
7613 rp="What type is used for file modes?"
7617 : locate the preferred pager for this system
7631 '') dflt=/usr/ucb/more;;
7638 rp='What pager is used on your system?'
7642 : Cruising for prototypes
7644 echo "Checking out function prototypes..." >&4
7645 $cat >prototype.c <<'EOCP'
7646 main(int argc, char *argv[]) {
7649 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7650 echo "Your C compiler appears to support function prototypes."
7653 echo "Your C compiler doesn't seem to understand function prototypes."
7660 : check for size of random number generator
7664 echo "Checking to see how many bits your rand function produces..." >&4
7665 $cat >try.c <<'EOCP'
7670 register unsigned long tmp;
7671 register unsigned long max = 0L;
7673 for (i = 1000; i; i--) {
7674 tmp = (unsigned long)rand();
7675 if (tmp > max) max = tmp;
7677 for (i = 0; max; i++)
7682 if $cc try.c -o try >/dev/null 2>&1 ; then
7686 echo "(I can't seem to compile the test program...)"
7693 rp='How many bits does your rand() function produce?'
7698 : see if ar generates random libraries by itself
7700 echo "Checking how to generate random libraries on your machine..." >&4
7701 echo 'int bar1() { return bar2(); }' > bar1.c
7702 echo 'int bar2() { return 2; }' > bar2.c
7703 $cat > foo.c <<'EOP'
7704 main() { printf("%d\n", bar1()); exit(0); }
7706 $cc $ccflags -c bar1.c >/dev/null 2>&1
7707 $cc $ccflags -c bar2.c >/dev/null 2>&1
7708 $cc $ccflags -c foo.c >/dev/null 2>&1
7709 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
7710 if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7711 ./foobar >/dev/null 2>&1; then
7712 echo "ar appears to generate random libraries itself."
7715 elif ar ts bar.a >/dev/null 2>&1 &&
7716 $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7717 ./foobar >/dev/null 2>&1; then
7718 echo "a table of contents needs to be added with 'ar ts'."
7725 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
7726 $test -f $ranlib || ranlib=''
7729 if $test -n "$ranlib"; then
7730 echo "your system has '$ranlib'; we'll use that."
7733 echo "your system doesn't seem to support random libraries"
7734 echo "so we'll use lorder and tsort to order the libraries."
7741 : see if sys/select.h has to be included
7742 set sys/select.h i_sysselct
7745 : see if we should include time.h, sys/time.h, or both
7747 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7748 $echo $n "I'm now running the test program...$c"
7749 $cat >try.c <<'EOCP'
7750 #include <sys/types.h>
7755 #ifdef SYSTIMEKERNEL
7758 #include <sys/time.h>
7761 #include <sys/select.h>
7770 struct timezone tzp;
7772 if (foo.tm_sec == foo.tm_sec)
7775 if (bar.tv_sec == bar.tv_sec)
7782 for s_timezone in '-DS_TIMEZONE' ''; do
7784 for s_timeval in '-DS_TIMEVAL' ''; do
7785 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7786 for i_time in '' '-DI_TIME'; do
7787 for i_systime in '-DI_SYSTIME' ''; do
7791 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
7792 try.c -o try >/dev/null 2>&1 ; then
7793 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7797 $echo $n "Succeeded with $flags$c"
7809 *SYSTIMEKERNEL*) i_systimek="$define"
7810 timeincl=`./findhdr sys/time.h`
7811 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7812 *) i_systimek="$undef";;
7815 *I_TIME*) i_time="$define"
7816 timeincl=`./findhdr time.h`" $timeincl"
7817 echo "We'll include <time.h>." >&4;;
7818 *) i_time="$undef";;
7821 *I_SYSTIME*) i_systime="$define"
7822 timeincl=`./findhdr sys/time.h`" $timeincl"
7823 echo "We'll include <sys/time.h>." >&4;;
7824 *) i_systime="$undef";;
7828 : check for fd_set items
7831 Checking to see how well your C compiler handles fd_set and friends ...
7833 $cat >fd_set.c <<EOCP
7834 #$i_systime I_SYS_TIME
7835 #$i_sysselct I_SYS_SELECT
7836 #$d_socket HAS_SOCKET
7837 #include <sys/types.h>
7839 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7842 #include <sys/time.h>
7845 #include <sys/select.h>
7855 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7862 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7863 d_fds_bits="$define"
7865 echo "Well, your system knows about the normal fd_set typedef..." >&4
7867 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7868 d_fd_macros="$define"
7871 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7873 d_fd_macros="$undef"
7877 Hmm, your compiler has some difficulty with fd_set. Checking further...
7879 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7882 echo "Well, your system has some sort of fd_set available..." >&4
7884 echo "and you have the normal fd_set macros." >&4
7885 d_fd_macros="$define"
7888 but not the normal fd_set macros! Gross! More work for me...
7890 d_fd_macros="$undef"
7893 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7896 d_fd_macros="$undef"
7902 : check for type of arguments to select. This will only really
7903 : work if the system supports prototypes and provides one for
7907 : Make initial guess
7908 case "$selecttype" in
7911 $define) xxx='fd_set *' ;;
7915 *) xxx="$selecttype"
7920 'fd_set *') yyy='int *' ;;
7921 'int *') yyy='fd_set *' ;;
7926 Checking to see what type of arguments are expected by select().
7929 #$i_systime I_SYS_TIME
7930 #$i_sysselct I_SYS_SELECT
7931 #$d_socket HAS_SOCKET
7932 #include <sys/types.h>
7934 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7937 #include <sys/time.h>
7940 #include <sys/select.h>
7946 Select_fd_set_t readfds;
7947 Select_fd_set_t writefds;
7948 Select_fd_set_t exceptfds;
7949 struct timeval timeout;
7950 select(width, readfds, writefds, exceptfds, &timeout);
7954 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
7956 echo "Your system uses $xxx for the arguments to select." >&4
7957 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
7959 echo "Your system uses $yyy for the arguments to select." >&4
7961 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
7968 *) selecttype='int *'
7972 : Trace out the files included by signal.h, then look for SIGxxx names.
7973 : Remove SIGARRAYSIZE used by HPUX.
7974 : Remove SIGTYP void lines used by OS2.
7975 xxx=`echo '#include <signal.h>' |
7976 $cppstdin $cppminus $cppflags 2>/dev/null |
7977 $grep '^[ ]*#.*include' |
7978 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
7979 : Check this list of files to be sure we have parsed the cpp output ok.
7980 : This will also avoid potentially non-existent files, such
7983 for xx in $xxx /dev/null ; do
7984 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
7986 : If we have found no files, at least try signal.h
7988 '') xxxfiles=`./findhdr signal.h` ;;
7991 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
7992 print substr($2, 4, 20)
7994 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
7995 print substr($3, 4, 20)
7997 : Append some common names just in case the awk scan failed.
7998 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
7999 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
8000 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
8001 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
8002 : generate a few handy files for later
8003 $cat > signal.c <<'EOP'
8004 #include <sys/types.h>
8008 printf("NSIG %d\n", NSIG);
8011 printf("NSIG %d\n", _NSIG);
8015 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
8017 printf "#ifdef SIG"; printf $1; printf "\n"
8018 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
8019 printf $1; printf ");\n"
8026 $cat >signal.awk <<'EOP'
8028 $1 ~ /^NSIG$/ { nsig = $2 }
8029 ($1 !~ /^NSIG$/) && (NF == 2) {
8030 if ($2 > maxsig) { maxsig = $2 }
8032 dup_name[ndups] = $1
8043 if (nsig == 0) { nsig = maxsig + 1 }
8044 for (n = 1; n < nsig; n++) {
8046 printf("%s %d\n", sig_name[n], sig_num[n])
8049 printf("NUM%d %d\n", n, n)
8052 for (n = 0; n < ndups; n++) {
8053 printf("%s %d\n", dup_name[n], dup_num[n])
8057 $cat >signal_cmd <<EOS
8059 $test -s signal.lst && exit 0
8060 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
8061 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8063 echo "(I can't seem be able to compile the test program -- Guessing)"
8064 echo 'kill -l' >signal
8065 set X \`csh -f <signal\`
8069 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
8071 echo \$@ | $tr ' ' '\012' | \
8072 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
8074 $rm -f signal.c signal signal.o
8076 chmod a+x signal_cmd
8077 $eunicefix signal_cmd
8079 : generate list of signal names
8089 echo "Generating a list of signal names and numbers..." >&4
8091 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
8092 sig_name="ZERO $sig_name"
8093 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
8094 sig_num="0 $sig_num"
8097 echo "The following signals are available:"
8099 echo $sig_name | $awk \
8100 'BEGIN { linelen = 0 }
8102 for (i = 1; i <= NF; i++) {
8104 linelen = linelen + length(name)
8107 linelen = length(name)
8113 $rm -f signal signal.c signal.awk signal.lst signal_cmd
8115 : see what type is used for size_t
8116 set size_t sizetype 'unsigned int' stdio.h sys/types.h
8120 rp="What type is used for the length parameter for string functions?"
8124 : see what type is used for signed size_t
8125 set ssize_t ssizetype int stdio.h sys/types.h
8128 $cat > ssize.c <<EOM
8130 #include <sys/types.h>
8131 #define Size_t $sizetype
8132 #define SSize_t $dflt
8135 if (sizeof(Size_t) == sizeof(SSize_t))
8137 else if (sizeof(Size_t) == sizeof(int))
8144 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then
8146 echo "I'll be using $ssizetype for functions returning a byte count." >&4
8148 echo "(I can't compile the test program--please enlighten me!)"
8151 I need a type that is the same size as $sizetype, but is guaranteed to
8152 be signed. Common values are int and long.
8155 rp="What signed type is the same size as $sizetype?"
8159 $rm -f ssize ssize.[co]
8161 : see what type of char stdio uses.
8163 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
8164 echo "Your stdio uses unsigned chars." >&4
8165 stdchar="unsigned char"
8167 echo "Your stdio uses signed chars." >&4
8171 : see if time exists
8173 if set time val -f d_time; eval $csym; $val; then
8174 echo 'time() found.' >&4
8176 set time_t timetype long stdio.h sys/types.h
8180 rp="What type is returned by time() on this system?"
8184 echo 'time() not found, hope that will do.' >&4
8191 : see what type uids are declared as in the kernel
8192 set uid_t uidtype xxx stdio.h sys/types.h
8196 xxx=`./findhdr sys/user.h`
8197 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
8199 unsigned) dflt="$1 $2" ;;
8203 *) dflt="$uidtype";;
8206 rp="What is the type for user ids returned by getuid()?"
8210 : see if dbm.h is available
8211 : see if dbmclose exists
8212 set dbmclose d_dbmclose
8215 case "$d_dbmclose" in
8225 *) set rpcsvc/dbm.h i_rpcsvcdbm
8230 *) echo "We won't be including <dbm.h>"
8240 : see if this is a sys/file.h system
8245 : do we need to include sys/file.h ?
8251 echo "We'll be including <sys/file.h>." >&4
8254 echo "We won't be including <sys/file.h>." >&4
8264 : see if fcntl.h is there
8269 : see if we can include fcntl.h
8275 echo "We'll be including <fcntl.h>." >&4
8279 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
8281 echo "We won't be including <fcntl.h>." >&4
8293 : see if this is an grp system
8297 : see if locale.h is available
8298 set locale.h i_locale
8301 : see if this is a math.h system
8305 : see if memory.h is available.
8310 : See if it conflicts with string.h
8316 $cppstdin $cppflags $cppminus < $strings > mem.h
8317 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8319 echo "We won't be including <memory.h>."
8329 : see if ndbm.h is available
8334 : see if dbm_open exists
8335 set dbm_open d_dbm_open
8337 case "$d_dbm_open" in
8340 echo "We won't be including <ndbm.h>"
8349 : see if net/errno.h is available
8354 : Unfortunately, it causes problems on some systems. Arrgh.
8360 #include <net/errno.h>
8366 if $cc $ccflags -c try.c >/dev/null 2>&1; then
8367 echo "We'll be including <net/errno.h>." >&4
8369 echo "We won't be including <net/errno.h>." >&4
8378 : get C preprocessor symbols handy
8380 $echo $n "Hmm... $c"
8381 echo $al | $tr ' ' '\012' >Cppsym.know
8393 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
8395 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
8398 unknown="\$unknown \$sym"
8408 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
8410 exit 0; _ _ _ _\1\\ \1\\
8413 echo "exit 1; _ _ _" >>Cppsym\$\$
8414 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
8416 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
8422 $rm -f Cppsym\$\$ Cppsym2\$\$
8427 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
8429 : now check the C compiler for additional symbols
8435 for i in \`$cc -v -c tmp.c 2>&1\`
8438 -D*) echo "\$i" | $sed 's/^-D//';;
8439 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
8446 ./ccsym | $sort | $uniq >ccsym.raw
8447 $awk '/\=/ { print $0; next }
8448 { print $0"=1" }' ccsym.raw >ccsym.list
8449 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
8450 $comm -13 ccsym.true ccsym.list >ccsym.own
8451 $comm -12 ccsym.true ccsym.list >ccsym.com
8452 $comm -23 ccsym.true ccsym.list >ccsym.cpp
8455 if $test -z ccsym.raw; then
8456 echo "Your C compiler doesn't seem to define any symbol!" >&4
8458 echo "However, your C preprocessor defines the following ones:"
8461 if $test -s ccsym.com; then
8462 echo "Your C compiler and pre-processor define these symbols:"
8463 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
8466 $test "$silent" || sleep 1
8468 if $test -s ccsym.cpp; then
8469 $test "$also" && echo " "
8470 echo "Your C pre-processor ${also}defines the following $symbols:"
8471 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
8473 $test "$silent" || sleep 1
8475 if $test -s ccsym.own; then
8476 $test "$also" && echo " "
8477 echo "Your C compiler ${also}defines the following cpp variables:"
8478 $sed -e 's/\(.*\)=1/\1/' ccsym.own
8479 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
8480 $test "$silent" || sleep 1
8485 : see if this is a termio system
8489 if $test `./findhdr termios.h`; then
8490 set tcsetattr i_termios
8496 "$define") echo "You have POSIX termios.h... good!" >&4;;
8497 *) if ./Cppsym pyr; then
8498 case "`/bin/universe`" in
8499 ucb) if $test `./findhdr sgtty.h`; then
8501 echo "<sgtty.h> found." >&4
8503 echo "System is pyramid with BSD universe."
8504 echo "<sgtty.h> not found--you could have problems." >&4
8506 *) if $test `./findhdr termio.h`; then
8508 echo "<termio.h> found." >&4
8510 echo "System is pyramid with USG universe."
8511 echo "<termio.h> not found--you could have problems." >&4
8515 if $test `./findhdr termio.h`; then
8516 echo "<termio.h> found." >&4
8518 elif $test `./findhdr sgtty.h`; then
8519 echo "<sgtty.h> found." >&4
8522 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
8525 if $test `./findhdr sgtty.h`; then
8526 echo "<sgtty.h> found." >&4
8528 elif $test `./findhdr termio.h`; then
8529 echo "<termio.h> found." >&4
8532 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
8536 set i_termio; eval $setvar
8537 val=$val2; set i_sgtty; eval $setvar
8538 val=$val3; set i_termios; eval $setvar
8540 : see if stdarg is available
8542 if $test `./findhdr stdarg.h`; then
8543 echo "<stdarg.h> found." >&4
8546 echo "<stdarg.h> NOT found." >&4
8550 : see if varags is available
8552 if $test `./findhdr varargs.h`; then
8553 echo "<varargs.h> found." >&4
8555 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
8558 : set up the varargs testing programs
8559 $cat > varargs.c <<EOP
8564 #include <varargs.h>
8582 p = va_arg(ap, char *);
8587 $cat > varargs <<EOP
8589 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
8598 : now check which varargs header should be included
8603 if `./varargs I_STDARG`; then
8605 elif `./varargs I_VARARGS`; then
8610 if `./varargs I_VARARGS`; then
8617 echo "I could not find the definition for va_dcl... You have problems..." >&4
8618 val="$undef"; set i_stdarg; eval $setvar
8619 val="$undef"; set i_varargs; eval $setvar
8626 val="$define"; set i_stdarg; eval $setvar
8627 val="$undef"; set i_varargs; eval $setvar
8630 val="$undef"; set i_stdarg; eval $setvar
8631 val="$define"; set i_varargs; eval $setvar
8634 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
8638 : see if stddef is available
8639 set stddef.h i_stddef
8642 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
8643 set sys/filio.h i_sysfilio
8646 if $test `./findhdr sys/ioctl.h`; then
8648 echo '<sys/ioctl.h> found.' >&4
8651 if $test $i_sysfilio = "$define"; then
8652 echo '<sys/ioctl.h> NOT found.' >&4
8654 $test $i_sgtty = "$define" && xxx="sgtty.h"
8655 $test $i_termio = "$define" && xxx="termio.h"
8656 $test $i_termios = "$define" && xxx="termios.h"
8657 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
8663 : see if this is a sys/param system
8664 set sys/param.h i_sysparam
8667 : see if sys/stat.h is available
8668 set sys/stat.h i_sysstat
8671 : see if sys/types.h has to be included
8672 set sys/types.h i_systypes
8675 : see if this is a sys/un.h system
8676 set sys/un.h i_sysun
8679 : see if this is a unistd.h system
8680 set unistd.h i_unistd
8683 : see if this is an utime system
8687 : see if this is a vfork system
8698 : see if gdbm.h is available
8703 : see if gdbm_open exists
8704 set gdbm_open d_gdbm_open
8706 case "$d_gdbm_open" in
8709 echo "We won't be including <gdbm.h>"
8719 echo "Looking for extensions..." >&4
8721 : If we are using the old config.sh, known_extensions may contain
8722 : old or inaccurate or duplicate values.
8724 : We do not use find because it might not be available.
8725 : We do not just use MANIFEST because the user may have dropped
8726 : some additional extensions into the source tree and expect them
8729 if $test -f $xxx/$xxx.xs; then
8730 known_extensions="$known_extensions $xxx"
8732 if $test -d $xxx; then
8735 if $test -f $yyy/$yyy.xs; then
8736 known_extensions="$known_extensions $xxx/$yyy"
8743 set X $known_extensions
8745 known_extensions="$*"
8748 : Now see which are supported on this system.
8750 for xxx in $known_extensions ; do
8752 DB_File) case "$i_db" in
8753 $define) avail_ext="$avail_ext $xxx" ;;
8756 GDBM_File) case "$i_gdbm" in
8757 $define) avail_ext="$avail_ext $xxx" ;;
8760 NDBM_File) case "$i_ndbm" in
8761 $define) avail_ext="$avail_ext $xxx" ;;
8764 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
8765 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
8768 POSIX) case "$useposix" in
8769 true|define|y) avail_ext="$avail_ext $xxx" ;;
8772 SAFE) case "$usesafe" in
8773 true|define|y) avail_ext="$avail_ext $xxx" ;;
8776 Socket) case "$d_socket" in
8777 $define) avail_ext="$avail_ext $xxx" ;;
8780 *) avail_ext="$avail_ext $xxx"
8792 A number of extensions are supplied with $package. You may choose to
8793 compile these extensions for dynamic loading (the default), compile
8794 them into the $package executable (static loading), or not include
8795 them at all. Answer "none" to include no extensions.
8798 case "$dynamic_ext" in
8799 '') dflt="$avail_ext" ;;
8800 *) dflt="$dynamic_ext" ;;
8805 rp="What extensions do you wish to load dynamically?"
8808 none) dynamic_ext=' ' ;;
8809 *) dynamic_ext="$ans" ;;
8812 case "$static_ext" in
8814 : Exclude those already listed in dynamic linking
8816 for xxx in $avail_ext; do
8817 case " $dynamic_ext " in
8819 *) dflt="$dflt $xxx" ;;
8826 *) dflt="$static_ext"
8833 rp="What extensions do you wish to load statically?"
8836 none) static_ext=' ' ;;
8837 *) static_ext="$ans" ;;
8842 A number of extensions are supplied with $package. Answer "none"
8843 to include no extensions.
8846 case "$static_ext" in
8847 '') dflt="$avail_ext" ;;
8848 *) dflt="$static_ext" ;;
8854 rp="What extensions do you wish to include?"
8857 none) static_ext=' ' ;;
8858 *) static_ext="$ans" ;;
8863 set X $dynamic_ext $static_ext
8867 : Remove build directory name from cppstdin so it can be used from
8868 : either the present location or the final installed location.
8870 : Get out of the UU directory to get correct path name.
8874 echo "Stripping down cppstdin path name"
8880 : end of configuration questions
8882 echo "End of configuration questions."
8885 : back to where it started
8886 if test -d ../UU; then
8890 : configuration may be patched via a 'config.over' file
8891 if $test -f config.over; then
8894 rp='I see a config.over file. Do you wish to load it?'
8897 n*) echo "OK, I'll ignore it.";;
8899 echo "Configuration override changes have been loaded."
8904 : in case they want portability, strip down executable paths
8905 case "$d_portable" in
8908 echo "Stripping down executable paths..." >&4
8909 for file in $loclist $trylist; do
8915 : create config.sh file
8917 echo "Creating config.sh..." >&4
8918 $spitshell <<EOT >config.sh
8921 # This file was produced by running the Configure script. It holds all the
8922 # definitions figured out by Configure. Should you modify one of these values,
8923 # do not forget to propagate your changes by running "Configure -der". You may
8924 # instead choose to run each of the .SH files by yourself, or "Configure -S".
8927 # Configuration time: $cf_time
8928 # Configured by: $cf_by
8929 # Target system: $myuname
8939 Revision='$Revision'
8943 alignbytes='$alignbytes'
8944 aphostname='$aphostname'
8947 archlibexp='$archlibexp'
8948 archname='$archname'
8949 archobjs='$archobjs'
8957 byteorder='$byteorder'
8959 castflags='$castflags'
8962 cccdlflags='$cccdlflags'
8963 ccdlflags='$ccdlflags'
8966 cf_email='$cf_email'
8971 clocktype='$clocktype'
8973 compress='$compress'
8974 contains='$contains'
8978 cpp_stuff='$cpp_stuff'
8979 cppflags='$cppflags'
8981 cppminus='$cppminus'
8983 cppstdin='$cppstdin'
8984 cryptlib='$cryptlib'
8986 d_Gconvert='$d_Gconvert'
8987 d_access='$d_access'
8989 d_archlib='$d_archlib'
8990 d_attribut='$d_attribut'
8994 d_bsdpgrp='$d_bsdpgrp'
8996 d_casti32='$d_casti32'
8997 d_castneg='$d_castneg'
8998 d_charvspr='$d_charvspr'
9000 d_chroot='$d_chroot'
9001 d_chsize='$d_chsize'
9002 d_closedir='$d_closedir'
9006 d_cuserid='$d_cuserid'
9007 d_dbl_dig='$d_dbl_dig'
9008 d_difftime='$d_difftime'
9009 d_dirnamlen='$d_dirnamlen'
9010 d_dlerror='$d_dlerror'
9011 d_dlopen='$d_dlopen'
9012 d_dlsymun='$d_dlsymun'
9013 d_dosuid='$d_dosuid'
9015 d_eofnblk='$d_eofnblk'
9016 d_eunice='$d_eunice'
9017 d_fchmod='$d_fchmod'
9018 d_fchown='$d_fchown'
9020 d_fd_macros='$d_fd_macros'
9021 d_fd_set='$d_fd_set'
9022 d_fds_bits='$d_fds_bits'
9023 d_fgetpos='$d_fgetpos'
9024 d_flexfnam='$d_flexfnam'
9027 d_fpathconf='$d_fpathconf'
9028 d_fsetpos='$d_fsetpos'
9029 d_getgrps='$d_getgrps'
9030 d_gethent='$d_gethent'
9031 d_gethname='$d_gethname'
9032 d_getlogin='$d_getlogin'
9033 d_getpgrp2='$d_getpgrp2'
9034 d_getpgrp='$d_getpgrp'
9035 d_getppid='$d_getppid'
9036 d_getprior='$d_getprior'
9039 d_isascii='$d_isascii'
9040 d_killpg='$d_killpg'
9042 d_locconv='$d_locconv'
9046 d_mbstowcs='$d_mbstowcs'
9047 d_mbtowc='$d_mbtowc'
9048 d_memcmp='$d_memcmp'
9049 d_memcpy='$d_memcpy'
9050 d_memmove='$d_memmove'
9051 d_memset='$d_memset'
9053 d_mkfifo='$d_mkfifo'
9054 d_mktime='$d_mktime'
9056 d_msgctl='$d_msgctl'
9057 d_msgget='$d_msgget'
9058 d_msgrcv='$d_msgrcv'
9059 d_msgsnd='$d_msgsnd'
9060 d_mymalloc='$d_mymalloc'
9062 d_oldarchlib='$d_oldarchlib'
9063 d_oldsock='$d_oldsock'
9065 d_pathconf='$d_pathconf'
9067 d_phostname='$d_phostname'
9070 d_portable='$d_portable'
9072 d_pwchange='$d_pwchange'
9073 d_pwclass='$d_pwclass'
9074 d_pwcomment='$d_pwcomment'
9075 d_pwexpire='$d_pwexpire'
9076 d_pwquota='$d_pwquota'
9077 d_readdir='$d_readdir'
9078 d_readlink='$d_readlink'
9079 d_rename='$d_rename'
9080 d_rewinddir='$d_rewinddir'
9082 d_safebcpy='$d_safebcpy'
9083 d_safemcpy='$d_safemcpy'
9084 d_seekdir='$d_seekdir'
9085 d_select='$d_select'
9087 d_semctl='$d_semctl'
9088 d_semget='$d_semget'
9090 d_setegid='$d_setegid'
9091 d_seteuid='$d_seteuid'
9092 d_setlinebuf='$d_setlinebuf'
9093 d_setlocale='$d_setlocale'
9094 d_setpgid='$d_setpgid'
9095 d_setpgrp2='$d_setpgrp2'
9096 d_setpgrp='$d_setpgrp'
9097 d_setprior='$d_setprior'
9098 d_setregid='$d_setregid'
9099 d_setresgid='$d_setresgid'
9100 d_setresuid='$d_setresuid'
9101 d_setreuid='$d_setreuid'
9102 d_setrgid='$d_setrgid'
9103 d_setruid='$d_setruid'
9104 d_setsid='$d_setsid'
9107 d_shmatprototype='$d_shmatprototype'
9108 d_shmctl='$d_shmctl'
9110 d_shmget='$d_shmget'
9111 d_shrplib='$d_shrplib'
9112 d_sigaction='$d_sigaction'
9113 d_sigintrp='$d_sigintrp'
9114 d_sigsetjmp='$d_sigsetjmp'
9115 d_sigvec='$d_sigvec'
9116 d_sigvectr='$d_sigvectr'
9117 d_socket='$d_socket'
9118 d_sockpair='$d_sockpair'
9119 d_statblks='$d_statblks'
9120 d_stdio_cnt_lval='$d_stdio_cnt_lval'
9121 d_stdio_ptr_lval='$d_stdio_ptr_lval'
9122 d_stdiobase='$d_stdiobase'
9123 d_stdstdio='$d_stdstdio'
9124 d_strchr='$d_strchr'
9125 d_strcoll='$d_strcoll'
9126 d_strctcpy='$d_strctcpy'
9127 d_strerrm='$d_strerrm'
9128 d_strerror='$d_strerror'
9129 d_strxfrm='$d_strxfrm'
9130 d_suidsafe='$d_suidsafe'
9131 d_symlink='$d_symlink'
9132 d_syscall='$d_syscall'
9133 d_sysconf='$d_sysconf'
9134 d_sysernlst='$d_sysernlst'
9135 d_syserrlst='$d_syserrlst'
9136 d_system='$d_system'
9137 d_tcgetpgrp='$d_tcgetpgrp'
9138 d_tcsetpgrp='$d_tcsetpgrp'
9139 d_telldir='$d_telldir'
9142 d_truncate='$d_truncate'
9143 d_tzname='$d_tzname'
9147 d_void_closedir='$d_void_closedir'
9148 d_voidsig='$d_voidsig'
9149 d_voidtty='$d_voidtty'
9150 d_volatile='$d_volatile'
9151 d_vprintf='$d_vprintf'
9153 d_waitpid='$d_waitpid'
9154 d_wcstombs='$d_wcstombs'
9155 d_wctomb='$d_wctomb'
9158 db_hashtype='$db_hashtype'
9159 db_prefixtype='$db_prefixtype'
9160 defvoidused='$defvoidused'
9161 direntrytype='$direntrytype'
9164 dynamic_ext='$dynamic_ext'
9169 eunicefix='$eunicefix'
9172 extensions='$extensions'
9174 firstmakefile='$firstmakefile'
9176 fpostype='$fpostype'
9177 freetype='$freetype'
9178 full_csh='$full_csh'
9179 full_sed='$full_sed'
9181 gccversion='$gccversion'
9185 groupcat='$groupcat'
9186 groupstype='$groupstype'
9188 h_sysfile='$h_sysfile'
9192 i_bsdioctl='$i_bsdioctl'
9195 i_dirent='$i_dirent'
9202 i_limits='$i_limits'
9203 i_locale='$i_locale'
9204 i_malloc='$i_malloc'
9206 i_memory='$i_memory'
9208 i_neterrno='$i_neterrno'
9211 i_rpcsvcdbm='$i_rpcsvcdbm'
9213 i_stdarg='$i_stdarg'
9214 i_stddef='$i_stddef'
9215 i_stdlib='$i_stdlib'
9216 i_string='$i_string'
9217 i_sysdir='$i_sysdir'
9218 i_sysfile='$i_sysfile'
9219 i_sysfilio='$i_sysfilio'
9221 i_sysioctl='$i_sysioctl'
9222 i_sysndir='$i_sysndir'
9223 i_sysparam='$i_sysparam'
9224 i_sysselct='$i_sysselct'
9225 i_syssockio='$i_syssockio'
9226 i_sysstat='$i_sysstat'
9227 i_systime='$i_systime'
9228 i_systimek='$i_systimek'
9229 i_systimes='$i_systimes'
9230 i_systypes='$i_systypes'
9232 i_termio='$i_termio'
9233 i_termios='$i_termios'
9235 i_unistd='$i_unistd'
9237 i_varargs='$i_varargs'
9238 i_varhdr='$i_varhdr'
9242 installarchlib='$installarchlib'
9243 installbin='$installbin'
9244 installman1dir='$installman1dir'
9245 installman3dir='$installman3dir'
9246 installprivlib='$installprivlib'
9247 installscript='$installscript'
9248 installsitearch='$installsitearch'
9249 installsitelib='$installsitelib'
9251 known_extensions='$known_extensions'
9255 lddlflags='$lddlflags'
9262 libswanted='$libswanted'
9268 locincpth='$locincpth'
9269 loclibpth='$loclibpth'
9273 lseektype='$lseektype'
9278 mallocobj='$mallocobj'
9279 mallocsrc='$mallocsrc'
9280 malloctype='$malloctype'
9282 man1direxp='$man1direxp'
9285 man3direxp='$man3direxp'
9289 mips_type='$mips_type'
9292 modetype='$modetype'
9295 myarchname='$myarchname'
9296 mydomain='$mydomain'
9297 myhostname='$myhostname'
9301 nm_so_opt='$nm_so_opt'
9303 o_nonblock='$o_nonblock'
9305 oldarchlib='$oldarchlib'
9306 oldarchlibexp='$oldarchlibexp'
9307 optimize='$optimize'
9308 orderlib='$orderlib'
9314 patchlevel='$patchlevel'
9315 path_sep='$path_sep'
9317 perladmin='$perladmin'
9318 perlpath='$perlpath'
9320 phostname='$phostname'
9325 prefixexp='$prefixexp'
9327 privlibexp='$privlibexp'
9328 prototype='$prototype'
9329 randbits='$randbits'
9331 rd_nodata='$rd_nodata'
9335 scriptdir='$scriptdir'
9336 scriptdirexp='$scriptdirexp'
9338 selecttype='$selecttype'
9339 sendmail='$sendmail'
9342 sharpbang='$sharpbang'
9343 shmattype='$shmattype'
9346 sig_name='$sig_name'
9348 signal_t='$signal_t'
9349 sitearch='$sitearch'
9350 sitearchexp='$sitearchexp'
9352 sitelibexp='$sitelibexp'
9353 sizetype='$sizetype'
9358 sockethdr='$sockethdr'
9359 socketlib='$socketlib'
9361 spackage='$spackage'
9362 spitshell='$spitshell'
9364 ssizetype='$ssizetype'
9365 startperl='$startperl'
9367 static_ext='$static_ext'
9369 stdio_base='$stdio_base'
9370 stdio_bufsiz='$stdio_bufsiz'
9371 stdio_cnt='$stdio_cnt'
9372 stdio_ptr='$stdio_ptr'
9375 subversion='$subversion'
9381 timeincl='$timeincl'
9382 timetype='$timetype'
9390 usemymalloc='$usemymalloc'
9392 useposix='$useposix'
9394 usevfork='$usevfork'
9398 voidflags='$voidflags'
9403 : add special variables
9404 $test -f patchlevel.h && \
9405 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
9406 echo "CONFIG=true" >>config.sh
9408 : propagate old symbols
9409 if $test -f UU/config.sh; then
9410 <UU/config.sh sort | uniq >UU/oldconfig.sh
9411 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
9412 sort | uniq -u >UU/oldsyms
9413 set X `cat UU/oldsyms`
9419 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
9421 echo "# Variables propagated from previous config.sh file." >>config.sh
9422 for sym in `cat UU/oldsyms`; do
9423 echo " Propagating $hint variable "'$'"$sym..."
9424 eval 'tmp="$'"${sym}"'"'
9426 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
9432 : Finish up by extracting the .SH files
9446 If you'd like to make any changes to the config.sh file before I begin
9447 to configure things, do it as a shell escape now (e.g. !vi config.sh).
9450 rp="Press return or use a shell escape to edit config.sh:"
9455 *) : in case they cannot read
9461 : if this fails, just run all the .SH files by hand
9468 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
9475 Now you need to generate make dependencies by running "make depend".
9476 You might prefer to run it in background: "make depend > makedepend.out &"
9477 It can take a while, so you might not want to run it right now.
9482 rp="Run make depend now?"
9486 make depend && echo "Now you must run a make."
9489 echo "You must run 'make depend' then 'make'."
9492 elif test -f [Mm]akefile; then
9494 echo "Now you must run a make."
9499 $rm -f kit*isdone ark*isdone