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.7 1995/03/21 08:46:15 ram Exp $
23 # Generated on Wed May 31 09:14:05 EDT 1995 [metaconfig 3.0 PL55]
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`
60 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
61 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
62 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
63 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
64 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
65 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
66 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
67 paths="$paths /sbin /usr/sbin /usr/libexec"
73 *) test -d $p && PATH=$PATH:$p ;;
82 echo "Say 'sh $me', not 'sh <$me'"
86 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
87 if test -f /hp-ux -a -f /bin/ksh; then
88 if (PATH=.; alias -x) >/dev/null 2>&1; then
89 : already under /bin/ksh
92 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
98 : Warn them if they use ksh on other systems
99 (PATH=.; alias -x) >/dev/null 2>&1 && \
101 (I see you are using the Korn shell. Some ksh's blow up on $me,
102 especially on exotic machines. If yours does, try the Bourne shell instead.)
106 : Configure runs within the UU subdirectory
107 test -d UU || mkdir UU
545 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
548 : We must find out about Eunice early
550 if test -f /etc/unixtovms; then
551 eunicefix=/etc/unixtovms
553 if test -f /etc/unixtovms.exe; then
554 eunicefix=/etc/unixtovms.exe
557 : list of known cpp symbols, sorted alphabetically
558 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
559 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
560 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
561 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
562 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
563 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
564 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
565 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
566 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
567 al="$al VMS Xenix286"
568 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
569 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
570 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
571 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
572 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
573 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
574 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
575 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
576 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
577 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
578 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
579 al="$al __SVR4_2__ __UMAXV__"
580 al="$al ____386BSD____ __alpha __alpha__ __amiga"
581 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
582 al="$al __host_mips__"
583 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
584 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
585 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
586 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
587 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
588 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
589 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
590 al="$al __mc88100 __mc88100__ __mips __mips__"
591 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
592 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
593 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
594 al="$al _host_mips _mips _unix"
595 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
596 al="$al apollo ardent att386 att3b"
597 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
598 al="$al cadmus clipper concurrent convex cray ctix"
599 al="$al dmert encore gcos gcx gimpel gould"
600 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
601 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
602 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
603 al="$al i186 i286 i386 i486 i8086"
604 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
605 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
606 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
607 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
608 al="$al mc88000 mc88100 merlin mert mips mvs n16"
609 al="$al ncl_el ncl_mr"
610 al="$al news1500 news1700 news1800 news1900 news3700"
611 al="$al news700 news800 news900 ns16000 ns32000"
612 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
613 al="$al parisc pc532 pdp11 plexus posix pyr"
614 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
615 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
616 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
617 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
618 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
619 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
624 : change the next line if compiling for Xenix/286 on Xenix/386
625 xlibpth='/usr/lib/386 /lib/386'
627 : general looking path for locating libraries
628 glibpth="/lib/pa1.1 /usr/lib/large /lib /usr/lib $xlibpth"
629 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
630 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib /usr/shlib"
632 : Private path used by Configure to find libraries. Its value
633 : is prepended to libpth. This variable takes care of special
634 : machines, like the mips. Usually, it should be empty.
637 : default library list
639 : full support for void wanted by default
642 : set useposix=false in your hint file to disable the POSIX extension.
644 : no include file wanted by default
647 : List of libraries we want.
648 libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
649 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
650 libswanted="$libswanted ucb bsd BSD PW x"
651 : We probably want to search /usr/shlib before most other libraries.
652 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
653 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
654 glibpth="/usr/shlib $glibpth"
655 : Do not use vfork unless overridden by a hint file.
657 : We might as well always be portable. It makes no difference for
658 : perl5, and makes people happy.
661 : script used to extract .SH files with variable substitutions
664 echo "Doing variable substitutions on .SH files..."
665 if test -f MANIFEST; then
666 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
667 : Pick up possible extension manifests.
668 for dir in ext/* ; do
669 if test -f $dir/MANIFEST; then
670 xxx=`awk '{print $1}' < $dir/MANIFEST |
671 sed -n "/\.SH$/ s@^@$dir/@p"`
672 shlist="$shlist $xxx"
677 echo "(Looking for .SH files under the current directory.)"
678 set x `find . -name "*.SH" -print`
682 0) set x *.SH; shift;;
684 if test ! -f $1; then
690 dir=`expr X$file : 'X\(.*\)/'`
691 file=`expr X$file : 'X.*/\(.*\)'`
692 (cd $dir && . ./$file)
699 if test -f config_h.SH; then
700 if test ! -f config.h; then
701 : oops, they left it out of MANIFEST, probably, so do it anyway.
707 : produce awk script to parse command line options
708 cat >options.awk <<'EOF'
710 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
712 len = length(optstr);
713 for (i = 1; i <= len; i++) {
714 c = substr(optstr, i, 1);
715 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
726 if (substr(str, 1, 1) != "-") {
727 printf("'%s'\n", str);
731 for (i = 2; i <= len; i++) {
732 c = substr(str, i, 1);
734 printf("-%s\n", substr(str, i));
740 printf("'%s'\n", substr(str, i + 1));
753 : process the command line options
754 set X `for arg in "$@"; do echo $arg; done | awk -f options.awk`
759 : set up default values
772 while test $# -gt 0; do
774 -d) shift; fastread=yes;;
775 -e) shift; alldone=cont;;
779 if test -r "$1"; then
782 echo "$me: cannot read config file $1." >&2
787 -h) shift; error=true;;
788 -r) shift; reuseval=true;;
789 -s) shift; silent=true;;
790 -E) shift; alldone=exit;;
791 -K) shift; knowitall=true;;
792 -O) shift; override=true;;
793 -S) shift; extractsh=true;;
798 echo "$me: use '-U symbol=', not '-D symbol='." >&2
799 echo "$me: ignoring -D $1" >&2
802 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
803 *) echo "$1='define'" >> optdef.sh;;
810 *=) echo "$1" >> optdef.sh;;
812 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
813 echo "$me: ignoring -U $1" >&2
815 *) echo "$1='undef'" >> optdef.sh;;
819 -V) echo "$me generated by metaconfig 3.0 PL55." >&2
822 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
830 Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
831 [-U symbol] [-U symbol=]
832 -d : use defaults for all answers.
833 -e : go on without questioning past the production of config.sh.
834 -f : specify an alternate default configuration file.
835 -h : print this help message and exit (with an error status).
836 -r : reuse C symbols value if possible (skips costly nm extraction).
837 -s : silent mode, only echoes questions and essential information.
838 -D : define symbol to have some value:
839 -D symbol symbol gets the value 'define'
840 -D symbol=value symbol gets the value 'value'
841 -E : stop at the end of questions, after having produced config.sh.
842 -K : do not use unless you know what you are doing.
843 -O : let -D and -U override definitions from loaded configuration file.
844 -S : perform variable substitutions on all .SH files (can mix with -f)
845 -U : undefine symbol:
846 -U symbol symbol gets the value 'undef'
847 -U symbol= symbol gets completely empty
848 -V : print version number and exit (with a zero status).
856 true) exec 1>/dev/null;;
859 : run the defines and the undefines, if any, but leave the file out there...
866 '') config_sh='config.sh'; config='./config.sh';;
867 /*) config="$config_sh";;
868 *) config="./$config_sh";;
871 echo "Fetching answers from $config_sh..."
874 test "$override" && . ./optdef.sh
885 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
886 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
887 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
888 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
889 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
892 : Eunice requires " " instead of "", can you believe it
895 echo "Beginning of configuration questions for $package."
897 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
899 : Some greps do not return status, grrr.
900 echo "grimblepritz" >grimble
901 if grep blurfldyick grimble >/dev/null 2>&1 ; then
903 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
909 : the following should work in any shell
913 echo "AGH! Grep doesn't return a status. Attempting remedial action."
914 cat >contains <<'EOSS'
915 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
920 : first determine how to suppress newline on echo command
922 echo "Checking echo to see how to suppress newlines..."
923 (echo "hi there\c" ; echo " ") >.echotmp
924 if $contains c .echotmp >/dev/null 2>&1 ; then
935 echo $n "The star should be here-->$c"
939 : Now test for existence of everything in MANIFEST
941 if test -f ../MANIFEST; then
942 echo "First let's make sure your kit is complete. Checking..." >&4
943 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
945 for filelist in x??; do
946 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
948 if test -s missing; then
952 THIS PACKAGE SEEMS TO BE INCOMPLETE.
954 You have the option of continuing the configuration process, despite the
955 distinct possibility that your kit is damaged, by typing 'y'es. If you
956 do, don't blame me if something goes wrong. I advise you to type 'n'o
957 and contact the author (lwall@netlabs.com).
960 echo $n "Continue? [n] $c" >&4
964 echo "Continuing..." >&4
968 echo "ABORTING..." >&4
973 echo "Looks good..." >&4
976 echo "There is no MANIFEST file. I hope your kit is complete !"
980 : compute the number of columns on the terminal for proper question formatting
985 : set up the echo used in my read
986 myecho="case \"\$xxxm\" in
987 '') echo $n \"\$rp $c\" >&4;;
989 '') echo $n \"[\$xxxm] $c\";;
991 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
993 echo $n \"[\$xxxm] $c\" >&4
995 echo $n \"\$rp [\$xxxm] $c\" >&4
1001 : now set up to do reads with possible shell escape and default assignment
1006 case "\$fastread" in
1007 yes) case "\$dflt" in
1010 case "\$silent-\$rp" in
1015 *) case "\$silent" in
1016 true) case "\$rp" in
1021 while expr "X\$ans" : "X!" >/dev/null; do
1025 aok=''; eval "ans=\"\$answ\"" && aok=y
1030 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1035 echo "(OK, I'll run with -d after this question.)"
1038 echo "*** Sorry, \$1 not supported yet."
1050 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1060 echo "*** Substitution done -- please confirm."
1062 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1067 echo "*** Error -- try again."
1074 case "\$ans\$xxxm\$nostick" in
1086 : create .config dir to save info across Configure sessions
1087 test -d ../.config || mkdir ../.config
1088 cat >../.config/README <<EOF
1089 This directory created by Configure to save information that should
1090 persist across sessions.
1092 You may safely delete it if you wish.
1095 : general instructions
1098 user=`( (logname) 2>/dev/null || whoami) 2>&1`
1099 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1102 rp='Would you like to see the instructions?'
1113 This installation shell script will examine your system and ask you questions
1114 to determine how the perl5 package should be installed. If you get
1115 stuck on a question, you may use a ! shell escape to start a subshell or
1116 execute a command. Many of the questions will have default answers in square
1117 brackets; typing carriage return will give you the default.
1119 On some of the questions which ask for file or directory names you are allowed
1120 to use the ~name construct to specify the login directory belonging to "name",
1121 even if you don't have a shell which knows about that. Questions where this is
1122 allowed will be marked "(~name ok)".
1126 dflt='Type carriage return to continue'
1130 The prompter used in this script allows you to use shell variables and
1131 backticks in your answers. You may use $1, $2, etc... to refer to the words
1132 in the default answer, as if the default line was a set of arguments given to a
1133 script shell. This means you may also use $* to repeat the whole default line,
1134 so you do not have to re-type everything to add something to the default.
1136 Everytime there is a substitution, you will have to confirm. If there is an
1137 error (e.g. an unmatched backtick), the default answer will remain unchanged
1138 and you will be prompted again.
1140 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1141 the questions and use the computed defaults (or the previous answers if there
1142 was already a config.sh file). Type 'Configure -h' for a list of options.
1143 You may also start interactively and then answer '& -d' at any prompt to turn
1144 on the non-interactive behaviour for the remaining of the execution.
1150 Much effort has been expended to ensure that this shell script will run on any
1151 Unix system. If despite that it blows up on yours, your best bet is to edit
1152 Configure and run it again. If you can't run Configure for some reason,
1153 you'll have to generate a config.sh file by hand. Whatever problems you
1154 have, let me (lwall@netlabs.com) know how I blew it.
1156 This installation script affects things in two ways:
1158 1) it may do direct variable substitutions on some of the files included
1160 2) it builds a config.h file for inclusion in C programs. You may edit
1161 any of these files as the need arises after running this script.
1163 If you make a mistake on a question, there is no easy way to back up to it
1164 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1165 files. Configure will offer to let you do this before it runs the SH files.
1168 dflt='Type carriage return to continue'
1170 case "$firsttime" in
1171 true) echo $user >>../.config/instruct;;
1175 : see if sh knows # comments
1177 echo "Checking your sh to see if it knows about # comments..." >&4
1178 if `sh -c '#' >/dev/null 2>&1`; then
1179 echo "Your sh handles # comments correctly."
1183 echo "Okay, let's see if #! works on this system..."
1185 test -f $xcat || xcat=/usr/bin/cat
1190 if test -s today; then
1194 echo "#! $xcat" > try
1198 if test -s today; then
1202 echo "It's just a comment."
1207 echo "Your sh doesn't grok # comments--I will strip them later on."
1210 echo "exec grep -v '^[ ]*#'" >spitshell
1212 $eunicefix spitshell
1213 spitshell=`pwd`/spitshell
1215 echo "I presume that if # doesn't work, #! won't work either!"
1220 : figure out how to guarantee sh startup
1222 echo "Checking out how to guarantee sh startup..." >&4
1224 *bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
1225 *) startsh=$sharpbang'/bin/sh';;
1227 echo "Let's see if '$startsh' works..."
1237 echo "Yup, it does."
1239 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
1243 : find out where common programs are
1245 echo "Locating common programs..." >&4
1258 if test -d \$dir/\$thing; then
1264 for thisthing in \$dir/\$thing; do
1265 : just loop through to pick last item
1267 if test -f \$thisthing; then
1270 elif test -f \$dir/\$thing.exe; then
1271 : on Eunice apparently
1315 pth=`echo $PATH | sed -e 's/:/ /g'`
1316 pth="$pth /lib /usr/lib"
1317 for file in $loclist; do
1318 xxx=`./loc $file $file $pth`
1323 echo $file is in $xxx.
1326 echo "I don't know where $file is. I hope it's in everyone's PATH."
1331 echo "Don't worry if any of the following aren't found..."
1333 for file in $trylist; do
1334 xxx=`./loc $file $file $pth`
1339 echo $file is in $xxx.
1342 echo "I don't see $file out there, $say."
1349 echo "Substituting grep for egrep."
1355 echo "Hopefully test is built into your sh."
1358 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1359 echo "Using the test built into your sh."
1367 echo "Hopefully echo is built into your sh."
1372 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1373 $echo $n "hi there$c" >foo1
1374 echo $n "hi there$c" >foo2
1375 if cmp foo1 foo2 >/dev/null 2>&1; then
1376 echo "They are compatible. In fact, they may be identical."
1383 They are not compatible! You are probably running ksh on a non-USG system.
1384 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1385 have echo built in and we may have to run some Bourne shell scripts. That
1386 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1389 $echo $n "The star should be here-->$c"
1396 : determine whether symbolic links are supported
1399 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1400 echo "Symbolic links are supported." >&4
1403 echo "Symbolic links are NOT supported." >&4
1408 : see whether [:lower:] and [:upper:] are supported character classes
1412 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1414 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1419 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1422 : set up the translation script tr, must be called with ./tr of course
1426 '[A-Z][a-z]') exec $tr '$up' '$low';;
1427 '[a-z][A-Z]') exec $tr '$low' '$up';;
1434 : Try to determine whether config.sh was made on this system
1435 case "$config_sh" in
1437 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1438 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1439 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1440 newmyuname="$myuname"
1442 case "$knowitall" in
1444 if test -f ../config.sh; then
1445 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1446 eval "`grep myuname= ../config.sh`"
1448 if test "X$myuname" = "X$newmyuname"; then
1456 : Get old answers from old config file if Configure was run on the
1457 : same system, otherwise use the hints.
1460 if test -f config.sh; then
1462 rp="I see a config.sh file. Shall I use it to set the defaults?"
1465 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1466 *) echo "Fetching default answers from your old config.sh file..." >&4
1477 if test ! -f config.sh; then
1480 First time through, eh? I have some defaults handy for the following systems:
1483 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1485 : Half the following guesses are probably wrong... If you have better
1486 : tests or hints, please send them to lwall@netlabs.com
1487 : The metaconfig authors would also appreciate a copy...
1488 $test -f /irix && osname=irix
1489 $test -f /xenix && osname=sco_xenix
1490 $test -f /dynix && osname=dynix
1491 $test -f /dnix && osname=dnix
1492 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1493 $test -f /bin/mips && /bin/mips && osname=mips
1494 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1495 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1496 $test -d /usr/apollo/bin && osname=apollo
1497 $test -f /etc/saf/_sactab && osname=svr4
1498 $test -d /usr/include/minix && osname=minix
1499 $test -d /MachTen && osname=machten && \
1500 osvers=`/usr/etc/version | $awk '{print $2}' | \
1501 $sed -e 's/[A-Za-z]$//'`
1502 if $test -f $uname; then
1510 umips) osname=umips ;;
1513 [23]100) osname=mips ;;
1514 next*) osname=next ;;
1515 news*) osname=news ;;
1517 if $test -f /etc/kconfig; then
1519 if test "$lns" = "ln -s"; then
1521 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1523 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1532 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1534 'not found') osvers="$4"."$3" ;;
1535 '<3240'|'<>3240') osvers=3.2.0 ;;
1536 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1537 '=3250'|'>3250') osvers=3.2.5 ;;
1544 domainos) osname=apollo
1550 freebsd) osname=freebsd
1552 genix) osname=genix ;;
1557 *.10.*) osvers=10 ;;
1574 netbsd*) osname=netbsd
1577 bsd386) osname=bsd386
1580 next*) osname=next ;;
1581 solaris) osname=solaris
1583 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1590 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1594 titanos) osname=titanos
1603 ultrix) osname=ultrix
1609 osvers=`echo "$3" | sed 's/^[vt]//'`
1611 hp*) osname=hp_osf1 ;;
1612 mips) osname=mips_osf1 ;;
1618 $2) case "$osname" in
1622 : svr4.x or possibly later
1632 if test -f /stand/boot ; then
1633 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1634 if test -n "$INITPROG" -a -f "$INITPROG"; then
1635 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1636 if test -n "$isesix"; then
1644 *) if test -f /etc/systemid; then
1646 set `echo $3 | $sed 's/\./ /g'` $4
1647 if $test -f sco_$1_$2_$3.sh; then
1649 elif $test -f sco_$1_$2.sh; then
1651 elif $test -f sco_$1.sh; then
1656 '') : Still unknown. Probably a generic Sys V.
1665 *) case "$osname" in
1666 '') : Still unknown. Probably a generic BSD.
1674 if test -f /vmunix -a -f news_os.sh; then
1675 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1676 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1679 $rm -f ../UU/kernel.what
1683 : Now look for a hint file osname_osvers, unless one has been
1684 : specified already.
1687 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1688 : Also try without trailing minor version numbers.
1689 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1690 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1691 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1692 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1695 *) case "$osvers" in
1698 *) if $test -f $file.sh ; then
1700 elif $test -f $xfile.sh ; then
1702 elif $test -f $xxfile.sh ; then
1704 elif $test -f $xxxfile.sh ; then
1706 elif $test -f $xxxxfile.sh ; then
1708 elif $test -f "${osname}.sh" ; then
1719 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1725 You may give one or more space-separated answers, or "none" if appropriate.
1726 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1729 rp="Which of these apply, if any?"
1732 for file in $tans; do
1733 if $test -f $file.sh; then
1735 $cat $file.sh >> ../UU/config.sh
1736 elif $test X$tans = X -o X$tans = Xnone ; then
1739 : Give one chance to correct a possible typo.
1740 echo "$file.sh does not exist"
1742 rp="hint to use instead?"
1744 for file in $ans; do
1745 if $test -f "$file.sh"; then
1747 $cat $file.sh >> ../UU/config.sh
1748 elif $test X$ans = X -o X$ans = Xnone ; then
1751 echo "$file.sh does not exist -- ignored."
1758 : Remember our hint file for later.
1759 if $test -f "$file.sh" ; then
1771 echo "Fetching default answers from $config_sh..." >&4
1775 cp $config_sh config.sh 2>/dev/null
1784 test "$override" && . ./optdef.sh
1785 myuname="$newmyuname"
1787 : Restore computed paths
1788 for file in $loclist $trylist; do
1789 eval $file="\$_$file"
1794 Configure uses the operating system name and version to set some defaults.
1795 The default value is probably right if the name rings a bell. Otherwise,
1796 since spelling matters for me, either accept the default or answer "none"
1803 ''|' '|none) dflt=none ;;
1804 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1807 *) dflt="$osname" ;;
1809 rp="Operating system name?"
1813 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1815 : who configured the system
1816 cf_time=`$date 2>&1`
1817 (logname > .temp) >/dev/null 2>&1
1818 $test -s .temp || (whoami > .temp) >/dev/null 2>&1
1819 $test -s .temp || echo unknown > .temp
1823 : determine where manual pages are on this system
1827 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
1828 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
1829 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
1830 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
1831 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
1832 sysman=`./loc . /usr/man/man1 $syspath`
1835 if $test -d "$sysman"; then
1836 echo "System manual is in $sysman." >&4
1838 echo "Could not find manual pages in source form." >&4
1841 : see what memory models we can support
1844 $cat >pdp11.c <<'EOP'
1853 cc -o pdp11 pdp11.c >/dev/null 2>&1
1854 if ./pdp11 2>/dev/null; then
1855 dflt='unsplit split'
1857 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
1860 *) if $test -d /lib/small || $test -d /usr/lib/small; then
1865 if $test -d /lib/medium || $test -d /usr/lib/medium; then
1868 if $test -d /lib/large || $test -d /usr/lib/large; then
1871 if $test -d /lib/huge || $test -d /usr/lib/huge; then
1880 Some systems have different model sizes. On most systems they are called
1881 small, medium, large, and huge. On the PDP11 they are called unsplit and
1882 split. If your system doesn't support different memory models, say "none".
1883 If you wish to force everything to one memory model, say "none" here and
1884 put the appropriate flags later when it asks you for other cc and ld flags.
1885 Venix systems may wish to put "none" and let the compiler figure things out.
1886 (In the following question multiple model names should be space separated.)
1889 rp="Which memory models are supported?"
1904 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
1905 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
1912 rp="What flag indicates separate I and D space?"
1920 *large*|*small*|*medium*|*huge*)
1927 rp="What flag indicates large model?"
1937 *huge*) case "$huge" in
1941 rp="What flag indicates huge model?"
1951 *medium*) case "$medium" in
1955 rp="What flag indicates medium model?"
1962 *) medium="$large";;
1965 *small*) case "$small" in
1969 rp="What flag indicates small model?"
1980 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
1984 : make some quick guesses about what we are up against
1986 $echo $n "Hmm... $c"
1995 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
1996 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
1998 echo "Looks kind of like an OSF/1 system, but we'll see..."
2000 elif test `echo abc | tr a-z A-Z` = Abc ; then
2001 xxx=`./loc addbib blurfl $pth`
2002 if $test -f $xxx; then
2003 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2007 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2008 echo "Looks kind of like an extended USG system, but we'll see..."
2010 echo "Looks kind of like a USG system, but we'll see..."
2014 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2015 echo "Looks kind of like a BSD system, but we'll see..."
2019 echo "Looks kind of like a Version 7 system, but we'll see..."
2022 case "$eunicefix" in
2025 There is, however, a strange, musty smell in the air that reminds me of
2026 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2030 : it so happens the Eunice I know will not run shell scripts in Unix format
2034 echo "Congratulations. You aren't running Eunice."
2038 if test -f /xenix; then
2039 echo "Actually, this looks more like a XENIX system..."
2044 echo "It's not Xenix..."
2049 if test -f /venix; then
2050 echo "Actually, this looks more like a VENIX system..."
2057 echo "Nor is it Venix..."
2060 chmod +x bsd usg v7 osf1 eunice xenix venix
2061 $eunicefix bsd usg v7 osf1 eunice xenix venix
2064 : see if we need a special compiler
2072 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2073 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2086 On some systems the default C compiler will not resolve multiple global
2087 references that happen to have the same name. On some such systems the "Mcc"
2088 command may be used to force these to be resolved. On other systems a "cc -M"
2089 command is required. (Note that the -M flag on other systems indicates a
2090 memory model to use!) If you have the Gnu C compiler, you might wish to use
2094 rp="What command will force resolution on this system?"
2102 rp="Use which C compiler?"
2107 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2108 $cat >gccvers.c <<EOM
2113 printf("%s\n", __VERSION__);
2115 printf("%s\n", "1");
2121 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
2122 gccversion=`./gccvers`
2123 case "$gccversion" in
2124 '') echo "You are not using GNU cc." ;;
2125 *) echo "You are using GNU cc $gccversion." ;;
2129 echo "*** WHOA THERE!!! ***" >&4
2130 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
2131 case "$knowitall" in
2133 echo " You'd better start hunting for one and let me know about it." >&4
2139 case "$gccversion" in
2140 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
2143 : decide how portable to be
2144 case "$d_portable" in
2150 I can set things up so that your shell scripts and binaries are more portable,
2151 at what may be a noticable cost in performance. In particular, if you
2152 ask to be portable, the following happens:
2154 1) Shell scripts will rely on the PATH variable rather than using
2155 the paths derived above.
2156 2) ~username interpretations will be done at run time rather than
2160 rp="Do you expect to run these scripts and binaries on multiple machines?"
2163 y*) d_portable="$define"
2165 *) d_portable="$undef" ;;
2168 : set up shell script to do ~ expansion
2174 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2177 if $test -f /bin/csh; then
2178 /bin/csh -f -c "glob \$1"
2183 name=\`$expr x\$1 : '..\([^/]*\)'\`
2184 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2185 if $test ! -d "\$dir"; then
2187 echo "\$me: can't locate home directory for: \$name" >&2
2192 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2208 : now set up to get a file name
2209 cat <<'EOSC' >getfile
2222 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2223 fn=`echo $fn | sed 's/(.*)//'`
2229 loc_file=`expr $fn : '.*:\(.*\)'`
2230 fn=`expr $fn : '\(.*\):.*'`
2238 */*) fullpath=true;;
2247 *e*) exp_file=true;;
2250 *p*) nopath_ok=true;;
2255 *d*) type='Directory';;
2256 *l*) type='Locate';;
2261 Locate) what='File';;
2266 case "$d_portable" in
2274 while test "$type"; do
2279 true) rp="$rp (~name ok)";;
2282 if test -f UU/getfile.ok && \
2283 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2302 value=`UU/filexp $ans`
2305 if test "$ans" != "$value"; then
2306 echo "(That expands to $value on this system.)"
2320 /*) value="$ansexp" ;;
2325 echo "I shall only accept a full path name, as in /bin/ls." >&4
2326 echo "Use a ! shell escape if you wish to check pathnames." >&4
2329 echo "Please give a full path name, starting with slash." >&4
2332 echo "Note that using ~name is ok provided it expands well." >&4
2345 if test -f "$ansexp"; then
2347 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2349 echo "($value is not a plain file, but that's ok.)"
2354 if test -d "$ansexp"; then
2359 if test -d "$ansexp"; then
2360 echo "(Looking for $loc_file in directory $value.)"
2361 value="$value/$loc_file"
2362 ansexp="$ansexp/$loc_file"
2364 if test -f "$ansexp"; then
2367 case "$nopath_ok" in
2368 true) case "$value" in
2370 *) echo "Assuming $value will be in people's path."
2386 if test "$fastread" = yes; then
2391 rp="$what $value doesn't exist. Use that name anyway?"
2412 : What should the include directory be ?
2414 $echo $n "Hmm... $c"
2418 if $test -f /bin/mips && /bin/mips; then
2419 echo "Looks like a MIPS system..."
2420 $cat >usr.c <<'EOCP'
2421 #ifdef SYSTYPE_BSD43
2425 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
2426 dflt='/bsd43/usr/include'
2430 mips_type='System V'
2432 $rm -f usr.c usr.out
2433 echo "and you're compiling with the $mips_type compiler and libraries."
2436 echo "Doesn't look like a MIPS system."
2447 rp='Where are the include files you want to use?'
2451 : see how we invoke the C preprocessor
2453 echo "Now, how can we feed standard input to your C preprocessor..." >&4
2454 cat <<'EOT' >testcpp.c
2460 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
2462 wrapper=`pwd`/cppstdin
2466 if $test "X$cppstdin" != "X" && \
2467 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
2468 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2470 echo "You used to use $cppstdin $cppminus so we'll use that again."
2472 '') echo "But let's see if we can live without a wrapper..." ;;
2474 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
2475 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2477 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
2480 echo "(However, $cpprun $cpplast does not work, let's see...)"
2488 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
2495 elif echo 'Maybe "'"$cc"' -E" will work...'; \
2496 $cc -E <testcpp.c >testcpp.out 2>&1; \
2497 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2498 echo "Yup, it does."
2501 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
2502 $cc -E - <testcpp.c >testcpp.out 2>&1; \
2503 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2504 echo "Yup, it does."
2507 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
2508 $cc -P <testcpp.c >testcpp.out 2>&1; \
2509 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2510 echo "Yipee, that works!"
2513 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
2514 $cc -P - <testcpp.c >testcpp.out 2>&1; \
2515 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2516 echo "At long last!"
2519 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
2520 $cpp <testcpp.c >testcpp.out 2>&1; \
2521 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2525 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
2526 $cpp - <testcpp.c >testcpp.out 2>&1; \
2527 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2528 echo "Hooray, it works! I was beginning to wonder."
2531 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
2532 $wrapper <testcpp.c >testcpp.out 2>&1; \
2533 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2539 rp="No dice. I can't find a C preprocessor. Name one:"
2543 $x_cpp <testcpp.c >testcpp.out 2>&1
2544 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2545 echo "OK, that will do." >&4
2547 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
2562 echo "Perhaps can we force $cc -E using a wrapper..."
2563 if $wrapper <testcpp.c >testcpp.out 2>&1; \
2564 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2570 echo "Nope, we'll have to live without it..."
2585 *) $rm -f $wrapper;;
2587 $rm -f testcpp.c testcpp.out
2589 : determine optimize, if desired, or use for debug flag also
2593 *) dflt="$optimize";;
2597 Some C compilers have problems with their optimizers, by default, $package
2598 compiles with the -O flag to use the optimizer. Alternately, you might want
2599 to use the symbolic debugger, which uses the -g flag (on traditional Unix
2600 systems). Either flag can be specified here. To use neither flag, specify
2604 rp="What optimizer/debugger flag should be used?"
2608 'none') optimize=" ";;
2614 case "$gccversion" in
2615 1*) dflt='-fpcc-struct-return' ;;
2618 *-g*) dflt="$dflt -DDEBUGGING";;
2620 case "$gccversion" in
2621 2*) if test -d /etc/conf/kconfig.d &&
2622 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
2631 case "$mips_type" in
2634 *) inclwanted="$inclwanted $usrinc/bsd";;
2636 for thisincl in $inclwanted; do
2637 if $test -d $thisincl; then
2638 if $test x$thisincl != x$usrinc; then
2641 *) dflt="$dflt -I$thisincl";;
2647 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
2649 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
2657 *) dflt="$dflt -D$2";;
2662 set signal.h __LANGUAGE_C__; eval $inctest
2664 set signal.h LANGUAGE_C; eval $inctest
2666 set signal.h NO_PROTOTYPE; eval $inctest
2667 set signal.h _NO_PROTO; eval $inctest
2674 *) dflt="$ccflags";;
2678 Your C compiler may want other flags. For this question you should include
2679 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
2680 but you should NOT include libraries or ld flags like -lwhatever. If you
2681 want $package to honor its debug switch, you should include -DDEBUGGING here.
2682 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
2683 -DHIDEMYMALLOC or -DCRIPPLED_CC.
2685 To use no flags, specify the word "none".
2691 rp="Any additional cc flags?"
2698 : the following weeds options from ccflags that are of no interest to cpp
2700 case "$gccversion" in
2701 1*) cppflags="$cppflags -D__GNUC__"
2703 case "$mips_type" in
2705 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
2711 echo "Let me guess what the preprocessor flags are..." >&4
2725 *) ftry="$previous $flag";;
2727 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
2728 >cpp1.out 2>/dev/null && \
2729 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
2730 >cpp2.out 2>/dev/null && \
2731 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
2732 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
2734 cppflags="$cppflags $ftry"
2744 *-*) echo "They appear to be: $cppflags";;
2746 $rm -f cpp.c cpp?.out
2750 : flags used in final linking phase
2752 '') if ./venix; then
2758 *-posix*) dflt="$dflt -posix" ;;
2764 *) dflt="$ldflags";;
2767 rp="Any additional ld flags (NOT including libraries)?"
2773 rmlist="$rmlist pdp11"
2777 echo "Checking your choice of C compiler and flags for coherency..." >&4
2778 set X $cc $optimize $ccflags try.c -o try $ldflags
2781 I've tried to compile and run a simple program with:
2786 and I got the following output:
2789 $cat > try.c <<'EOF'
2794 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
2795 if sh -c './try' >>try.msg 2>&1; then
2798 echo "The program compiled OK, but exited with status $?." >>try.msg
2799 rp="You have a problem. Shall I abort Configure"
2803 echo "I can't compile the test program." >>try.msg
2804 rp="You have a BIG problem. Shall I abort Configure"
2810 case "$knowitall" in
2812 echo "(The supplied flags might be incorrect with this C compiler.)"
2820 *) echo "Ok. Stopping Configure." >&4
2825 n) echo "OK, that should do.";;
2827 $rm -f try try.* core
2829 : Set private lib path
2832 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
2837 '') dlist="$plibpth $glibpth";;
2838 *) dlist="$libpth";;
2841 : Now check and see which directories actually exist, avoiding duplicates
2845 if $test -d $xxx; then
2848 *) libpth="$libpth $xxx";;
2854 Some systems have incompatible or broken versions of libraries. Among
2855 the directories listed in the question below, please remove any you
2856 know not to be holding relevant libraries, and add any that are needed.
2857 Say "none" for none.
2868 rp="Directories to use for library searches?"
2875 : compute shared library extension
2878 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
2888 On some systems, shared libraries may be available. Answer 'none' if
2889 you want to suppress searching of shared libraries for the remaining
2890 of this configuration.
2893 rp='What is the file extension used for shared libraries?'
2897 : Looking for optional libraries
2899 echo "Checking for optional libraries..." >&4
2904 case "$libswanted" in
2905 '') libswanted='c_s';;
2907 for thislib in $libswanted; do
2909 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
2910 echo "Found -l$thislib (shared)."
2913 *) dflt="$dflt -l$thislib";;
2915 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
2916 echo "Found -l$thislib (shared)."
2919 *) dflt="$dflt -l$thislib";;
2921 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
2922 echo "Found -l$thislib."
2925 *) dflt="$dflt -l$thislib";;
2927 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
2928 echo "Found -l${thislib}_s."
2931 *) dflt="$dflt -l${thislib}_s";;
2933 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
2934 echo "Found -l$thislib."
2937 *) dflt="$dflt -l$thislib";;
2940 echo "No -l$thislib."
2951 ' '|'') dflt='none';;
2956 Some versions of Unix support shared libraries, which make executables smaller
2957 but make load time slightly longer.
2959 On some systems, mostly newer Unix System V's, the shared library is included
2960 by putting the option "-lc_s" as the last thing on the cc command line when
2961 linking. Other systems use shared libraries by default. There may be other
2962 libraries needed to compile $package on your machine as well. If your system
2963 needs the "-lc_s" option, include it here. Include any other special libraries
2964 here as well. Say "none" for none.
2968 rp="Any additional libraries?"
2975 : see if nm is to be used to determine whether a symbol is defined or not
2978 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
2979 if $test $dflt -gt 20; then
2994 I can use 'nm' to extract the symbols from your C libraries. This is a time
2995 consuming task which may generate huge output on the disk (up to 3 megabytes)
2996 but that should make the symbols extraction faster. The alternative is to skip
2997 the 'nm' extraction part and to compile a small test program instead to
2998 determine whether each symbol is present. If you have a fast C compiler and/or
2999 if your 'nm' output cannot be parsed, this may be the best solution.
3002 rp='Shall I use nm to extract C symbols from the libraries?'
3014 : nm options which may be necessary
3016 '') if $test -f /mach_boot; then
3018 elif $test -d /usr/ccs/lib; then
3020 elif $test -f /dgux; then
3029 : get list of predefined functions in a handy place
3034 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
3041 *) for thislib in $libs; do
3044 : Handle C library specially below.
3047 thislib=`echo $thislib | $sed -e 's/^-l//'`
3048 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3050 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3052 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
3054 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3056 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3058 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
3063 libnames="$libnames $try"
3065 *) libnames="$libnames $thislib" ;;
3073 set /usr/ccs/lib/libc.$so
3074 $test -r $1 || set /usr/lib/libc.$so
3075 $test -r $1 || set /usr/shlib/libc.$so
3077 set `echo blurfl; echo /usr/lib/libc.$so.[0-9]* | \
3078 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3080 s/[0-9][0-9]*/0000&/g
3081 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3084 sort | $sed -e 's/^.* //'`
3086 $test -r $1 || set /lib/libc.$so
3087 $test -r $1 || set /lib/libsys_s.a
3093 if $test -r "$1"; then
3094 echo "Your (shared) C library seems to be in $1."
3096 elif $test -r /lib/libc && $test -r /lib/clib; then
3097 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3099 libc='/lib/clib /lib/libc'
3100 if $test -r /lib/syslib; then
3101 echo "(Your math library is in /lib/syslib.)"
3102 libc="$libc /lib/syslib"
3104 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3105 echo "Your C library seems to be in $libc, as you said before."
3106 elif $test -r $incpath/usr/lib/libc.a; then
3107 libc=$incpath/usr/lib/libc.a;
3108 echo "Your C library seems to be in $libc. That's fine."
3109 elif $test -r /lib/libc.a; then
3111 echo "Your C library seems to be in $libc. You're normal."
3113 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
3115 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3116 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3117 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3119 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3121 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3124 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
3126 if $test -r "$tans"; then
3127 echo "Your C library seems to be in $tans, of all places."
3133 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3137 If the guess above is wrong (which it might be if you're using a strange
3138 compiler, or your machine supports multiple models), you can override it here.
3143 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
3145 I can't seem to find your C library. I've looked in the following places:
3148 $sed 's/^/ /' libpath
3151 None of these seems to contain your C library. I need to get its name...
3156 rp='Where is your C library?'
3161 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
3162 set X `cat libnames`
3165 case $# in 1) xxx=file; esac
3166 echo "Extracting names from the following $xxx for later perusal:" >&4
3168 $sed 's/^/ /' libnames >&4
3170 $echo $n "This may take a while...$c" >&4
3172 nm $nm_opt $* 2>/dev/null >libc.tmp
3174 $grep fprintf libc.tmp > libc.ptf
3175 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
3176 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
3178 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx //p'";\
3180 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3182 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
3184 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3186 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
3188 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3190 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
3192 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3194 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
3196 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3198 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
3200 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3202 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
3203 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
3205 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3207 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
3209 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3211 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
3213 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3215 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
3217 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3220 nm -p $* 2>/dev/null >libc.tmp
3221 $grep fprintf libc.tmp > libc.ptf
3222 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
3223 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
3229 echo "nm didn't seem to work right. Trying ar instead..." >&4
3231 if ar t $libc > libc.tmp; then
3232 for thisname in $libnames; do
3233 ar t $thisname >>libc.tmp
3235 $sed -e 's/\.o$//' < libc.tmp > libc.list
3238 echo "ar didn't seem to work right." >&4
3239 echo "Maybe this is a Cray...trying bld instead..." >&4
3240 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
3242 for thisname in $libnames; do
3244 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
3245 ar t $thisname >>libc.tmp
3249 echo "That didn't work either. Giving up." >&4
3256 if $test -f /lib/syscalls.exp; then
3258 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
3259 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
3263 $rm -f libnames libpath
3265 : is a C symbol defined?
3268 -v) tf=libc.tmp; tc=""; tdc="";;
3269 -a) tf=libc.tmp; tc="[0]"; tdc=[];;
3270 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
3273 case "$reuseval-$4" in
3275 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
3281 if $contains $tlook $tf >/dev/null 2>&1;
3286 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
3287 if $cc $ccflags -o t t.c $ldflags $libs >/dev/null 2>&1;
3295 $define) tval=true;;
3301 : set up the script used to warn in case of inconsistency
3305 echo "*** WHOA THERE!!! ***" >&4
3306 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3307 rp=" Keep the $hint value?"
3310 y) td=$was; tu=$was;;
3314 : define an is-in-libc? function
3315 inlibc='echo " "; td=$define; tu=$undef;
3316 sym=$1; var=$2; eval "was=\$$2";
3318 case "$reuseval$was" in
3328 echo "$sym() found." >&4;
3329 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
3331 echo "$sym() NOT found." >&4;
3332 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
3336 $define) echo "$sym() found." >&4;;
3337 *) echo "$sym() NOT found." >&4;;
3341 : see if gconvert exists
3342 : On some SVR4 systems, gconvert is present but can not be used
3343 : because it requires some other unavailable functions.
3344 : Therefore, do not use the nm extraction, but use a real compile
3345 : and link test instead.
3348 set gconvert d_gconvert
3352 case "$d_gconvert" in
3354 echo "We'll use it to convert floats into a string then." >&4
3355 d_Gconvert="gconvert((x),(n),(t),(b))"
3358 : Maybe we can emulate it with gcvt.
3364 : Test whether gcvt drops a trailing decimal point
3369 if (buf[0] != '1' || buf[1] != '\0')
3372 if (buf[0] != '0' || buf[1] != '\0')
3375 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
3380 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
3382 echo "Good, your gcvt() drops a trailing decimal point."
3383 echo "We'll use it to convert floats into a string." >&4
3384 d_Gconvert="gcvt((x),(n),(b))"
3386 echo "But your gcvt() keeps a trailing decimal point".
3390 echo "Hmm. I can't compile the gcvt test program."
3396 case "$d_Gconvert" in
3398 echo "I'll use sprintf instead to convert floats into a string." >&4
3399 d_Gconvert='sprintf((b),"%.*g",(n),(x))'
3404 : Initialize h_fcntl
3407 : Initialize h_sysfile
3410 : determine filename position in cpp output
3412 echo "Computing filename position in cpp output for #include directives..." >&4
3413 echo '#include <stdio.h>' > foo.c
3416 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
3417 $grep '^[ ]*#.*stdio\.h' | \
3418 while read cline; do
3421 while $test \$# -gt 0; do
3422 if $test -r \`echo \$1 | $tr -d '"'\`; then
3427 pos=\`expr \$pos + 1\`
3439 *) pos="${fieldn}th";;
3441 echo "Your cpp writes the filename in the $pos field of the line."
3443 : locate header file
3448 if test -f $usrinc/\$wanted; then
3449 echo "$usrinc/\$wanted"
3452 awkprg='{ print \$$fieldn }'
3453 echo "#include <\$wanted>" > foo\$\$.c
3454 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
3455 $grep "^[ ]*#.*\$wanted" | \
3456 while read cline; do
3457 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
3459 */\$wanted) echo "\$name"; exit 0;;
3470 : access call always available on UNIX
3474 : locate the flags for 'access()'
3478 $cat >access.c <<'EOCP'
3479 #include <sys/types.h>
3484 #include <sys/file.h>
3493 : check sys/file.h first, no particular reason here
3494 if $test `./findhdr sys/file.h` && \
3495 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
3497 echo "<sys/file.h> defines the *_OK access constants." >&4
3498 elif $test `./findhdr fcntl.h` && \
3499 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
3501 echo "<fcntl.h> defines the *_OK access constants." >&4
3502 elif $test `./findhdr unistd.h` && \
3503 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
3504 echo "<unistd.h> defines the *_OK access constants." >&4
3506 echo "I can't find the four *_OK access constants--I'll use mine." >&4
3512 : see if alarm exists
3516 : determine the architecture name
3518 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
3519 tarch=`arch`"-$osname"
3520 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
3521 if uname -m > tmparch 2>&1 ; then
3522 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
3530 case "$myarchname" in
3533 echo "(Your architecture name used to be $myarchname.)"
3539 *) dflt="$archname";;
3541 rp='What is your architecture name'
3548 if test -d /afs; then
3549 echo "AFS may be running... I'll be extra cautious then..." >&4
3552 echo "AFS does not seem to be running..." >&4
3556 : determine root of directory hierarchy where package will be installed.
3559 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3567 By default, $package will be installed in $dflt/bin, manual
3568 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
3569 all installation directories. Typically set to /usr/local, but you
3570 may choose /usr if you wish to install $package among your system
3571 binaries. If you wish to have binaries under /bin but manual pages
3572 under /usr/local/man, that's ok: you will be prompted separately
3573 for each of the installation directories, the prefix being only used
3574 to set the defaults.
3578 rp='Installation prefix to use?'
3586 *) oldprefix="$prefix";;
3593 : set the prefixit variable, to compute a suitable default value
3594 prefixit='case "$3" in
3596 case "$oldprefix" in
3597 "") eval "$1=\"\$$2\"";;
3604 ""|" ") eval "$1=\"\$$2\"";;
3610 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3612 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3613 /*-$oldprefix/*|\~*-$oldprefix/*)
3614 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3615 *) eval "$1=\"\$$2\"";;
3619 : determine where private executables go
3620 set dflt privlib lib/$package
3624 There are some auxiliary files for $package that need to be put into a
3625 private library directory that is accessible by everyone.
3629 rp='Pathname where the private library files will reside?'
3631 if $test "X$privlibexp" != "X$ansexp"; then
3635 privlibexp="$ansexp"
3639 Since you are running AFS, I need to distinguish the directory in which
3640 private files reside from the directory in which they are installed (and from
3641 which they are presumably copied to the former directory by occult means).
3644 case "$installprivlib" in
3645 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3646 *) dflt="$installprivlib";;
3649 rp='Where will private files be installed?'
3651 installprivlib="$ans"
3653 installprivlib="$privlibexp"
3656 : set the prefixup variable, to restore leading tilda escape
3657 prefixup='case "$prefixexp" in
3659 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3662 : determine where public architecture dependent libraries go
3669 dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
3673 *) dflt="$privlib/$archname";;
3676 *) dflt="$archlib";;
3680 $spackage contains architecture-dependent library files. If you are
3681 sharing libraries in a heterogeneous environment, you might store
3682 these files in a separate location. Otherwise, you can just include
3683 them with the rest of the public library files.
3687 rp='Where do you want to put the public architecture-dependent libraries?'
3690 archlibexp="$ansexp"
3695 Since you are running AFS, I need to distinguish the directory in which
3696 private files reside from the directory in which they are installed (and from
3697 which they are presumably copied to the former directory by occult means).
3700 case "$installarchlib" in
3701 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3702 *) dflt="$installarchlib";;
3705 rp='Where will architecture-dependent library files be installed?'
3707 installarchlib="$ans"
3709 installarchlib="$archlibexp"
3711 if $test X"$archlib" = X"$privlib"; then
3717 : function used to set $1 to $val
3718 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3720 $define$undef) . ./whoa; eval "$var=\$td";;
3721 $undef$define) . ./whoa; eval "$var=\$tu";;
3722 *) eval "$var=$val";;
3725 : Look for GNU-cc style attribute checking
3727 echo "Checking whether your compiler can handle __attribute__ ..." >&4
3728 $cat >attrib.c <<'EOCP'
3730 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
3732 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
3733 if $contains 'warning' attrib.out >/dev/null 2>&1; then
3734 echo "Your C compiler doesn't fully support __attribute__."
3737 echo "Your C compiler supports __attribute__."
3741 echo "Your C compiler doesn't seem to understand __attribute__ at all."
3748 : see if bcmp exists
3752 : see if bcopy exists
3756 : see if setpgrp exists
3757 set setpgrp d_setpgrp
3760 : see which flavor of setpgrp is in use
3761 case "$d_setpgrp" in
3767 if (getuid() == 0) {
3768 printf("(I see you are running Configure as super-user...)\n");
3771 if (-1 == setpgrp(1, 1))
3776 if $cc $ccflags -o set set.c $ldflags $libs >/dev/null 2>&1; then
3779 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
3781 *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
3786 xxx="USG one, i.e. you use setpgrp()."
3789 xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
3792 echo "Assuming your setpgrp is a $xxx" >&4
3801 : see if bzero exists
3805 : check for length of integer
3809 echo "Checking to see how big your integers are..." >&4
3810 $cat >try.c <<'EOCP'
3814 printf("%d\n", sizeof(int));
3817 if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
3821 echo "(I can't seem to compile the test program. Guessing...)"
3828 rp="What is the size of an integer (in bytes)?"
3833 : see if signal is declared as pointer to function returning int or void
3835 xxx=`./findhdr signal.h`
3836 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
3837 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
3838 echo "You have int (*signal())() instead of void." >&4
3840 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
3841 echo "You have void (*signal())() instead of int." >&4
3843 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
3844 echo "You have int (*signal())() instead of void." >&4
3847 case "$d_voidsig" in
3849 echo "I can't determine whether signal handler returns void or int..." >&4
3851 rp="What type does your signal handler return?"
3858 echo "As you already told me, signal handler returns void." >&4;;
3860 echo "As you already told me, signal handler returns int." >&4;;
3865 case "$d_voidsig" in
3866 "$define") signal_t="void";;
3871 : check for ability to cast large floats to 32-bit ints.
3873 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
3874 if $test "$intsize" -eq 4; then
3880 #include <sys/types.h>
3882 $signal_t blech() { exit(3); }
3888 signal(SIGFPE, blech);
3890 f = (double) 0x7fffffff;
3894 if (i32 != ($xxx) f)
3899 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
3903 echo "(I can't seem to compile the test program--assuming it can't)"
3911 echo "Nope, it can't."
3918 : check for ability to cast negative floats to unsigned
3920 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
3922 #include <sys/types.h>
3924 $signal_t blech() { exit(7); }
3925 $signal_t blech_in_list() { exit(4); }
3926 unsigned long dummy_long(p) unsigned long p; { return p; }
3927 unsigned int dummy_int(p) unsigned int p; { return p; }
3928 unsigned short dummy_short(p) unsigned short p; { return p; }
3932 unsigned long along;
3934 unsigned short ashort;
3937 signal(SIGFPE, blech);
3938 along = (unsigned long)f;
3939 aint = (unsigned int)f;
3940 ashort = (unsigned short)f;
3941 if (along != (unsigned long)-123)
3943 if (aint != (unsigned int)-123)
3945 if (ashort != (unsigned short)-123)
3947 f = (double)0x40000000;
3950 along = (unsigned long)f;
3951 if (along != 0x80000000)
3955 along = (unsigned long)f;
3956 if (along != 0x7fffffff)
3960 along = (unsigned long)f;
3961 if (along != 0x80000001)
3965 signal(SIGFPE, blech_in_list);
3967 along = dummy_long((unsigned long)f);
3968 aint = dummy_int((unsigned int)f);
3969 ashort = dummy_short((unsigned short)f);
3970 if (along != (unsigned long)123)
3972 if (aint != (unsigned int)123)
3974 if (ashort != (unsigned short)123)
3980 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
3984 echo "(I can't seem to compile the test program--assuming it can't)"
3987 case "$castflags" in
3992 echo "Nope, it can't."
3999 : see if vprintf exists
4001 if set vprintf val -f d_vprintf; eval $csym; $val; then
4002 echo 'vprintf() found.' >&4
4004 $cat >vprintf.c <<'EOF'
4005 #include <varargs.h>
4007 main() { xxx("foo"); }
4016 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
4019 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
4020 echo "Your vsprintf() returns (int)." >&4
4023 echo "Your vsprintf() returns (char*)." >&4
4027 echo 'vprintf() NOT found.' >&4
4037 : see if chown exists
4041 : see if chroot exists
4045 : see if chsize exists
4049 : check for const keyword
4051 echo 'Checking to see if your C compiler knows about "const"...' >&4
4052 $cat >const.c <<'EOCP'
4053 typedef struct spug { int drokk; } spug;
4060 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
4062 echo "Yup, it does."
4065 echo "Nope, it doesn't."
4070 : see if crypt exists
4072 if set crypt val -f d_crypt; eval $csym; $val; then
4073 echo 'crypt() found.' >&4
4077 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
4078 if $test -z "$cryptlib"; then
4079 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
4083 if $test -z "$cryptlib"; then
4084 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
4088 if $test -z "$cryptlib"; then
4089 cryptlib=`./loc libcrypt.a "" $libpth`
4093 if $test -z "$cryptlib"; then
4094 echo 'crypt() NOT found.' >&4
4103 : get csh whereabouts
4105 'csh') val="$undef" ;;
4112 : see if cuserid exists
4113 set cuserid d_cuserid
4116 : define an alternate in-header-list? function
4117 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4118 cont=true; xxf="echo \"<\$1> found.\" >&4";
4119 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4120 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4122 case $# in 4) instead=instead;; *) instead="at last";; esac;
4123 while $test "$cont"; do
4125 var=$2; eval "was=\$$2";
4126 if $test "$xxx" && $test -r "$xxx";
4128 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4131 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4132 set $yyy; shift; shift; yyy=$@;
4133 case $# in 0) cont="";;
4134 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4135 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4136 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4137 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4141 do set $yyy; var=$2; eval "was=\$$2";
4142 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4143 set $yyy; shift; shift; yyy=$@;
4146 : see if this is a limits.h system
4147 set limits.h i_limits
4150 : see if this is a float.h system
4154 : See if number of significant digits in a double precision number is known
4156 $cat >dbl_dig.c <<EOM
4166 printf("Contains DBL_DIG");
4169 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
4170 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
4171 echo "DBL_DIG found." >&4
4174 echo "DBL_DIG NOT found." >&4
4181 : see if difftime exists
4182 set difftime d_difftime
4185 : see if this is a dirent system
4187 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
4189 echo "<dirent.h> found." >&4
4192 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
4193 echo "<sys/dir.h> found." >&4
4196 xinc=`./findhdr sys/ndir.h`
4198 echo "<dirent.h> NOT found." >&4
4203 : Look for type of directory structure.
4205 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4207 case "$direntrytype" in
4210 $define) guess1='struct dirent' ;;
4211 *) guess1='struct direct' ;;
4214 *) guess1="$direntrytype"
4219 'struct dirent') guess2='struct direct' ;;
4220 *) guess2='struct dirent' ;;
4223 if $contains "$guess1" try.c >/dev/null 2>&1; then
4224 direntrytype="$guess1"
4225 echo "Your directory entries are $direntrytype." >&4
4226 elif $contains "$guess2" try.c >/dev/null 2>&1; then
4227 direntrytype="$guess2"
4228 echo "Your directory entries seem to be $direntrytype." >&4
4230 echo "I don't recognize your system's directory entries." >&4
4231 rp="What type is used for directory entries on this system?"
4239 : see if the directory entry stores field length
4241 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4242 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
4243 echo "Good, your directory entry keeps length information in d_namlen." >&4
4246 echo "Your directory entry does not know about the d_namlen field." >&4
4253 : see if dlerror exists
4254 : On NetBSD and FreeBSD, dlerror might be available, but it is in
4255 : /usr/lib/crt0.o, not in any of the libraries. Therefore, do not
4256 : use the nm extraction, but use a real compile and link test instead.
4259 set dlerror d_dlerror
4263 : see if dld is available
4267 : see if dlopen exists
4268 : On NetBSD and FreeBSD, dlopen is available, but it is in
4269 : /usr/lib/crt0.o, not in any of the libraries. Therefore, do not
4270 : use the nm extraction, but use a real compile and link test instead.
4277 : determine which dynamic loading, if any, to compile in
4279 dldir="ext/DynaLoader"
4292 $define) dflt='y' ;;
4295 $define) dflt='y' ;;
4297 : Does a dl_xxx.xs file exist for this operating system
4298 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4301 rp="Do you wish to use dynamic loading?"
4308 if $test -f ../$dldir/dl_${osname}.xs ; then
4309 dflt="$dldir/dl_${osname}.xs"
4310 elif $test "$d_dlopen" = "$define" ; then
4311 dflt="$dldir/dl_dlopen.xs"
4312 elif $test "$i_dld" = "$define" ; then
4313 dflt="$dldir/dl_dld.xs"
4318 *) dflt="$dldir/$dlsrc"
4321 echo "The following dynamic loading files are available:"
4322 : Can not go over to $dldir because getfile has path hard-coded in.
4323 cd ..; ls -C $dldir/dl*.xs; cd UU
4324 rp="Source file to use for dynamic loading"
4329 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4333 Some systems may require passing special flags to $cc -c to
4334 compile modules that will be used to create a shared library.
4335 To use no flags, say "none".
4338 case "$cccdlflags" in
4339 '') case "$gccversion" in
4340 '') case "$osname" in
4342 next) dflt='none' ;;
4343 solaris|svr4*|esix*) dflt='-Kpic' ;;
4344 sunos) dflt='-pic' ;;
4349 *) dflt="$cccdlflags" ;;
4351 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4354 none) cccdlflags=' ' ;;
4355 *) cccdlflags="$ans" ;;
4360 Some systems use ld to create libraries that can be dynamically loaded,
4361 while other systems (such as those using ELF) use $cc.
4365 '') $cat >try.c <<'EOM'
4366 /* Test for whether ELF binaries are produced */
4371 int i = open("a.out",O_RDONLY);
4374 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4375 exit(0); /* succeed (yes, it's ELF) */
4380 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4382 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4386 echo "I'll use ld to build dynamic libraries."
4395 rp="What command should be used to create dynamic libraries?"
4401 Some systems may require passing special flags to $ld to create a
4402 library that can be dynamically loaded. If your ld flags include
4403 -L/other/path options to locate libraries outside your loader's normal
4404 search path, you may need to specify those -L options here as well. To
4405 use no flags, say "none".
4408 case "$lddlflags" in
4409 '') case "$osname" in
4411 linux) dflt='-shared' ;;
4412 next) dflt='none' ;;
4413 solaris) dflt='-G' ;;
4414 sunos) dflt='-assert nodefinitions' ;;
4415 svr4*|esix*) dflt="-G $ldflags" ;;
4419 *) dflt="$lddlflags" ;;
4421 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4424 none) lddlflags=' ' ;;
4425 *) lddlflags="$ans" ;;
4430 Some systems may require passing special flags to $cc to indicate that
4431 the resulting executable will use dynamic linking. To use no flags,
4435 case "$ccdlflags" in
4436 '') case "$osname" in
4437 hpux) dflt='-Wl,-E' ;;
4438 linux) dflt='-rdynamic' ;;
4439 next) dflt='none' ;;
4440 sunos) dflt='none' ;;
4443 *) dflt="$ccdlflags" ;;
4445 rp="Any special flags to pass to $cc to use dynamic loading?"
4448 none) ccdlflags=' ' ;;
4449 *) ccdlflags="$ans" ;;
4467 System V Release 4 systems can support dynamic loading
4468 only if libperl is created as a shared library.
4475 set d_shrplib; eval $setvar
4476 case "$d_shrplib" in
4480 Be sure to add the perl source directory to the LD_LIBRARY_PATH
4481 environment variable before running make:
4482 LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH
4484 setenv LD_LIBRARY_PATH `cd ..;pwd`
4489 case "$d_shrplib" in
4492 "") dflt="$archlib/CORE";;
4493 *) dflt="$shrpdir";;
4495 rp="What directory should we install the shared libperl into?"
4504 : see if dlfcn is available
4512 On a few systems, the dynamically loaded modules that perl generates and uses
4513 will need a different extension then shared libs. The default will probably
4521 rp='What is the extension of dynamically loaded modules'
4530 : Check if dlsym need a leading underscore
4536 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
4537 $cat >dyna.c <<'EOM'
4546 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
4548 #include <sys/types.h>
4562 int mode = RTLD_LAZY ;
4564 handle = dlopen("./dyna.$dlext", mode) ;
4565 if (handle == NULL) {
4569 symbol = dlsym(handle, "fred") ;
4570 if (symbol == NULL) {
4571 /* try putting a leading underscore */
4572 symbol = dlsym(handle, "_fred") ;
4573 if (symbol == NULL) {
4584 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
4585 $ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 &&
4586 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
4589 1) echo "Test program failed using dlopen." >&4
4590 echo "Perhaps you should not use dynamic loading." >&4;;
4591 2) echo "Test program failed using dlsym." >&4
4592 echo "Perhaps you should not use dynamic loading." >&4;;
4593 3) echo "dlsym needs a leading underscore" >&4
4595 4) echo "dlsym doesn't need a leading underscore." >&4;;
4598 echo "I can't compile and run the test program." >&4
4603 $rm -f fred fred.? dyna.$dlext dyna.?
4608 : see if setuid scripts can be secure
4611 Some kernels have a bug that prevents setuid #! scripts from being
4612 secure. Some sites have disabled setuid #! scripts because of this.
4614 First let's decide if your kernel supports secure setuid #! scripts.
4615 (If setuid #! scripts would be secure but have been disabled anyway,
4616 don't say that they are secure if asked.)
4621 if $test -d /dev/fd; then
4622 echo "#!$ls" >reflect
4623 chmod +x,u+s reflect
4624 ./reflect >flect 2>&1
4625 if $contains "/dev/fd" flect >/dev/null; then
4626 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4630 If you are not sure if they are secure, I can check but I'll need a
4631 username and password different from the one you are using right now.
4632 If you don't have such a username or don't want me to test, simply
4636 rp='Other username to test security of setuid scripts with?'
4641 case "$d_suidsafe" in
4642 '') echo "I'll assume setuid scripts are *not* secure." >&4
4645 echo "Well, the $hint value is *not* secure." >&4
4647 *) echo "Well, the $hint value *is* secure." >&4
4652 $rm -f reflect flect
4653 echo "#!$ls" >reflect
4654 chmod +x,u+s reflect
4657 echo '"su" will (probably) prompt you for '"$ans's password."
4658 su $ans -c './reflect >flect'
4659 if $contains "/dev/fd" flect >/dev/null; then
4660 echo "Okay, it looks like setuid scripts are secure." >&4
4663 echo "I don't think setuid scripts are secure." >&4
4668 rp='Does your kernel have *secure* setuid scripts?'
4671 [yY]*) val="$define";;
4676 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4682 $rm -f reflect flect
4684 : now see if they want to do setuid emulation
4687 case "$d_suidsafe" in
4690 echo "No need to emulate SUID scripts since they are secure here." >& 4
4694 Some systems have disabled setuid scripts, especially systems where
4695 setuid scripts cannot be secure. On systems where setuid scripts have
4696 been disabled, the setuid/setgid bits on scripts are currently
4697 useless. It is possible for $package to detect those bits and emulate
4698 setuid/setgid in a secure fashion. This emulation will only work if
4699 setuid scripts have been disabled in your kernel.
4703 "$define") dflt=y ;;
4706 rp="Do you want to do setuid/setgid emulation?"
4709 [yY]*) val="$define";;
4717 : see if dup2 exists
4721 : see if fchmod exists
4725 : see if fchown exists
4729 : see if this is an fcntl system
4733 : see if fgetpos exists
4734 set fgetpos d_fgetpos
4737 : see if we can have long filenames
4739 rmlist="$rmlist /tmp/cf$$"
4740 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
4741 first=123456789abcdef
4742 second=/tmp/cf$$/$first
4743 $rm -f $first $second
4744 if (echo hi >$first) 2>/dev/null; then
4745 if $test -f 123456789abcde; then
4746 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
4749 if (echo hi >$second) 2>/dev/null; then
4750 if $test -f /tmp/cf$$/123456789abcde; then
4752 That's peculiar... You can have filenames longer than 14 characters, but only
4753 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
4754 I shall consider your system cannot support long filenames at all.
4758 echo 'You can have filenames longer than 14 characters.' >&4
4763 How confusing! Some of your filesystems are sane enough to allow filenames
4764 longer than 14 characters but some others like /tmp can't even think about them.
4765 So, for now on, I shall assume your kernel does not allow them at all.
4772 You can't have filenames longer than 14 chars. You can't even think about them!
4778 $rm -rf /tmp/cf$$ 123456789abcde*
4780 : see if flock exists
4784 : see if fork exists
4788 : see if pathconf exists
4789 set pathconf d_pathconf
4792 : see if fpathconf exists
4793 set fpathconf d_fpathconf
4796 : see if fsetpos exists
4797 set fsetpos d_fsetpos
4800 : see if gethostent exists
4801 set gethostent d_gethent
4804 : see if getlogin exists
4805 set getlogin d_getlogin
4808 : see if getpgrp exists
4809 set getpgrp d_getpgrp
4812 : see if getpgrp2 exists
4813 set getpgrp2 d_getpgrp2
4816 : see if getppid exists
4817 set getppid d_getppid
4820 : see if getpriority exists
4821 set getpriority d_getprior
4824 : see if this is a netinet/in.h or sys/in.h system
4825 set netinet/in.h i_niin sys/in.h i_sysin
4828 : see if htonl --and friends-- exists
4833 : Maybe they are macros.
4838 #include <sys/types.h>
4839 #$i_niin I_NETINET_IN
4842 #include <netinet/in.h>
4848 printf("Defined as a macro.");
4851 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
4852 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
4854 echo "But it seems to be defined as a macro." >&4
4862 : see which of string.h or strings.h is needed
4864 strings=`./findhdr string.h`
4865 if $test "$strings" && $test -r "$strings"; then
4866 echo "Using <string.h> instead of <strings.h>." >&4
4870 strings=`./findhdr strings.h`
4871 if $test "$strings" && $test -r "$strings"; then
4872 echo "Using <strings.h> instead of <string.h>." >&4
4874 echo "No string header found -- You'll surely have problems." >&4
4880 "$undef") strings=`./findhdr strings.h`;;
4881 *) strings=`./findhdr string.h`;;
4886 if set index val -f; eval $csym; $val; then
4887 if set strchr val -f d_strchr; eval $csym; $val; then
4888 if $contains strchr "$strings" >/dev/null 2>&1 ; then
4891 echo "strchr() found." >&4
4895 echo "index() found." >&4
4900 echo "index() found." >&4
4903 if set strchr val -f d_strchr; eval $csym; $val; then
4906 echo "strchr() found." >&4
4908 echo "No index() or strchr() found!" >&4
4913 set d_strchr; eval $setvar
4915 set d_index; eval $setvar
4919 $cat >isascii.c <<'EOCP'
4930 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
4931 echo "isascii() found." >&4
4934 echo "isascii() NOT found." >&4
4941 : see if killpg exists
4945 : see if link exists
4949 : see if localeconv exists
4950 set localeconv d_locconv
4953 : see if lockf exists
4957 : see if lstat exists
4961 : see if mblen exists
4965 : see if mbstowcs exists
4966 set mbstowcs d_mbstowcs
4969 : see if mbtowc exists
4973 : see if memcmp exists
4977 : see if memcpy exists
4981 : see if memmove exists
4982 set memmove d_memmove
4985 : see if memset exists
4989 : see if mkdir exists
4993 : see if mkfifo exists
4997 : see if mktime exists
5001 : see if msgctl exists
5005 : see if msgget exists
5009 : see if msgsnd exists
5013 : see if msgrcv exists
5017 : see how much of the 'msg*(2)' library is present.
5020 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
5021 *"$undef"*) h_msg=false;;
5023 : we could also check for sys/ipc.h ...
5024 if $h_msg && $test `./findhdr sys/msg.h`; then
5025 echo "You have the full msg*(2) library." >&4
5028 echo "You don't have the full msg*(2) library." >&4
5034 : see if this is a malloc.h system
5035 set malloc.h i_malloc
5038 : see if stdlib is available
5039 set stdlib.h i_stdlib
5042 : determine which malloc to compile in
5044 case "$usemymalloc" in
5045 ''|y*|true) dflt='y' ;;
5046 n*|false) dflt='n' ;;
5047 *) dflt="$usemymalloc" ;;
5049 rp="Do you wish to attempt to use the malloc that comes with $package?"
5055 mallocsrc='malloc.c'
5056 mallocobj='malloc.o'
5057 d_mymalloc="$define"
5060 : Remove malloc from list of libraries to use
5061 echo "Removing unneeded -lmalloc from library list" >&4
5062 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5065 echo "libs = $libs" >&4
5077 : compute the return types of malloc and free
5079 $cat >malloc.c <<END
5083 #include <sys/types.h>
5097 case "$malloctype" in
5099 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5106 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5110 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5117 echo "Your system uses $freetype free(), it would seem." >&4
5119 : see if nice exists
5123 : Locate the flags for 'open()'
5125 $cat >open3.c <<'EOCP'
5126 #include <sys/types.h>
5131 #include <sys/file.h>
5142 : check sys/file.h first to get FREAD on Sun
5143 if $test `./findhdr sys/file.h` && \
5144 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
5146 echo "<sys/file.h> defines the O_* constants..." >&4
5148 echo "and you have the 3 argument form of open()." >&4
5151 echo "but not the 3 argument form of open(). Oh, well." >&4
5154 elif $test `./findhdr fcntl.h` && \
5155 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
5157 echo "<fcntl.h> defines the O_* constants..." >&4
5159 echo "and you have the 3 argument form of open()." >&4
5162 echo "but not the 3 argument form of open(). Oh, well." >&4
5167 echo "I can't find the O_* constant definitions! You got problems." >&4
5173 : see if pause exists
5177 : see if pipe exists
5181 : see if this is a pwd system
5183 xxx=`./findhdr pwd.h`
5184 if $test "$xxx"; then
5186 echo "<pwd.h> found." >&4
5187 $cppstdin $cppflags $cppminus < $xxx >$$.h
5188 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
5193 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
5198 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
5199 d_pwchange="$define"
5203 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
5208 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
5209 d_pwexpire="$define"
5213 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
5214 d_pwcomment="$define"
5216 d_pwcomment="$undef"
5226 d_pwcomment="$undef"
5227 echo "<pwd.h> NOT found." >&4
5230 : see if readdir and friends exist
5231 set readdir d_readdir
5233 set seekdir d_seekdir
5235 set telldir d_telldir
5237 set rewinddir d_rewinddir
5240 : see if readlink exists
5241 set readlink d_readlink
5244 : see if rename exists
5248 : see if rmdir exists
5252 : can bcopy handle overlapping blocks?
5257 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
5258 $cat >foo.c <<'EOCP'
5261 char buf[128], abc[128];
5267 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
5269 for (align = 7; align >= 0; align--) {
5270 for (len = 36; len; len--) {
5273 for (off = 1; off <= len; off++) {
5274 bcopy(b, b+off, len);
5275 bcopy(b+off, b, len);
5276 if (bcmp(b, abc, len))
5284 if $cc foo.c -o safebcpy $ccflags $ldflags $libs >/dev/null 2>&1 ; then
5285 if ./safebcpy 2>/dev/null; then
5289 echo "It can't, sorry."
5292 echo "(I can't compile the test program, so we'll assume not...)"
5296 $rm -f foo.* safebcpy core
5300 : can memcpy handle overlapping blocks?
5305 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
5306 $cat >foo.c <<'EOCP'
5309 char buf[128], abc[128];
5315 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
5317 for (align = 7; align >= 0; align--) {
5318 for (len = 36; len; len--) {
5320 memcpy(b, abc, len);
5321 for (off = 1; off <= len; off++) {
5322 memcpy(b+off, b, len);
5323 memcpy(b, b+off, len);
5324 if (memcmp(b, abc, len))
5332 if $cc foo.c -o safemcpy $ccflags $ldflags $libs >/dev/null 2>&1 ; then
5333 if ./safemcpy 2>/dev/null; then
5337 echo "It can't, sorry."
5340 echo "(I can't compile the test program, so we'll assume not...)"
5344 $rm -f foo.* safemcpy core
5348 : see if select exists
5352 : see if semctl exists
5356 : see if semget exists
5360 : see if semop exists
5364 : see how much of the 'sem*(2)' library is present.
5367 case "$d_semctl$d_semget$d_semop" in
5368 *"$undef"*) h_sem=false;;
5370 : we could also check for sys/ipc.h ...
5371 if $h_sem && $test `./findhdr sys/sem.h`; then
5372 echo "You have the full sem*(2) library." >&4
5375 echo "You don't have the full sem*(2) library." >&4
5381 : see if setegid exists
5382 set setegid d_setegid
5385 : see if seteuid exists
5386 set seteuid d_seteuid
5389 : see if setlinebuf exists
5390 set setlinebuf d_setlinebuf
5393 : see if setlocale exists
5394 set setlocale d_setlocale
5397 : see if setpgid exists
5398 set setpgid d_setpgid
5401 : see if setpgrp2 exists
5402 set setpgrp2 d_setpgrp2
5405 : see if setpriority exists
5406 set setpriority d_setprior
5409 : see if setregid exists
5410 set setregid d_setregid
5412 set setresgid d_setresgid
5415 : see if setreuid exists
5416 set setreuid d_setreuid
5418 set setresuid d_setresuid
5421 : see if setrgid exists
5422 set setrgid d_setrgid
5425 : see if setruid exists
5426 set setruid d_setruid
5429 : see if setsid exists
5433 : see if shmctl exists
5437 : see if shmget exists
5441 : see if shmat exists
5444 : see what shmat returns
5447 $cat >shmat.c <<'END'
5448 #include <sys/shm.h>
5451 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
5456 echo "and it returns ($shmattype)." >&4
5457 : see if a prototype for shmat is available
5458 $cppstdin $cppflags $cppminus < $usrinc/sys/shm.h > shmat.c 2>/dev/null
5459 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
5470 set d_shmatprototype
5473 : see if shmdt exists
5477 : see how much of the 'shm*(2)' library is present.
5480 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
5481 *"$undef"*) h_shm=false;;
5483 : we could also check for sys/ipc.h ...
5484 if $h_shm && $test `./findhdr sys/shm.h`; then
5485 echo "You have the full shm*(2) library." >&4
5488 echo "You don't have the full shm*(2) library." >&4
5494 : determine whether the user wants to include a site-specific library
5495 : in addition to privlib.
5498 Some sites may wish to specify a local directory for $package
5499 to search by default in addition to $privlib.
5500 If you don't want to use such an additional directory, answer 'none'.
5505 rp='Local directory for additional library files?'
5507 if $test "X$sitelibexp" != "X$ansexp"; then
5511 sitelibexp="$ansexp"
5515 Since you are running AFS, I need to distinguish the directory in which
5516 private files reside from the directory in which they are installed (and from
5517 which they are presumably copied to the former directory by occult means).
5520 case "$installsitelib" in
5521 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
5522 *) dflt="$installsitelib";;
5525 rp='Where will additional local files be installed?'
5527 installsitelib="$ans"
5529 installsitelib="$sitelibexp"
5532 case "$sitelibexp" in
5533 ''|' ') d_sitelib=undef ;;
5534 *) d_sitelib=define ;;
5539 : see whether socket exists
5541 $echo $n "Hmm... $c" >&4
5542 if set socket val -f d_socket; eval $csym; $val; then
5543 echo "Looks like you have Berkeley networking support." >&4
5545 if set setsockopt val -f; eval $csym; $val; then
5548 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
5552 if $contains socklib libc.list >/dev/null 2>&1; then
5553 echo "Looks like you have Berkeley networking support." >&4
5555 : we will have to assume that it supports the 4.2 BSD interface
5558 echo "You don't have Berkeley networking in libc.a..." >&4
5559 if test -f /usr/lib/libnet.a; then
5560 ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \
5561 ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list
5562 if $contains socket libc.list >/dev/null 2>&1; then
5563 echo "...but the Wollongong group seems to have hacked it in." >&4
5565 sockethdr="-I/usr/netinclude"
5567 if $contains setsockopt libc.list >/dev/null 2>&1; then
5570 echo "...using the old 4.1c interface, rather than 4.2" >&4
5574 echo "or even in libnet.a, which is peculiar." >&4
5579 echo "or anywhere else I see." >&4
5586 : see if socketpair exists
5587 set socketpair d_sockpair
5590 : see if stat knows about block sizes
5592 xxx=`./findhdr sys/stat.h`
5593 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
5594 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
5595 echo "Your stat() knows about block sizes." >&4
5598 echo "Your stat() doesn't know about block sizes." >&4
5602 echo "Your stat() doesn't know about block sizes." >&4
5608 : see if _ptr and _cnt from stdio act std
5610 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
5611 echo "(Looks like you have stdio.h from Linux.)"
5612 case "$stdio_ptr" in
5613 '') stdio_ptr='((fp)->_IO_read_ptr)';;
5615 case "$stdio_cnt" in
5616 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)';;
5618 case "$stdio_base" in
5619 '') stdio_base='((fp)->_IO_read_base)';;
5621 case "$stdio_bufsiz" in
5622 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base))';;
5625 case "$stdio_ptr" in
5626 '') stdio_ptr='((fp)->_ptr)';;
5628 case "$stdio_cnt" in
5629 '') stdio_cnt='((fp)->_cnt)';;
5631 case "$stdio_base" in
5632 '') stdio_base='((fp)->_base)';;
5634 case "$stdio_bufsiz" in
5635 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
5638 : test whether _ptr and _cnt really work
5639 echo "Checking how std your stdio is..." >&4
5642 #define FILE_ptr(fp) $stdio_ptr
5643 #define FILE_cnt(fp) $stdio_cnt
5645 FILE *fp = fopen("try.c", "r");
5648 18 <= FILE_cnt(fp) &&
5649 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
5656 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
5658 echo "Your stdio acts pretty std."
5661 echo "Your stdio isn't very std."
5664 echo "Your stdio doesn't appear very std."
5670 : see if _base is also standard
5672 case "$d_stdstdio" in
5676 #define FILE_base(fp) $stdio_base
5677 #define FILE_bufsiz(fp) $stdio_bufsiz
5679 FILE *fp = fopen("try.c", "r");
5682 19 <= FILE_bufsiz(fp) &&
5683 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
5689 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
5691 echo "Even its _base field acts std."
5694 echo "But its _base field isn't std."
5697 echo "However, it seems to be lacking the _base field."
5705 : see if strcoll exists
5706 set strcoll d_strcoll
5709 : check for structure copying
5711 echo "Checking to see if your C compiler can copy structs..." >&4
5712 $cat >try.c <<'EOCP'
5722 if $cc -c try.c >/dev/null 2>&1 ; then
5727 echo "Nope, it can't."
5733 : see if strerror and/or sys_errlist[] exist
5735 if set strerror val -f d_strerror; eval $csym; $val; then
5736 echo 'strerror() found.' >&4
5737 d_strerror="$define"
5738 d_strerrm='strerror(e)'
5739 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5740 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
5741 d_syserrlst="$define"
5743 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
5744 d_syserrlst="$undef"
5746 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
5747 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
5748 echo 'strerror() found in string header.' >&4
5749 d_strerror="$define"
5750 d_strerrm='strerror(e)'
5751 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5752 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
5753 d_syserrlst="$define"
5755 echo "(You don't appear to have any sys_errlist[], how can this be?)"
5756 d_syserrlst="$undef"
5758 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5759 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
5761 d_syserrlst="$define"
5762 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
5764 echo 'strerror() and sys_errlist[] NOT found.' >&4
5766 d_syserrlst="$undef"
5767 d_strerrm='"unknown"'
5770 : see if strxfrm exists
5771 set strxfrm d_strxfrm
5774 : see if symlink exists
5775 set symlink d_symlink
5778 : see if syscall exists
5779 set syscall d_syscall
5782 : see if sysconf exists
5783 set sysconf d_sysconf
5786 : see if system exists
5790 : see if tcgetpgrp exists
5791 set tcgetpgrp d_tcgetpgrp
5794 : see if tcsetpgrp exists
5795 set tcsetpgrp d_tcsetpgrp
5798 : define an is-a-typedef? function
5799 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
5801 "") inclist="sys/types.h";;
5803 eval "varval=\$$var";
5807 for inc in $inclist; do
5808 echo "#include <$inc>" >>temp.c;
5810 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
5811 if $contains $type temp.E >/dev/null 2>&1; then
5817 *) eval "$var=$varval";;
5820 : see if this is a sys/times.h system
5821 set sys/times.h i_systimes
5824 : see if times exists
5826 if set times val -f d_times; eval $csym; $val; then
5827 echo 'times() found.' >&4
5830 case "$i_systimes" in
5831 "$define") inc='sys/times.h';;
5833 set clock_t clocktype long stdio.h sys/types.h $inc
5837 rp="What type is returned by times() on this sytem?"
5841 echo 'times() NOT found, hope that will do.' >&4
5846 : see if truncate exists
5847 set truncate d_truncate
5850 : see if tzname[] exists
5852 if set tzname val -a d_tzname; eval $csym; $val; then
5854 echo 'tzname[] found.' >&4
5857 echo 'tzname[] NOT found.' >&4
5862 : see if umask exists
5866 : see if we have to deal with yellow pages, now NIS.
5867 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5868 if $test -f /usr/etc/nibindd; then
5870 echo "I'm fairly confident you're on a NeXT."
5872 rp='Do you get the hosts file via NetInfo?'
5881 y*) hostcat='nidump hosts .';;
5882 *) case "$hostcat" in
5883 nidump*) hostcat='';;
5893 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5901 rp='Are you getting the hosts file via yellow pages?'
5904 y*) hostcat='ypcat hosts';;
5905 *) hostcat='cat /etc/hosts';;
5911 : now get the host name
5913 echo "Figuring out host name..." >&4
5914 case "$myhostname" in
5916 echo 'Maybe "hostname" will work...'
5917 if tans=`sh -c hostname 2>&1` ; then
5925 if $test "$cont"; then
5927 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5928 if tans=`cat /etc/systemid 2>&1` ; then
5930 phostname='cat /etc/systemid'
5931 echo "Whadyaknow. Xenix always was a bit strange..."
5934 elif $test -r /etc/systemid; then
5935 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5938 if $test "$cont"; then
5939 echo 'No, maybe "uuname -l" will work...'
5940 if tans=`sh -c 'uuname -l' 2>&1` ; then
5942 phostname='uuname -l'
5944 echo 'Strange. Maybe "uname -n" will work...'
5945 if tans=`sh -c 'uname -n' 2>&1` ; then
5947 phostname='uname -n'
5949 echo 'Oh well, maybe I can mine it out of whoami.h...'
5950 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5951 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5952 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5954 case "$myhostname" in
5955 '') echo "Does this machine have an identity crisis or something?"
5958 echo "Well, you said $myhostname before..."
5959 phostname='echo $myhostname';;
5965 : you do not want to know about this
5970 if $test "$myhostname" ; then
5972 rp='Your host name appears to be "'$myhostname'".'" Right?"
5980 : bad guess or no guess
5981 while $test "X$myhostname" = X ; do
5983 rp="Please type the (one word) name of your host:"
5988 : translate upper to lower if necessary
5989 case "$myhostname" in
5991 echo "(Normalizing case in your host name)"
5992 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5996 : a little sanity check here
5997 case "$phostname" in
6000 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6001 $myhostname$mydomain|$myhostname) ;;
6003 case "$phostname" in
6005 echo "(That doesn't agree with your whoami.h file, by the way.)"
6008 echo "(That doesn't agree with your $phostname command, by the way.)"
6016 : see how we will look up host name
6019 : dummy stub to allow use of elif
6020 elif set uname val -f d_uname; eval $csym; $val; then
6023 uname() was found, but you're running xenix, and older versions of xenix
6024 have a broken uname(). If you don't really know whether your xenix is old
6025 enough to have a broken system call, use the default answer.
6032 rp='Is your uname() broken?'
6035 n*) d_uname="$define"; call=uname;;
6038 echo 'uname() found.' >&4
6043 case "$d_gethname" in
6044 '') d_gethname="$undef";;
6047 '') d_uname="$undef";;
6049 case "$d_phostname" in
6050 '') d_phostname="$undef";;
6053 : backward compatibility for d_hvfork
6054 if test X$d_hvfork != X; then
6058 : see if there is a vfork
6063 : Ok, but do we want to use it. vfork is reportedly unreliable in
6064 : perl on Solaris 2.x, and probably elsewhere.
6072 rp="Some systems have problems with vfork(). Do you want to use it?"
6077 echo "Ok, we won't use vfork()."
6086 $define) usevfork='true';;
6087 *) usevfork='false';;
6090 : see if this is an sysdir system
6091 set sys/dir.h i_sysdir
6094 : see if this is an sysndir system
6095 set sys/ndir.h i_sysndir
6098 : see if closedir exists
6099 set closedir d_closedir
6102 case "$d_closedir" in
6105 echo "Checking whether closedir() returns a status..." >&4
6106 cat > closedir.c <<EOM
6107 #$i_dirent I_DIRENT /**/
6108 #$i_sysdir I_SYS_DIR /**/
6109 #$i_sysndir I_SYS_NDIR /**/
6111 #if defined(I_DIRENT)
6113 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
6114 #include <sys/dir.h>
6118 #include <sys/ndir.h>
6122 #include <ndir.h> /* may be wrong in the future */
6124 #include <sys/dir.h>
6129 int main() { return closedir(opendir(".")); }
6131 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
6132 if ./closedir > /dev/null 2>&1 ; then
6133 echo "Yes, it does."
6136 echo "No, it doesn't."
6140 echo "(I can't seem to compile the test program--assuming it doesn't)"
6151 : check for volatile keyword
6153 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
6154 $cat >try.c <<'EOCP'
6157 typedef struct _goo_struct goo_struct;
6158 goo_struct * volatile goo = ((goo_struct *)0);
6159 struct _goo_struct {
6164 typedef unsigned short foo_t;
6167 volatile foo_t blech;
6171 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
6173 echo "Yup, it does."
6176 echo "Nope, it doesn't."
6182 : see if there is a wait4
6186 : see if waitpid exists
6187 set waitpid d_waitpid
6190 : see if wcstombs exists
6191 set wcstombs d_wcstombs
6194 : see if wctomb exists
6198 : preserve RCS keywords in files with variable substitution, grrr
6203 Revision='$Revision'
6205 : check for alignment requirements
6207 case "$alignbytes" in
6208 '') echo "Checking alignment constraints..." >&4
6209 $cat >try.c <<'EOCP'
6216 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
6219 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
6223 echo"(I can't seem to compile the test program...)"
6226 *) dflt="$alignbytes"
6229 rp="Doubles must be aligned on a how-many-byte boundary?"
6234 : determine where public executables go
6239 rp='Pathname where the public executables will reside?'
6241 if $test "X$ansexp" != "X$binexp"; then
6249 Since you are running AFS, I need to distinguish the directory in which
6250 executables reside from the directory in which they are installed (and from
6251 which they are presumably copied to the former directory by occult means).
6254 case "$installbin" in
6255 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
6256 *) dflt="$installbin";;
6259 rp='Where will public executables be installed?'
6263 installbin="$binexp"
6266 : check for ordering of bytes in a long
6267 case "$byteorder" in
6271 In the following, larger digits indicate more significance. A big-endian
6272 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
6273 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
6274 machines may have weird orders like 3412. A Cray will report 87654321. If
6275 the test program works the default is probably right.
6276 I'm now running the test program...
6278 $cat >try.c <<'EOCP'
6285 char c[sizeof(long)];
6288 if (sizeof(long) > 4)
6289 u.l = (0x08070605L << 32) | 0x04030201L;
6292 for (i = 0; i < sizeof(long); i++)
6293 printf("%c", u.c[i]+'0');
6297 if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
6300 ????|????????) echo "(The test program ran ok.)";;
6301 *) echo "(The test program didn't run right for some reason.)";;
6306 (I can't seem to compile the test program. Guessing big-endian...)
6315 rp="What is the order of bytes in a long?"
6320 : how do we catenate cpp tokens here?
6322 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
6323 $cat >cpp_stuff.c <<'EOCP'
6324 #define RCAT(a,b)a/**/b
6325 #define ACAT(a,b)a ## b
6329 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
6330 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
6331 echo "Oh! Smells like ANSI's been here."
6332 echo "We can catify or stringify, separately or together!"
6334 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
6335 echo "Ah, yes! The good old days!"
6336 echo "However, in the good old days we don't know how to stringify and"
6337 echo "catify at the same time."
6341 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
6342 to have to edit the values of CAT[2-5] in config.h...
6344 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
6348 : see if this is a db.h system
6354 : Check the return type needed for hash
6356 echo "Checking return type needed for hash for Berkeley DB ..." >&4
6357 $cat >try.c <<'EOCP'
6358 #include <sys/types.h>
6360 u_int32_t hash_cb (ptr, size)
6368 info.hash = hash_cb;
6371 if $cc $ccflags -c try.c >try.out 2>&1 ; then
6372 if $contains warning try.out >>/dev/null 2>&1 ; then
6375 db_hashtype='u_int32_t'
6378 echo "I can't seem to compile the test program." >&4
6382 echo "Your version of Berkeley DB uses $db_hashtype for hash."
6390 : Check the return type needed for prefix
6392 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
6394 #include <sys/types.h>
6396 size_t prefix_cb (key1, key2)
6404 info.prefix = prefix_cb;
6407 if $cc $ccflags -c try.c >try.out 2>&1 ; then
6408 if $contains warning try.out >>/dev/null 2>&1 ; then
6411 db_prefixtype='size_t'
6414 echo "I can't seem to compile the test program." >&4
6418 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
6420 *) db_prefixtype='int'
6424 : check for void type
6426 echo "Checking to see how well your C compiler groks the void type..." >&4
6429 Support flag bits are:
6430 1: basic void declarations.
6431 2: arrays of pointers to functions returning void.
6432 4: operations between pointers to and addresses of void functions.
6433 8: generic void pointers.
6436 case "$voidflags" in
6438 $cat >try.c <<'EOCP'
6444 extern void moo(); /* function returning void */
6445 void (*goo)(); /* ptr to func returning void */
6447 void *hue; /* generic ptr */
6461 if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6462 voidflags=$defvoidused
6463 echo "It appears to support void to the level $package wants ($defvoidused)."
6464 if $contains warning .out >/dev/null 2>&1; then
6465 echo "However, you might get some warnings that look like this:"
6469 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6470 if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then
6471 echo "It supports 1..."
6472 if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then
6473 echo "It also supports 2..."
6474 if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then
6476 echo "And it supports 4 but not 8 definitely."
6478 echo "It doesn't support 4..."
6479 if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then
6481 echo "But it supports 8."
6484 echo "Neither does it support 8."
6488 echo "It does not support 2..."
6489 if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then
6491 echo "But it supports 4 and 8."
6493 if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then
6495 echo "And it supports 4 but has not heard about 8."
6497 echo "However it supports 8 but not 4."
6502 echo "There is no support at all for void."
6508 rp="Your void support flags add up to what?"
6513 : see if dbm.h is available
6518 : see if dbmclose exists
6519 set dbmclose d_dbmclose
6521 case "$d_dbmclose" in
6524 echo "We won't be including <dbm.h>"
6533 : see if ndbm.h is available
6538 : see if dbm_open exists
6539 set dbm_open d_dbm_open
6541 case "$d_dbm_open" in
6544 echo "We won't be including <ndbm.h>"
6553 : see if gdbm.h is available
6558 : see if gdbm_open exists
6559 set gdbm_open d_gdbm_open
6561 case "$d_gdbm_open" in
6564 echo "We won't be including <gdbm.h>"
6574 echo "Looking for extensions..." >&4
6576 : If we are using the old config.sh, known_extensions may contain
6577 : old or inaccurate or duplicate values.
6579 : We do not use find because it might not be available.
6580 : We do not just use MANIFEST because the user may have dropped
6581 : some additional extensions into the source tree and expect them
6584 if $test -f $xxx/$xxx.xs; then
6585 known_extensions="$known_extensions $xxx"
6587 if $test -d $xxx; then
6590 if $test -f $yyy/$yyy.xs; then
6591 known_extensions="$known_extensions $xxx/$yyy"
6598 set X $known_extensions
6600 known_extensions="$*"
6603 : Now see which are supported on this system.
6605 for xxx in $known_extensions ; do
6607 DB_File) case "$i_db" in
6608 $define) avail_ext="$avail_ext $xxx" ;;
6611 GDBM_File) case "$i_gdbm" in
6612 $define) avail_ext="$avail_ext $xxx" ;;
6615 NDBM_File) case "$i_ndbm" in
6616 $define) avail_ext="$avail_ext $xxx" ;;
6619 ODBM_File) case "$i_dbm" in
6620 $define) avail_ext="$avail_ext $xxx" ;;
6623 POSIX) case "$useposix" in
6624 true|define|y) avail_ext="$avail_ext $xxx" ;;
6627 Socket) case "$d_socket" in
6628 $define) avail_ext="$avail_ext $xxx" ;;
6631 *) avail_ext="$avail_ext $xxx"
6643 A number of extensions are supplied with $package. You may choose to
6644 compile these extensions for dynamic loading (the default), compile
6645 them into the $package executable (static loading), or not include
6646 them at all. Answer "none" to include no extensions.
6649 case "$dynamic_ext" in
6650 '') dflt="$avail_ext" ;;
6651 *) dflt="$dynamic_ext" ;;
6656 rp="What extensions do you wish to load dynamically?"
6659 none) dynamic_ext=' ' ;;
6660 *) dynamic_ext="$ans" ;;
6663 case "$static_ext" in
6665 : Exclude those already listed in dynamic linking
6667 for xxx in $avail_ext; do
6668 case " $dynamic_ext " in
6670 *) dflt="$dflt $xxx" ;;
6677 *) dflt="$static_ext"
6684 rp="What extensions do you wish to load statically?"
6687 none) static_ext=' ' ;;
6688 *) static_ext="$ans" ;;
6693 A number of extensions are supplied with $package. Answer "none"
6694 to include no extensions.
6697 case "$static_ext" in
6698 '') dflt="$avail_ext" ;;
6699 *) dflt="$static_ext" ;;
6705 rp="What extensions do you wish to include?"
6708 none) static_ext=' ' ;;
6709 *) static_ext="$ans" ;;
6714 set X $dynamic_ext $static_ext
6718 : see what type file positions are declared as in the library
6719 set fpos_t fpostype long stdio.h sys/types.h
6723 rp="What is the type for file position used by fsetpos()?"
6727 : Store the full pathname to the sed program for use in the C program
6730 : see what type gids are declared as in the kernel
6731 set gid_t gidtype xxx stdio.h sys/types.h
6735 xxx=`./findhdr sys/user.h`
6736 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
6738 unsigned) dflt="$1 $2" ;;
6742 *) dflt="$gidtype";;
6745 rp="What is the type for group ids returned by getgid()?"
6749 : see if getgroups exists
6750 set getgroups d_getgrps
6753 : Find type of 2nd arg to getgroups
6755 case "$d_getgrps" in
6757 case "$groupstype" in
6758 '') dflt="$gidtype" ;;
6759 *) dflt="$groupstype" ;;
6762 What is the type of the second argument to getgroups()? Usually this
6763 is the same as group ids, $gidtype, but not always.
6766 rp='What type is the second argument to getgroups()?'
6770 *) groupstype="$gidtype";;
6773 : see what type lseek is declared as in the kernel
6774 set off_t lseektype long stdio.h sys/types.h
6778 rp="What type is lseek's offset on this system declared as?"
6782 : determine where manual pages go
6783 set man1dir man1dir none
6787 $spackage has manual pages available in source form.
6791 echo "However, you don't have nroff, so they're probably useless to you."
6793 '') man1dir="none";;
6796 echo "If you don't want the manual sources installed, answer 'none'."
6799 lookpath="$prefixexp/man/man1 $prefixexp/man/u_man/man1"
6800 lookpath="$lookpath $prefixexp/man/l_man/man1"
6801 lookpath="$lookpath /usr/local/man/man1 /opt/man/man1 /usr/man/manl"
6802 lookpath="$lookpath /usr/man/local/man1 /usr/man/l_man/man1"
6803 lookpath="$lookpath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6804 lookpath="$lookpath /usr/man/man.L"
6805 man1dir=`./loc . $prefixexp/man/man1 $lookpath`
6806 if $test -d "$man1dir"; then
6820 rp="Where do the main $spackage manual pages (source) go?"
6822 if test "X$man1direxp" != "X$ansexp"; then
6826 man1direxp="$ansexp"
6834 Since you are running AFS, I need to distinguish the directory in which
6835 manual pages reside from the directory in which they are installed (and from
6836 which they are presumably copied to the former directory by occult means).
6839 case "$installman1dir" in
6840 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
6841 *) dflt="$installman1dir";;
6844 rp='Where will man pages be installed?'
6846 installman1dir="$ans"
6848 installman1dir="$man1direxp"
6863 : determine where library module manual pages go
6864 set man3dir man3dir none
6868 $spackage has manual pages for many of the library modules.
6874 However, you don't have nroff, so they're probably useless to you.
6875 You can use the supplied perldoc script instead.
6878 '') man3dir="none";;
6882 case "$d_flexfnam" in
6885 However, your system can't handle the long file names like File::Basename.3.
6886 You can use the supplied perldoc script instead.
6889 '') man3dir="none";;
6893 echo "If you don't want the manual sources installed, answer 'none'."
6895 '') dflt="$privlib/man/man3" ;;
6897 *) dflt="$man3dir" ;;
6902 rp="Where do the $spackage library man pages (source) go?"
6904 if test "X$man3direxp" != "X$ansexp"; then
6909 man3direxp="$ansexp"
6917 Since you are running AFS, I need to distinguish the directory in which
6918 manual pages reside from the directory in which they are installed (and from
6919 which they are presumably copied to the former directory by occult means).
6922 case "$installman3dir" in
6923 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
6924 *) dflt="$installman3dir";;
6927 rp='Where will man pages be installed?'
6929 installman3dir="$ans"
6931 installman3dir="$man3direxp"
6946 : see what type is used for mode_t
6947 set mode_t modetype int stdio.h sys/types.h
6951 rp="What type is used for file modes?"
6955 : set the base revision
6958 : get the patchlevel
6960 echo "Getting the current patchlevel..." >&4
6961 if $test -r ../patchlevel.h;then
6962 patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
6966 echo "(You have $package $baserev PL$patchlevel.)"
6968 : Cruising for prototypes
6970 echo "Checking out function prototypes..." >&4
6971 $cat >prototype.c <<'EOCP'
6972 main(int argc, char *argv[]) {
6975 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6976 echo "Your C compiler appears to support function prototypes."
6979 echo "Your C compiler doesn't seem to understand function prototypes."
6986 : check for size of random number generator
6990 echo "Checking to see how many bits your rand function produces..." >&4
6991 $cat >try.c <<'EOCP'
6996 register unsigned long tmp;
6997 register unsigned long max = 0L;
6999 for (i = 1000; i; i--) {
7000 tmp = (unsigned long)rand();
7001 if (tmp > max) max = tmp;
7003 for (i = 0; max; i++)
7008 if $cc try.c -o try >/dev/null 2>&1 ; then
7012 echo "(I can't seem to compile the test program...)"
7019 rp='How many bits does your rand() function produce?'
7024 : see if ar generates random libraries by itself
7026 echo "Checking how to generate random libraries on your machine..." >&4
7027 echo 'int bar1() { return bar2(); }' > bar1.c
7028 echo 'int bar2() { return 2; }' > bar2.c
7029 $cat > foo.c <<'EOP'
7030 main() { printf("%d\n", bar1()); exit(0); }
7032 $cc $ccflags -c bar1.c >/dev/null 2>&1
7033 $cc $ccflags -c bar2.c >/dev/null 2>&1
7034 $cc $ccflags -c foo.c >/dev/null 2>&1
7035 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
7036 if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7037 ./foobar >/dev/null 2>&1; then
7038 echo "ar appears to generate random libraries itself."
7041 elif ar ts bar.a >/dev/null 2>&1 &&
7042 $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7043 ./foobar >/dev/null 2>&1; then
7044 echo "a table of contents needs to be added with 'ar ts'."
7051 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
7052 $test -f $ranlib || ranlib=''
7055 if $test -n "$ranlib"; then
7056 echo "your system has '$ranlib'; we'll use that."
7059 echo "your system doesn't seem to support random libraries"
7060 echo "so we'll use lorder and tsort to order the libraries."
7067 : determine where public executable scripts go
7068 set scriptdir scriptdir
7070 case "$scriptdir" in
7073 : guess some guesses
7074 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7075 $test -d /usr/share/bin && dflt=/usr/share/bin
7076 $test -d /usr/local/script && dflt=/usr/local/script
7077 $test -d $prefixexp/script && dflt=$prefixexp/script
7081 *) dflt="$scriptdir"
7086 Some installations have a separate directory just for executable scripts so
7087 that they can mount it across multiple architectures but keep the scripts in
7088 one spot. You might, for example, have a subdirectory of /usr/share for this.
7089 Or you might just lump your scripts in with all your other executables.
7093 rp='Where do you keep publicly executable scripts?'
7095 if $test "X$ansexp" != "X$scriptdirexp"; then
7099 scriptdirexp="$ansexp"
7103 Since you are running AFS, I need to distinguish the directory in which
7104 scripts reside from the directory in which they are installed (and from
7105 which they are presumably copied to the former directory by occult means).
7108 case "$installscript" in
7109 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
7110 *) dflt="$installscript";;
7113 rp='Where will public scripts be installed?'
7115 installscript="$ans"
7117 installscript="$scriptdirexp"
7120 : see if sys/select.h has to be included
7121 set sys/select.h i_sysselct
7124 : see if we should include time.h, sys/time.h, or both
7126 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7127 $echo $n "I'm now running the test program...$c"
7128 $cat >try.c <<'EOCP'
7129 #include <sys/types.h>
7134 #ifdef SYSTIMEKERNEL
7137 #include <sys/time.h>
7140 #include <sys/select.h>
7149 struct timezone tzp;
7151 if (foo.tm_sec == foo.tm_sec)
7154 if (bar.tv_sec == bar.tv_sec)
7163 for s_timeval in '-DS_TIMEVAL' ''; do
7164 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7165 for i_time in '' '-DI_TIME'; do
7166 for i_systime in '-DI_SYSTIME' ''; do
7170 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
7171 try.c -o try >/dev/null 2>&1 ; then
7172 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7176 $echo $n "Succeeded with $flags$c"
7187 *SYSTIMEKERNEL*) i_systimek="$define"
7188 timeincl=`./findhdr sys/time.h`
7189 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7190 *) i_systimek="$undef";;
7193 *I_TIME*) i_time="$define"
7194 timeincl=`./findhdr time.h`" $timeincl"
7195 echo "We'll include <time.h>." >&4;;
7196 *) i_time="$undef";;
7199 *I_SYSTIME*) i_systime="$define"
7200 timeincl=`./findhdr sys/time.h`" $timeincl"
7201 echo "We'll include <sys/time.h>." >&4;;
7202 *) i_systime="$undef";;
7206 : check for fd_set items
7209 Checking to see how well your C compiler handles fd_set and friends ...
7211 $cat >fd_set.c <<EOCP
7212 #$i_systime I_SYS_TIME
7213 #$i_sysselct I_SYS_SELECT
7214 #$d_socket HAS_SOCKET
7215 #include <sys/types.h>
7217 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7220 #include <sys/time.h>
7223 #include <sys/select.h>
7233 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7240 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7241 d_fds_bits="$define"
7243 echo "Well, your system knows about the normal fd_set typedef..." >&4
7245 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7246 d_fd_macros="$define"
7249 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7251 d_fd_macros="$undef"
7255 Hmm, your compiler has some difficulty with fd_set. Checking further...
7257 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7260 echo "Well, your system has some sort of fd_set available..." >&4
7262 echo "and you have the normal fd_set macros." >&4
7263 d_fd_macros="$define"
7266 but not the normal fd_set macros! Gross! More work for me...
7268 d_fd_macros="$undef"
7271 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7274 d_fd_macros="$undef"
7280 : check for type of arguments to select. This will only really
7281 : work if the system supports prototypes and provides one for
7285 : Make initial guess
7286 case "$selecttype" in
7289 $define) xxx='fd_set *' ;;
7293 *) xxx="$selecttype"
7298 'fd_set *') yyy='int *' ;;
7299 'int *') yyy='fd_set *' ;;
7304 Checking to see what type of arguments are expected by select().
7307 #$i_systime I_SYS_TIME
7308 #$i_sysselct I_SYS_SELECT
7309 #$d_socket HAS_SOCKET
7310 #include <sys/types.h>
7312 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7315 #include <sys/time.h>
7318 #include <sys/select.h>
7324 Select_fd_set_t readfds;
7325 Select_fd_set_t writefds;
7326 Select_fd_set_t exceptfds;
7327 struct timeval timeout;
7328 select(width, readfds, writefds, exceptfds, &timeout);
7332 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
7334 echo "Your system uses $xxx for the arguments to select." >&4
7335 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
7337 echo "Your system uses $yyy for the arguments to select." >&4
7339 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
7346 *) selecttype = 'int *'
7350 : generate list of signal names
7354 echo "Generating a list of signal names..." >&4
7355 xxx=`./findhdr signal.h`" "`./findhdr sys/signal.h`
7356 xxx="$xxx "`./findhdr linux/signal.h`
7357 set X `cat $xxx 2>&1 | $awk '
7358 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $3 ~ /^[1-9][0-9]*$/ {
7359 sig[$3] = substr($2,4,20)
7360 if (max < $3 && $3 < 60) {
7366 for (i = 1; i <= max; i++) {
7380 echo 'kill -l' >/tmp/foo$$
7381 set X `csh -f </tmp/foo$$`
7385 0)set HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM
7393 echo "The following signals are available:"
7395 echo $sig_name | $awk \
7396 'BEGIN { linelen = 0 }
7398 for (i = 1; i < NF; i++) {
7400 linelen = linelen + length(name)
7403 linelen = length(name)
7410 : see what type is used for size_t
7411 set size_t sizetype 'unsigned int' stdio.h sys/types.h
7415 rp="What type is used for the length parameter for string functions?"
7419 : see what type is used for signed size_t
7420 set ssize_t ssizetype int stdio.h sys/types.h
7423 $cat > ssize.c <<EOM
7425 #include <sys/types.h>
7426 #define Size_t $sizetype
7427 #define SSize_t $dflt
7430 if (sizeof(Size_t) == sizeof(SSize_t))
7432 else if (sizeof(Size_t) == sizeof(int))
7439 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then
7441 echo "I'll be using $ssizetype for functions returning a byte count." >&4
7443 echo "(I can't compile the test program--please enlighten me!)"
7446 I need a type that is the same size as $sizetype, but is guaranteed to
7447 be signed. Common values are int and long.
7450 rp="What signed type is the same size as $sizetype?"
7454 $rm -f ssize ssize.[co]
7456 : see what type of char stdio uses.
7458 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7459 echo "Your stdio uses unsigned chars." >&4
7460 stdchar="unsigned char"
7462 echo "Your stdio uses signed chars." >&4
7466 : see if time exists
7468 if set time val -f d_time; eval $csym; $val; then
7469 echo 'time() found.' >&4
7471 set time_t timetype long stdio.h sys/types.h
7475 rp="What type is returned by time() on this sytem?"
7479 echo 'time() not found, hope that will do.' >&4
7486 : see what type uids are declared as in the kernel
7487 set uid_t uidtype xxx stdio.h sys/types.h
7491 xxx=`./findhdr sys/user.h`
7492 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
7494 unsigned) dflt="$1 $2" ;;
7498 *) dflt="$uidtype";;
7501 rp="What is the type for user ids returned by getuid()?"
7505 : see if this is a sys/file.h system
7510 : do we need to #include <sys/file.h> ?
7516 echo "We'll be including <sys/file.h>." >&4
7519 echo "We won't be including <sys/file.h>." >&4
7529 : see if fcntl.h is there
7534 : see if we can include fcntl.h
7540 echo "We'll be including <fcntl.h>." >&4
7544 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
7546 echo "We won't be including <fcntl.h>." >&4
7558 : see if this is an grp system
7562 : see if this is a math.h system
7566 : see if memory.h is available.
7571 : See if it conflicts with string.h
7577 $cppstdin $cppflags $cppminus < $strings > mem.h
7578 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
7580 echo "We won't be including <memory.h>."
7590 : see if net/errno.h is available
7595 : Unfortunately, it causes problems on some systems. Arrgh.
7601 #include <net/errno.h>
7607 if $cc $ccflags -c try.c >/dev/null 2>&1; then
7608 echo "We'll be including <net/errno.h>." >&4
7610 echo "We won't be including <net/errno.h>." >&4
7619 : get C preprocessor symbols handy
7621 $echo $n "Hmm... $c"
7622 echo $al | $tr ' ' '\012' >Cppsym.know
7634 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
7636 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
7639 unknown="\$unknown \$sym"
7649 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
7651 exit 0; _ _ _ _\1\\ \1\\
7654 echo "exit 1; _ _ _" >>Cppsym\$\$
7655 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
7657 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
7663 $rm -f Cppsym\$\$ Cppsym2\$\$
7668 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
7670 : now check the C compiler for additional symbols
7676 for i in \`$cc -v -c tmp.c 2>&1\`
7679 -D*) echo "\$i" | $sed 's/^-D//';;
7680 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
7687 ./ccsym | $sort | $uniq >ccsym.raw
7688 $awk '/\=/ { print $0; next }
7689 { print $0"=1" }' ccsym.raw >ccsym.list
7690 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
7691 $comm -13 ccsym.true ccsym.list >ccsym.own
7692 $comm -12 ccsym.true ccsym.list >ccsym.com
7693 $comm -23 ccsym.true ccsym.list >ccsym.cpp
7696 if $test -z ccsym.raw; then
7697 echo "Your C compiler doesn't seem to define any symbol!" >&4
7699 echo "However, your C preprocessor defines the following ones:"
7702 if $test -s ccsym.com; then
7703 echo "Your C compiler and pre-processor define these symbols:"
7704 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
7707 $test "$silent" || sleep 1
7709 if $test -s ccsym.cpp; then
7710 $test "$also" && echo " "
7711 echo "Your C pre-processor ${also}defines the following $symbols:"
7712 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
7714 $test "$silent" || sleep 1
7716 if $test -s ccsym.own; then
7717 $test "$also" && echo " "
7718 echo "Your C compiler ${also}defines the following cpp variables:"
7719 $sed -e 's/\(.*\)=1/\1/' ccsym.own
7720 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
7721 $test "$silent" || sleep 1
7726 : see if this is a termio system
7730 if $test `./findhdr termios.h`; then
7731 set tcsetattr i_termios
7737 "$define") echo "You have POSIX termios.h... good!" >&4;;
7738 *) if ./Cppsym pyr; then
7739 case "`/bin/universe`" in
7740 ucb) if $test `./findhdr sgtty.h`; then
7742 echo "<sgtty.h> found." >&4
7744 echo "System is pyramid with BSD universe."
7745 echo "<sgtty.h> not found--you could have problems." >&4
7747 *) if $test `./findhdr termio.h`; then
7749 echo "<termio.h> found." >&4
7751 echo "System is pyramid with USG universe."
7752 echo "<termio.h> not found--you could have problems." >&4
7756 if $test `./findhdr termio.h`; then
7757 echo "<termio.h> found." >&4
7759 elif $test `./findhdr sgtty.h`; then
7760 echo "<sgtty.h> found." >&4
7763 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
7766 if $test `./findhdr sgtty.h`; then
7767 echo "<sgtty.h> found." >&4
7769 elif $test `./findhdr termio.h`; then
7770 echo "<termio.h> found." >&4
7773 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
7777 set i_termio; eval $setvar
7778 val=$val2; set i_sgtty; eval $setvar
7779 val=$val3; set i_termios; eval $setvar
7781 : see if stdarg is available
7783 if $test `./findhdr stdarg.h`; then
7784 echo "<stdarg.h> found." >&4
7787 echo "<stdarg.h> NOT found." >&4
7791 : see if varags is available
7793 if $test `./findhdr varargs.h`; then
7794 echo "<varargs.h> found." >&4
7796 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
7799 : set up the varargs testing programs
7800 $cat > varargs.c <<EOP
7805 #include <varargs.h>
7823 p = va_arg(ap, char *);
7828 $cat > varargs <<EOP
7829 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
7838 : now check which varargs header should be included
7843 if `./varargs I_STDARG`; then
7845 elif `./varargs I_VARARGS`; then
7850 if `./varargs I_VARARGS`; then
7857 echo "I could not find the definition for va_dcl... You have problems..." >&4
7858 val="$undef"; set i_stdarg; eval $setvar
7859 val="$undef"; set i_varargs; eval $setvar
7866 val="$define"; set i_stdarg; eval $setvar
7867 val="$undef"; set i_varargs; eval $setvar
7870 val="$undef"; set i_stdarg; eval $setvar
7871 val="$define"; set i_varargs; eval $setvar
7874 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
7878 : see if stddef is available
7879 set stddef.h i_stddef
7882 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
7883 set sys/filio.h i_sysfilio
7886 if $test `./findhdr sys/ioctl.h`; then
7888 echo '<sys/ioctl.h> found.' >&4
7891 if $test $i_sysfilio = "$define"; then
7892 echo '<sys/ioctl.h> NOT found.' >&4
7894 $test $i_sgtty = "$define" && xxx="sgtty.h"
7895 $test $i_termio = "$define" && xxx="termio.h"
7896 $test $i_termios = "$define" && xxx="termios.h"
7897 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
7903 : see if this is a sys/param system
7904 set sys/param.h i_sysparam
7907 : see if sys/stat.h is available
7908 set sys/stat.h i_sysstat
7911 : see if sys/types.h has to be included
7912 set sys/types.h i_systypes
7915 : see if this is a unistd.h system
7916 set unistd.h i_unistd
7919 : see if this is an utime system
7923 : see if this is a vfork system
7934 : Remove build directory name from cppstdin so it can be used from
7935 : either the present location or the final installed location.
7937 : Get out of the UU directory to get correct path name.
7941 echo "Stripping down cppstdin path name"
7947 : end of configuration questions
7949 echo "End of configuration questions."
7952 : back to where it started
7953 if test -d ../UU; then
7957 : configuration may be patched via a 'config.over' file
7958 if $test -f config.over; then
7961 rp='I see a config.over file. Do you wish to load it?'
7964 n*) echo "OK, I'll ignore it.";;
7966 echo "Configuration override changes have been loaded."
7971 : in case they want portability, strip down executable paths
7972 case "$d_portable" in
7975 echo "Stripping down executable paths..." >&4
7976 for file in $loclist $trylist; do
7982 : create config.sh file
7984 echo "Creating config.sh..." >&4
7985 $spitshell <<EOT >config.sh
7988 # This file was produced by running the Configure script. It holds all the
7989 # definitions figured out by Configure. Should you modify one of these values,
7990 # do not forget to propagate your changes by running "Configure -der". You may
7991 # instead choose to run each of the .SH files by yourself, or "Configure -S".
7994 # Configuration time: $cf_time
7995 # Configured by: $cf_by
7996 # Target system: $myuname
8006 Revision='$Revision'
8010 alignbytes='$alignbytes'
8011 aphostname='$aphostname'
8013 archlibexp='$archlibexp'
8014 archname='$archname'
8022 byteorder='$byteorder'
8024 castflags='$castflags'
8027 cccdlflags='$cccdlflags'
8028 ccdlflags='$ccdlflags'
8035 clocktype='$clocktype'
8037 compress='$compress'
8038 contains='$contains'
8042 cpp_stuff='$cpp_stuff'
8043 cppflags='$cppflags'
8045 cppminus='$cppminus'
8047 cppstdin='$cppstdin'
8048 cryptlib='$cryptlib'
8050 d_Gconvert='$d_Gconvert'
8051 d_access='$d_access'
8053 d_archlib='$d_archlib'
8054 d_attribut='$d_attribut'
8058 d_bsdpgrp='$d_bsdpgrp'
8060 d_casti32='$d_casti32'
8061 d_castneg='$d_castneg'
8062 d_charvspr='$d_charvspr'
8064 d_chroot='$d_chroot'
8065 d_chsize='$d_chsize'
8066 d_closedir='$d_closedir'
8070 d_cuserid='$d_cuserid'
8071 d_dbl_dig='$d_dbl_dig'
8072 d_difftime='$d_difftime'
8073 d_dirnamlen='$d_dirnamlen'
8074 d_dlerror='$d_dlerror'
8075 d_dlopen='$d_dlopen'
8076 d_dlsymun='$d_dlsymun'
8077 d_dosuid='$d_dosuid'
8079 d_eunice='$d_eunice'
8080 d_fchmod='$d_fchmod'
8081 d_fchown='$d_fchown'
8083 d_fd_macros='$d_fd_macros'
8084 d_fd_set='$d_fd_set'
8085 d_fds_bits='$d_fds_bits'
8086 d_fgetpos='$d_fgetpos'
8087 d_flexfnam='$d_flexfnam'
8090 d_fpathconf='$d_fpathconf'
8091 d_fsetpos='$d_fsetpos'
8092 d_getgrps='$d_getgrps'
8093 d_gethent='$d_gethent'
8094 d_gethname='$d_gethname'
8095 d_getlogin='$d_getlogin'
8096 d_getpgrp2='$d_getpgrp2'
8097 d_getpgrp='$d_getpgrp'
8098 d_getppid='$d_getppid'
8099 d_getprior='$d_getprior'
8102 d_isascii='$d_isascii'
8103 d_killpg='$d_killpg'
8105 d_locconv='$d_locconv'
8109 d_mbstowcs='$d_mbstowcs'
8110 d_mbtowc='$d_mbtowc'
8111 d_memcmp='$d_memcmp'
8112 d_memcpy='$d_memcpy'
8113 d_memmove='$d_memmove'
8114 d_memset='$d_memset'
8116 d_mkfifo='$d_mkfifo'
8117 d_mktime='$d_mktime'
8119 d_msgctl='$d_msgctl'
8120 d_msgget='$d_msgget'
8121 d_msgrcv='$d_msgrcv'
8122 d_msgsnd='$d_msgsnd'
8123 d_mymalloc='$d_mymalloc'
8125 d_oldsock='$d_oldsock'
8127 d_pathconf='$d_pathconf'
8129 d_phostname='$d_phostname'
8131 d_portable='$d_portable'
8133 d_pwchange='$d_pwchange'
8134 d_pwclass='$d_pwclass'
8135 d_pwcomment='$d_pwcomment'
8136 d_pwexpire='$d_pwexpire'
8137 d_pwquota='$d_pwquota'
8138 d_readdir='$d_readdir'
8139 d_readlink='$d_readlink'
8140 d_rename='$d_rename'
8141 d_rewinddir='$d_rewinddir'
8143 d_safebcpy='$d_safebcpy'
8144 d_safemcpy='$d_safemcpy'
8145 d_seekdir='$d_seekdir'
8146 d_select='$d_select'
8148 d_semctl='$d_semctl'
8149 d_semget='$d_semget'
8151 d_setegid='$d_setegid'
8152 d_seteuid='$d_seteuid'
8153 d_setlinebuf='$d_setlinebuf'
8154 d_setlocale='$d_setlocale'
8155 d_setpgid='$d_setpgid'
8156 d_setpgrp2='$d_setpgrp2'
8157 d_setpgrp='$d_setpgrp'
8158 d_setprior='$d_setprior'
8159 d_setregid='$d_setregid'
8160 d_setresgid='$d_setresgid'
8161 d_setresuid='$d_setresuid'
8162 d_setreuid='$d_setreuid'
8163 d_setrgid='$d_setrgid'
8164 d_setruid='$d_setruid'
8165 d_setsid='$d_setsid'
8168 d_shmatprototype='$d_shmatprototype'
8169 d_shmctl='$d_shmctl'
8171 d_shmget='$d_shmget'
8172 d_shrplib='$d_shrplib'
8173 d_sitelib='$d_sitelib'
8174 d_socket='$d_socket'
8175 d_sockpair='$d_sockpair'
8176 d_statblks='$d_statblks'
8177 d_stdiobase='$d_stdiobase'
8178 d_stdstdio='$d_stdstdio'
8179 d_strchr='$d_strchr'
8180 d_strcoll='$d_strcoll'
8181 d_strctcpy='$d_strctcpy'
8182 d_strerrm='$d_strerrm'
8183 d_strerror='$d_strerror'
8184 d_strxfrm='$d_strxfrm'
8185 d_suidsafe='$d_suidsafe'
8186 d_symlink='$d_symlink'
8187 d_syscall='$d_syscall'
8188 d_sysconf='$d_sysconf'
8189 d_sysernlst='$d_sysernlst'
8190 d_syserrlst='$d_syserrlst'
8191 d_system='$d_system'
8192 d_tcgetpgrp='$d_tcgetpgrp'
8193 d_tcsetpgrp='$d_tcsetpgrp'
8194 d_telldir='$d_telldir'
8197 d_truncate='$d_truncate'
8198 d_tzname='$d_tzname'
8202 d_void_closedir='$d_void_closedir'
8203 d_voidsig='$d_voidsig'
8204 d_voidtty='$d_voidtty'
8205 d_volatile='$d_volatile'
8206 d_vprintf='$d_vprintf'
8208 d_waitpid='$d_waitpid'
8209 d_wcstombs='$d_wcstombs'
8210 d_wctomb='$d_wctomb'
8213 db_hashtype='$db_hashtype'
8214 db_prefixtype='$db_prefixtype'
8215 defvoidused='$defvoidused'
8216 direntrytype='$direntrytype'
8219 dynamic_ext='$dynamic_ext'
8223 eunicefix='$eunicefix'
8225 extensions='$extensions'
8228 fpostype='$fpostype'
8229 freetype='$freetype'
8230 full_csh='$full_csh'
8231 full_sed='$full_sed'
8233 gccversion='$gccversion'
8237 groupcat='$groupcat'
8238 groupstype='$groupstype'
8240 h_sysfile='$h_sysfile'
8244 i_bsdioctl='$i_bsdioctl'
8247 i_dirent='$i_dirent'
8254 i_limits='$i_limits'
8255 i_malloc='$i_malloc'
8257 i_memory='$i_memory'
8259 i_neterrno='$i_neterrno'
8263 i_stdarg='$i_stdarg'
8264 i_stddef='$i_stddef'
8265 i_stdlib='$i_stdlib'
8266 i_string='$i_string'
8267 i_sysdir='$i_sysdir'
8268 i_sysfile='$i_sysfile'
8269 i_sysfilio='$i_sysfilio'
8271 i_sysioctl='$i_sysioctl'
8272 i_sysndir='$i_sysndir'
8273 i_sysparam='$i_sysparam'
8274 i_sysselct='$i_sysselct'
8275 i_syssockio='$i_syssockio'
8276 i_sysstat='$i_sysstat'
8277 i_systime='$i_systime'
8278 i_systimek='$i_systimek'
8279 i_systimes='$i_systimes'
8280 i_systypes='$i_systypes'
8281 i_termio='$i_termio'
8282 i_termios='$i_termios'
8284 i_unistd='$i_unistd'
8286 i_varargs='$i_varargs'
8287 i_varhdr='$i_varhdr'
8291 installarchlib='$installarchlib'
8292 installbin='$installbin'
8293 installman1dir='$installman1dir'
8294 installman3dir='$installman3dir'
8295 installprivlib='$installprivlib'
8296 installscript='$installscript'
8297 installsitelib='$installsitelib'
8299 known_extensions='$known_extensions'
8303 lddlflags='$lddlflags'
8309 libswanted='$libswanted'
8318 lseektype='$lseektype'
8322 mallocobj='$mallocobj'
8323 mallocsrc='$mallocsrc'
8324 malloctype='$malloctype'
8326 man1direxp='$man1direxp'
8329 man3direxp='$man3direxp'
8333 mips_type='$mips_type'
8336 modetype='$modetype'
8339 myarchname='$myarchname'
8340 mydomain='$mydomain'
8341 myhostname='$myhostname'
8346 optimize='$optimize'
8347 orderlib='$orderlib'
8352 patchlevel='$patchlevel'
8355 phostname='$phostname'
8360 prefixexp='$prefixexp'
8362 privlibexp='$privlibexp'
8363 prototype='$prototype'
8364 randbits='$randbits'
8369 scriptdir='$scriptdir'
8370 scriptdirexp='$scriptdirexp'
8372 selecttype='$selecttype'
8373 sendmail='$sendmail'
8376 sharpbang='$sharpbang'
8377 shmattype='$shmattype'
8380 sig_name='$sig_name'
8381 signal_t='$signal_t'
8383 sitelibexp='$sitelibexp'
8384 sizetype='$sizetype'
8389 sockethdr='$sockethdr'
8390 socketlib='$socketlib'
8392 spackage='$spackage'
8393 spitshell='$spitshell'
8395 ssizetype='$ssizetype'
8397 static_ext='$static_ext'
8399 stdio_base='$stdio_base'
8400 stdio_bufsiz='$stdio_bufsiz'
8401 stdio_cnt='$stdio_cnt'
8402 stdio_ptr='$stdio_ptr'
8410 timeincl='$timeincl'
8411 timetype='$timetype'
8419 usemymalloc='$usemymalloc'
8421 useposix='$useposix'
8422 usevfork='$usevfork'
8426 voidflags='$voidflags'
8431 : add special variables
8432 $test -f patchlevel.h && \
8433 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
8434 echo "CONFIG=true" >>config.sh
8436 : propagate old symbols
8437 if $test -f UU/config.sh; then
8438 <UU/config.sh sort | uniq >UU/oldconfig.sh
8439 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
8440 sort | uniq -u >UU/oldsyms
8441 set X `cat UU/oldsyms`
8447 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
8449 echo "# Variables propagated from previous config.sh file." >>config.sh
8450 for sym in `cat UU/oldsyms`; do
8451 echo " Propagating $hint variable "'$'"$sym..."
8452 eval 'tmp="$'"${sym}"'"'
8454 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
8460 : Finish up by extracting the .SH files
8474 If you'd like to make any changes to the config.sh file before I begin
8475 to configure things, do it as a shell escape now (e.g. !vi config.sh).
8478 rp="Press return or use a shell escape to edit config.sh:"
8483 *) : in case they cannot read
8489 : if this fails, just run all the .SH files by hand
8496 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
8503 Now you need to generate make dependencies by running "make depend".
8504 You might prefer to run it in background: "make depend > makedepend.out &"
8505 It can take a while, so you might not want to run it right now.
8510 rp="Run make depend now?"
8514 make depend && echo "Now you must run a make."
8517 echo "You must run 'make depend' then 'make'."
8520 elif test -f [Mm]akefile; then
8522 echo "Now you must run a make."
8527 $rm -f kit*isdone ark*isdone