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
591 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
594 : We must find out about Eunice early
596 if test -f /etc/unixtovms; then
597 eunicefix=/etc/unixtovms
599 if test -f /etc/unixtovms.exe; then
600 eunicefix=/etc/unixtovms.exe
603 : list of known cpp symbols, sorted alphabetically
604 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
605 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
606 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
607 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
608 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
609 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
610 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
611 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
612 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
613 al="$al VMS Xenix286"
614 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
615 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
616 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
617 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
618 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
619 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
620 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
621 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
622 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
623 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
624 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
625 al="$al __SVR4_2__ __UMAXV__"
626 al="$al ____386BSD____ __alpha __alpha__ __amiga"
627 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
628 al="$al __host_mips__"
629 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
630 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
631 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
632 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
633 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
634 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
635 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
636 al="$al __mc88100 __mc88100__ __mips __mips__"
637 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
638 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
639 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
640 al="$al _host_mips _mips _unix"
641 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
642 al="$al apollo ardent att386 att3b"
643 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
644 al="$al cadmus clipper concurrent convex cray ctix"
645 al="$al dmert encore gcos gcx gimpel gould"
646 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
647 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
648 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
649 al="$al i186 i286 i386 i486 i8086"
650 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
651 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
652 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
653 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
654 al="$al mc88000 mc88100 merlin mert mips mvs n16"
655 al="$al ncl_el ncl_mr"
656 al="$al news1500 news1700 news1800 news1900 news3700"
657 al="$al news700 news800 news900 ns16000 ns32000"
658 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
659 al="$al parisc pc532 pdp11 plexus posix pyr"
660 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
661 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
662 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
663 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
664 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
665 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
670 : default library list
672 : set useposix=false in your hint file to disable the POSIX extension.
674 : set usesafe=false in your hint if you want to skip the Safe extension.
676 : Define several unixisms. These can be used in hint files.
678 : Extra object files, if any, needed on this platform.
680 : Possible local include directories to search.
681 : Set locincpth to "" in a hint file to defeat local include searches.
682 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
683 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
685 : no include file wanted by default
688 : change the next line if compiling for Xenix/286 on Xenix/386
689 xlibpth='/usr/lib/386 /lib/386'
691 : Possible local library directories to search.
692 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
693 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
695 : general looking path for locating libraries
696 glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib"
697 glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small"
698 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib"
700 : Private path used by Configure to find libraries. Its value
701 : is prepended to libpth. This variable takes care of special
702 : machines, like the mips. Usually, it should be empty.
705 : full support for void wanted by default
708 : List of libraries we want.
709 libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
710 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
711 libswanted="$libswanted ucb bsd BSD PW x"
712 : We probably want to search /usr/shlib before most other libraries.
713 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
714 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
715 glibpth="/usr/shlib $glibpth"
716 : Do not use vfork unless overridden by a hint file.
719 : script used to extract .SH files with variable substitutions
722 echo "Doing variable substitutions on .SH files..."
723 if test -f MANIFEST; then
724 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
725 : Pick up possible extension manifests.
726 for dir in ext/* ; do
727 if test -f $dir/MANIFEST; then
728 xxx=`awk '{print $1}' < $dir/MANIFEST |
729 sed -n "/\.SH$/ s@^@$dir/@p"`
730 shlist="$shlist $xxx"
735 echo "(Looking for .SH files under the current directory.)"
736 set x `find . -name "*.SH" -print`
740 0) set x *.SH; shift;;
742 if test ! -f $1; then
748 dir=`expr X$file : 'X\(.*\)/'`
749 file=`expr X$file : 'X.*/\(.*\)'`
750 (cd $dir && . ./$file)
757 if test -f config_h.SH; then
758 if test ! -f config.h; then
759 : oops, they left it out of MANIFEST, probably, so do it anyway.
765 : produce awk script to parse command line options
766 cat >options.awk <<'EOF'
768 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
770 len = length(optstr);
771 for (i = 1; i <= len; i++) {
772 c = substr(optstr, i, 1);
773 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
784 if (substr(str, 1, 1) != "-") {
785 printf("'%s'\n", str);
789 for (i = 2; i <= len; i++) {
790 c = substr(str, i, 1);
792 printf("-%s\n", substr(str, i));
798 printf("'%s'\n", substr(str, i + 1));
811 : process the command line options
812 set X `for arg in "$@"; do echo "X$arg"; done |
813 sed -e s/X// | awk -f options.awk`
818 : set up default values
831 while test $# -gt 0; do
833 -d) shift; fastread=yes;;
834 -e) shift; alldone=cont;;
838 if test -r "$1"; then
841 echo "$me: cannot read config file $1." >&2
846 -h) shift; error=true;;
847 -r) shift; reuseval=true;;
848 -s) shift; silent=true;;
849 -E) shift; alldone=exit;;
850 -K) shift; knowitall=true;;
851 -O) shift; override=true;;
852 -S) shift; extractsh=true;;
857 echo "$me: use '-U symbol=', not '-D symbol='." >&2
858 echo "$me: ignoring -D $1" >&2
861 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
862 *) echo "$1='define'" >> optdef.sh;;
869 *=) echo "$1" >> optdef.sh;;
871 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
872 echo "$me: ignoring -U $1" >&2
874 *) echo "$1='undef'" >> optdef.sh;;
878 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
881 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
889 Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
890 [-U symbol] [-U symbol=]
891 -d : use defaults for all answers.
892 -e : go on without questioning past the production of config.sh.
893 -f : specify an alternate default configuration file.
894 -h : print this help message and exit (with an error status).
895 -r : reuse C symbols value if possible (skips costly nm extraction).
896 -s : silent mode, only echoes questions and essential information.
897 -D : define symbol to have some value:
898 -D symbol symbol gets the value 'define'
899 -D symbol=value symbol gets the value 'value'
900 -E : stop at the end of questions, after having produced config.sh.
901 -K : do not use unless you know what you are doing.
902 -O : let -D and -U override definitions from loaded configuration file.
903 -S : perform variable substitutions on all .SH files (can mix with -f)
904 -U : undefine symbol:
905 -U symbol symbol gets the value 'undef'
906 -U symbol= symbol gets completely empty
907 -V : print version number and exit (with a zero status).
915 true) exec 1>/dev/null;;
918 : run the defines and the undefines, if any, but leave the file out there...
925 '') config_sh='config.sh'; config='./config.sh';;
926 /*) config="$config_sh";;
927 *) config="./$config_sh";;
930 echo "Fetching answers from $config_sh..."
933 test "$override" && . ./optdef.sh
944 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
945 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
946 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
947 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
948 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
951 : Eunice requires " " instead of "", can you believe it
954 echo "Beginning of configuration questions for $package."
956 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
958 : Some greps do not return status, grrr.
959 echo "grimblepritz" >grimble
960 if grep blurfldyick grimble >/dev/null 2>&1 ; then
962 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
968 : the following should work in any shell
972 echo "AGH! Grep doesn't return a status. Attempting remedial action."
973 cat >contains <<'EOSS'
974 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
979 : first determine how to suppress newline on echo command
981 echo "Checking echo to see how to suppress newlines..."
982 (echo "hi there\c" ; echo " ") >.echotmp
983 if $contains c .echotmp >/dev/null 2>&1 ; then
994 echo $n "The star should be here-->$c"
998 : Now test for existence of everything in MANIFEST
1000 if test -f ../MANIFEST; then
1001 echo "First let's make sure your kit is complete. Checking..." >&4
1002 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1004 for filelist in x??; do
1005 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1007 if test -s missing; then
1011 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1013 You have the option of continuing the configuration process, despite the
1014 distinct possibility that your kit is damaged, by typing 'y'es. If you
1015 do, don't blame me if something goes wrong. I advise you to type 'n'o
1016 and contact the author (doughera@lafcol.lafayette.edu).
1019 echo $n "Continue? [n] $c" >&4
1023 echo "Continuing..." >&4
1027 echo "ABORTING..." >&4
1032 echo "Looks good..." >&4
1035 echo "There is no MANIFEST file. I hope your kit is complete !"
1039 : compute the number of columns on the terminal for proper question formatting
1044 : set up the echo used in my read
1045 myecho="case \"\$xxxm\" in
1046 '') echo $n \"\$rp $c\" >&4;;
1048 '') echo $n \"[\$xxxm] $c\";;
1050 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1052 echo $n \"[\$xxxm] $c\" >&4
1054 echo $n \"\$rp [\$xxxm] $c\" >&4
1060 : now set up to do reads with possible shell escape and default assignment
1065 case "\$fastread" in
1066 yes) case "\$dflt" in
1069 case "\$silent-\$rp" in
1074 *) case "\$silent" in
1075 true) case "\$rp" in
1080 while expr "X\$ans" : "X!" >/dev/null; do
1084 aok=''; eval "ans=\"\$answ\"" && aok=y
1089 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1094 echo "(OK, I'll run with -d after this question.)" >&4
1097 echo "*** Sorry, \$1 not supported yet." >&4
1109 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1119 echo "*** Substitution done -- please confirm."
1121 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1126 echo "*** Error -- try again."
1133 case "\$ans\$xxxm\$nostick" in
1145 : create .config dir to save info across Configure sessions
1146 test -d ../.config || mkdir ../.config
1147 cat >../.config/README <<EOF
1148 This directory created by Configure to save information that should
1149 persist across sessions.
1151 You may safely delete it if you wish.
1154 : general instructions
1157 user=`( (logname) 2>/dev/null || whoami) 2>&1`
1158 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1161 rp='Would you like to see the instructions?'
1172 This installation shell script will examine your system and ask you questions
1173 to determine how the perl5 package should be installed. If you get
1174 stuck on a question, you may use a ! shell escape to start a subshell or
1175 execute a command. Many of the questions will have default answers in square
1176 brackets; typing carriage return will give you the default.
1178 On some of the questions which ask for file or directory names you are allowed
1179 to use the ~name construct to specify the login directory belonging to "name",
1180 even if you don't have a shell which knows about that. Questions where this is
1181 allowed will be marked "(~name ok)".
1185 dflt='Type carriage return to continue'
1189 The prompter used in this script allows you to use shell variables and
1190 backticks in your answers. You may use $1, $2, etc... to refer to the words
1191 in the default answer, as if the default line was a set of arguments given to a
1192 script shell. This means you may also use $* to repeat the whole default line,
1193 so you do not have to re-type everything to add something to the default.
1195 Everytime there is a substitution, you will have to confirm. If there is an
1196 error (e.g. an unmatched backtick), the default answer will remain unchanged
1197 and you will be prompted again.
1199 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1200 the questions and use the computed defaults (or the previous answers if there
1201 was already a config.sh file). Type 'Configure -h' for a list of options.
1202 You may also start interactively and then answer '& -d' at any prompt to turn
1203 on the non-interactive behaviour for the remaining of the execution.
1209 Much effort has been expended to ensure that this shell script will run on any
1210 Unix system. If despite that it blows up on yours, your best bet is to edit
1211 Configure and run it again. If you can't run Configure for some reason,
1212 you'll have to generate a config.sh file by hand. Whatever problems you
1213 have, let me (doughera@lafcol.lafayette.edu) know how I blew it.
1215 This installation script affects things in two ways:
1217 1) it may do direct variable substitutions on some of the files included
1219 2) it builds a config.h file for inclusion in C programs. You may edit
1220 any of these files as the need arises after running this script.
1222 If you make a mistake on a question, there is no easy way to back up to it
1223 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1224 files. Configure will offer to let you do this before it runs the SH files.
1227 dflt='Type carriage return to continue'
1229 case "$firsttime" in
1230 true) echo $user >>../.config/instruct;;
1234 : see if sh knows # comments
1236 echo "Checking your sh to see if it knows about # comments..." >&4
1237 if `sh -c '#' >/dev/null 2>&1`; then
1238 echo "Your sh handles # comments correctly."
1242 echo "Okay, let's see if #! works on this system..."
1244 test -f $xcat || xcat=/usr/bin/cat
1249 if test -s today; then
1253 echo "#! $xcat" > try
1257 if test -s today; then
1261 echo "It's just a comment."
1266 echo "Your sh doesn't grok # comments--I will strip them later on."
1269 echo "exec grep -v '^[ ]*#'" >spitshell
1271 $eunicefix spitshell
1272 spitshell=`pwd`/spitshell
1274 echo "I presume that if # doesn't work, #! won't work either!"
1279 : figure out how to guarantee sh startup
1281 echo "Checking out how to guarantee sh startup..." >&4
1283 *bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
1284 *) startsh=$sharpbang'/bin/sh';;
1286 echo "Let's see if '$startsh' works..."
1296 echo "Yup, it does."
1298 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
1302 : find out where common programs are
1304 echo "Locating common programs..." >&4
1317 if test -d \$dir/\$thing; then
1323 for thisthing in \$dir/\$thing; do
1324 : just loop through to pick last item
1326 if test -f \$thisthing; then
1329 elif test -f \$dir/\$thing.exe; then
1330 : on Eunice apparently
1378 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1379 pth="$pth /lib /usr/lib"
1380 for file in $loclist; do
1381 xxx=`./loc $file $file $pth`
1386 echo $file is in $xxx.
1389 echo $file is in $xxx.
1392 echo "I don't know where '$file' is, and my life depends on it." >&4
1393 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1399 echo "Don't worry if any of the following aren't found..."
1401 for file in $trylist; do
1402 xxx=`./loc $file $file $pth`
1407 echo $file is in $xxx.
1410 echo $file is in $xxx.
1413 echo "I don't see $file out there, $say."
1420 echo "Substituting grep for egrep."
1426 echo "Hopefully test is built into your sh."
1429 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1430 echo "Using the test built into your sh."
1438 echo "Hopefully echo is built into your sh."
1443 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1444 $echo $n "hi there$c" >foo1
1445 echo $n "hi there$c" >foo2
1446 if cmp foo1 foo2 >/dev/null 2>&1; then
1447 echo "They are compatible. In fact, they may be identical."
1454 They are not compatible! You are probably running ksh on a non-USG system.
1455 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1456 have echo built in and we may have to run some Bourne shell scripts. That
1457 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1460 $echo $n "The star should be here-->$c"
1467 : determine whether symbolic links are supported
1470 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1471 echo "Symbolic links are supported." >&4
1474 echo "Symbolic links are NOT supported." >&4
1479 : see whether [:lower:] and [:upper:] are supported character classes
1483 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1485 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1490 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1493 : set up the translation script tr, must be called with ./tr of course
1497 '[A-Z][a-z]') exec $tr '$up' '$low';;
1498 '[a-z][A-Z]') exec $tr '$low' '$up';;
1505 : Try to determine whether config.sh was made on this system
1506 case "$config_sh" in
1508 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1509 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1510 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1511 newmyuname="$myuname"
1513 case "$knowitall" in
1515 if test -f ../config.sh; then
1516 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1517 eval "`grep myuname= ../config.sh`"
1519 if test "X$myuname" = "X$newmyuname"; then
1527 : Get old answers from old config file if Configure was run on the
1528 : same system, otherwise use the hints.
1531 if test -f config.sh; then
1533 rp="I see a config.sh file. Shall I use it to set the defaults?"
1536 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1537 *) echo "Fetching default answers from your old config.sh file..." >&4
1548 if test ! -f config.sh; then
1551 First time through, eh? I have some defaults handy for the following systems:
1554 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1556 : Half the following guesses are probably wrong... If you have better
1557 : tests or hints, please send them to doughera@lafcol.lafayette.edu
1558 : The metaconfig authors would also appreciate a copy...
1559 $test -f /irix && osname=irix
1560 $test -f /xenix && osname=sco_xenix
1561 $test -f /dynix && osname=dynix
1562 $test -f /dnix && osname=dnix
1563 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1564 $test -f /bin/mips && /bin/mips && osname=mips
1565 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1566 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1567 $test -d /usr/apollo/bin && osname=apollo
1568 $test -f /etc/saf/_sactab && osname=svr4
1569 $test -d /usr/include/minix && osname=minix
1570 if $test -d /MachTen; then
1572 if $test -x /sbin/version; then
1573 osvers=`/sbin/version | $awk '{print $2}' |
1574 $sed -e 's/[A-Za-z]$//'`
1575 elif $test -x /usr/etc/version; then
1576 osvers=`/usr/etc/version | $awk '{print $2}' |
1577 $sed -e 's/[A-Za-z]$//'`
1582 if $test -f $uname; then
1590 umips) osname=umips ;;
1593 [23]100) osname=mips ;;
1594 next*) osname=next ;;
1595 news*) osname=news ;;
1597 if $test -f /etc/kconfig; then
1599 if test "$lns" = "ln -s"; then
1601 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1603 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1612 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1614 'not found') osvers="$4"."$3" ;;
1615 '<3240'|'<>3240') osvers=3.2.0 ;;
1616 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1617 '=3250'|'>3250') osvers=3.2.5 ;;
1624 domainos) osname=apollo
1630 freebsd) osname=freebsd
1632 genix) osname=genix ;;
1637 *.10.*) osvers=10 ;;
1654 netbsd*) osname=netbsd
1657 bsd386) osname=bsd386
1660 next*) osname=next ;;
1661 solaris) osname=solaris
1663 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1670 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1674 titanos) osname=titanos
1683 ultrix) osname=ultrix
1689 osvers=`echo "$3" | sed 's/^[vt]//'`
1691 hp*) osname=hp_osf1 ;;
1692 mips) osname=mips_osf1 ;;
1698 $2) case "$osname" in
1702 : svr4.x or possibly later
1712 if test -f /stand/boot ; then
1713 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1714 if test -n "$INITPROG" -a -f "$INITPROG"; then
1715 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1716 if test -n "$isesix"; then
1724 *) if test -f /etc/systemid; then
1726 set `echo $3 | $sed 's/\./ /g'` $4
1727 if $test -f sco_$1_$2_$3.sh; then
1729 elif $test -f sco_$1_$2.sh; then
1731 elif $test -f sco_$1.sh; then
1736 '') : Still unknown. Probably a generic Sys V.
1745 *) case "$osname" in
1746 '') : Still unknown. Probably a generic BSD.
1754 if test -f /vmunix -a -f news_os.sh; then
1755 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1756 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1759 $rm -f ../UU/kernel.what
1760 elif test -d c:/.; then
1767 : Now look for a hint file osname_osvers, unless one has been
1768 : specified already.
1771 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1772 : Also try without trailing minor version numbers.
1773 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1774 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1775 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1776 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1779 *) case "$osvers" in
1782 *) if $test -f $file.sh ; then
1784 elif $test -f $xfile.sh ; then
1786 elif $test -f $xxfile.sh ; then
1788 elif $test -f $xxxfile.sh ; then
1790 elif $test -f $xxxxfile.sh ; then
1792 elif $test -f "${osname}.sh" ; then
1803 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1809 You may give one or more space-separated answers, or "none" if appropriate.
1810 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1813 rp="Which of these apply, if any?"
1816 for file in $tans; do
1817 if $test -f $file.sh; then
1819 $cat $file.sh >> ../UU/config.sh
1820 elif $test X$tans = X -o X$tans = Xnone ; then
1823 : Give one chance to correct a possible typo.
1824 echo "$file.sh does not exist"
1826 rp="hint to use instead?"
1828 for file in $ans; do
1829 if $test -f "$file.sh"; then
1831 $cat $file.sh >> ../UU/config.sh
1832 elif $test X$ans = X -o X$ans = Xnone ; then
1835 echo "$file.sh does not exist -- ignored."
1842 : Remember our hint file for later.
1843 if $test -f "$file.sh" ; then
1855 echo "Fetching default answers from $config_sh..." >&4
1859 cp $config_sh config.sh 2>/dev/null
1868 test "$override" && . ./optdef.sh
1869 myuname="$newmyuname"
1871 : Restore computed paths
1872 for file in $loclist $trylist; do
1873 eval $file="\$_$file"
1878 Configure uses the operating system name and version to set some defaults.
1879 The default value is probably right if the name rings a bell. Otherwise,
1880 since spelling matters for me, either accept the default or answer "none"
1887 ''|' '|none) dflt=none ;;
1888 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1891 *) dflt="$osname" ;;
1893 rp="Operating system name?"
1897 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1899 : who configured the system
1900 cf_time=`$date 2>&1`
1901 (logname > .temp) >/dev/null 2>&1
1902 $test -s .temp || (whoami > .temp) >/dev/null 2>&1
1903 $test -s .temp || echo unknown > .temp
1907 : determine the architecture name
1909 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
1910 tarch=`arch`"-$osname"
1911 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
1912 if uname -m > tmparch 2>&1 ; then
1913 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
1921 case "$myarchname" in
1924 echo "(Your architecture name used to be $myarchname.)"
1930 *) dflt="$archname";;
1932 rp='What is your architecture name'
1939 if test -d /afs; then
1940 echo "AFS may be running... I'll be extra cautious then..." >&4
1943 echo "AFS does not seem to be running..." >&4
1947 : decide how portable to be. Allow command line overrides.
1948 case "$d_portable" in
1950 *) d_portable="$define" ;;
1953 : set up shell script to do ~ expansion
1959 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
1962 if $test -f /bin/csh; then
1963 /bin/csh -f -c "glob \$1"
1968 name=\`$expr x\$1 : '..\([^/]*\)'\`
1969 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
1970 if $test ! -d "\$dir"; then
1972 echo "\$me: can't locate home directory for: \$name" >&2
1977 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
1993 : now set up to get a file name
1994 cat <<'EOSC' >getfile
2007 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2008 fn=`echo $fn | sed 's/(.*)//'`
2014 loc_file=`expr $fn : '.*:\(.*\)'`
2015 fn=`expr $fn : '\(.*\):.*'`
2023 */*) fullpath=true;;
2032 *e*) exp_file=true;;
2035 *p*) nopath_ok=true;;
2040 *d*) type='Directory';;
2041 *l*) type='Locate';;
2046 Locate) what='File';;
2051 case "$d_portable" in
2059 while test "$type"; do
2064 true) rp="$rp (~name ok)";;
2067 if test -f UU/getfile.ok && \
2068 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2087 value=`UU/filexp $ans`
2090 if test "$ans" != "$value"; then
2091 echo "(That expands to $value on this system.)"
2105 /*) value="$ansexp" ;;
2110 echo "I shall only accept a full path name, as in /bin/ls." >&4
2111 echo "Use a ! shell escape if you wish to check pathnames." >&4
2114 echo "Please give a full path name, starting with slash." >&4
2117 echo "Note that using ~name is ok provided it expands well." >&4
2130 if test -f "$ansexp"; then
2132 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2134 echo "($value is not a plain file, but that's ok.)"
2139 if test -d "$ansexp"; then
2144 if test -d "$ansexp"; then
2145 echo "(Looking for $loc_file in directory $value.)"
2146 value="$value/$loc_file"
2147 ansexp="$ansexp/$loc_file"
2149 if test -f "$ansexp"; then
2152 case "$nopath_ok" in
2153 true) case "$value" in
2155 *) echo "Assuming $value will be in people's path."
2171 if test "$fastread" = yes; then
2176 rp="$what $value doesn't exist. Use that name anyway?"
2197 : determine root of directory hierarchy where package will be installed.
2200 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2208 By default, $package will be installed in $dflt/bin, manual
2209 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2210 all installation directories. Typically set to /usr/local, but you
2211 may choose /usr if you wish to install $package among your system
2212 binaries. If you wish to have binaries under /bin but manual pages
2213 under /usr/local/man, that's ok: you will be prompted separately
2214 for each of the installation directories, the prefix being only used
2215 to set the defaults.
2219 rp='Installation prefix to use?'
2227 *) oldprefix="$prefix";;
2234 : set the prefixit variable, to compute a suitable default value
2235 prefixit='case "$3" in
2237 case "$oldprefix" in
2238 "") eval "$1=\"\$$2\"";;
2245 ""|" ") eval "$1=\"\$$2\"";;
2251 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2253 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2254 /*-$oldprefix/*|\~*-$oldprefix/*)
2255 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2256 *) eval "$1=\"\$$2\"";;
2260 : determine where private library files go
2261 : Usual default is /usr/local/lib/perl5. Also allow things like
2262 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2264 *perl*) set dflt privlib lib ;;
2265 *) set dflt privlib lib/$package ;;
2270 There are some auxiliary files for $package that need to be put into a
2271 private library directory that is accessible by everyone.
2275 rp='Pathname where the private library files will reside?'
2277 if $test "X$privlibexp" != "X$ansexp"; then
2281 privlibexp="$ansexp"
2285 Since you are running AFS, I need to distinguish the directory in which
2286 private files reside from the directory in which they are installed (and from
2287 which they are presumably copied to the former directory by occult means).
2290 case "$installprivlib" in
2291 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2292 *) dflt="$installprivlib";;
2295 rp='Where will private files be installed?'
2297 installprivlib="$ans"
2299 installprivlib="$privlibexp"
2302 : set the base revision
2305 : get the patchlevel
2307 echo "Getting the current patchlevel..." >&4
2308 if $test -r ../patchlevel.h;then
2309 patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
2310 subversion=`awk '/SUBVERSION/ {print $3}' < ../patchlevel.h`
2315 echo "(You have $package $baserev PL$patchlevel sub$subversion.)"
2317 : set the prefixup variable, to restore leading tilda escape
2318 prefixup='case "$prefixexp" in
2320 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2323 : determine where public architecture dependent libraries go
2330 dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2334 *) version=`echo $baserev $patchlevel $subversion | \
2335 $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
2336 dflt="$privlib/$archname/$version"
2340 *) dflt="$archlib";;
2344 $spackage contains architecture-dependent library files. If you are
2345 sharing libraries in a heterogeneous environment, you might store
2346 these files in a separate location. Otherwise, you can just include
2347 them with the rest of the public library files.
2351 rp='Where do you want to put the public architecture-dependent libraries?'
2354 archlibexp="$ansexp"
2359 Since you are running AFS, I need to distinguish the directory in which
2360 private files reside from the directory in which they are installed (and from
2361 which they are presumably copied to the former directory by occult means).
2364 case "$installarchlib" in
2365 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2366 *) dflt="$installarchlib";;
2369 rp='Where will architecture-dependent library files be installed?'
2371 installarchlib="$ans"
2373 installarchlib="$archlibexp"
2375 if $test X"$archlib" = X"$privlib"; then
2381 : set up the script used to warn in case of inconsistency
2385 echo "*** WHOA THERE!!! ***" >&4
2386 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2387 rp=" Keep the $hint value?"
2390 y) td=$was; tu=$was;;
2394 : function used to set $1 to $val
2395 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2397 $define$undef) . ./whoa; eval "$var=\$td";;
2398 $undef$define) . ./whoa; eval "$var=\$tu";;
2399 *) eval "$var=$val";;
2402 : make some quick guesses about what we are up against
2404 $echo $n "Hmm... $c"
2413 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2414 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2416 echo "Looks kind of like an OSF/1 system, but we'll see..."
2418 elif test `echo abc | tr a-z A-Z` = Abc ; then
2419 xxx=`./loc addbib blurfl $pth`
2420 if $test -f $xxx; then
2421 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2425 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2426 echo "Looks kind of like an extended USG system, but we'll see..."
2428 echo "Looks kind of like a USG system, but we'll see..."
2432 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2433 echo "Looks kind of like a BSD system, but we'll see..."
2437 echo "Looks kind of like a Version 7 system, but we'll see..."
2440 case "$eunicefix" in
2443 There is, however, a strange, musty smell in the air that reminds me of
2444 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2448 : it so happens the Eunice I know will not run shell scripts in Unix format
2452 echo "Congratulations. You aren't running Eunice."
2456 if test -f /xenix; then
2457 echo "Actually, this looks more like a XENIX system..."
2462 echo "It's not Xenix..."
2467 if test -f /venix; then
2468 echo "Actually, this looks more like a VENIX system..."
2475 echo "Nor is it Venix..."
2478 chmod +x bsd usg v7 osf1 eunice xenix venix
2479 $eunicefix bsd usg v7 osf1 eunice xenix venix
2482 : see if setuid scripts can be secure
2485 Some kernels have a bug that prevents setuid #! scripts from being
2486 secure. Some sites have disabled setuid #! scripts because of this.
2488 First let's decide if your kernel supports secure setuid #! scripts.
2489 (If setuid #! scripts would be secure but have been disabled anyway,
2490 don't say that they are secure if asked.)
2495 if $test -d /dev/fd; then
2496 echo "#!$ls" >reflect
2497 chmod +x,u+s reflect
2498 ./reflect >flect 2>&1
2499 if $contains "/dev/fd" flect >/dev/null; then
2500 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2504 If you are not sure if they are secure, I can check but I'll need a
2505 username and password different from the one you are using right now.
2506 If you don't have such a username or don't want me to test, simply
2510 rp='Other username to test security of setuid scripts with?'
2515 case "$d_suidsafe" in
2516 '') echo "I'll assume setuid scripts are *not* secure." >&4
2519 echo "Well, the $hint value is *not* secure." >&4
2521 *) echo "Well, the $hint value *is* secure." >&4
2526 $rm -f reflect flect
2527 echo "#!$ls" >reflect
2528 chmod +x,u+s reflect
2531 echo '"su" will (probably) prompt you for '"$ans's password."
2532 su $ans -c './reflect >flect'
2533 if $contains "/dev/fd" flect >/dev/null; then
2534 echo "Okay, it looks like setuid scripts are secure." >&4
2537 echo "I don't think setuid scripts are secure." >&4
2542 rp='Does your kernel have *secure* setuid scripts?'
2545 [yY]*) val="$define";;
2550 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2556 $rm -f reflect flect
2558 : now see if they want to do setuid emulation
2561 case "$d_suidsafe" in
2564 echo "No need to emulate SUID scripts since they are secure here." >& 4
2568 Some systems have disabled setuid scripts, especially systems where
2569 setuid scripts cannot be secure. On systems where setuid scripts have
2570 been disabled, the setuid/setgid bits on scripts are currently
2571 useless. It is possible for $package to detect those bits and emulate
2572 setuid/setgid in a secure fashion. This emulation will only work if
2573 setuid scripts have been disabled in your kernel.
2577 "$define") dflt=y ;;
2580 rp="Do you want to do setuid/setgid emulation?"
2583 [yY]*) val="$define";;
2591 : determine where site specific libraries go.
2595 '') dflt="$privlib/site_perl" ;;
2596 *) dflt="$sitelib" ;;
2600 The installation process will also create a directory for
2601 site-specific extensions and modules. Some users find it convenient
2602 to place all local files in this directory rather than in the main
2603 distribution directory.
2607 rp='Pathname for the site-specific library files?'
2609 if $test "X$sitelibexp" != "X$ansexp"; then
2613 sitelibexp="$ansexp"
2617 Since you are running AFS, I need to distinguish the directory in which
2618 private files reside from the directory in which they are installed (and from
2619 which they are presumably copied to the former directory by occult means).
2622 case "$installsitelib" in
2623 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2624 *) dflt="$installsitelib";;
2627 rp='Where will private files be installed?'
2629 installsitelib="$ans"
2631 installsitelib="$sitelibexp"
2634 : determine where site specific architecture-dependent libraries go.
2635 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2636 : xxx is usuually lib/site_perl/archname.
2637 set sitearch sitearch none
2640 '') dflt="$sitelib/$archname" ;;
2641 *) dflt="$sitearch" ;;
2645 The installation process will also create a directory for
2646 architecture-dependent site-specific extensions and modules.
2650 rp='Pathname for the site-specific architecture-dependent library files?'
2652 if $test "X$sitearchexp" != "X$ansexp"; then
2656 sitearchexp="$ansexp"
2660 Since you are running AFS, I need to distinguish the directory in which
2661 private files reside from the directory in which they are installed (and from
2662 which they are presumably copied to the former directory by occult means).
2665 case "$installsitearch" in
2666 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2667 *) dflt="$installsitearch";;
2670 rp='Where will private files be installed?'
2672 installsitearch="$ans"
2674 installsitearch="$sitearchexp"
2677 : determine where old public architecture dependent libraries might be
2678 case "$oldarchlib" in
2679 '') case "$privlib" in
2681 *) dflt="$privlib/$archname"
2685 *) dflt="$oldarchlib"
2688 if $test ! -d "$dflt/auto"; then
2693 In 5.001, Perl stored architecture-dependent library files in a library
2694 with a name such as $privlib/$archname,
2695 and this directory contained files from the standard extensions and
2696 files from any additional extensions you might have added. Starting
2697 with version 5.002, all the architecture-dependent standard extensions
2698 will go into $archlib,
2699 while locally-added extensions will go into
2702 If you wish Perl to continue to search the old architecture-dependent
2703 library for your local extensions, give the path to that directory.
2704 If you do not wish to use your old architecture-dependent library
2705 files, answer 'none'.
2709 rp='Directory for your old 5.001 architecture-dependent libraries?'
2712 oldarchlibexp="$ansexp"
2713 case "$oldarchlib" in
2714 ''|' ') val="$undef" ;;
2720 : determine where public executables go
2725 rp='Pathname where the public executables will reside?'
2727 if $test "X$ansexp" != "X$binexp"; then
2735 Since you are running AFS, I need to distinguish the directory in which
2736 executables reside from the directory in which they are installed (and from
2737 which they are presumably copied to the former directory by occult means).
2740 case "$installbin" in
2741 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2742 *) dflt="$installbin";;
2745 rp='Where will public executables be installed?'
2749 installbin="$binexp"
2752 : determine where manual pages are on this system
2756 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2757 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2758 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2759 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2760 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2761 sysman=`./loc . /usr/man/man1 $syspath`
2764 if $test -d "$sysman"; then
2765 echo "System manual is in $sysman." >&4
2767 echo "Could not find manual pages in source form." >&4
2770 : determine where manual pages go
2771 set man1dir man1dir none
2775 $spackage has manual pages available in source form.
2779 echo "However, you don't have nroff, so they're probably useless to you."
2781 '') man1dir="none";;
2784 echo "If you don't want the manual sources installed, answer 'none'."
2789 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
2790 lookpath="$lookpath $prefixexp/man/p_man/man1"
2791 lookpath="$lookpath $prefixexp/man/u_man/man1"
2792 lookpath="$lookpath $prefixexp/man/man.1"
2793 : If prefix contains 'perl' then we want to keep the man pages
2794 : under the prefix directory. Otherwise, look in a variety of
2795 : other possible places. This is debatable, but probably a
2796 : good compromise. Well, apparently not.
2797 : Experience has shown people expect man1dir to be under prefix,
2798 : so we now always put it there. Users who want other behavior
2799 : can answer interactively or use a command line option.
2800 : Does user have System V-style man paths.
2802 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
2803 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
2813 rp="Where do the main $spackage manual pages (source) go?"
2815 if $test "X$man1direxp" != "X$ansexp"; then
2819 man1direxp="$ansexp"
2827 Since you are running AFS, I need to distinguish the directory in which
2828 manual pages reside from the directory in which they are installed (and from
2829 which they are presumably copied to the former directory by occult means).
2832 case "$installman1dir" in
2833 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
2834 *) dflt="$installman1dir";;
2837 rp='Where will man pages be installed?'
2839 installman1dir="$ans"
2841 installman1dir="$man1direxp"
2844 : What suffix to use on installed man pages
2851 rp="What suffix should be used for the main $spackage man pages?"
2853 '') case "$man1dir" in
2867 *) dflt="$man1ext";;
2874 : see if we can have long filenames
2876 rmlist="$rmlist /tmp/cf$$"
2877 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
2878 first=123456789abcdef
2879 second=/tmp/cf$$/$first
2880 $rm -f $first $second
2881 if (echo hi >$first) 2>/dev/null; then
2882 if $test -f 123456789abcde; then
2883 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
2886 if (echo hi >$second) 2>/dev/null; then
2887 if $test -f /tmp/cf$$/123456789abcde; then
2889 That's peculiar... You can have filenames longer than 14 characters, but only
2890 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
2891 I shall consider your system cannot support long filenames at all.
2895 echo 'You can have filenames longer than 14 characters.' >&4
2900 How confusing! Some of your filesystems are sane enough to allow filenames
2901 longer than 14 characters but some others like /tmp can't even think about them.
2902 So, for now on, I shall assume your kernel does not allow them at all.
2909 You can't have filenames longer than 14 chars. You can't even think about them!
2915 $rm -rf /tmp/cf$$ 123456789abcde*
2917 : determine where library module manual pages go
2918 set man3dir man3dir none
2922 $spackage has manual pages for many of the library modules.
2928 However, you don't have nroff, so they're probably useless to you.
2929 You can use the supplied perldoc script instead.
2932 '') man3dir="none";;
2936 case "$d_flexfnam" in
2939 However, your system can't handle the long file names like File::Basename.3.
2940 You can use the supplied perldoc script instead.
2943 '') man3dir="none";;
2947 echo "If you don't want the manual sources installed, answer 'none'."
2948 : We dont use /usr/local/man/man3 because some man programs will
2949 : only show the /usr/local/man/man3 contents, and not the system ones,
2950 : thus man less will show the perl module less.pm, but not the system
2951 : less command. We might also conflict with TCL man pages.
2952 : However, something like /opt/perl/man/man3 is fine.
2954 '') case "$prefix" in
2955 *perl*) dflt=`echo $man1dir |
2956 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
2957 *) dflt="$privlib/man/man3" ;;
2961 *) dflt="$man3dir" ;;
2966 rp="Where do the $spackage library man pages (source) go?"
2968 if test "X$man3direxp" != "X$ansexp"; then
2973 man3direxp="$ansexp"
2981 Since you are running AFS, I need to distinguish the directory in which
2982 manual pages reside from the directory in which they are installed (and from
2983 which they are presumably copied to the former directory by occult means).
2986 case "$installman3dir" in
2987 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
2988 *) dflt="$installman3dir";;
2991 rp='Where will man pages be installed?'
2993 installman3dir="$ans"
2995 installman3dir="$man3direxp"
2998 : What suffix to use on installed man pages
3005 rp="What suffix should be used for the $spackage library man pages?"
3007 '') case "$man3dir" in
3021 *) dflt="$man3ext";;
3028 : see what memory models we can support
3031 $cat >pdp11.c <<'EOP'
3040 cc -o pdp11 pdp11.c >/dev/null 2>&1
3041 if ./pdp11 2>/dev/null; then
3042 dflt='unsplit split'
3044 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3047 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3052 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3055 if $test -d /lib/large || $test -d /usr/lib/large; then
3058 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3067 Some systems have different model sizes. On most systems they are called
3068 small, medium, large, and huge. On the PDP11 they are called unsplit and
3069 split. If your system doesn't support different memory models, say "none".
3070 If you wish to force everything to one memory model, say "none" here and
3071 put the appropriate flags later when it asks you for other cc and ld flags.
3072 Venix systems may wish to put "none" and let the compiler figure things out.
3073 (In the following question multiple model names should be space separated.)
3076 rp="Which memory models are supported?"
3091 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3092 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3099 rp="What flag indicates separate I and D space?"
3107 *large*|*small*|*medium*|*huge*)
3114 rp="What flag indicates large model?"
3124 *huge*) case "$huge" in
3128 rp="What flag indicates huge model?"
3138 *medium*) case "$medium" in
3142 rp="What flag indicates medium model?"
3149 *) medium="$large";;
3152 *small*) case "$small" in
3156 rp="What flag indicates small model?"
3167 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3171 : see if we need a special compiler
3179 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3180 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3193 On some systems the default C compiler will not resolve multiple global
3194 references that happen to have the same name. On some such systems the "Mcc"
3195 command may be used to force these to be resolved. On other systems a "cc -M"
3196 command is required. (Note that the -M flag on other systems indicates a
3197 memory model to use!) If you have the Gnu C compiler, you might wish to use
3201 rp="What command will force resolution on this system?"
3209 rp="Use which C compiler?"
3214 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3215 $cat >gccvers.c <<EOM
3220 printf("%s\n", __VERSION__);
3222 printf("%s\n", "1");
3228 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3229 gccversion=`./gccvers`
3230 case "$gccversion" in
3231 '') echo "You are not using GNU cc." ;;
3232 *) echo "You are using GNU cc $gccversion." ;;
3236 echo "*** WHOA THERE!!! ***" >&4
3237 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3238 case "$knowitall" in
3240 echo " You'd better start hunting for one and let me know about it." >&4
3246 case "$gccversion" in
3247 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3250 : What should the include directory be ?
3252 $echo $n "Hmm... $c"
3256 if $test -f /bin/mips && /bin/mips; then
3257 echo "Looks like a MIPS system..."
3258 $cat >usr.c <<'EOCP'
3259 #ifdef SYSTYPE_BSD43
3263 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3264 dflt='/bsd43/usr/include'
3268 mips_type='System V'
3270 $rm -f usr.c usr.out
3271 echo "and you're compiling with the $mips_type compiler and libraries."
3275 echo "Doesn't look like a MIPS system."
3286 case "$xxx_prompt" in
3288 rp='Where are the include files you want to use?'
3296 : see if we have to deal with yellow pages, now NIS.
3297 if $test -d /usr/etc/yp || $test -d /etc/yp; then
3298 if $test -f /usr/etc/nibindd; then
3300 echo "I'm fairly confident you're on a NeXT."
3302 rp='Do you get the hosts file via NetInfo?'
3311 y*) hostcat='nidump hosts .';;
3312 *) case "$hostcat" in
3313 nidump*) hostcat='';;
3323 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
3331 rp='Are you getting the hosts file via yellow pages?'
3334 y*) hostcat='ypcat hosts';;
3335 *) hostcat='cat /etc/hosts';;
3341 : now get the host name
3343 echo "Figuring out host name..." >&4
3344 case "$myhostname" in
3346 echo 'Maybe "hostname" will work...'
3347 if tans=`sh -c hostname 2>&1` ; then
3355 if $test "$cont"; then
3357 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
3358 if tans=`cat /etc/systemid 2>&1` ; then
3360 phostname='cat /etc/systemid'
3361 echo "Whadyaknow. Xenix always was a bit strange..."
3364 elif $test -r /etc/systemid; then
3365 echo "(What is a non-Xenix system doing with /etc/systemid?)"
3368 if $test "$cont"; then
3369 echo 'No, maybe "uuname -l" will work...'
3370 if tans=`sh -c 'uuname -l' 2>&1` ; then
3372 phostname='uuname -l'
3374 echo 'Strange. Maybe "uname -n" will work...'
3375 if tans=`sh -c 'uname -n' 2>&1` ; then
3377 phostname='uname -n'
3379 echo 'Oh well, maybe I can mine it out of whoami.h...'
3380 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
3381 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
3382 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
3384 case "$myhostname" in
3385 '') echo "Does this machine have an identity crisis or something?"
3388 echo "Well, you said $myhostname before..."
3389 phostname='echo $myhostname';;
3395 : you do not want to know about this
3400 if $test "$myhostname" ; then
3402 rp='Your host name appears to be "'$myhostname'".'" Right?"
3410 : bad guess or no guess
3411 while $test "X$myhostname" = X ; do
3413 rp="Please type the (one word) name of your host:"
3418 : translate upper to lower if necessary
3419 case "$myhostname" in
3421 echo "(Normalizing case in your host name)"
3422 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
3426 case "$myhostname" in
3428 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
3429 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
3430 echo "(Trimming domain name from host name--host name is now $myhostname)"
3432 *) case "$mydomain" in
3435 : If we use NIS, try ypmatch.
3436 : Is there some reason why this was not done before?
3437 test "X$hostcat" = "Xypcat hosts" &&
3438 ypmatch "$myhostname" hosts 2>/dev/null |\
3439 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
3442 : Extract only the relevant hosts, reducing file size,
3443 : remove comments, insert trailing space for later use.
3444 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
3445 /[ ]$myhostname[ . ]/p" > hosts
3448 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
3449 END { print sum }" hosts` = x1 || tmp_re="[ ]"
3450 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
3451 hosts | $sort | $uniq | \
3452 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
3453 case `$echo X$dflt` in
3454 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
3457 .) echo "(You do not have fully-qualified names in /etc/hosts)"
3462 tans=`./loc resolv.conf X /etc /usr/etc`
3463 if $test -f "$tans"; then
3464 echo "(Attempting domain name extraction from $tans)"
3465 : Why was there an Egrep here, when Sed works?
3466 dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \
3467 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
3472 .) echo "(No help from resolv.conf either -- attempting clever guess)"
3473 dflt=.`sh -c domainname 2>/dev/null`
3476 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
3481 .) echo "(Lost all hope -- silly guess then)"
3487 *) dflt="$mydomain";;
3491 rp="What is your domain name?"
3501 : translate upper to lower if necessary
3504 echo "(Normalizing case in your domain name)"
3505 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
3509 : a little sanity check here
3510 case "$phostname" in
3513 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
3514 $myhostname$mydomain|$myhostname) ;;
3516 case "$phostname" in
3518 echo "(That doesn't agree with your whoami.h file, by the way.)"
3521 echo "(That doesn't agree with your $phostname command, by the way.)"
3531 I need to get your e-mail address in Internet format if possible, i.e.
3532 something like user@host.domain. Please answer accurately since I have
3533 no easy means to double check it. The default value provided below
3534 is most probably close to the reality but may not be valid from outside
3535 your organization...
3539 while test "$cont"; do
3541 '') dflt="$cf_by@$myhostname$mydomain";;
3542 *) dflt="$cf_email";;
3544 rp='What is your e-mail address?'
3550 rp='Address does not look like an Internet one. Use it anyway?'
3566 If you or somebody else will be maintaining perl at your site, please
3567 fill in the correct e-mail address here so that they may be contacted
3568 if necessary. Currently, the "perlbug" program included with perl
3569 will send mail to this address in addition to perlbug@perl.com. You may
3570 enter "none" for no administrator.
3573 case "$perladmin" in
3574 '') dflt="$cf_email";;
3575 *) dflt="$perladmin";;
3577 rp='Perl administrator e-mail address'
3581 : determine where public executable scripts go
3582 set scriptdir scriptdir
3584 case "$scriptdir" in
3587 : guess some guesses
3588 $test -d /usr/share/scripts && dflt=/usr/share/scripts
3589 $test -d /usr/share/bin && dflt=/usr/share/bin
3590 $test -d /usr/local/script && dflt=/usr/local/script
3591 $test -d $prefixexp/script && dflt=$prefixexp/script
3595 *) dflt="$scriptdir"
3600 Some installations have a separate directory just for executable scripts so
3601 that they can mount it across multiple architectures but keep the scripts in
3602 one spot. You might, for example, have a subdirectory of /usr/share for this.
3603 Or you might just lump your scripts in with all your other executables.
3607 rp='Where do you keep publicly executable scripts?'
3609 if $test "X$ansexp" != "X$scriptdirexp"; then
3613 scriptdirexp="$ansexp"
3617 Since you are running AFS, I need to distinguish the directory in which
3618 scripts reside from the directory in which they are installed (and from
3619 which they are presumably copied to the former directory by occult means).
3622 case "$installscript" in
3623 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
3624 *) dflt="$installscript";;
3627 rp='Where will public scripts be installed?'
3629 installscript="$ans"
3631 installscript="$scriptdirexp"
3634 : determine perl absolute location
3636 '') perlpath=$binexp/perl ;;
3639 : figure out how to guarantee perl startup
3640 case "$startperl" in
3642 case "$sharpbang" in
3646 I can use the #! construct to start perl on your system. This will
3647 make startup of perl scripts faster, but may cause problems if you
3648 want to share those scripts and perl is not in a standard place
3649 ($perlpath) on all your platforms. The alternative is to force
3650 a shell by starting the script with a single ':' character.
3654 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
3657 none) startperl=": # use perl";;
3658 *) startperl="#!$ans";;
3661 *) startperl=": # use perl"
3666 echo "I'll use $startperl to start perl scripts."
3668 : see how we invoke the C preprocessor
3670 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3671 cat <<'EOT' >testcpp.c
3677 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3679 wrapper=`pwd`/cppstdin
3683 if $test "X$cppstdin" != "X" && \
3684 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3685 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3687 echo "You used to use $cppstdin $cppminus so we'll use that again."
3689 '') echo "But let's see if we can live without a wrapper..." ;;
3691 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3692 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3694 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3697 echo "(However, $cpprun $cpplast does not work, let's see...)"
3705 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3712 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3713 $cc -E <testcpp.c >testcpp.out 2>&1; \
3714 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3715 echo "Yup, it does."
3718 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3719 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3720 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3721 echo "Yup, it does."
3724 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3725 $cc -P <testcpp.c >testcpp.out 2>&1; \
3726 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3727 echo "Yipee, that works!"
3730 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3731 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3732 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3733 echo "At long last!"
3736 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3737 $cpp <testcpp.c >testcpp.out 2>&1; \
3738 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3742 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3743 $cpp - <testcpp.c >testcpp.out 2>&1; \
3744 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3745 echo "Hooray, it works! I was beginning to wonder."
3748 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3749 $wrapper <testcpp.c >testcpp.out 2>&1; \
3750 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3756 rp="No dice. I can't find a C preprocessor. Name one:"
3760 $x_cpp <testcpp.c >testcpp.out 2>&1
3761 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3762 echo "OK, that will do." >&4
3764 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3779 echo "Perhaps can we force $cc -E using a wrapper..."
3780 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3781 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3787 echo "Nope, we'll have to live without it..."
3802 *) $rm -f $wrapper;;
3804 $rm -f testcpp.c testcpp.out
3806 : Set private lib path
3809 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3814 '') dlist="$loclibpth $plibpth $glibpth";;
3815 *) dlist="$libpth";;
3818 : Now check and see which directories actually exist, avoiding duplicates
3822 if $test -d $xxx; then
3825 *) libpth="$libpth $xxx";;
3831 Some systems have incompatible or broken versions of libraries. Among
3832 the directories listed in the question below, please remove any you
3833 know not to be holding relevant libraries, and add any that are needed.
3834 Say "none" for none.
3845 rp="Directories to use for library searches?"
3852 : determine optimize, if desired, or use for debug flag also
3856 *) dflt="$optimize";;
3860 Some C compilers have problems with their optimizers, by default, $package
3861 compiles with the -O flag to use the optimizer. Alternately, you might want
3862 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3863 systems). Either flag can be specified here. To use neither flag, specify
3867 rp="What optimizer/debugger flag should be used?"
3871 'none') optimize=" ";;
3875 : We will not override a previous value, but we might want to
3876 : augment a hint file
3879 case "$gccversion" in
3880 1*) dflt='-fpcc-struct-return' ;;
3883 *-g*) dflt="$dflt -DDEBUGGING";;
3885 case "$gccversion" in
3886 2*) if test -d /etc/conf/kconfig.d &&
3887 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3896 case "$mips_type" in
3897 *BSD*|'') inclwanted="$locincpth $usrinc";;
3898 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3900 for thisincl in $inclwanted; do
3901 if $test -d $thisincl; then
3902 if $test x$thisincl != x$usrinc; then
3905 *) dflt="$dflt -I$thisincl";;
3911 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3913 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3921 *) dflt="$dflt -D$2";;
3926 set signal.h __LANGUAGE_C__; eval $inctest
3928 set signal.h LANGUAGE_C; eval $inctest
3930 set signal.h NO_PROTOTYPE; eval $inctest
3931 set signal.h _NO_PROTO; eval $inctest
3934 none|recommended) dflt="$ccflags $dflt" ;;
3935 *) dflt="$ccflags";;
3943 Your C compiler may want other flags. For this question you should include
3944 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3945 but you should NOT include libraries or ld flags like -lwhatever. If you
3946 want $package to honor its debug switch, you should include -DDEBUGGING here.
3947 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3948 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3950 To use no flags, specify the word "none".
3956 rp="Any additional cc flags?"
3963 : the following weeds options from ccflags that are of no interest to cpp
3965 case "$gccversion" in
3966 1*) cppflags="$cppflags -D__GNUC__"
3968 case "$mips_type" in
3970 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3976 echo "Let me guess what the preprocessor flags are..." >&4
3990 *) ftry="$previous $flag";;
3992 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3993 >cpp1.out 2>/dev/null && \
3994 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3995 >cpp2.out 2>/dev/null && \
3996 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3997 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3999 cppflags="$cppflags $ftry"
4009 *-*) echo "They appear to be: $cppflags";;
4011 $rm -f cpp.c cpp?.out
4015 : flags used in final linking phase
4018 '') if ./venix; then
4024 *-posix*) dflt="$dflt -posix" ;;
4027 *) dflt="$ldflags";;
4030 : Try to guess additional flags to pick up local libraries.
4031 for thislibdir in $libpth; do
4032 case " $loclibpth " in
4035 *"-L$thislibdir "*) ;;
4036 *) dflt="$dflt -L$thislibdir" ;;
4048 Your C linker may need flags. For this question you should
4049 include -L/whatever and any other flags used by the C linker, but you
4050 should NOT include libraries like -lwhatever.
4052 Make sure you include the appropriate -L/path flags if your C linker
4053 does not normally search all of the directories you specified above,
4056 To use no flags, specify the word "none".
4060 rp="Any additional ld flags (NOT including libraries)?"
4066 rmlist="$rmlist pdp11"
4070 echo "Checking your choice of C compiler and flags for coherency..." >&4
4071 set X $cc $optimize $ccflags $ldflags try.c -o try
4074 I've tried to compile and run a simple program with:
4079 and I got the following output:
4082 $cat > try.c <<'EOF'
4087 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
4088 if sh -c './try' >>try.msg 2>&1; then
4091 echo "The program compiled OK, but exited with status $?." >>try.msg
4092 rp="You have a problem. Shall I abort Configure"
4096 echo "I can't compile the test program." >>try.msg
4097 rp="You have a BIG problem. Shall I abort Configure"
4103 case "$knowitall" in
4105 echo "(The supplied flags might be incorrect with this C compiler.)"
4113 *) echo "Ok. Stopping Configure." >&4
4118 n) echo "OK, that should do.";;
4120 $rm -f try try.* core
4122 : compute shared library extension
4125 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4135 On some systems, shared libraries may be available. Answer 'none' if
4136 you want to suppress searching of shared libraries for the remaining
4137 of this configuration.
4140 rp='What is the file extension used for shared libraries?'
4144 : Looking for optional libraries
4146 echo "Checking for optional libraries..." >&4
4151 case "$libswanted" in
4152 '') libswanted='c_s';;
4154 for thislib in $libswanted; do
4156 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
4157 echo "Found -l$thislib (shared)."
4160 *) dflt="$dflt -l$thislib";;
4162 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4163 echo "Found -l$thislib (shared)."
4166 *) dflt="$dflt -l$thislib";;
4168 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
4169 echo "Found -l$thislib."
4172 *) dflt="$dflt -l$thislib";;
4174 elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
4175 echo "Found -l$thislib."
4178 *) dflt="$dflt -l$thislib";;
4180 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
4181 echo "Found -l${thislib}_s."
4184 *) dflt="$dflt -l${thislib}_s";;
4186 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
4187 echo "Found -l$thislib."
4190 *) dflt="$dflt -l$thislib";;
4193 echo "No -l$thislib."
4204 ' '|'') dflt='none';;
4209 Some versions of Unix support shared libraries, which make executables smaller
4210 but make load time slightly longer.
4212 On some systems, mostly newer Unix System V's, the shared library is included
4213 by putting the option "-lc_s" as the last thing on the cc command line when
4214 linking. Other systems use shared libraries by default. There may be other
4215 libraries needed to compile $package on your machine as well. If your system
4216 needs the "-lc_s" option, include it here. Include any other special libraries
4217 here as well. Say "none" for none.
4221 rp="Any additional libraries?"
4228 : see if nm is to be used to determine whether a symbol is defined or not
4231 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
4232 if $test $dflt -gt 20; then
4247 I can use 'nm' to extract the symbols from your C libraries. This is a time
4248 consuming task which may generate huge output on the disk (up to 3 megabytes)
4249 but that should make the symbols extraction faster. The alternative is to skip
4250 the 'nm' extraction part and to compile a small test program instead to
4251 determine whether each symbol is present. If you have a fast C compiler and/or
4252 if your 'nm' output cannot be parsed, this may be the best solution.
4255 rp='Shall I use nm to extract C symbols from the libraries?'
4267 : nm options which may be necessary
4269 '') if $test -f /mach_boot; then
4271 elif $test -d /usr/ccs/lib; then
4273 elif $test -f /dgux; then
4280 : nm options which may be necessary for shared libraries but illegal
4281 : for archive libraries. Thank you, Linux.
4282 case "$nm_so_opt" in
4283 '') case "$myuname" in
4285 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4286 nm_so_opt='--dynamic'
4295 : get list of predefined functions in a handy place
4300 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
4307 *) for thislib in $libs; do
4310 : Handle C library specially below.
4313 thislib=`echo $thislib | $sed -e 's/^-l//'`
4314 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4316 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4318 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
4320 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4322 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4324 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
4329 libnames="$libnames $try"
4331 *) libnames="$libnames $thislib" ;;
4340 for xxx in $libpth; do
4341 $test -r $1 || set $xxx/libc.$so
4342 : The messy sed command sorts on library version numbers.
4344 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4345 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
4347 s/[0-9][0-9]*/0000&/g
4348 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4351 sort | $sed -e 's/^.* //'`
4354 $test -r $1 || set /usr/ccs/lib/libc.$so
4355 $test -r $1 || set /lib/libsys_s.a
4361 if $test -r "$1"; then
4362 echo "Your (shared) C library seems to be in $1."
4364 elif $test -r /lib/libc && $test -r /lib/clib; then
4365 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4367 libc='/lib/clib /lib/libc'
4368 if $test -r /lib/syslib; then
4369 echo "(Your math library is in /lib/syslib.)"
4370 libc="$libc /lib/syslib"
4372 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4373 echo "Your C library seems to be in $libc, as you said before."
4374 elif $test -r $incpath/usr/lib/libc.a; then
4375 libc=$incpath/usr/lib/libc.a;
4376 echo "Your C library seems to be in $libc. That's fine."
4377 elif $test -r /lib/libc.a; then
4379 echo "Your C library seems to be in $libc. You're normal."
4381 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
4383 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4384 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4385 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4387 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4389 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4392 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
4394 if $test -r "$tans"; then
4395 echo "Your C library seems to be in $tans, of all places."
4401 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4405 If the guess above is wrong (which it might be if you're using a strange
4406 compiler, or your machine supports multiple models), you can override it here.
4411 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4413 I can't seem to find your C library. I've looked in the following places:
4416 $sed 's/^/ /' libpath
4419 None of these seems to contain your C library. I need to get its name...
4424 rp='Where is your C library?'
4429 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4430 set X `cat libnames`
4433 case $# in 1) xxx=file; esac
4434 echo "Extracting names from the following $xxx for later perusal:" >&4
4436 $sed 's/^/ /' libnames >&4
4438 $echo $n "This may take a while...$c" >&4
4440 : Linux may need the special Dynamic option to nm for shared libraries.
4441 : In general, this is stored in the nm_so_opt variable.
4442 : Unfortunately, that option may be fatal on non-shared libraries.
4443 for nm_libs_ext in $*; do
4444 case $nm_libs_ext in
4445 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4446 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4451 $grep fprintf libc.tmp > libc.ptf
4452 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4453 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4455 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx //p'";\
4457 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4459 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4461 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4463 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4465 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4467 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4469 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4471 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4473 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4475 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4477 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4479 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4480 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4482 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4484 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4486 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4488 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4490 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4492 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4494 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4496 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4498 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4501 nm -p $* 2>/dev/null >libc.tmp
4502 $grep fprintf libc.tmp > libc.ptf
4503 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4504 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4510 echo "nm didn't seem to work right. Trying ar instead..." >&4
4512 if ar t $libc > libc.tmp; then
4513 for thisname in $libnames; do
4514 ar t $thisname >>libc.tmp
4516 $sed -e 's/\.o$//' < libc.tmp > libc.list
4519 echo "ar didn't seem to work right." >&4
4520 echo "Maybe this is a Cray...trying bld instead..." >&4
4521 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4523 for thisname in $libnames; do
4525 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4526 ar t $thisname >>libc.tmp
4530 echo "That didn't work either. Giving up." >&4
4537 if $test -f /lib/syscalls.exp; then
4539 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4540 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4544 $rm -f libnames libpath
4546 : is a C symbol defined?
4549 -v) tf=libc.tmp; tc=""; tdc="";;
4550 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4551 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4554 case "$reuseval-$4" in
4556 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4562 if $contains $tlook $tf >/dev/null 2>&1;
4567 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4568 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4576 $define) tval=true;;
4582 : define an is-in-libc? function
4583 inlibc='echo " "; td=$define; tu=$undef;
4584 sym=$1; var=$2; eval "was=\$$2";
4586 case "$reuseval$was" in
4596 echo "$sym() found." >&4;
4597 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4599 echo "$sym() NOT found." >&4;
4600 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4604 $define) echo "$sym() found." >&4;;
4605 *) echo "$sym() NOT found." >&4;;
4609 : Check how to convert floats to strings.
4611 echo "Checking for an efficient way to convert floats to strings."
4614 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
4617 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
4620 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
4624 Gconvert(1.0, 8, 0, buf);
4625 if (buf[0] != '1' || buf[1] != '\0')
4627 Gconvert(0.0, 8, 0, buf);
4628 if (buf[0] != '0' || buf[1] != '\0')
4630 Gconvert(-1.0, 8, 0, buf);
4631 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
4636 case "$d_Gconvert" in
4637 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
4638 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
4639 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
4640 *) xxx_list='gconvert gcvt sprintf' ;;
4643 for xxx_convert in $xxx_list; do
4644 echo "Trying $xxx_convert"
4646 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
4647 try.c $libs > /dev/null 2>&1 ; then
4648 echo "$xxx_convert" found. >&4
4650 echo "Good, $xxx_convert drops a trailing decimal point."
4651 echo "I'll use $xxx_convert to convert floats into a string." >&4
4654 echo "But $xxx_convert keeps a trailing decimal point".
4657 echo "$xxx_convert NOT found." >&4
4661 case "$xxx_convert" in
4662 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
4663 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
4664 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
4667 : Initialize h_fcntl
4670 : Initialize h_sysfile
4673 : determine filename position in cpp output
4675 echo "Computing filename position in cpp output for #include directives..." >&4
4676 echo '#include <stdio.h>' > foo.c
4679 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4680 $grep '^[ ]*#.*stdio\.h' | \
4681 while read cline; do
4684 while $test \$# -gt 0; do
4685 if $test -r \`echo \$1 | $tr -d '"'\`; then
4690 pos=\`expr \$pos + 1\`
4702 *) pos="${fieldn}th";;
4704 echo "Your cpp writes the filename in the $pos field of the line."
4706 : locate header file
4711 if test -f $usrinc/\$wanted; then
4712 echo "$usrinc/\$wanted"
4715 awkprg='{ print \$$fieldn }'
4716 echo "#include <\$wanted>" > foo\$\$.c
4717 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4718 $grep "^[ ]*#.*\$wanted" | \
4719 while read cline; do
4720 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4722 */\$wanted) echo "\$name"; exit 0;;
4733 : access call always available on UNIX
4737 : locate the flags for 'access()'
4741 $cat >access.c <<'EOCP'
4742 #include <sys/types.h>
4747 #include <sys/file.h>
4756 : check sys/file.h first, no particular reason here
4757 if $test `./findhdr sys/file.h` && \
4758 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
4760 echo "<sys/file.h> defines the *_OK access constants." >&4
4761 elif $test `./findhdr fcntl.h` && \
4762 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
4764 echo "<fcntl.h> defines the *_OK access constants." >&4
4765 elif $test `./findhdr unistd.h` && \
4766 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
4767 echo "<unistd.h> defines the *_OK access constants." >&4
4769 echo "I can't find the four *_OK access constants--I'll use mine." >&4
4775 : see if alarm exists
4779 : Look for GNU-cc style attribute checking
4781 echo "Checking whether your compiler can handle __attribute__ ..." >&4
4782 $cat >attrib.c <<'EOCP'
4784 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
4786 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
4787 if $contains 'warning' attrib.out >/dev/null 2>&1; then
4788 echo "Your C compiler doesn't fully support __attribute__."
4791 echo "Your C compiler supports __attribute__."
4795 echo "Your C compiler doesn't seem to understand __attribute__ at all."
4802 : see if bcmp exists
4806 : see if bcopy exists
4810 : see if setpgrp exists
4811 set setpgrp d_setpgrp
4814 : see which flavor of setpgrp is in use
4815 case "$d_setpgrp" in
4821 if (getuid() == 0) {
4822 printf("(I see you are running Configure as super-user...)\n");
4825 if (-1 == setpgrp(1, 1))
4830 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
4833 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
4835 *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
4840 xxx="USG one, i.e. you use setpgrp()."
4843 xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
4846 echo "Assuming your setpgrp is a $xxx" >&4
4855 : see if bzero exists
4859 : check for length of integer
4863 echo "Checking to see how big your integers are..." >&4
4864 $cat >try.c <<'EOCP'
4868 printf("%d\n", sizeof(int));
4872 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
4874 echo "Your integers are $intsize bytes long."
4877 echo "(I can't seem to compile the test program. Guessing...)"
4878 rp="What is the size of an integer (in bytes)?"
4886 : see if signal is declared as pointer to function returning int or void
4888 xxx=`./findhdr signal.h`
4889 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
4890 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4891 echo "You have int (*signal())() instead of void." >&4
4893 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4894 echo "You have void (*signal())() instead of int." >&4
4896 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
4897 echo "You have int (*signal())() instead of void." >&4
4900 case "$d_voidsig" in
4902 echo "I can't determine whether signal handler returns void or int..." >&4
4904 rp="What type does your signal handler return?"
4911 echo "As you already told me, signal handler returns void." >&4;;
4913 echo "As you already told me, signal handler returns int." >&4;;
4918 case "$d_voidsig" in
4919 "$define") signal_t="void";;
4924 : check for ability to cast large floats to 32-bit ints.
4926 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
4927 if $test "$intsize" -eq 4; then
4933 #include <sys/types.h>
4935 $signal_t blech() { exit(3); }
4941 signal(SIGFPE, blech);
4943 f = (double) 0x7fffffff;
4947 if (i32 != ($xxx) f)
4952 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
4956 echo "(I can't seem to compile the test program--assuming it can't)"
4964 echo "Nope, it can't."
4971 : check for ability to cast negative floats to unsigned
4973 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
4975 #include <sys/types.h>
4977 $signal_t blech() { exit(7); }
4978 $signal_t blech_in_list() { exit(4); }
4979 unsigned long dummy_long(p) unsigned long p; { return p; }
4980 unsigned int dummy_int(p) unsigned int p; { return p; }
4981 unsigned short dummy_short(p) unsigned short p; { return p; }
4985 unsigned long along;
4987 unsigned short ashort;
4990 signal(SIGFPE, blech);
4991 along = (unsigned long)f;
4992 aint = (unsigned int)f;
4993 ashort = (unsigned short)f;
4994 if (along != (unsigned long)-123)
4996 if (aint != (unsigned int)-123)
4998 if (ashort != (unsigned short)-123)
5000 f = (double)0x40000000;
5003 along = (unsigned long)f;
5004 if (along != 0x80000000)
5008 along = (unsigned long)f;
5009 if (along != 0x7fffffff)
5013 along = (unsigned long)f;
5014 if (along != 0x80000001)
5018 signal(SIGFPE, blech_in_list);
5020 along = dummy_long((unsigned long)f);
5021 aint = dummy_int((unsigned int)f);
5022 ashort = dummy_short((unsigned short)f);
5023 if (along != (unsigned long)123)
5025 if (aint != (unsigned int)123)
5027 if (ashort != (unsigned short)123)
5033 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5037 echo "(I can't seem to compile the test program--assuming it can't)"
5040 case "$castflags" in
5045 echo "Nope, it can't."
5052 : see if vprintf exists
5054 if set vprintf val -f d_vprintf; eval $csym; $val; then
5055 echo 'vprintf() found.' >&4
5057 $cat >vprintf.c <<'EOF'
5058 #include <varargs.h>
5060 main() { xxx("foo"); }
5069 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
5072 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
5073 echo "Your vsprintf() returns (int)." >&4
5076 echo "Your vsprintf() returns (char*)." >&4
5080 echo 'vprintf() NOT found.' >&4
5090 : see if chown exists
5094 : see if chroot exists
5098 : see if chsize exists
5102 : check for const keyword
5104 echo 'Checking to see if your C compiler knows about "const"...' >&4
5105 $cat >const.c <<'EOCP'
5106 typedef struct spug { int drokk; } spug;
5113 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
5115 echo "Yup, it does."
5118 echo "Nope, it doesn't."
5123 : see if crypt exists
5125 if set crypt val -f d_crypt; eval $csym; $val; then
5126 echo 'crypt() found.' >&4
5130 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
5131 if $test -z "$cryptlib"; then
5132 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
5136 if $test -z "$cryptlib"; then
5137 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
5141 if $test -z "$cryptlib"; then
5142 cryptlib=`./loc libcrypt.a "" $libpth`
5146 if $test -z "$cryptlib"; then
5147 echo 'crypt() NOT found.' >&4
5156 : get csh whereabouts
5158 'csh') val="$undef" ;;
5165 : see if cuserid exists
5166 set cuserid d_cuserid
5169 : define an alternate in-header-list? function
5170 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5171 cont=true; xxf="echo \"<\$1> found.\" >&4";
5172 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5173 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5175 case $# in 4) instead=instead;; *) instead="at last";; esac;
5176 while $test "$cont"; do
5178 var=$2; eval "was=\$$2";
5179 if $test "$xxx" && $test -r "$xxx";
5181 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5184 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5185 set $yyy; shift; shift; yyy=$@;
5186 case $# in 0) cont="";;
5187 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5188 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5189 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5190 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5194 do set $yyy; var=$2; eval "was=\$$2";
5195 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5196 set $yyy; shift; shift; yyy=$@;
5199 : see if this is a limits.h system
5200 set limits.h i_limits
5203 : see if this is a float.h system
5207 : See if number of significant digits in a double precision number is known
5209 $cat >dbl_dig.c <<EOM
5219 printf("Contains DBL_DIG");
5222 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
5223 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
5224 echo "DBL_DIG found." >&4
5227 echo "DBL_DIG NOT found." >&4
5234 : see if difftime exists
5235 set difftime d_difftime
5238 : see if this is a dirent system
5240 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
5242 echo "<dirent.h> found." >&4
5245 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
5246 echo "<sys/dir.h> found." >&4
5249 xinc=`./findhdr sys/ndir.h`
5251 echo "<dirent.h> NOT found." >&4
5256 : Look for type of directory structure.
5258 $cppstdin $cppflags $cppminus < "$xinc" > try.c
5260 case "$direntrytype" in
5263 $define) guess1='struct dirent' ;;
5264 *) guess1='struct direct' ;;
5267 *) guess1="$direntrytype"
5272 'struct dirent') guess2='struct direct' ;;
5273 *) guess2='struct dirent' ;;
5276 if $contains "$guess1" try.c >/dev/null 2>&1; then
5277 direntrytype="$guess1"
5278 echo "Your directory entries are $direntrytype." >&4
5279 elif $contains "$guess2" try.c >/dev/null 2>&1; then
5280 direntrytype="$guess2"
5281 echo "Your directory entries seem to be $direntrytype." >&4
5283 echo "I don't recognize your system's directory entries." >&4
5284 rp="What type is used for directory entries on this system?"
5292 : see if the directory entry stores field length
5294 $cppstdin $cppflags $cppminus < "$xinc" > try.c
5295 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
5296 echo "Good, your directory entry keeps length information in d_namlen." >&4
5299 echo "Your directory entry does not know about the d_namlen field." >&4
5306 : see if dlerror exists
5309 set dlerror d_dlerror
5313 : see if dld is available
5317 : see if dlopen exists
5324 : determine which dynamic loading, if any, to compile in
5326 dldir="ext/DynaLoader"
5339 $define) dflt='y' ;;
5342 $define) dflt='y' ;;
5344 : Does a dl_xxx.xs file exist for this operating system
5345 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
5348 rp="Do you wish to use dynamic loading?"
5355 if $test -f ../$dldir/dl_${osname}.xs ; then
5356 dflt="$dldir/dl_${osname}.xs"
5357 elif $test "$d_dlopen" = "$define" ; then
5358 dflt="$dldir/dl_dlopen.xs"
5359 elif $test "$i_dld" = "$define" ; then
5360 dflt="$dldir/dl_dld.xs"
5365 *) dflt="$dldir/$dlsrc"
5368 echo "The following dynamic loading files are available:"
5369 : Can not go over to $dldir because getfile has path hard-coded in.
5370 cd ..; ls -C $dldir/dl*.xs; cd UU
5371 rp="Source file to use for dynamic loading"
5376 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5380 Some systems may require passing special flags to $cc -c to
5381 compile modules that will be used to create a shared library.
5382 To use no flags, say "none".
5385 case "$cccdlflags" in
5386 '') case "$gccversion" in
5387 '') case "$osname" in
5389 next) dflt='none' ;;
5390 solaris|svr4*|esix*) dflt='-Kpic' ;;
5391 sunos) dflt='-pic' ;;
5396 *) dflt="$cccdlflags" ;;
5398 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5401 none) cccdlflags=' ' ;;
5402 *) cccdlflags="$ans" ;;
5407 Some systems use ld to create libraries that can be dynamically loaded,
5408 while other systems (such as those using ELF) use $cc.
5412 '') $cat >try.c <<'EOM'
5413 /* Test for whether ELF binaries are produced */
5418 int i = open("a.out",O_RDONLY);
5421 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5422 exit(0); /* succeed (yes, it's ELF) */
5427 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5429 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5433 echo "I'll use ld to build dynamic libraries."
5442 rp="What command should be used to create dynamic libraries?"
5448 Some systems may require passing special flags to $ld to create a
5449 library that can be dynamically loaded. If your ld flags include
5450 -L/other/path options to locate libraries outside your loader's normal
5451 search path, you may need to specify those -L options here as well. To
5452 use no flags, say "none".
5455 case "$lddlflags" in
5456 '') case "$osname" in
5458 linux) dflt='-shared' ;;
5459 next) dflt='none' ;;
5460 solaris) dflt='-G' ;;
5461 sunos) dflt='-assert nodefinitions' ;;
5462 svr4*|esix*) dflt="-G $ldflags" ;;
5466 *) dflt="$lddlflags" ;;
5469 : Try to guess additional flags to pick up local libraries.
5470 for thisflag in $ldflags; do
5475 *) dflt="$dflt $thisflag" ;;
5485 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5488 none) lddlflags=' ' ;;
5489 *) lddlflags="$ans" ;;
5494 Some systems may require passing special flags to $cc to indicate that
5495 the resulting executable will use dynamic linking. To use no flags,
5499 case "$ccdlflags" in
5500 '') case "$osname" in
5501 hpux) dflt='-Wl,-E' ;;
5502 linux) dflt='-rdynamic' ;;
5503 next) dflt='none' ;;
5504 sunos) dflt='none' ;;
5507 *) dflt="$ccdlflags" ;;
5509 rp="Any special flags to pass to $cc to use dynamic loading?"
5512 none) ccdlflags=' ' ;;
5513 *) ccdlflags="$ans" ;;
5531 System V Release 4 systems can support dynamic loading
5532 only if libperl is created as a shared library.
5539 set d_shrplib; eval $setvar
5540 case "$d_shrplib" in
5544 Be sure to add the perl source directory to the LD_LIBRARY_PATH
5545 environment variable before running make:
5546 LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH
5548 setenv LD_LIBRARY_PATH `cd ..;pwd`
5553 case "$d_shrplib" in
5556 "") dflt="$archlib/CORE";;
5557 *) dflt="$shrpdir";;
5559 rp="What directory should we install the shared libperl into?"
5568 : see if dlfcn is available
5576 On a few systems, the dynamically loaded modules that perl generates and uses
5577 will need a different extension then shared libs. The default will probably
5585 rp='What is the extension of dynamically loaded modules'
5594 : Check if dlsym need a leading underscore
5600 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
5601 $cat >dyna.c <<'EOM'
5610 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
5612 #include <sys/types.h>
5626 int mode = RTLD_LAZY ;
5628 handle = dlopen("./dyna.$dlext", mode) ;
5629 if (handle == NULL) {
5633 symbol = dlsym(handle, "fred") ;
5634 if (symbol == NULL) {
5635 /* try putting a leading underscore */
5636 symbol = dlsym(handle, "_fred") ;
5637 if (symbol == NULL) {
5648 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
5649 $ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 &&
5650 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
5653 1) echo "Test program failed using dlopen." >&4
5654 echo "Perhaps you should not use dynamic loading." >&4;;
5655 2) echo "Test program failed using dlsym." >&4
5656 echo "Perhaps you should not use dynamic loading." >&4;;
5657 3) echo "dlsym needs a leading underscore" >&4
5659 4) echo "dlsym doesn't need a leading underscore." >&4;;
5662 echo "I can't compile and run the test program." >&4
5667 $rm -f fred fred.? dyna.$dlext dyna.?
5672 : see if dup2 exists
5676 : Locate the flags for 'open()'
5678 $cat >open3.c <<'EOCP'
5679 #include <sys/types.h>
5684 #include <sys/file.h>
5695 : check sys/file.h first to get FREAD on Sun
5696 if $test `./findhdr sys/file.h` && \
5697 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
5699 echo "<sys/file.h> defines the O_* constants..." >&4
5701 echo "and you have the 3 argument form of open()." >&4
5704 echo "but not the 3 argument form of open(). Oh, well." >&4
5707 elif $test `./findhdr fcntl.h` && \
5708 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
5710 echo "<fcntl.h> defines the O_* constants..." >&4
5712 echo "and you have the 3 argument form of open()." >&4
5715 echo "but not the 3 argument form of open(). Oh, well." >&4
5720 echo "I can't find the O_* constant definitions! You got problems." >&4
5726 : check for non-blocking I/O stuff
5727 case "$h_sysfile" in
5728 true) echo "#include <sys/file.h>" > head.c;;
5731 true) echo "#include <fcntl.h>" > head.c;;
5732 *) echo "#include <sys/fcntl.h>" > head.c;;
5737 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
5738 case "$o_nonblock" in
5741 $cat >>try.c <<'EOCP'
5744 printf("O_NONBLOCK\n");
5748 printf("O_NDELAY\n");
5752 printf("FNDELAY\n");
5758 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5760 case "$o_nonblock" in
5761 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
5762 *) echo "Seems like we can use $o_nonblock.";;
5765 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
5768 *) echo "Using $hint value $o_nonblock.";;
5770 $rm -f try try.* .out core
5773 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
5779 #include <sys/types.h>
5781 #define MY_O_NONBLOCK $o_nonblock
5783 $signal_t blech(x) int x; { exit(3); }
5785 $cat >> try.c <<'EOCP'
5793 pipe(pd); /* Down: child -> parent */
5794 pipe(pu); /* Up: parent -> child */
5797 close(pd[1]); /* Parent reads from pd[0] */
5798 close(pu[0]); /* Parent writes (blocking) to pu[1] */
5799 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
5801 signal(SIGALRM, blech);
5803 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
5805 sprintf(string, "%d\n", ret);
5806 write(2, string, strlen(string));
5809 if (errno == EAGAIN) {
5815 if (errno == EWOULDBLOCK)
5816 printf("EWOULDBLOCK\n");
5819 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
5820 sleep(2); /* Give it time to close our pipe */
5822 ret = read(pd[0], buf, 1); /* Should read EOF */
5824 sprintf(string, "%d\n", ret);
5825 write(3, string, strlen(string));
5829 close(pd[0]); /* We write to pd[1] */
5830 close(pu[1]); /* We read from pu[0] */
5831 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
5832 close(pd[1]); /* Pipe pd is now fully closed! */
5833 exit(0); /* Bye bye, thank you for playing! */
5836 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5837 echo "$startsh" >mtry
5838 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
5840 ./mtry >/dev/null 2>&1
5842 0) eagain=`$cat try.out`;;
5843 1) echo "Could not perform non-blocking setting!";;
5844 2) echo "I did a successful read() for something that was not there!";;
5845 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
5846 *) echo "Something terribly wrong happened during testing.";;
5848 rd_nodata=`$cat try.ret`
5849 echo "A read() system call with no data present returns $rd_nodata."
5850 case "$rd_nodata" in
5853 echo "(That's peculiar, fixing that to be -1.)"
5859 echo "Forcing errno EAGAIN on read() with no data available."
5863 echo "Your read() sets errno to $eagain when no data is available."
5866 status=`$cat try.err`
5868 0) echo "And it correctly returns 0 to signal EOF.";;
5869 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
5870 *) echo "However, your read() returns '$status' on EOF??";;
5873 if test "$status" -eq "$rd_nodata"; then
5874 echo "WARNING: you can't distinguish between EOF and no data!"
5878 echo "I can't compile the test program--assuming errno EAGAIN will do."
5885 echo "Using $hint value $eagain."
5886 echo "Your read() returns $rd_nodata when no data is present."
5887 case "$d_eofnblk" in
5888 "$define") echo "And you can see EOF because read() returns 0.";;
5889 "$undef") echo "But you can't see EOF status from read() returned value.";;
5891 echo "(Assuming you can't see EOF status from read anyway.)"
5897 $rm -f try try.* .out core head.c mtry
5899 : see if fchmod exists
5903 : see if fchown exists
5907 : see if this is an fcntl system
5911 : see if fgetpos exists
5912 set fgetpos d_fgetpos
5915 : see if flock exists
5919 : see if fork exists
5923 : see if pathconf exists
5924 set pathconf d_pathconf
5927 : see if fpathconf exists
5928 set fpathconf d_fpathconf
5931 : see if fsetpos exists
5932 set fsetpos d_fsetpos
5935 : see if gethostent exists
5936 set gethostent d_gethent
5939 : see if getlogin exists
5940 set getlogin d_getlogin
5943 : see if getpgrp exists
5944 set getpgrp d_getpgrp
5947 : see if getpgrp2 exists
5948 set getpgrp2 d_getpgrp2
5951 : see if getppid exists
5952 set getppid d_getppid
5955 : see if getpriority exists
5956 set getpriority d_getprior
5959 : see if this is a netinet/in.h or sys/in.h system
5960 set netinet/in.h i_niin sys/in.h i_sysin
5963 : see if htonl --and friends-- exists
5968 : Maybe they are macros.
5973 #include <sys/types.h>
5974 #$i_niin I_NETINET_IN
5977 #include <netinet/in.h>
5983 printf("Defined as a macro.");
5986 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
5987 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
5989 echo "But it seems to be defined as a macro." >&4
5997 : see which of string.h or strings.h is needed
5999 strings=`./findhdr string.h`
6000 if $test "$strings" && $test -r "$strings"; then
6001 echo "Using <string.h> instead of <strings.h>." >&4
6005 strings=`./findhdr strings.h`
6006 if $test "$strings" && $test -r "$strings"; then
6007 echo "Using <strings.h> instead of <string.h>." >&4
6009 echo "No string header found -- You'll surely have problems." >&4
6015 "$undef") strings=`./findhdr strings.h`;;
6016 *) strings=`./findhdr string.h`;;
6021 if set index val -f; eval $csym; $val; then
6022 if set strchr val -f d_strchr; eval $csym; $val; then
6023 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6026 echo "strchr() found." >&4
6030 echo "index() found." >&4
6035 echo "index() found." >&4
6038 if set strchr val -f d_strchr; eval $csym; $val; then
6041 echo "strchr() found." >&4
6043 echo "No index() or strchr() found!" >&4
6048 set d_strchr; eval $setvar
6050 set d_index; eval $setvar
6054 $cat >isascii.c <<'EOCP'
6065 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6066 echo "isascii() found." >&4
6069 echo "isascii() NOT found." >&4
6076 : see if killpg exists
6080 : see if link exists
6084 : see if localeconv exists
6085 set localeconv d_locconv
6088 : see if lockf exists
6092 : see if lstat exists
6096 : see if mblen exists
6100 : see if mbstowcs exists
6101 set mbstowcs d_mbstowcs
6104 : see if mbtowc exists
6108 : see if memcmp exists
6112 : see if memcpy exists
6116 : see if memmove exists
6117 set memmove d_memmove
6120 : see if memset exists
6124 : see if mkdir exists
6128 : see if mkfifo exists
6132 : see if mktime exists
6136 : see if msgctl exists
6140 : see if msgget exists
6144 : see if msgsnd exists
6148 : see if msgrcv exists
6152 : see how much of the 'msg*(2)' library is present.
6155 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6156 *"$undef"*) h_msg=false;;
6158 : we could also check for sys/ipc.h ...
6159 if $h_msg && $test `./findhdr sys/msg.h`; then
6160 echo "You have the full msg*(2) library." >&4
6163 echo "You don't have the full msg*(2) library." >&4
6169 : see if this is a malloc.h system
6170 set malloc.h i_malloc
6173 : see if stdlib is available
6174 set stdlib.h i_stdlib
6177 : determine which malloc to compile in
6179 case "$usemymalloc" in
6180 ''|y*|true) dflt='y' ;;
6181 n*|false) dflt='n' ;;
6182 *) dflt="$usemymalloc" ;;
6184 rp="Do you wish to attempt to use the malloc that comes with $package?"
6190 mallocsrc='malloc.c'
6191 mallocobj='malloc.o'
6192 d_mymalloc="$define"
6195 : Remove malloc from list of libraries to use
6196 echo "Removing unneeded -lmalloc from library list" >&4
6197 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6200 echo "libs = $libs" >&4
6212 : compute the return types of malloc and free
6214 $cat >malloc.c <<END
6218 #include <sys/types.h>
6232 case "$malloctype" in
6234 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6241 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6245 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6252 echo "Your system uses $freetype free(), it would seem." >&4
6254 : see if nice exists
6258 : see if pause exists
6262 : see if pipe exists
6266 : see if poll exists
6270 : see if this is a pwd.h system
6276 xxx=`./findhdr pwd.h`
6277 $cppstdin $cppflags $cppminus < $xxx >$$.h
6279 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6287 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
6295 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
6303 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
6311 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
6319 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
6331 set d_pwquota; eval $setvar
6332 set d_pwage; eval $setvar
6333 set d_pwchange; eval $setvar
6334 set d_pwclass; eval $setvar
6335 set d_pwexpire; eval $setvar
6336 set d_pwcomment; eval $setvar
6340 : see if readdir and friends exist
6341 set readdir d_readdir
6343 set seekdir d_seekdir
6345 set telldir d_telldir
6347 set rewinddir d_rewinddir
6350 : see if readlink exists
6351 set readlink d_readlink
6354 : see if rename exists
6358 : see if rmdir exists
6362 : can bcopy handle overlapping blocks?
6367 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
6368 $cat >foo.c <<'EOCP'
6371 char buf[128], abc[128];
6377 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
6379 for (align = 7; align >= 0; align--) {
6380 for (len = 36; len; len--) {
6383 for (off = 1; off <= len; off++) {
6384 bcopy(b, b+off, len);
6385 bcopy(b+off, b, len);
6386 if (bcmp(b, abc, len))
6394 if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
6395 if ./safebcpy 2>/dev/null; then
6399 echo "It can't, sorry."
6402 echo "(I can't compile the test program, so we'll assume not...)"
6406 $rm -f foo.* safebcpy core
6410 : can memcpy handle overlapping blocks?
6415 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
6416 $cat >foo.c <<'EOCP'
6419 char buf[128], abc[128];
6425 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
6427 for (align = 7; align >= 0; align--) {
6428 for (len = 36; len; len--) {
6430 memcpy(b, abc, len);
6431 for (off = 1; off <= len; off++) {
6432 memcpy(b+off, b, len);
6433 memcpy(b, b+off, len);
6434 if (memcmp(b, abc, len))
6442 if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
6443 if ./safemcpy 2>/dev/null; then
6447 echo "It can't, sorry."
6450 echo "(I can't compile the test program, so we'll assume not...)"
6454 $rm -f foo.* safemcpy core
6458 : see if select exists
6462 : see if semctl exists
6466 : see if semget exists
6470 : see if semop exists
6474 : see how much of the 'sem*(2)' library is present.
6477 case "$d_semctl$d_semget$d_semop" in
6478 *"$undef"*) h_sem=false;;
6480 : we could also check for sys/ipc.h ...
6481 if $h_sem && $test `./findhdr sys/sem.h`; then
6482 echo "You have the full sem*(2) library." >&4
6485 echo "You don't have the full sem*(2) library." >&4
6491 : see if setegid exists
6492 set setegid d_setegid
6495 : see if seteuid exists
6496 set seteuid d_seteuid
6499 : see if setlinebuf exists
6500 set setlinebuf d_setlinebuf
6503 : see if setlocale exists
6504 set setlocale d_setlocale
6507 : see if setpgid exists
6508 set setpgid d_setpgid
6511 : see if setpgrp2 exists
6512 set setpgrp2 d_setpgrp2
6515 : see if setpriority exists
6516 set setpriority d_setprior
6519 : see if setregid exists
6520 set setregid d_setregid
6522 set setresgid d_setresgid
6525 : see if setreuid exists
6526 set setreuid d_setreuid
6528 set setresuid d_setresuid
6531 : see if setrgid exists
6532 set setrgid d_setrgid
6535 : see if setruid exists
6536 set setruid d_setruid
6539 : see if setsid exists
6543 : see if shmctl exists
6547 : see if shmget exists
6551 : see if shmat exists
6554 : see what shmat returns
6557 $cat >shmat.c <<'END'
6558 #include <sys/shm.h>
6561 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
6566 echo "and it returns ($shmattype)." >&4
6567 : see if a prototype for shmat is available
6568 xxx=`./findhdr sys/shm.h`
6569 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
6570 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
6581 set d_shmatprototype
6584 : see if shmdt exists
6588 : see how much of the 'shm*(2)' library is present.
6591 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
6592 *"$undef"*) h_shm=false;;
6594 : we could also check for sys/ipc.h ...
6595 if $h_shm && $test `./findhdr sys/shm.h`; then
6596 echo "You have the full shm*(2) library." >&4
6599 echo "You don't have the full shm*(2) library." >&4
6605 : see if sigvector exists -- since sigvec will match the substring
6607 if set sigvector val -f d_sigvectr; eval $csym; $val; then
6608 echo 'sigvector() found--you must be running HP-UX.' >&4
6609 val="$define"; set d_sigvectr; eval $setvar
6610 val="$define"; set d_sigvec; eval $setvar
6612 : try the original name
6614 if set sigvec val -f d_sigvec; eval $csym; $val; then
6615 echo 'sigvec() found.' >&4
6616 val="$define"; set d_sigvec; eval $setvar
6618 echo 'sigvec() not found--race conditions with signals may occur.' >&4
6619 val="$undef"; set d_sigvec; eval $setvar
6623 : see if we have sigaction
6624 set sigaction d_sigaction
6628 : see if sigsetjmp exists
6630 case "$d_sigsetjmp" in
6638 if (sigsetjmp(env,1))
6645 if $cc $ccflags $ldflags set.c -o set $libs >/dev/null 2>&1; then
6646 if ./set >/dev/null 2>&1; then
6647 echo "POSIX sigsetjmp found." >&4
6651 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
6656 echo "Sigsetjmp not found." >&4
6660 *) val="$d_sigsetjmp"
6661 case "$d_sigsetjmp" in
6662 $define) echo "POSIX sigsetjmp found." >&4;;
6663 $undef) echo "Sigsetjmp not found." >&4;;
6673 : see whether socket exists
6675 $echo $n "Hmm... $c" >&4
6676 if set socket val -f d_socket; eval $csym; $val; then
6677 echo "Looks like you have Berkeley networking support." >&4
6679 if set setsockopt val -f; eval $csym; $val; then
6682 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
6686 if $contains socklib libc.list >/dev/null 2>&1; then
6687 echo "Looks like you have Berkeley networking support." >&4
6689 : we will have to assume that it supports the 4.2 BSD interface
6692 echo "You don't have Berkeley networking in libc.a..." >&4
6693 if test -f /usr/lib/libnet.a; then
6694 ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \
6695 ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list
6696 if $contains socket libc.list >/dev/null 2>&1; then
6697 echo "...but the Wollongong group seems to have hacked it in." >&4
6699 sockethdr="-I/usr/netinclude"
6701 if $contains setsockopt libc.list >/dev/null 2>&1; then
6704 echo "...using the old 4.1c interface, rather than 4.2" >&4
6708 echo "or even in libnet.a, which is peculiar." >&4
6713 echo "or anywhere else I see." >&4
6720 : see if socketpair exists
6721 set socketpair d_sockpair
6724 : see if stat knows about block sizes
6726 xxx=`./findhdr sys/stat.h`
6727 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
6728 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
6729 echo "Your stat() knows about block sizes." >&4
6732 echo "Your stat() doesn't know about block sizes." >&4
6736 echo "Your stat() doesn't know about block sizes." >&4
6742 : see if _ptr and _cnt from stdio act std
6744 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
6745 echo "(Looks like you have stdio.h from Linux.)"
6746 case "$stdio_ptr" in
6747 '') stdio_ptr='((fp)->_IO_read_ptr)'
6750 *) ptr_lval=$d_stdio_ptr_lval;;
6752 case "$stdio_cnt" in
6753 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
6756 *) cnt_lval=$d_stdio_cnt_lval;;
6758 case "$stdio_base" in
6759 '') stdio_base='((fp)->_IO_read_base)';;
6761 case "$stdio_bufsiz" in
6762 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
6765 case "$stdio_ptr" in
6766 '') stdio_ptr='((fp)->_ptr)'
6769 *) ptr_lval=$d_stdio_ptr_lval;;
6771 case "$stdio_cnt" in
6772 '') stdio_cnt='((fp)->_cnt)'
6775 *) cnt_lval=$d_stdio_cnt_lval;;
6777 case "$stdio_base" in
6778 '') stdio_base='((fp)->_base)';;
6780 case "$stdio_bufsiz" in
6781 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
6784 : test whether _ptr and _cnt really work
6785 echo "Checking how std your stdio is..." >&4
6788 #define FILE_ptr(fp) $stdio_ptr
6789 #define FILE_cnt(fp) $stdio_cnt
6791 FILE *fp = fopen("try.c", "r");
6794 18 <= FILE_cnt(fp) &&
6795 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
6802 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
6804 echo "Your stdio acts pretty std."
6807 echo "Your stdio isn't very std."
6810 echo "Your stdio doesn't appear very std."
6816 : Can _ptr be used as an lvalue?
6817 case "$d_stdstdio$ptr_lval" in
6818 $define$define) val=$define ;;
6821 set d_stdio_ptr_lval
6824 : Can _cnt be used as an lvalue?
6825 case "$d_stdstdio$cnt_lval" in
6826 $define$define) val=$define ;;
6829 set d_stdio_cnt_lval
6832 : see if _base is also standard
6834 case "$d_stdstdio" in
6838 #define FILE_base(fp) $stdio_base
6839 #define FILE_bufsiz(fp) $stdio_bufsiz
6841 FILE *fp = fopen("try.c", "r");
6844 19 <= FILE_bufsiz(fp) &&
6845 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
6851 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
6853 echo "Even its _base field acts std."
6856 echo "But its _base field isn't std."
6859 echo "However, it seems to be lacking the _base field."
6867 : see if strcoll exists
6868 set strcoll d_strcoll
6871 : check for structure copying
6873 echo "Checking to see if your C compiler can copy structs..." >&4
6874 $cat >try.c <<'EOCP'
6884 if $cc -c try.c >/dev/null 2>&1 ; then
6889 echo "Nope, it can't."
6895 : see if strerror and/or sys_errlist[] exist
6897 if set strerror val -f d_strerror; eval $csym; $val; then
6898 echo 'strerror() found.' >&4
6899 d_strerror="$define"
6900 d_strerrm='strerror(e)'
6901 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6902 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
6903 d_syserrlst="$define"
6905 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
6906 d_syserrlst="$undef"
6908 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
6909 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
6910 echo 'strerror() found in string header.' >&4
6911 d_strerror="$define"
6912 d_strerrm='strerror(e)'
6913 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6914 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
6915 d_syserrlst="$define"
6917 echo "(You don't appear to have any sys_errlist[], how can this be?)"
6918 d_syserrlst="$undef"
6920 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6921 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
6923 d_syserrlst="$define"
6924 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
6926 echo 'strerror() and sys_errlist[] NOT found.' >&4
6928 d_syserrlst="$undef"
6929 d_strerrm='"unknown"'
6932 : see if strxfrm exists
6933 set strxfrm d_strxfrm
6936 : see if symlink exists
6937 set symlink d_symlink
6940 : see if syscall exists
6941 set syscall d_syscall
6944 : see if sysconf exists
6945 set sysconf d_sysconf
6948 : see if system exists
6952 : see if tcgetpgrp exists
6953 set tcgetpgrp d_tcgetpgrp
6956 : see if tcsetpgrp exists
6957 set tcsetpgrp d_tcsetpgrp
6960 : define an is-a-typedef? function
6961 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
6963 "") inclist="sys/types.h";;
6965 eval "varval=\$$var";
6969 for inc in $inclist; do
6970 echo "#include <$inc>" >>temp.c;
6972 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
6973 if $contains $type temp.E >/dev/null 2>&1; then
6979 *) eval "$var=\$varval";;
6982 : see if this is a sys/times.h system
6983 set sys/times.h i_systimes
6986 : see if times exists
6988 if set times val -f d_times; eval $csym; $val; then
6989 echo 'times() found.' >&4
6992 case "$i_systimes" in
6993 "$define") inc='sys/times.h';;
6995 set clock_t clocktype long stdio.h sys/types.h $inc
6999 rp="What type is returned by times() on this system?"
7003 echo 'times() NOT found, hope that will do.' >&4
7008 : see if truncate exists
7009 set truncate d_truncate
7012 : see if tzname[] exists
7014 if set tzname val -a d_tzname; eval $csym; $val; then
7016 echo 'tzname[] found.' >&4
7019 echo 'tzname[] NOT found.' >&4
7024 : see if umask exists
7028 : see how we will look up host name
7031 : dummy stub to allow use of elif
7032 elif set uname val -f d_uname; eval $csym; $val; then
7035 uname() was found, but you're running xenix, and older versions of xenix
7036 have a broken uname(). If you don't really know whether your xenix is old
7037 enough to have a broken system call, use the default answer.
7044 rp='Is your uname() broken?'
7047 n*) d_uname="$define"; call=uname;;
7050 echo 'uname() found.' >&4
7055 case "$d_gethname" in
7056 '') d_gethname="$undef";;
7059 '') d_uname="$undef";;
7061 case "$d_phostname" in
7062 '') d_phostname="$undef";;
7065 : backward compatibility for d_hvfork
7066 if test X$d_hvfork != X; then
7070 : see if there is a vfork
7075 : Ok, but do we want to use it. vfork is reportedly unreliable in
7076 : perl on Solaris 2.x, and probably elsewhere.
7084 rp="Some systems have problems with vfork(). Do you want to use it?"
7089 echo "Ok, we won't use vfork()."
7098 $define) usevfork='true';;
7099 *) usevfork='false';;
7102 : see if this is an sysdir system
7103 set sys/dir.h i_sysdir
7106 : see if this is an sysndir system
7107 set sys/ndir.h i_sysndir
7110 : see if closedir exists
7111 set closedir d_closedir
7114 case "$d_closedir" in
7117 echo "Checking whether closedir() returns a status..." >&4
7118 cat > closedir.c <<EOM
7119 #$i_dirent I_DIRENT /**/
7120 #$i_sysdir I_SYS_DIR /**/
7121 #$i_sysndir I_SYS_NDIR /**/
7123 #if defined(I_DIRENT)
7125 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
7126 #include <sys/dir.h>
7130 #include <sys/ndir.h>
7134 #include <ndir.h> /* may be wrong in the future */
7136 #include <sys/dir.h>
7141 int main() { return closedir(opendir(".")); }
7143 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
7144 if ./closedir > /dev/null 2>&1 ; then
7145 echo "Yes, it does."
7148 echo "No, it doesn't."
7152 echo "(I can't seem to compile the test program--assuming it doesn't)"
7163 : check for volatile keyword
7165 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
7166 $cat >try.c <<'EOCP'
7169 typedef struct _goo_struct goo_struct;
7170 goo_struct * volatile goo = ((goo_struct *)0);
7171 struct _goo_struct {
7176 typedef unsigned short foo_t;
7179 volatile foo_t blech;
7183 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
7185 echo "Yup, it does."
7188 echo "Nope, it doesn't."
7194 : see if there is a wait4
7198 : see if waitpid exists
7199 set waitpid d_waitpid
7202 : see if wcstombs exists
7203 set wcstombs d_wcstombs
7206 : see if wctomb exists
7210 : preserve RCS keywords in files with variable substitution, grrr
7215 Revision='$Revision'
7217 : check for alignment requirements
7219 case "$alignbytes" in
7220 '') echo "Checking alignment constraints..." >&4
7221 $cat >try.c <<'EOCP'
7228 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
7231 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
7235 echo"(I can't seem to compile the test program...)"
7238 *) dflt="$alignbytes"
7241 rp="Doubles must be aligned on a how-many-byte boundary?"
7246 : Define several unixisms. Hints files or command line options
7247 : can be used to override them.
7260 : Which makefile gets called first. This is used by make depend.
7261 case "$firstmakefile" in
7262 '') firstmakefile='makefile';;
7265 : check for ordering of bytes in a long
7266 case "$byteorder" in
7270 In the following, larger digits indicate more significance. A big-endian
7271 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
7272 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
7273 machines may have weird orders like 3412. A Cray will report 87654321. If
7274 the test program works the default is probably right.
7275 I'm now running the test program...
7277 $cat >try.c <<'EOCP'
7284 char c[sizeof(long)];
7287 if (sizeof(long) > 4)
7288 u.l = (0x08070605L << 32) | 0x04030201L;
7291 for (i = 0; i < sizeof(long); i++)
7292 printf("%c", u.c[i]+'0');
7298 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
7301 [1-4][1-4][1-4][1-4]|12345678|87654321)
7302 echo "(The test program ran ok.)"
7303 echo "byteorder=$dflt"
7306 ????|????????) echo "(The test program ran ok.)" ;;
7307 *) echo "(The test program didn't run right for some reason.)" ;;
7312 (I can't seem to compile the test program. Guessing big-endian...)
7315 case "$xxx_prompt" in
7317 rp="What is the order of bytes in a long?"
7328 : how do we catenate cpp tokens here?
7330 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
7331 $cat >cpp_stuff.c <<'EOCP'
7332 #define RCAT(a,b)a/**/b
7333 #define ACAT(a,b)a ## b
7337 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
7338 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
7339 echo "Oh! Smells like ANSI's been here."
7340 echo "We can catify or stringify, separately or together!"
7342 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
7343 echo "Ah, yes! The good old days!"
7344 echo "However, in the good old days we don't know how to stringify and"
7345 echo "catify at the same time."
7349 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
7350 to have to edit the values of CAT[2-5] in config.h...
7352 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
7356 : see if this is a db.h system
7362 : Check the return type needed for hash
7364 echo "Checking return type needed for hash for Berkeley DB ..." >&4
7370 #include <sys/types.h>
7372 u_int32_t hash_cb (ptr, size)
7380 info.hash = hash_cb;
7383 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7384 if $contains warning try.out >>/dev/null 2>&1 ; then
7387 db_hashtype='u_int32_t'
7390 echo "I can't seem to compile the test program." >&4
7394 echo "Your version of Berkeley DB uses $db_hashtype for hash."
7402 : Check the return type needed for prefix
7404 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
7410 #include <sys/types.h>
7412 size_t prefix_cb (key1, key2)
7420 info.prefix = prefix_cb;
7423 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7424 if $contains warning try.out >>/dev/null 2>&1 ; then
7427 db_prefixtype='size_t'
7430 echo "I can't seem to compile the test program." >&4
7434 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
7436 *) db_prefixtype='int'
7440 : check for void type
7442 echo "Checking to see how well your C compiler groks the void type..." >&4
7445 Support flag bits are:
7446 1: basic void declarations.
7447 2: arrays of pointers to functions returning void.
7448 4: operations between pointers to and addresses of void functions.
7449 8: generic void pointers.
7452 case "$voidflags" in
7454 $cat >try.c <<'EOCP'
7460 extern void moo(); /* function returning void */
7461 void (*goo)(); /* ptr to func returning void */
7463 void *hue; /* generic ptr */
7477 if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
7478 voidflags=$defvoidused
7479 echo "It appears to support void to the level $package wants ($defvoidused)."
7480 if $contains warning .out >/dev/null 2>&1; then
7481 echo "However, you might get some warnings that look like this:"
7485 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
7486 if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then
7487 echo "It supports 1..."
7488 if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then
7489 echo "It also supports 2..."
7490 if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then
7492 echo "And it supports 4 but not 8 definitely."
7494 echo "It doesn't support 4..."
7495 if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then
7497 echo "But it supports 8."
7500 echo "Neither does it support 8."
7504 echo "It does not support 2..."
7505 if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then
7507 echo "But it supports 4 and 8."
7509 if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then
7511 echo "And it supports 4 but has not heard about 8."
7513 echo "However it supports 8 but not 4."
7518 echo "There is no support at all for void."
7523 : Only prompt user if support does not match the level we want
7524 case "$voidflags" in
7528 rp="Your void support flags add up to what?"
7535 : see what type file positions are declared as in the library
7536 set fpos_t fpostype long stdio.h sys/types.h
7540 rp="What is the type for file position used by fsetpos()?"
7544 : Store the full pathname to the sed program for use in the C program
7547 : see what type gids are declared as in the kernel
7548 set gid_t gidtype xxx stdio.h sys/types.h
7552 xxx=`./findhdr sys/user.h`
7553 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
7555 unsigned) dflt="$1 $2" ;;
7559 *) dflt="$gidtype";;
7562 rp="What is the type for group ids returned by getgid()?"
7566 : see if getgroups exists
7567 set getgroups d_getgrps
7570 : Find type of 2nd arg to getgroups
7572 case "$d_getgrps" in
7574 case "$groupstype" in
7575 '') dflt="$gidtype" ;;
7576 *) dflt="$groupstype" ;;
7579 What is the type of the second argument to getgroups()? Usually this
7580 is the same as group ids, $gidtype, but not always.
7583 rp='What type is the second argument to getgroups()?'
7587 *) groupstype="$gidtype";;
7590 : see what type lseek is declared as in the kernel
7591 set off_t lseektype long stdio.h sys/types.h
7595 rp="What type is lseek's offset on this system declared as?"
7599 : see what type is used for mode_t
7600 set mode_t modetype int stdio.h sys/types.h
7604 rp="What type is used for file modes?"
7608 : locate the preferred pager for this system
7622 '') dflt=/usr/ucb/more;;
7629 rp='What pager is used on your system?'
7633 : Cruising for prototypes
7635 echo "Checking out function prototypes..." >&4
7636 $cat >prototype.c <<'EOCP'
7637 main(int argc, char *argv[]) {
7640 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7641 echo "Your C compiler appears to support function prototypes."
7644 echo "Your C compiler doesn't seem to understand function prototypes."
7651 : check for size of random number generator
7655 echo "Checking to see how many bits your rand function produces..." >&4
7656 $cat >try.c <<'EOCP'
7661 register unsigned long tmp;
7662 register unsigned long max = 0L;
7664 for (i = 1000; i; i--) {
7665 tmp = (unsigned long)rand();
7666 if (tmp > max) max = tmp;
7668 for (i = 0; max; i++)
7673 if $cc try.c -o try >/dev/null 2>&1 ; then
7677 echo "(I can't seem to compile the test program...)"
7684 rp='How many bits does your rand() function produce?'
7689 : see if ar generates random libraries by itself
7691 echo "Checking how to generate random libraries on your machine..." >&4
7692 echo 'int bar1() { return bar2(); }' > bar1.c
7693 echo 'int bar2() { return 2; }' > bar2.c
7694 $cat > foo.c <<'EOP'
7695 main() { printf("%d\n", bar1()); exit(0); }
7697 $cc $ccflags -c bar1.c >/dev/null 2>&1
7698 $cc $ccflags -c bar2.c >/dev/null 2>&1
7699 $cc $ccflags -c foo.c >/dev/null 2>&1
7700 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
7701 if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7702 ./foobar >/dev/null 2>&1; then
7703 echo "ar appears to generate random libraries itself."
7706 elif ar ts bar.a >/dev/null 2>&1 &&
7707 $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7708 ./foobar >/dev/null 2>&1; then
7709 echo "a table of contents needs to be added with 'ar ts'."
7716 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
7717 $test -f $ranlib || ranlib=''
7720 if $test -n "$ranlib"; then
7721 echo "your system has '$ranlib'; we'll use that."
7724 echo "your system doesn't seem to support random libraries"
7725 echo "so we'll use lorder and tsort to order the libraries."
7732 : see if sys/select.h has to be included
7733 set sys/select.h i_sysselct
7736 : see if we should include time.h, sys/time.h, or both
7738 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7739 $echo $n "I'm now running the test program...$c"
7740 $cat >try.c <<'EOCP'
7741 #include <sys/types.h>
7746 #ifdef SYSTIMEKERNEL
7749 #include <sys/time.h>
7752 #include <sys/select.h>
7761 struct timezone tzp;
7763 if (foo.tm_sec == foo.tm_sec)
7766 if (bar.tv_sec == bar.tv_sec)
7773 for s_timezone in '-DS_TIMEZONE' ''; do
7775 for s_timeval in '-DS_TIMEVAL' ''; do
7776 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7777 for i_time in '' '-DI_TIME'; do
7778 for i_systime in '-DI_SYSTIME' ''; do
7782 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
7783 try.c -o try >/dev/null 2>&1 ; then
7784 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7788 $echo $n "Succeeded with $flags$c"
7800 *SYSTIMEKERNEL*) i_systimek="$define"
7801 timeincl=`./findhdr sys/time.h`
7802 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7803 *) i_systimek="$undef";;
7806 *I_TIME*) i_time="$define"
7807 timeincl=`./findhdr time.h`" $timeincl"
7808 echo "We'll include <time.h>." >&4;;
7809 *) i_time="$undef";;
7812 *I_SYSTIME*) i_systime="$define"
7813 timeincl=`./findhdr sys/time.h`" $timeincl"
7814 echo "We'll include <sys/time.h>." >&4;;
7815 *) i_systime="$undef";;
7819 : check for fd_set items
7822 Checking to see how well your C compiler handles fd_set and friends ...
7824 $cat >fd_set.c <<EOCP
7825 #$i_systime I_SYS_TIME
7826 #$i_sysselct I_SYS_SELECT
7827 #$d_socket HAS_SOCKET
7828 #include <sys/types.h>
7830 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7833 #include <sys/time.h>
7836 #include <sys/select.h>
7846 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7853 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7854 d_fds_bits="$define"
7856 echo "Well, your system knows about the normal fd_set typedef..." >&4
7858 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7859 d_fd_macros="$define"
7862 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7864 d_fd_macros="$undef"
7868 Hmm, your compiler has some difficulty with fd_set. Checking further...
7870 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7873 echo "Well, your system has some sort of fd_set available..." >&4
7875 echo "and you have the normal fd_set macros." >&4
7876 d_fd_macros="$define"
7879 but not the normal fd_set macros! Gross! More work for me...
7881 d_fd_macros="$undef"
7884 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7887 d_fd_macros="$undef"
7893 : check for type of arguments to select. This will only really
7894 : work if the system supports prototypes and provides one for
7898 : Make initial guess
7899 case "$selecttype" in
7902 $define) xxx='fd_set *' ;;
7906 *) xxx="$selecttype"
7911 'fd_set *') yyy='int *' ;;
7912 'int *') yyy='fd_set *' ;;
7917 Checking to see what type of arguments are expected by select().
7920 #$i_systime I_SYS_TIME
7921 #$i_sysselct I_SYS_SELECT
7922 #$d_socket HAS_SOCKET
7923 #include <sys/types.h>
7925 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7928 #include <sys/time.h>
7931 #include <sys/select.h>
7937 Select_fd_set_t readfds;
7938 Select_fd_set_t writefds;
7939 Select_fd_set_t exceptfds;
7940 struct timeval timeout;
7941 select(width, readfds, writefds, exceptfds, &timeout);
7945 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
7947 echo "Your system uses $xxx for the arguments to select." >&4
7948 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
7950 echo "Your system uses $yyy for the arguments to select." >&4
7952 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
7959 *) selecttype='int *'
7963 : Trace out the files included by signal.h, then look for SIGxxx names.
7964 : Remove SIGARRAYSIZE used by HPUX.
7965 : Remove SIGTYP void lines used by OS2.
7966 xxx=`echo '#include <signal.h>' |
7967 $cppstdin $cppminus $cppflags 2>/dev/null |
7968 $grep '^[ ]*#.*include' |
7969 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
7970 : Check this list of files to be sure we have parsed the cpp output ok.
7971 : This will also avoid potentially non-existent files, such
7974 for xx in $xxx /dev/null ; do
7975 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
7977 : If we have found no files, at least try signal.h
7979 '') xxxfiles=`./findhdr signal.h` ;;
7982 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
7983 print substr($2, 4, 20)
7985 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
7986 print substr($3, 4, 20)
7988 : Append some common names just in case the awk scan failed.
7989 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
7990 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
7991 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
7992 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
7993 : generate a few handy files for later
7994 $cat > signal.c <<'EOP'
7995 #include <sys/types.h>
7999 printf("NSIG %d\n", NSIG);
8002 printf("NSIG %d\n", _NSIG);
8006 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
8008 printf "#ifdef SIG"; printf $1; printf "\n"
8009 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
8010 printf $1; printf ");\n"
8017 $cat >signal.awk <<'EOP'
8019 $1 ~ /^NSIG$/ { nsig = $2 }
8020 ($1 !~ /^NSIG$/) && (NF == 2) {
8021 if ($2 > maxsig) { maxsig = $2 }
8023 dup_name[ndups] = $1
8034 if (nsig == 0) { nsig = maxsig + 1 }
8035 for (n = 1; n < nsig; n++) {
8037 printf("%s %d\n", sig_name[n], sig_num[n])
8040 printf("NUM%d %d\n", n, n)
8043 for (n = 0; n < ndups; n++) {
8044 printf("%s %d\n", dup_name[n], dup_num[n])
8048 $cat >signal_cmd <<EOS
8050 $test -s signal.lst && exit 0
8051 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
8052 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8054 echo "(I can't seem be able to compile the test program -- Guessing)"
8055 echo 'kill -l' >signal
8056 set X \`csh -f <signal\`
8060 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
8062 echo \$@ | $tr ' ' '\012' | \
8063 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
8065 $rm -f signal.c signal signal.o
8067 chmod a+x signal_cmd
8068 $eunicefix signal_cmd
8070 : generate list of signal names
8080 echo "Generating a list of signal names and numbers..." >&4
8082 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
8083 sig_name="ZERO $sig_name"
8084 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
8085 sig_num="0 $sig_num"
8088 echo "The following signals are available:"
8090 echo $sig_name | $awk \
8091 'BEGIN { linelen = 0 }
8093 for (i = 1; i <= NF; i++) {
8095 linelen = linelen + length(name)
8098 linelen = length(name)
8104 $rm -f signal signal.c signal.awk signal.lst signal_cmd
8106 : see what type is used for size_t
8107 set size_t sizetype 'unsigned int' stdio.h sys/types.h
8111 rp="What type is used for the length parameter for string functions?"
8115 : see what type is used for signed size_t
8116 set ssize_t ssizetype int stdio.h sys/types.h
8119 $cat > ssize.c <<EOM
8121 #include <sys/types.h>
8122 #define Size_t $sizetype
8123 #define SSize_t $dflt
8126 if (sizeof(Size_t) == sizeof(SSize_t))
8128 else if (sizeof(Size_t) == sizeof(int))
8135 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then
8137 echo "I'll be using $ssizetype for functions returning a byte count." >&4
8139 echo "(I can't compile the test program--please enlighten me!)"
8142 I need a type that is the same size as $sizetype, but is guaranteed to
8143 be signed. Common values are int and long.
8146 rp="What signed type is the same size as $sizetype?"
8150 $rm -f ssize ssize.[co]
8152 : see what type of char stdio uses.
8154 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
8155 echo "Your stdio uses unsigned chars." >&4
8156 stdchar="unsigned char"
8158 echo "Your stdio uses signed chars." >&4
8162 : see if time exists
8164 if set time val -f d_time; eval $csym; $val; then
8165 echo 'time() found.' >&4
8167 set time_t timetype long stdio.h sys/types.h
8171 rp="What type is returned by time() on this system?"
8175 echo 'time() not found, hope that will do.' >&4
8182 : see what type uids are declared as in the kernel
8183 set uid_t uidtype xxx stdio.h sys/types.h
8187 xxx=`./findhdr sys/user.h`
8188 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
8190 unsigned) dflt="$1 $2" ;;
8194 *) dflt="$uidtype";;
8197 rp="What is the type for user ids returned by getuid()?"
8201 : see if dbm.h is available
8202 : see if dbmclose exists
8203 set dbmclose d_dbmclose
8206 case "$d_dbmclose" in
8216 *) set rpcsvc/dbm.h i_rpcsvcdbm
8221 *) echo "We won't be including <dbm.h>"
8231 : see if this is a sys/file.h system
8236 : do we need to include sys/file.h ?
8242 echo "We'll be including <sys/file.h>." >&4
8245 echo "We won't be including <sys/file.h>." >&4
8255 : see if fcntl.h is there
8260 : see if we can include fcntl.h
8266 echo "We'll be including <fcntl.h>." >&4
8270 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
8272 echo "We won't be including <fcntl.h>." >&4
8284 : see if this is an grp system
8288 : see if locale.h is available
8289 set locale.h i_locale
8292 : see if this is a math.h system
8296 : see if memory.h is available.
8301 : See if it conflicts with string.h
8307 $cppstdin $cppflags $cppminus < $strings > mem.h
8308 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8310 echo "We won't be including <memory.h>."
8320 : see if ndbm.h is available
8325 : see if dbm_open exists
8326 set dbm_open d_dbm_open
8328 case "$d_dbm_open" in
8331 echo "We won't be including <ndbm.h>"
8340 : see if net/errno.h is available
8345 : Unfortunately, it causes problems on some systems. Arrgh.
8351 #include <net/errno.h>
8357 if $cc $ccflags -c try.c >/dev/null 2>&1; then
8358 echo "We'll be including <net/errno.h>." >&4
8360 echo "We won't be including <net/errno.h>." >&4
8369 : get C preprocessor symbols handy
8371 $echo $n "Hmm... $c"
8372 echo $al | $tr ' ' '\012' >Cppsym.know
8384 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
8386 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
8389 unknown="\$unknown \$sym"
8399 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
8401 exit 0; _ _ _ _\1\\ \1\\
8404 echo "exit 1; _ _ _" >>Cppsym\$\$
8405 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
8407 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
8413 $rm -f Cppsym\$\$ Cppsym2\$\$
8418 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
8420 : now check the C compiler for additional symbols
8426 for i in \`$cc -v -c tmp.c 2>&1\`
8429 -D*) echo "\$i" | $sed 's/^-D//';;
8430 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
8437 ./ccsym | $sort | $uniq >ccsym.raw
8438 $awk '/\=/ { print $0; next }
8439 { print $0"=1" }' ccsym.raw >ccsym.list
8440 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
8441 $comm -13 ccsym.true ccsym.list >ccsym.own
8442 $comm -12 ccsym.true ccsym.list >ccsym.com
8443 $comm -23 ccsym.true ccsym.list >ccsym.cpp
8446 if $test -z ccsym.raw; then
8447 echo "Your C compiler doesn't seem to define any symbol!" >&4
8449 echo "However, your C preprocessor defines the following ones:"
8452 if $test -s ccsym.com; then
8453 echo "Your C compiler and pre-processor define these symbols:"
8454 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
8457 $test "$silent" || sleep 1
8459 if $test -s ccsym.cpp; then
8460 $test "$also" && echo " "
8461 echo "Your C pre-processor ${also}defines the following $symbols:"
8462 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
8464 $test "$silent" || sleep 1
8466 if $test -s ccsym.own; then
8467 $test "$also" && echo " "
8468 echo "Your C compiler ${also}defines the following cpp variables:"
8469 $sed -e 's/\(.*\)=1/\1/' ccsym.own
8470 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
8471 $test "$silent" || sleep 1
8476 : see if this is a termio system
8480 if $test `./findhdr termios.h`; then
8481 set tcsetattr i_termios
8487 "$define") echo "You have POSIX termios.h... good!" >&4;;
8488 *) if ./Cppsym pyr; then
8489 case "`/bin/universe`" in
8490 ucb) if $test `./findhdr sgtty.h`; then
8492 echo "<sgtty.h> found." >&4
8494 echo "System is pyramid with BSD universe."
8495 echo "<sgtty.h> not found--you could have problems." >&4
8497 *) if $test `./findhdr termio.h`; then
8499 echo "<termio.h> found." >&4
8501 echo "System is pyramid with USG universe."
8502 echo "<termio.h> not found--you could have problems." >&4
8506 if $test `./findhdr termio.h`; then
8507 echo "<termio.h> found." >&4
8509 elif $test `./findhdr sgtty.h`; then
8510 echo "<sgtty.h> found." >&4
8513 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
8516 if $test `./findhdr sgtty.h`; then
8517 echo "<sgtty.h> found." >&4
8519 elif $test `./findhdr termio.h`; then
8520 echo "<termio.h> found." >&4
8523 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
8527 set i_termio; eval $setvar
8528 val=$val2; set i_sgtty; eval $setvar
8529 val=$val3; set i_termios; eval $setvar
8531 : see if stdarg is available
8533 if $test `./findhdr stdarg.h`; then
8534 echo "<stdarg.h> found." >&4
8537 echo "<stdarg.h> NOT found." >&4
8541 : see if varags is available
8543 if $test `./findhdr varargs.h`; then
8544 echo "<varargs.h> found." >&4
8546 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
8549 : set up the varargs testing programs
8550 $cat > varargs.c <<EOP
8555 #include <varargs.h>
8573 p = va_arg(ap, char *);
8578 $cat > varargs <<EOP
8580 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
8589 : now check which varargs header should be included
8594 if `./varargs I_STDARG`; then
8596 elif `./varargs I_VARARGS`; then
8601 if `./varargs I_VARARGS`; then
8608 echo "I could not find the definition for va_dcl... You have problems..." >&4
8609 val="$undef"; set i_stdarg; eval $setvar
8610 val="$undef"; set i_varargs; eval $setvar
8617 val="$define"; set i_stdarg; eval $setvar
8618 val="$undef"; set i_varargs; eval $setvar
8621 val="$undef"; set i_stdarg; eval $setvar
8622 val="$define"; set i_varargs; eval $setvar
8625 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
8629 : see if stddef is available
8630 set stddef.h i_stddef
8633 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
8634 set sys/filio.h i_sysfilio
8637 if $test `./findhdr sys/ioctl.h`; then
8639 echo '<sys/ioctl.h> found.' >&4
8642 if $test $i_sysfilio = "$define"; then
8643 echo '<sys/ioctl.h> NOT found.' >&4
8645 $test $i_sgtty = "$define" && xxx="sgtty.h"
8646 $test $i_termio = "$define" && xxx="termio.h"
8647 $test $i_termios = "$define" && xxx="termios.h"
8648 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
8654 : see if this is a sys/param system
8655 set sys/param.h i_sysparam
8658 : see if sys/stat.h is available
8659 set sys/stat.h i_sysstat
8662 : see if sys/types.h has to be included
8663 set sys/types.h i_systypes
8666 : see if this is a sys/un.h system
8667 set sys/un.h i_sysun
8670 : see if this is a unistd.h system
8671 set unistd.h i_unistd
8674 : see if this is an utime system
8678 : see if this is a vfork system
8689 : see if gdbm.h is available
8694 : see if gdbm_open exists
8695 set gdbm_open d_gdbm_open
8697 case "$d_gdbm_open" in
8700 echo "We won't be including <gdbm.h>"
8710 echo "Looking for extensions..." >&4
8712 : If we are using the old config.sh, known_extensions may contain
8713 : old or inaccurate or duplicate values.
8715 : We do not use find because it might not be available.
8716 : We do not just use MANIFEST because the user may have dropped
8717 : some additional extensions into the source tree and expect them
8720 if $test -f $xxx/$xxx.xs; then
8721 known_extensions="$known_extensions $xxx"
8723 if $test -d $xxx; then
8726 if $test -f $yyy/$yyy.xs; then
8727 known_extensions="$known_extensions $xxx/$yyy"
8734 set X $known_extensions
8736 known_extensions="$*"
8739 : Now see which are supported on this system.
8741 for xxx in $known_extensions ; do
8743 DB_File) case "$i_db" in
8744 $define) avail_ext="$avail_ext $xxx" ;;
8747 GDBM_File) case "$i_gdbm" in
8748 $define) avail_ext="$avail_ext $xxx" ;;
8751 NDBM_File) case "$i_ndbm" in
8752 $define) avail_ext="$avail_ext $xxx" ;;
8755 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
8756 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
8759 POSIX) case "$useposix" in
8760 true|define|y) avail_ext="$avail_ext $xxx" ;;
8763 SAFE) case "$usesafe" in
8764 true|define|y) avail_ext="$avail_ext $xxx" ;;
8767 Socket) case "$d_socket" in
8768 $define) avail_ext="$avail_ext $xxx" ;;
8771 *) avail_ext="$avail_ext $xxx"
8783 A number of extensions are supplied with $package. You may choose to
8784 compile these extensions for dynamic loading (the default), compile
8785 them into the $package executable (static loading), or not include
8786 them at all. Answer "none" to include no extensions.
8789 case "$dynamic_ext" in
8790 '') dflt="$avail_ext" ;;
8791 *) dflt="$dynamic_ext" ;;
8796 rp="What extensions do you wish to load dynamically?"
8799 none) dynamic_ext=' ' ;;
8800 *) dynamic_ext="$ans" ;;
8803 case "$static_ext" in
8805 : Exclude those already listed in dynamic linking
8807 for xxx in $avail_ext; do
8808 case " $dynamic_ext " in
8810 *) dflt="$dflt $xxx" ;;
8817 *) dflt="$static_ext"
8824 rp="What extensions do you wish to load statically?"
8827 none) static_ext=' ' ;;
8828 *) static_ext="$ans" ;;
8833 A number of extensions are supplied with $package. Answer "none"
8834 to include no extensions.
8837 case "$static_ext" in
8838 '') dflt="$avail_ext" ;;
8839 *) dflt="$static_ext" ;;
8845 rp="What extensions do you wish to include?"
8848 none) static_ext=' ' ;;
8849 *) static_ext="$ans" ;;
8854 set X $dynamic_ext $static_ext
8858 : Remove build directory name from cppstdin so it can be used from
8859 : either the present location or the final installed location.
8861 : Get out of the UU directory to get correct path name.
8865 echo "Stripping down cppstdin path name"
8871 : end of configuration questions
8873 echo "End of configuration questions."
8876 : back to where it started
8877 if test -d ../UU; then
8881 : configuration may be patched via a 'config.over' file
8882 if $test -f config.over; then
8885 rp='I see a config.over file. Do you wish to load it?'
8888 n*) echo "OK, I'll ignore it.";;
8890 echo "Configuration override changes have been loaded."
8895 : in case they want portability, strip down executable paths
8896 case "$d_portable" in
8899 echo "Stripping down executable paths..." >&4
8900 for file in $loclist $trylist; do
8906 : create config.sh file
8908 echo "Creating config.sh..." >&4
8909 $spitshell <<EOT >config.sh
8912 # This file was produced by running the Configure script. It holds all the
8913 # definitions figured out by Configure. Should you modify one of these values,
8914 # do not forget to propagate your changes by running "Configure -der". You may
8915 # instead choose to run each of the .SH files by yourself, or "Configure -S".
8918 # Configuration time: $cf_time
8919 # Configured by: $cf_by
8920 # Target system: $myuname
8930 Revision='$Revision'
8934 alignbytes='$alignbytes'
8935 aphostname='$aphostname'
8938 archlibexp='$archlibexp'
8939 archname='$archname'
8940 archobjs='$archobjs'
8948 byteorder='$byteorder'
8950 castflags='$castflags'
8953 cccdlflags='$cccdlflags'
8954 ccdlflags='$ccdlflags'
8957 cf_email='$cf_email'
8962 clocktype='$clocktype'
8964 compress='$compress'
8965 contains='$contains'
8969 cpp_stuff='$cpp_stuff'
8970 cppflags='$cppflags'
8972 cppminus='$cppminus'
8974 cppstdin='$cppstdin'
8975 cryptlib='$cryptlib'
8977 d_Gconvert='$d_Gconvert'
8978 d_access='$d_access'
8980 d_archlib='$d_archlib'
8981 d_attribut='$d_attribut'
8985 d_bsdpgrp='$d_bsdpgrp'
8987 d_casti32='$d_casti32'
8988 d_castneg='$d_castneg'
8989 d_charvspr='$d_charvspr'
8991 d_chroot='$d_chroot'
8992 d_chsize='$d_chsize'
8993 d_closedir='$d_closedir'
8997 d_cuserid='$d_cuserid'
8998 d_dbl_dig='$d_dbl_dig'
8999 d_difftime='$d_difftime'
9000 d_dirnamlen='$d_dirnamlen'
9001 d_dlerror='$d_dlerror'
9002 d_dlopen='$d_dlopen'
9003 d_dlsymun='$d_dlsymun'
9004 d_dosuid='$d_dosuid'
9006 d_eofnblk='$d_eofnblk'
9007 d_eunice='$d_eunice'
9008 d_fchmod='$d_fchmod'
9009 d_fchown='$d_fchown'
9011 d_fd_macros='$d_fd_macros'
9012 d_fd_set='$d_fd_set'
9013 d_fds_bits='$d_fds_bits'
9014 d_fgetpos='$d_fgetpos'
9015 d_flexfnam='$d_flexfnam'
9018 d_fpathconf='$d_fpathconf'
9019 d_fsetpos='$d_fsetpos'
9020 d_getgrps='$d_getgrps'
9021 d_gethent='$d_gethent'
9022 d_gethname='$d_gethname'
9023 d_getlogin='$d_getlogin'
9024 d_getpgrp2='$d_getpgrp2'
9025 d_getpgrp='$d_getpgrp'
9026 d_getppid='$d_getppid'
9027 d_getprior='$d_getprior'
9030 d_isascii='$d_isascii'
9031 d_killpg='$d_killpg'
9033 d_locconv='$d_locconv'
9037 d_mbstowcs='$d_mbstowcs'
9038 d_mbtowc='$d_mbtowc'
9039 d_memcmp='$d_memcmp'
9040 d_memcpy='$d_memcpy'
9041 d_memmove='$d_memmove'
9042 d_memset='$d_memset'
9044 d_mkfifo='$d_mkfifo'
9045 d_mktime='$d_mktime'
9047 d_msgctl='$d_msgctl'
9048 d_msgget='$d_msgget'
9049 d_msgrcv='$d_msgrcv'
9050 d_msgsnd='$d_msgsnd'
9051 d_mymalloc='$d_mymalloc'
9053 d_oldarchlib='$d_oldarchlib'
9054 d_oldsock='$d_oldsock'
9056 d_pathconf='$d_pathconf'
9058 d_phostname='$d_phostname'
9061 d_portable='$d_portable'
9063 d_pwchange='$d_pwchange'
9064 d_pwclass='$d_pwclass'
9065 d_pwcomment='$d_pwcomment'
9066 d_pwexpire='$d_pwexpire'
9067 d_pwquota='$d_pwquota'
9068 d_readdir='$d_readdir'
9069 d_readlink='$d_readlink'
9070 d_rename='$d_rename'
9071 d_rewinddir='$d_rewinddir'
9073 d_safebcpy='$d_safebcpy'
9074 d_safemcpy='$d_safemcpy'
9075 d_seekdir='$d_seekdir'
9076 d_select='$d_select'
9078 d_semctl='$d_semctl'
9079 d_semget='$d_semget'
9081 d_setegid='$d_setegid'
9082 d_seteuid='$d_seteuid'
9083 d_setlinebuf='$d_setlinebuf'
9084 d_setlocale='$d_setlocale'
9085 d_setpgid='$d_setpgid'
9086 d_setpgrp2='$d_setpgrp2'
9087 d_setpgrp='$d_setpgrp'
9088 d_setprior='$d_setprior'
9089 d_setregid='$d_setregid'
9090 d_setresgid='$d_setresgid'
9091 d_setresuid='$d_setresuid'
9092 d_setreuid='$d_setreuid'
9093 d_setrgid='$d_setrgid'
9094 d_setruid='$d_setruid'
9095 d_setsid='$d_setsid'
9098 d_shmatprototype='$d_shmatprototype'
9099 d_shmctl='$d_shmctl'
9101 d_shmget='$d_shmget'
9102 d_shrplib='$d_shrplib'
9103 d_sigaction='$d_sigaction'
9104 d_sigintrp='$d_sigintrp'
9105 d_sigsetjmp='$d_sigsetjmp'
9106 d_sigvec='$d_sigvec'
9107 d_sigvectr='$d_sigvectr'
9108 d_socket='$d_socket'
9109 d_sockpair='$d_sockpair'
9110 d_statblks='$d_statblks'
9111 d_stdio_cnt_lval='$d_stdio_cnt_lval'
9112 d_stdio_ptr_lval='$d_stdio_ptr_lval'
9113 d_stdiobase='$d_stdiobase'
9114 d_stdstdio='$d_stdstdio'
9115 d_strchr='$d_strchr'
9116 d_strcoll='$d_strcoll'
9117 d_strctcpy='$d_strctcpy'
9118 d_strerrm='$d_strerrm'
9119 d_strerror='$d_strerror'
9120 d_strxfrm='$d_strxfrm'
9121 d_suidsafe='$d_suidsafe'
9122 d_symlink='$d_symlink'
9123 d_syscall='$d_syscall'
9124 d_sysconf='$d_sysconf'
9125 d_sysernlst='$d_sysernlst'
9126 d_syserrlst='$d_syserrlst'
9127 d_system='$d_system'
9128 d_tcgetpgrp='$d_tcgetpgrp'
9129 d_tcsetpgrp='$d_tcsetpgrp'
9130 d_telldir='$d_telldir'
9133 d_truncate='$d_truncate'
9134 d_tzname='$d_tzname'
9138 d_void_closedir='$d_void_closedir'
9139 d_voidsig='$d_voidsig'
9140 d_voidtty='$d_voidtty'
9141 d_volatile='$d_volatile'
9142 d_vprintf='$d_vprintf'
9144 d_waitpid='$d_waitpid'
9145 d_wcstombs='$d_wcstombs'
9146 d_wctomb='$d_wctomb'
9149 db_hashtype='$db_hashtype'
9150 db_prefixtype='$db_prefixtype'
9151 defvoidused='$defvoidused'
9152 direntrytype='$direntrytype'
9155 dynamic_ext='$dynamic_ext'
9160 eunicefix='$eunicefix'
9163 extensions='$extensions'
9165 firstmakefile='$firstmakefile'
9167 fpostype='$fpostype'
9168 freetype='$freetype'
9169 full_csh='$full_csh'
9170 full_sed='$full_sed'
9172 gccversion='$gccversion'
9176 groupcat='$groupcat'
9177 groupstype='$groupstype'
9179 h_sysfile='$h_sysfile'
9183 i_bsdioctl='$i_bsdioctl'
9186 i_dirent='$i_dirent'
9193 i_limits='$i_limits'
9194 i_locale='$i_locale'
9195 i_malloc='$i_malloc'
9197 i_memory='$i_memory'
9199 i_neterrno='$i_neterrno'
9202 i_rpcsvcdbm='$i_rpcsvcdbm'
9204 i_stdarg='$i_stdarg'
9205 i_stddef='$i_stddef'
9206 i_stdlib='$i_stdlib'
9207 i_string='$i_string'
9208 i_sysdir='$i_sysdir'
9209 i_sysfile='$i_sysfile'
9210 i_sysfilio='$i_sysfilio'
9212 i_sysioctl='$i_sysioctl'
9213 i_sysndir='$i_sysndir'
9214 i_sysparam='$i_sysparam'
9215 i_sysselct='$i_sysselct'
9216 i_syssockio='$i_syssockio'
9217 i_sysstat='$i_sysstat'
9218 i_systime='$i_systime'
9219 i_systimek='$i_systimek'
9220 i_systimes='$i_systimes'
9221 i_systypes='$i_systypes'
9223 i_termio='$i_termio'
9224 i_termios='$i_termios'
9226 i_unistd='$i_unistd'
9228 i_varargs='$i_varargs'
9229 i_varhdr='$i_varhdr'
9233 installarchlib='$installarchlib'
9234 installbin='$installbin'
9235 installman1dir='$installman1dir'
9236 installman3dir='$installman3dir'
9237 installprivlib='$installprivlib'
9238 installscript='$installscript'
9239 installsitearch='$installsitearch'
9240 installsitelib='$installsitelib'
9242 known_extensions='$known_extensions'
9246 lddlflags='$lddlflags'
9253 libswanted='$libswanted'
9259 locincpth='$locincpth'
9260 loclibpth='$loclibpth'
9264 lseektype='$lseektype'
9268 mallocobj='$mallocobj'
9269 mallocsrc='$mallocsrc'
9270 malloctype='$malloctype'
9272 man1direxp='$man1direxp'
9275 man3direxp='$man3direxp'
9279 mips_type='$mips_type'
9282 modetype='$modetype'
9285 myarchname='$myarchname'
9286 mydomain='$mydomain'
9287 myhostname='$myhostname'
9291 nm_so_opt='$nm_so_opt'
9293 o_nonblock='$o_nonblock'
9295 oldarchlib='$oldarchlib'
9296 oldarchlibexp='$oldarchlibexp'
9297 optimize='$optimize'
9298 orderlib='$orderlib'
9304 patchlevel='$patchlevel'
9305 path_sep='$path_sep'
9307 perladmin='$perladmin'
9308 perlpath='$perlpath'
9310 phostname='$phostname'
9315 prefixexp='$prefixexp'
9317 privlibexp='$privlibexp'
9318 prototype='$prototype'
9319 randbits='$randbits'
9321 rd_nodata='$rd_nodata'
9325 scriptdir='$scriptdir'
9326 scriptdirexp='$scriptdirexp'
9328 selecttype='$selecttype'
9329 sendmail='$sendmail'
9332 sharpbang='$sharpbang'
9333 shmattype='$shmattype'
9336 sig_name='$sig_name'
9338 signal_t='$signal_t'
9339 sitearch='$sitearch'
9340 sitearchexp='$sitearchexp'
9342 sitelibexp='$sitelibexp'
9343 sizetype='$sizetype'
9348 sockethdr='$sockethdr'
9349 socketlib='$socketlib'
9351 spackage='$spackage'
9352 spitshell='$spitshell'
9354 ssizetype='$ssizetype'
9355 startperl='$startperl'
9357 static_ext='$static_ext'
9359 stdio_base='$stdio_base'
9360 stdio_bufsiz='$stdio_bufsiz'
9361 stdio_cnt='$stdio_cnt'
9362 stdio_ptr='$stdio_ptr'
9365 subversion='$subversion'
9371 timeincl='$timeincl'
9372 timetype='$timetype'
9380 usemymalloc='$usemymalloc'
9382 useposix='$useposix'
9384 usevfork='$usevfork'
9388 voidflags='$voidflags'
9393 : add special variables
9394 $test -f patchlevel.h && \
9395 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
9396 echo "CONFIG=true" >>config.sh
9398 : propagate old symbols
9399 if $test -f UU/config.sh; then
9400 <UU/config.sh sort | uniq >UU/oldconfig.sh
9401 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
9402 sort | uniq -u >UU/oldsyms
9403 set X `cat UU/oldsyms`
9409 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
9411 echo "# Variables propagated from previous config.sh file." >>config.sh
9412 for sym in `cat UU/oldsyms`; do
9413 echo " Propagating $hint variable "'$'"$sym..."
9414 eval 'tmp="$'"${sym}"'"'
9416 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
9422 : Finish up by extracting the .SH files
9436 If you'd like to make any changes to the config.sh file before I begin
9437 to configure things, do it as a shell escape now (e.g. !vi config.sh).
9440 rp="Press return or use a shell escape to edit config.sh:"
9445 *) : in case they cannot read
9451 : if this fails, just run all the .SH files by hand
9458 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
9465 Now you need to generate make dependencies by running "make depend".
9466 You might prefer to run it in background: "make depend > makedepend.out &"
9467 It can take a while, so you might not want to run it right now.
9472 rp="Run make depend now?"
9476 make depend && echo "Now you must run a make."
9479 echo "You must run 'make depend' then 'make'."
9482 elif test -f [Mm]akefile; then
9484 echo "Now you must run a make."
9489 $rm -f kit*isdone ark*isdone