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.6 1994/10/29 15:54:19 ram Exp $
23 # Generated on Fri Mar 10 09:48:55 EST 1995 [metaconfig 3.0 PL51]
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:'/usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin'
62 paths=$paths:'/sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb'
63 paths=$paths:'/bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin'
64 paths=$paths:'/etc /usr/lib /usr/ucblib /lib /usr/ccs/lib'
65 paths=$paths:'/sbin /usr/sbin /usr/libexec'
71 *) test -d $p && PATH=$PATH:$p ;;
80 echo "Say 'sh $me', not 'sh <$me'"
84 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
85 if test -f /hp-ux -a -f /bin/ksh; then
86 if (PATH=.; alias -x) >/dev/null 2>&1; then
87 : already under /bin/ksh
90 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
96 : Warn them if they use ksh on other systems
97 (PATH=.; alias -x) >/dev/null 2>&1 && \
99 (I see you are using the Korn shell. Some ksh's blow up on $me,
100 especially on exotic machines. If yours does, try the Bourne shell instead.)
104 : Configure runs within the UU subdirectory
105 test -d UU || mkdir UU
533 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
536 : We must find out about Eunice early
538 if test -f /etc/unixtovms; then
539 eunicefix=/etc/unixtovms
541 if test -f /etc/unixtovms.exe; then
542 eunicefix=/etc/unixtovms.exe
545 : list of known cpp symbols, sorted alphabetically
546 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
547 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
548 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
549 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
550 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
551 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
552 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
553 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
554 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
555 al="$al VMS Xenix286"
556 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
557 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
558 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
559 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
560 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
561 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
562 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
563 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
564 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
565 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
566 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
567 al="$al __SVR4_2__ __UMAXV__"
568 al="$al ____386BSD____ __alpha __alpha__ __amiga"
569 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
570 al="$al __host_mips__"
571 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
572 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
573 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
574 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
575 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
576 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
577 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
578 al="$al __mc88100 __mc88100__ __mips __mips__"
579 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
580 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
581 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
582 al="$al _host_mips _mips _unix"
583 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
584 al="$al apollo ardent att386 att3b"
585 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
586 al="$al cadmus clipper concurrent convex cray ctix"
587 al="$al dmert encore gcos gcx gimpel gould"
588 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
589 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
590 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
591 al="$al i186 i286 i386 i486 i8086"
592 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
593 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
594 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
595 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
596 al="$al mc88000 mc88100 merlin mert mips mvs n16"
597 al="$al ncl_el ncl_mr"
598 al="$al news1500 news1700 news1800 news1900 news3700"
599 al="$al news700 news800 news900 ns16000 ns32000"
600 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
601 al="$al parisc pc532 pdp11 plexus posix pyr"
602 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
603 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
604 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
605 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
606 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
607 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
613 : change the next line if compiling for Xenix/286 on Xenix/386
614 xlibpth='/usr/lib/386 /lib/386'
616 : general looking path for locating libraries
617 glibpth="/lib/pa1.1 /usr/lib/large /lib /usr/lib $xlibpth"
618 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
619 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib /usr/shlib"
621 : Private path used by Configure to find libraries. Its value
622 : is prepended to libpth. This variable takes care of special
623 : machines, like the mips. Usually, it should be empty.
626 : default library list
628 : full support for void wanted by default
631 : set useposix=false in your hint file to disable the POSIX extension.
633 : no include file wanted by default
636 : List of libraries we want.
637 libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
638 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
639 libswanted="$libswanted ucb bsd BSD PW x"
640 : We probably want to search /usr/shlib before most other libraries.
641 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
642 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
643 glibpth="/usr/shlib $glibpth"
644 : Do not use vfork unless overridden by a hint file.
646 : We might as well always be portable. It makes no difference for
647 : perl5, and makes people happy.
650 : script used to extract .SH files with variable substitutions
653 echo "Doing variable substitutions on .SH files..."
654 if test -f MANIFEST; then
655 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
656 : Pick up possible extension manifests.
657 for dir in ext/* ; do
658 if test -f $dir/MANIFEST; then
659 xxx=`awk '{print $1}' < $dir/MANIFEST |
660 sed -n "/\.SH$/ s@^@$dir/@p"`
661 shlist="$shlist $xxx"
666 echo "(Looking for .SH files under the current directory.)"
667 set x `find . -name "*.SH" -print`
671 0) set x *.SH; shift;;
673 if test ! -f $1; then
679 dir=`expr X$file : 'X\(.*\)/'`
680 file=`expr X$file : 'X.*/\(.*\)'`
681 (cd $dir && . ./$file)
688 if test -f config_h.SH; then
689 if test ! -f config.h; then
690 : oops, they left it out of MANIFEST, probably, so do it anyway.
696 : produce awk script to parse command line options
697 cat >options.awk <<'EOF'
699 optstr = "dD:eEf:hOrsSU:V"; # getopt-style specification
701 len = length(optstr);
702 for (i = 1; i <= len; i++) {
703 c = substr(optstr, i, 1);
704 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
715 if (substr(str, 1, 1) != "-") {
716 printf("'%s'\n", str);
720 for (i = 2; i <= len; i++) {
721 c = substr(str, i, 1);
723 printf("-%s\n", substr(str, i));
729 printf("'%s'\n", substr(str, i + 1));
742 : process the command line options
743 set X `for arg in "$@"; do echo $arg; done | awk -f options.awk`
748 : set up default values
760 while test $# -gt 0; do
762 -d) shift; fastread=yes;;
763 -e) shift; alldone=cont;;
767 if test -r "$1"; then
770 echo "$me: cannot read config file $1." >&2
775 -h) shift; error=true;;
776 -r) shift; reuseval=true;;
777 -s) shift; silent=true;;
778 -E) shift; alldone=exit;;
779 -O) shift; override=true;;
780 -S) shift; extractsh=true;;
785 echo "$me: use '-U symbol=', not '-D symbol='." >&2
786 echo "$me: ignoring -D $1" >&2
789 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
790 *) echo "$1='define'" >> optdef.sh;;
797 *=) echo "$1" >> optdef.sh;;
799 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
800 echo "$me: ignoring -U $1" >&2
802 *) echo "$1='undef'" >> optdef.sh;;
806 -V) echo "$me generated by metaconfig 3.0 PL51." >&2
809 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
817 Usage: $me [-dehrEOSV] [-f config.sh] [-D symbol] [-D symbol=value]
818 [-U symbol] [-U symbol=]
819 -d : use defaults for all answers.
820 -e : go on without questioning past the production of config.sh.
821 -f : specify an alternate default configuration file.
822 -h : print this help message and exit (with an error status).
823 -r : reuse C symbols value if possible (skips costly nm extraction).
824 -s : silent mode, only echoes questions and essential information.
825 -D : define symbol to have some value:
826 -D symbol symbol gets the value 'define'
827 -D symbol=value symbol gets the value 'value'
828 -E : stop at the end of questions, after having produced config.sh.
829 -O : let -D and -U override definitions from loaded configuration file.
830 -S : perform variable substitutions on all .SH files (can mix with -f)
831 -U : undefine symbol:
832 -U symbol symbol gets the value 'undef'
833 -U symbol= symbol gets completely empty
834 -V : print version number and exit (with a zero status).
842 true) exec 1>/dev/null;;
845 : run the defines and the undefines, if any, but leave the file out there...
852 '') config_sh='config.sh'; config='./config.sh';;
853 /*) config="$config_sh";;
854 *) config="./$config_sh";;
857 echo "Fetching answers from $config_sh..."
860 test "$override" && . ./optdef.sh
871 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
872 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
873 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
874 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
875 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
878 : Eunice requires " " instead of "", can you believe it
881 echo "Beginning of configuration questions for $package."
883 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
885 : Some greps do not return status, grrr.
886 echo "grimblepritz" >grimble
887 if grep blurfldyick grimble >/dev/null 2>&1 ; then
889 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
895 : the following should work in any shell
899 echo "AGH! Grep doesn't return a status. Attempting remedial action."
900 cat >contains <<'EOSS'
901 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
906 : first determine how to suppress newline on echo command
908 echo "Checking echo to see how to suppress newlines..."
909 (echo "hi there\c" ; echo " ") >.echotmp
910 if $contains c .echotmp >/dev/null 2>&1 ; then
921 echo $n "The star should be here-->$c"
925 : Now test for existence of everything in MANIFEST
927 if test -f ../MANIFEST; then
928 echo "First let's make sure your kit is complete. Checking..." >&4
929 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
931 for filelist in x??; do
932 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
934 if test -s missing; then
938 THIS PACKAGE SEEMS TO BE INCOMPLETE.
940 You have the option of continuing the configuration process, despite the
941 distinct possibility that your kit is damaged, by typing 'y'es. If you
942 do, don't blame me if something goes wrong. I advise you to type 'n'o
943 and contact the author (lwall@netlabs.com).
946 echo $n "Continue? [n] $c" >&4
950 echo "Continuing..." >&4
954 echo "ABORTING..." >&4
959 echo "Looks good..." >&4
962 echo "There is no MANIFEST file. I hope your kit is complete !"
966 : compute the number of columns on the terminal for proper question formatting
971 : set up the echo used in my read
972 myecho="case \"\$xxxm\" in
973 '') echo $n \"\$rp $c\" >&4;;
975 '') echo $n \"[\$xxxm] $c\";;
977 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
979 echo $n \"[\$xxxm] $c\" >&4
981 echo $n \"\$rp [\$xxxm] $c\" >&4
987 : now set up to do reads with possible shell escape and default assignment
993 yes) case "\$dflt" in
996 case "\$silent-\$rp" in
1001 *) case "\$silent" in
1002 true) case "\$rp" in
1007 while expr "X\$ans" : "X!" >/dev/null; do
1011 aok=''; eval "ans=\"\$answ\"" && aok=y
1016 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1021 echo "(OK, I'll run with -d after this question.)"
1024 echo "*** Sorry, \$1 not supported yet."
1036 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1046 echo "*** Substitution done -- please confirm."
1048 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1053 echo "*** Error -- try again."
1060 case "\$ans\$xxxm\$nostick" in
1072 : create .config dir to save info across Configure sessions
1073 test -d ../.config || mkdir ../.config
1074 cat >../.config/README <<EOF
1075 This directory created by Configure to save information that should
1076 persist across sessions.
1078 You may safely delete it if you wish.
1081 : general instructions
1084 user=`( (logname) 2>/dev/null || whoami) 2>&1`
1085 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1088 rp='Would you like to see the instructions?'
1099 This installation shell script will examine your system and ask you questions
1100 to determine how the perl5 package should be installed. If you get
1101 stuck on a question, you may use a ! shell escape to start a subshell or
1102 execute a command. Many of the questions will have default answers in square
1103 brackets; typing carriage return will give you the default.
1105 On some of the questions which ask for file or directory names you are allowed
1106 to use the ~name construct to specify the login directory belonging to "name",
1107 even if you don't have a shell which knows about that. Questions where this is
1108 allowed will be marked "(~name ok)".
1112 dflt='Type carriage return to continue'
1116 The prompter used in this script allows you to use shell variables and
1117 backticks in your answers. You may use $1, $2, etc... to refer to the words
1118 in the default answer, as if the default line was a set of arguments given to a
1119 script shell. This means you may also use $* to repeat the whole default line,
1120 so you do not have to re-type everything to add something to the default.
1122 Everytime there is a substitution, you will have to confirm. If there is an
1123 error (e.g. an unmatched backtick), the default answer will remain unchanged
1124 and you will be prompted again.
1126 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1127 the questions and use the computed defaults (or the previous answers if there
1128 was already a config.sh file). Type 'Configure -h' for a list of options.
1129 You may also start interactively and then answer '& -d' at any prompt to turn
1130 on the non-interactive behaviour for the remaining of the execution.
1136 Much effort has been expended to ensure that this shell script will run on any
1137 Unix system. If despite that it blows up on yours, your best bet is to edit
1138 Configure and run it again. If you can't run Configure for some reason,
1139 you'll have to generate a config.sh file by hand. Whatever problems you
1140 have, let me (lwall@netlabs.com) know how I blew it.
1142 This installation script affects things in two ways:
1144 1) it may do direct variable substitutions on some of the files included
1146 2) it builds a config.h file for inclusion in C programs. You may edit
1147 any of these files as the need arises after running this script.
1149 If you make a mistake on a question, there is no easy way to back up to it
1150 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1151 files. Configure will offer to let you do this before it runs the SH files.
1154 dflt='Type carriage return to continue'
1156 case "$firsttime" in
1157 true) echo $user >>../.config/instruct;;
1161 : see if sh knows # comments
1163 echo "Checking your sh to see if it knows about # comments..." >&4
1164 if `sh -c '#' >/dev/null 2>&1`; then
1165 echo "Your sh handles # comments correctly."
1169 echo "Okay, let's see if #! works on this system..."
1171 test -f $xcat || xcat=/usr/bin/cat
1176 if test -s today; then
1180 echo "#! $xcat" > try
1184 if test -s today; then
1188 echo "It's just a comment."
1193 echo "Your sh doesn't grok # comments--I will strip them later on."
1196 echo "exec grep -v '^[ ]*#'" >spitshell
1198 $eunicefix spitshell
1199 spitshell=`pwd`/spitshell
1201 echo "I presume that if # doesn't work, #! won't work either!"
1206 : figure out how to guarantee sh startup
1208 echo "Checking out how to guarantee sh startup..." >&4
1210 *bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
1211 *) startsh=$sharpbang'/bin/sh';;
1213 echo "Let's see if '$startsh' works..."
1223 echo "Yup, it does."
1225 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
1229 : find out where common programs are
1231 echo "Locating common programs..." >&4
1244 if test -d \$dir/\$thing; then
1250 for thisthing in \$dir/\$thing; do
1251 : just loop through to pick last item
1253 if test -f \$thisthing; then
1256 elif test -f \$dir/\$thing.exe; then
1257 : on Eunice apparently
1301 pth=`echo $PATH | sed -e 's/:/ /g'`
1302 pth="$pth /lib /usr/lib"
1303 for file in $loclist; do
1304 xxx=`./loc $file $file $pth`
1309 echo $file is in $xxx.
1312 echo "I don't know where $file is. I hope it's in everyone's PATH."
1317 echo "Don't worry if any of the following aren't found..."
1319 for file in $trylist; do
1320 xxx=`./loc $file $file $pth`
1325 echo $file is in $xxx.
1328 echo "I don't see $file out there, $say."
1335 echo "Substituting grep for egrep."
1341 echo "Hopefully test is built into your sh."
1344 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1345 echo "Using the test built into your sh."
1353 echo "Hopefully echo is built into your sh."
1358 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1359 $echo $n "hi there$c" >foo1
1360 echo $n "hi there$c" >foo2
1361 if cmp foo1 foo2 >/dev/null 2>&1; then
1362 echo "They are compatible. In fact, they may be identical."
1369 They are not compatible! You are probably running ksh on a non-USG system.
1370 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1371 have echo built in and we may have to run some Bourne shell scripts. That
1372 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1375 $echo $n "The star should be here-->$c"
1382 : determine whether symbolic links are supported
1385 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1386 echo "Symbolic links are supported." >&4
1389 echo "Symbolic links are NOT supported." >&4
1394 : see whether [:lower:] and [:upper:] are supported character classes
1398 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1400 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1405 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1408 : set up the translation script tr, must be called with ./tr of course
1412 '[A-Z][a-z]') exec $tr '$up' '$low';;
1413 '[a-z][A-Z]') exec $tr '$low' '$up';;
1420 : Try to determine whether config.sh was made on this system
1421 case "$config_sh" in
1423 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1424 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1425 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1426 newmyuname="$myuname"
1428 if test "$fastread" = yes; then
1430 elif test -f ../config.sh; then
1431 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1432 eval "`grep myuname= ../config.sh`"
1434 if test "X$myuname" = "X$newmyuname"; then
1439 : Get old answers from old config file if Configure was run on the
1440 : same system, otherwise use the hints.
1443 if test -f config.sh; then
1445 rp="I see a config.sh file. Shall I use it to set the defaults?"
1448 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1449 *) echo "Fetching default answers from your old config.sh file..." >&4
1460 if test ! -f config.sh; then
1463 First time through, eh? I have some defaults handy for the following systems:
1466 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1468 : Half the following guesses are probably wrong... If you have better
1469 : tests or hints, please send them to lwall@netlabs.com
1470 : The metaconfig authors would also appreciate a copy...
1471 $test -f /irix && osname=irix
1472 $test -f /xenix && osname=sco_xenix
1473 $test -f /dynix && osname=dynix
1474 $test -f /dnix && osname=dnix
1475 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1476 $test -f /bin/mips && /bin/mips && osname=mips
1477 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1478 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1479 $test -d /usr/apollo/bin && osname=apollo
1480 $test -f /etc/saf/_sactab && osname=svr4
1481 $test -d /usr/include/minix && osname=minix
1482 $test -d /MachTen && osname=machten && \
1483 osvers=`/usr/etc/version | $awk '{print $2}' | \
1484 $sed -e 's/[A-Za-z]$//'`
1485 if $test -f $uname; then
1493 umips) osname=umips ;;
1496 [23]100) osname=mips ;;
1497 next*) osname=next ;;
1498 news*) osname=news ;;
1500 if $test -f /etc/kconfig; then
1502 if test "$lns" = "ln -s"; then
1504 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1506 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1515 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1517 'not found') osvers="$4"."$3" ;;
1518 '<3240'|'<>3240') osvers=3.2.0 ;;
1519 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1520 '=3250'|'>3250') osvers=3.2.5 ;;
1527 domainos) osname=apollo
1533 freebsd) osname=freebsd
1535 genix) osname=genix ;;
1540 *.10.*) osvers=10 ;;
1557 netbsd*) osname=netbsd
1560 bsd386) osname=bsd386
1563 next*) osname=next ;;
1564 solaris) osname=solaris
1566 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1573 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1577 titanos) osname=titanos
1586 ultrix) osname=ultrix
1592 osvers=`echo "$3" | sed 's/^[vt]//'`
1594 hp*) osname=hp_osf1 ;;
1595 mips) osname=mips_osf1 ;;
1601 $2) case "$osname" in
1605 : svr4.x or possibly later
1615 if test -f /stand/boot ; then
1616 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1617 if test -n "$INITPROG" -a -f "$INITPROG"; then
1618 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1619 if test -n "$isesix"; then
1627 *) if test -f /etc/systemid; then
1629 set `echo $3 | $sed 's/\./ /g'` $4
1630 if $test -f sco_$1_$2_$3.sh; then
1632 elif $test -f sco_$1_$2.sh; then
1634 elif $test -f sco_$1.sh; then
1639 '') : Still unknown. Probably a generic Sys V.
1648 *) case "$osname" in
1649 '') : Still unknown. Probably a generic BSD.
1657 if test -f /vmunix -a -f news_os.sh; then
1658 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1659 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1662 $rm -f ../UU/kernel.what
1666 : Now look for a hint file osname_osvers, unless one has been
1667 : specified already.
1670 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1671 : Also try without trailing minor version numbers.
1672 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1673 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1674 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1675 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1678 *) case "$osvers" in
1681 *) if $test -f $file.sh ; then
1683 elif $test -f $xfile.sh ; then
1685 elif $test -f $xxfile.sh ; then
1687 elif $test -f $xxxfile.sh ; then
1689 elif $test -f $xxxxfile.sh ; then
1691 elif $test -f "${osname}.sh" ; then
1702 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1708 You may give one or more space-separated answers, or "none" if appropriate.
1709 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1712 rp="Which of these apply, if any?"
1715 for file in $tans; do
1716 if $test -f $file.sh; then
1718 $cat $file.sh >> ../UU/config.sh
1719 elif $test X$tans = X -o X$tans = Xnone ; then
1722 : Give one chance to correct a possible typo.
1723 echo "$file.sh does not exist"
1725 rp="hint to use instead?"
1727 for file in $ans; do
1728 if $test -f "$file.sh"; then
1730 $cat $file.sh >> ../UU/config.sh
1731 elif $test X$ans = X -o X$ans = Xnone ; then
1734 echo "$file.sh does not exist -- ignored."
1741 : Remember our hint file for later.
1742 if $test -f "$file.sh" ; then
1754 echo "Fetching default answers from $config_sh..." >&4
1758 cp $config_sh config.sh 2>/dev/null
1767 test "$override" && . ./optdef.sh
1768 myuname="$newmyuname"
1770 : Restore computed paths
1771 for file in $loclist $trylist; do
1772 eval $file="\$_$file"
1777 Configure uses the operating system name and version to set some defaults.
1778 The default value is probably right if the name rings a bell. Otherwise,
1779 since spelling matters for me, either accept the default or answer "none"
1786 ''|' '|none) dflt=none ;;
1787 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1790 *) dflt="$osname" ;;
1792 rp="Operating system name?"
1796 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1798 : who configured the system
1799 cf_time=`$date 2>&1`
1800 (logname > .temp) >/dev/null 2>&1
1801 $test -s .temp || (whoami > .temp) >/dev/null 2>&1
1802 $test -s .temp || echo unknown > .temp
1806 : determine where manual pages are on this system
1810 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
1811 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
1812 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
1813 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
1814 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
1815 sysman=`./loc . /usr/man/man1 $syspath`
1818 if $test -d "$sysman"; then
1819 echo "System manual is in $sysman." >&4
1821 echo "Could not find manual pages in source form." >&4
1824 : see what memory models we can support
1827 $cat >pdp11.c <<'EOP'
1836 cc -o pdp11 pdp11.c >/dev/null 2>&1
1837 if ./pdp11 2>/dev/null; then
1838 dflt='unsplit split'
1840 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
1843 *) if $test -d /lib/small || $test -d /usr/lib/small; then
1848 if $test -d /lib/medium || $test -d /usr/lib/medium; then
1851 if $test -d /lib/large || $test -d /usr/lib/large; then
1854 if $test -d /lib/huge || $test -d /usr/lib/huge; then
1863 Some systems have different model sizes. On most systems they are called
1864 small, medium, large, and huge. On the PDP11 they are called unsplit and
1865 split. If your system doesn't support different memory models, say "none".
1866 If you wish to force everything to one memory model, say "none" here and
1867 put the appropriate flags later when it asks you for other cc and ld flags.
1868 Venix systems may wish to put "none" and let the compiler figure things out.
1869 (In the following question multiple model names should be space separated.)
1872 rp="Which memory models are supported?"
1887 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
1888 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
1895 rp="What flag indicates separate I and D space?"
1903 *large*|*small*|*medium*|*huge*)
1910 rp="What flag indicates large model?"
1920 *huge*) case "$huge" in
1924 rp="What flag indicates huge model?"
1934 *medium*) case "$medium" in
1938 rp="What flag indicates medium model?"
1945 *) medium="$large";;
1948 *small*) case "$small" in
1952 rp="What flag indicates small model?"
1963 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
1967 : make some quick guesses about what we are up against
1969 $echo $n "Hmm... $c"
1978 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
1979 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
1981 echo "Looks kind of like an OSF/1 system, but we'll see..."
1983 elif test `echo abc | tr a-z A-Z` = Abc ; then
1984 xxx=`./loc addbib blurfl $pth`
1985 if $test -f $xxx; then
1986 echo "Looks kind of like a USG system with BSD features, but we'll see..."
1990 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
1991 echo "Looks kind of like an extended USG system, but we'll see..."
1993 echo "Looks kind of like a USG system, but we'll see..."
1997 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
1998 echo "Looks kind of like a BSD system, but we'll see..."
2002 echo "Looks kind of like a Version 7 system, but we'll see..."
2005 case "$eunicefix" in
2008 There is, however, a strange, musty smell in the air that reminds me of
2009 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2013 : it so happens the Eunice I know will not run shell scripts in Unix format
2017 echo "Congratulations. You aren't running Eunice."
2021 if test -f /xenix; then
2022 echo "Actually, this looks more like a XENIX system..."
2027 echo "It's not Xenix..."
2032 if test -f /venix; then
2033 echo "Actually, this looks more like a VENIX system..."
2040 echo "Nor is it Venix..."
2043 chmod +x bsd usg v7 osf1 eunice xenix venix
2044 $eunicefix bsd usg v7 osf1 eunice xenix venix
2047 : see if we need a special compiler
2055 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2056 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2069 On some systems the default C compiler will not resolve multiple global
2070 references that happen to have the same name. On some such systems the "Mcc"
2071 command may be used to force these to be resolved. On other systems a "cc -M"
2072 command is required. (Note that the -M flag on other systems indicates a
2073 memory model to use!) If you have the Gnu C compiler, you might wish to use
2077 rp="What command will force resolution on this system?"
2085 rp="Use which C compiler?"
2090 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2091 $cat >gccvers.c <<EOM
2096 printf("%s\n", __VERSION__);
2098 printf("%s\n", "1");
2104 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
2105 gccversion=`./gccvers`
2106 case "$gccversion" in
2107 '') echo "You are not using GNU cc." ;;
2108 *) echo "You are using GNU cc $gccversion." ;;
2111 echo "I can't compile the test program -- Assuming it isn't GNU cc."
2114 case "$gccversion" in
2115 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
2118 : decide how portable to be
2119 case "$d_portable" in
2125 I can set things up so that your shell scripts and binaries are more portable,
2126 at what may be a noticable cost in performance. In particular, if you
2127 ask to be portable, the following happens:
2129 1) Shell scripts will rely on the PATH variable rather than using
2130 the paths derived above.
2131 2) ~username interpretations will be done at run time rather than
2135 rp="Do you expect to run these scripts and binaries on multiple machines?"
2138 y*) d_portable="$define"
2140 *) d_portable="$undef" ;;
2143 : set up shell script to do ~ expansion
2149 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2152 if $test -f /bin/csh; then
2153 /bin/csh -f -c "glob \$1"
2158 name=\`$expr x\$1 : '..\([^/]*\)'\`
2159 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2160 if $test ! -d "\$dir"; then
2162 echo "\$me: can't locate home directory for: \$name" >&2
2167 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2183 : now set up to get a file name
2184 cat <<'EOSC' >getfile
2197 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2198 fn=`echo $fn | sed 's/(.*)//'`
2204 loc_file=`expr $fn : '.*:\(.*\)'`
2205 fn=`expr $fn : '\(.*\):.*'`
2213 */*) fullpath=true;;
2222 *e*) exp_file=true;;
2225 *p*) nopath_ok=true;;
2230 *d*) type='Directory';;
2231 *l*) type='Locate';;
2236 Locate) what='File';;
2241 case "$d_portable" in
2249 while test "$type"; do
2254 true) rp="$rp (~name ok)";;
2257 if test -f UU/getfile.ok && \
2258 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2277 value=`UU/filexp $ans`
2280 if test "$ans" != "$value"; then
2281 echo "(That expands to $value on this system.)"
2295 /*) value="$ansexp" ;;
2300 echo "I shall only accept a full path name, as in /bin/ls." >&4
2301 echo "Use a ! shell escape if you wish to check pathnames." >&4
2304 echo "Please give a full path name, starting with slash." >&4
2307 echo "Note that using ~name is ok provided it expands well." >&4
2320 if test -f "$ansexp"; then
2322 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2324 echo "($value is not a plain file, but that's ok.)"
2329 if test -d "$ansexp"; then
2334 if test -d "$ansexp"; then
2335 echo "(Looking for $loc_file in directory $value.)"
2336 value="$value/$loc_file"
2337 ansexp="$ansexp/$loc_file"
2339 if test -f "$ansexp"; then
2342 case "$nopath_ok" in
2343 true) case "$value" in
2345 *) echo "Assuming $value will be in people's path."
2361 if test "$fastread" = yes; then
2366 rp="$what $value doesn't exist. Use that name anyway?"
2387 : What should the include directory be ?
2389 $echo $n "Hmm... $c"
2393 if $test -f /bin/mips && /bin/mips; then
2394 echo "Looks like a MIPS system..."
2395 $cat >usr.c <<'EOCP'
2396 #ifdef SYSTYPE_BSD43
2400 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
2401 dflt='/bsd43/usr/include'
2405 mips_type='System V'
2407 $rm -f usr.c usr.out
2408 echo "and you're compiling with the $mips_type compiler and libraries."
2411 echo "Doesn't look like a MIPS system."
2422 rp='Where are the include files you want to use?'
2426 : see how we invoke the C preprocessor
2428 echo "Now, how can we feed standard input to your C preprocessor..." >&4
2429 cat <<'EOT' >testcpp.c
2435 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
2437 wrapper=`pwd`/cppstdin
2441 if $test "X$cppstdin" != "X" && \
2442 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
2443 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2445 echo "You used to use $cppstdin $cppminus so we'll use that again."
2447 '') echo "But let's see if we can live without a wrapper..." ;;
2449 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
2450 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2452 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
2455 echo "(However, $cpprun $cpplast does not work, let's see...)"
2463 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
2470 elif echo 'Maybe "'"$cc"' -E" will work...'; \
2471 $cc -E <testcpp.c >testcpp.out 2>&1; \
2472 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2473 echo "Yup, it does."
2476 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
2477 $cc -E - <testcpp.c >testcpp.out 2>&1; \
2478 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2479 echo "Yup, it does."
2482 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
2483 $cc -P <testcpp.c >testcpp.out 2>&1; \
2484 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2485 echo "Yipee, that works!"
2488 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
2489 $cc -P - <testcpp.c >testcpp.out 2>&1; \
2490 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2491 echo "At long last!"
2494 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
2495 $cpp <testcpp.c >testcpp.out 2>&1; \
2496 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2500 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
2501 $cpp - <testcpp.c >testcpp.out 2>&1; \
2502 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2503 echo "Hooray, it works! I was beginning to wonder."
2506 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
2507 $wrapper <testcpp.c >testcpp.out 2>&1; \
2508 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2514 rp="No dice. I can't find a C preprocessor. Name one:"
2518 $x_cpp <testcpp.c >testcpp.out 2>&1
2519 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2520 echo "OK, that will do." >&4
2522 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
2537 echo "Perhaps can we force $cc -E using a wrapper..."
2538 if $wrapper <testcpp.c >testcpp.out 2>&1; \
2539 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2545 echo "Nope, we'll have to live without it..."
2560 *) $rm -f $wrapper;;
2562 $rm -f testcpp.c testcpp.out
2564 : determine optimize, if desired, or use for debug flag also
2568 *) dflt="$optimize";;
2572 Some C compilers have problems with their optimizers, by default, $package
2573 compiles with the -O flag to use the optimizer. Alternately, you might want
2574 to use the symbolic debugger, which uses the -g flag (on traditional Unix
2575 systems). Either flag can be specified here. To use neither flag, specify
2579 rp="What optimizer/debugger flag should be used?"
2583 'none') optimize=" ";;
2589 case "$gccversion" in
2590 1*) dflt='-fpcc-struct-return' ;;
2593 *-g*) dflt="$dflt -DDEBUGGING";;
2595 case "$gccversion" in
2596 2*) if test -d /etc/conf/kconfig.d &&
2597 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
2606 case "$mips_type" in
2609 *) inclwanted="$inclwanted $usrinc/bsd";;
2611 for thisincl in $inclwanted; do
2612 if $test -d $thisincl; then
2613 if $test x$thisincl != x$usrinc; then
2616 *) dflt="$dflt -I$thisincl";;
2622 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
2624 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
2632 *) dflt="$dflt -D$2";;
2637 set signal.h __LANGUAGE_C__; eval $inctest
2639 set signal.h LANGUAGE_C; eval $inctest
2641 set signal.h NO_PROTOTYPE; eval $inctest
2642 set signal.h _NO_PROTO; eval $inctest
2649 *) dflt="$ccflags";;
2653 Your C compiler may want other flags. For this question you should include
2654 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
2655 but you should NOT include libraries or ld flags like -lwhatever. If you
2656 want $package to honor its debug switch, you should include -DDEBUGGING here.
2657 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
2658 -DHIDEMYMALLOC or -DCRIPPLED_CC.
2660 To use no flags, specify the word "none".
2666 rp="Any additional cc flags?"
2673 : the following weeds options from ccflags that are of no interest to cpp
2675 case "$gccversion" in
2676 1*) cppflags="$cppflags -D__GNUC__"
2678 case "$mips_type" in
2680 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
2686 echo "Let me guess what the preprocessor flags are..." >&4
2700 *) ftry="$previous $flag";;
2702 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
2703 >cpp1.out 2>/dev/null && \
2704 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
2705 >cpp2.out 2>/dev/null && \
2706 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
2707 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
2709 cppflags="$cppflags $ftry"
2719 *-*) echo "They appear to be: $cppflags";;
2721 $rm -f cpp.c cpp?.out
2725 : flags used in final linking phase
2727 '') if ./venix; then
2733 *-posix*) dflt="$dflt -posix" ;;
2739 *) dflt="$ldflags";;
2742 rp="Any additional ld flags (NOT including libraries)?"
2748 rmlist="$rmlist pdp11"
2750 : Set private lib path
2753 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
2758 '') dlist="$plibpth $glibpth";;
2759 *) dlist="$libpth";;
2762 : Now check and see which directories actually exist, avoiding duplicates
2766 if $test -d $xxx; then
2769 *) libpth="$libpth $xxx";;
2775 Some systems have incompatible or broken versions of libraries. Among
2776 the directories listed in the question below, please remove any you
2777 know not to be holding relevant libraries, and add any that are needed.
2778 Say "none" for none.
2789 rp="Directories to use for library searches?"
2796 : compute shared library extension
2799 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
2809 On some systems, shared libraries may be available. Answer 'none' if
2810 you want to suppress searching of shared libraries for the remaining
2811 of this configuration.
2814 rp='What is the file extension used for shared libraries?'
2818 : Looking for optional libraries
2820 echo "Checking for optional libraries..." >&4
2825 case "$libswanted" in
2826 '') libswanted='c_s';;
2828 for thislib in $libswanted; do
2830 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
2831 echo "Found -l$thislib (shared)."
2834 *) dflt="$dflt -l$thislib";;
2836 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
2837 echo "Found -l$thislib (shared)."
2840 *) dflt="$dflt -l$thislib";;
2842 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
2843 echo "Found -l$thislib."
2846 *) dflt="$dflt -l$thislib";;
2848 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
2849 echo "Found -l${thislib}_s."
2852 *) dflt="$dflt -l${thislib}_s";;
2854 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
2855 echo "Found -l$thislib."
2858 *) dflt="$dflt -l$thislib";;
2861 echo "No -l$thislib."
2872 ' '|'') dflt='none';;
2877 Some versions of Unix support shared libraries, which make executables smaller
2878 but make load time slightly longer.
2880 On some systems, mostly newer Unix System V's, the shared library is included
2881 by putting the option "-lc_s" as the last thing on the cc command line when
2882 linking. Other systems use shared libraries by default. There may be other
2883 libraries needed to compile $package on your machine as well. If your system
2884 needs the "-lc_s" option, include it here. Include any other special libraries
2885 here as well. Say "none" for none.
2889 rp="Any additional libraries?"
2896 : see if nm is to be used to determine whether a symbol is defined or not
2899 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
2900 if $test $dflt -gt 20; then
2915 I can use 'nm' to extract the symbols from your C libraries. This is a time
2916 consuming task which may generate huge output on the disk (up to 3 megabytes)
2917 but that should make the symbols extraction faster. The alternative is to skip
2918 the 'nm' extraction part and to compile a small test program instead to
2919 determine whether each symbol is present. If you have a fast C compiler and/or
2920 if your 'nm' output cannot be parsed, this may be the best solution.
2923 rp='Shall I use nm to extract C symbols from the libraries?'
2935 : nm options which may be necessary
2937 '') if $test -f /mach_boot; then
2939 elif $test -d /usr/ccs/lib; then
2941 elif $test -f /dgux; then
2950 : get list of predefined functions in a handy place
2955 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
2962 *) for thislib in $libs; do
2965 : Handle C library specially below.
2968 thislib=`echo $thislib | $sed -e 's/^-l//'`
2969 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
2971 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
2973 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
2975 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
2977 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
2979 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
2984 libnames="$libnames $try"
2986 *) libnames="$libnames $thislib" ;;
2994 set /usr/ccs/lib/libc.$so
2995 $test -r $1 || set /usr/lib/libc.$so
2996 $test -r $1 || set /usr/shlib/libc.$so
2997 $test -r $1 || set /usr/lib/libc.$so.[0-9]*
2998 $test -r $1 || set /lib/libc.$so
2999 $test -r $1 || set /lib/libsys_s.a
3006 if $test -r "$1"; then
3007 echo "Your (shared) C library seems to be in $1."
3009 elif $test -r /lib/libc && $test -r /lib/clib; then
3010 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3012 libc='/lib/clib /lib/libc'
3013 if $test -r /lib/syslib; then
3014 echo "(Your math library is in /lib/syslib.)"
3015 libc="$libc /lib/syslib"
3017 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3018 echo "Your C library seems to be in $libc, as you said before."
3019 elif $test -r $incpath/usr/lib/libc.a; then
3020 libc=$incpath/usr/lib/libc.a;
3021 echo "Your C library seems to be in $libc. That's fine."
3022 elif $test -r /lib/libc.a; then
3024 echo "Your C library seems to be in $libc. You're normal."
3026 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
3028 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3029 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3030 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3032 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3034 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3037 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
3039 if $test -r "$tans"; then
3040 echo "Your C library seems to be in $tans, of all places."
3046 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3050 If the guess above is wrong (which it might be if you're using a strange
3051 compiler, or your machine supports multiple models), you can override it here.
3056 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
3058 I can't seem to find your C library. I've looked in the following places:
3061 $sed 's/^/ /' libpath
3064 None of these seems to contain your C library. I need to get its name...
3069 rp='Where is your C library?'
3074 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
3075 set X `cat libnames`
3078 case $# in 1) xxx=file; esac
3079 echo "Extracting names from the following $xxx for later perusal:" >&4
3081 $sed 's/^/ /' libnames >&4
3083 $echo $n "This may take a while...$c" >&4
3085 nm $nm_opt $* 2>/dev/null >libc.tmp
3087 $grep fprintf libc.tmp > libc.ptf
3088 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
3089 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
3090 if com="$sed -n -e 's/__IO//' -e 's/^.* [ADTSI] *_[_.]*//p' -e 's/^.* [ADTSI] //p'";\
3092 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3094 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
3096 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3098 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
3100 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3102 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
3104 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3106 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
3108 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3110 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
3112 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3114 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
3115 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
3117 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3119 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
3121 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3123 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
3125 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3127 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
3129 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3132 nm -p $* 2>/dev/null >libc.tmp
3133 com="$sed -n -e 's/^.* [ADTSI] *_[_.]*//p' -e 's/^.* [ADTSI] //p'";\
3134 eval "<libc.tmp $com >libc.list"
3135 if $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3140 echo "nm didn't seem to work right. Trying ar instead..." >&4
3142 if ar t $libc > libc.tmp; then
3143 for thisname in $libnames; do
3144 ar t $thisname >>libc.tmp
3146 $sed -e 's/\.o$//' < libc.tmp > libc.list
3149 echo "ar didn't seem to work right." >&4
3150 echo "Maybe this is a Cray...trying bld instead..." >&4
3151 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list; then
3152 for thisname in $libnames; do
3154 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
3155 ar t $thisname >>libc.tmp
3159 echo "That didn't work either. Giving up." >&4
3166 if $test -f /lib/syscalls.exp; then
3168 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
3169 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
3173 $rm -f libnames libpath
3175 : is a C symbol defined?
3178 -v) tf=libc.tmp; tc=""; tdc="";;
3179 -a) tf=libc.tmp; tc="[0]"; tdc=[];;
3180 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
3183 case "$reuseval-$4" in
3185 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
3191 if $contains $tlook $tf >/dev/null 2>&1;
3196 echo "main() { extern int $1$tdc; printf(\"%d\", $1$tc); }" > t.c;
3197 if $cc $ccflags -o t t.c $ldflags $libs >/dev/null 2>&1;
3205 $define) tval=true;;
3211 : set up the script used to warn in case of inconsistency
3215 echo "*** WHOA THERE!!! ***" >&4
3216 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3217 rp=" Keep the $hint value?"
3220 y) td=$was; tu=$was;;
3224 : define an is-in-libc? function
3225 inlibc='echo " "; td=$define; tu=$undef;
3226 sym=$1; var=$2; eval "was=\$$2";
3228 case "$reuseval$was" in
3238 echo "$sym() found." >&4;
3239 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
3241 echo "$sym() NOT found." >&4;
3242 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
3246 $define) echo "$sym() found." >&4;;
3247 *) echo "$sym() NOT found." >&4;;
3251 : see if gconvert exists
3252 set gconvert d_gconvert
3255 case "$d_gconvert" in
3257 echo "We'll use it to convert floats into a string then." >&4
3258 d_Gconvert="gconvert((x),(n),(t),(b))"
3261 : Maybe we can emulate it with gcvt.
3267 : Test whether gcvt drops a trailing decimal point
3272 if (buf[0] != '1' || buf[1] != '\0')
3275 if (buf[0] != '0' || buf[1] != '\0')
3278 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
3283 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
3285 echo "Good, your gcvt() drops a trailing decimal point."
3286 echo "We'll use it to convert floats into a string." >&4
3287 d_Gconvert="gcvt((x),(n),(b))"
3289 echo "But your gcvt() keeps a trailing decimal point".
3293 echo "Hmm. I can't compile the gcvt test program."
3299 case "$d_Gconvert" in
3301 echo "I'll use sprintf instead to convert floats into a string." >&4
3302 d_Gconvert='sprintf((b),"%.*g",(n),(x))'
3307 : Initialize h_fcntl
3310 : Initialize h_sysfile
3313 : determine filename position in cpp output
3315 echo "Computing filename position in cpp output for #include directives..." >&4
3316 echo '#include <stdio.h>' > foo.c
3319 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
3320 $grep '^[ ]*#.*stdio\.h' | \
3321 while read cline; do
3324 while $test \$# -gt 0; do
3325 if $test -r \`echo \$1 | $tr -d '"'\`; then
3330 pos=\`expr \$pos + 1\`
3342 *) pos="${fieldn}th";;
3344 echo "Your cpp writes the filename in the $pos field of the line."
3346 : locate header file
3351 if test -f $usrinc/\$wanted; then
3352 echo "$usrinc/\$wanted"
3355 awkprg='{ print \$$fieldn }'
3356 echo "#include <\$wanted>" > foo\$\$.c
3357 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
3358 $grep "^[ ]*#.*\$wanted" | \
3359 while read cline; do
3360 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
3362 */\$wanted) echo "\$name"; exit 0;;
3373 : access call always available on UNIX
3377 : locate the flags for 'access()'
3381 $cat >access.c <<'EOCP'
3382 #include <sys/types.h>
3387 #include <sys/file.h>
3396 : check sys/file.h first, no particular reason here
3397 if $test `./findhdr sys/file.h` && \
3398 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
3400 echo "<sys/file.h> defines the *_OK access constants." >&4
3401 elif $test `./findhdr fcntl.h` && \
3402 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
3404 echo "<fcntl.h> defines the *_OK access constants." >&4
3405 elif $test `./findhdr unistd.h` && \
3406 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
3407 echo "<unistd.h> defines the *_OK access constants." >&4
3409 echo "I can't find the four *_OK access constants--I'll use mine." >&4
3415 : see if alarm exists
3419 : determine the architecture name
3421 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
3422 tarch=`arch`"-$osname"
3423 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
3424 if uname -m > tmparch 2>&1 ; then
3425 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
3433 case "$myarchname" in
3436 echo "(Your architecture name used to be $myarchname.)"
3442 *) dflt="$archname";;
3444 rp='What is your architecture name'
3451 if test -d /afs; then
3452 echo "AFS may be running... I'll be extra cautious then..." >&4
3455 echo "AFS does not seem to be running..." >&4
3459 : determine root of directory hierarchy where package will be installed.
3462 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3470 By default, $package will be installed in $dflt/bin, manual
3471 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
3472 all installation directories. Typically set to /usr/local, but you
3473 may choose /usr if you wish to install $package among your system
3474 binaries. If you wish to have binaries under /bin but manual pages
3475 under /usr/local/man, that's ok: you will be prompted separately
3476 for each of the installation directories, the prefix being only used
3477 to set the defaults.
3481 rp='Installation prefix to use?'
3489 *) oldprefix="$prefix";;
3496 : set the prefixit variable, to compute a suitable default value
3497 prefixit='case "$3" in
3499 case "$oldprefix" in
3500 "") eval "$1=\"\$$2\"";;
3507 ""|" ") eval "$1=\"\$$2\"";;
3513 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3515 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3516 /*-$oldprefix/*|\~*-$oldprefix/*)
3517 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3518 *) eval "$1=\"\$$2\"";;
3522 : determine where private executables go
3523 set dflt privlib lib/$package
3527 There are some auxiliary files for $package that need to be put into a
3528 private library directory that is accessible by everyone.
3532 rp='Pathname where the private library files will reside?'
3534 if $test "X$privlibexp" != "X$ansexp"; then
3538 privlibexp="$ansexp"
3542 Since you are running AFS, I need to distinguish the directory in which
3543 private files reside from the directory in which they are installed (and from
3544 which they are presumably copied to the former directory by occult means).
3547 case "$installprivlib" in
3548 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3549 *) dflt="$installprivlib";;
3552 rp='Where will private files be installed?'
3554 installprivlib="$ans"
3556 installprivlib="$privlibexp"
3559 : set the prefixup variable, to restore leading tilda escape
3560 prefixup='case "$prefixexp" in
3562 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3565 : determine where public architecture dependent libraries go
3572 dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
3576 *) dflt="$privlib/$archname";;
3579 *) dflt="$archlib";;
3583 $spackage contains architecture-dependent library files. If you are
3584 sharing libraries in a heterogeneous environment, you might store
3585 these files in a separate location. Otherwise, you can just include
3586 them with the rest of the public library files.
3590 rp='Where do you want to put the public architecture-dependent libraries?'
3593 archlibexp="$ansexp"
3598 Since you are running AFS, I need to distinguish the directory in which
3599 private files reside from the directory in which they are installed (and from
3600 which they are presumably copied to the former directory by occult means).
3603 case "$installarchlib" in
3604 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3605 *) dflt="$installarchlib";;
3608 rp='Where will architecture-dependent library files be installed?'
3610 installarchlib="$ans"
3612 installarchlib="$archlibexp"
3614 if $test X"$archlib" = X"$privlib"; then
3620 : function used to set $1 to $val
3621 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3623 $define$undef) . ./whoa; eval "$var=\$td";;
3624 $undef$define) . ./whoa; eval "$var=\$tu";;
3625 *) eval "$var=$val";;
3628 : Look for GNU-cc style attribute checking
3630 echo "Checking whether your compiler can handle __attribute__ ..." >&4
3631 $cat >attrib.c <<'EOCP'
3633 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
3635 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
3636 if $contains 'warning' attrib.out >/dev/null 2>&1; then
3637 echo "Your C compiler doesn't fully support __attribute__."
3640 echo "Your C compiler supports __attribute__."
3644 echo "Your C compiler doesn't seem to understand __attribute__ at all."
3651 : see if bcmp exists
3655 : see if bcopy exists
3659 : see if setpgrp exists
3660 set setpgrp d_setpgrp
3663 : see which flavor of setpgrp is in use
3664 case "$d_setpgrp" in
3670 if (getuid() == 0) {
3671 printf("(I see you are running Configure as super-user...)\n");
3674 if (-1 == setpgrp(1, 1))
3679 if $cc $ccflags -o set set.c $ldflags $libs >/dev/null 2>&1; then
3682 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
3684 *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
3689 xxx="USG one, i.e. you use setpgrp()."
3692 xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
3695 echo "Assuming your setpgrp is a $xxx" >&4
3704 : Check if we really have byacc
3706 ''|'byacc') val="$undef" ;;
3712 : see if bzero exists
3716 : check for length of integer
3720 echo "Checking to see how big your integers are..." >&4
3721 $cat >try.c <<'EOCP'
3725 printf("%d\n", sizeof(int));
3728 if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
3732 echo "(I can't seem to compile the test program. Guessing...)"
3739 rp="What is the size of an integer (in bytes)?"
3744 : see if signal is declared as pointer to function returning int or void
3746 xxx=`./findhdr signal.h`
3747 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
3748 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
3749 echo "You have int (*signal())() instead of void." >&4
3751 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
3752 echo "You have void (*signal())() instead of int." >&4
3754 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
3755 echo "You have int (*signal())() instead of void." >&4
3758 case "$d_voidsig" in
3760 echo "I can't determine whether signal handler returns void or int..." >&4
3762 rp="What type does your signal handler return?"
3769 echo "As you already told me, signal handler returns void." >&4;;
3771 echo "As you already told me, signal handler returns int." >&4;;
3776 case "$d_voidsig" in
3777 "$define") signal_t="void";;
3782 : check for ability to cast large floats to 32-bit ints.
3784 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
3785 if $test "$intsize" -eq 4; then
3791 #include <sys/types.h>
3793 $signal_t blech() { exit(3); }
3799 signal(SIGFPE, blech);
3801 f = (double) 0x7fffffff;
3805 if (i32 != ($xxx) f)
3810 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
3814 echo "(I can't seem to compile the test program--assuming it can't)"
3822 echo "Nope, it can't."
3829 : check for ability to cast negative floats to unsigned
3831 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
3833 #include <sys/types.h>
3835 $signal_t blech() { exit(3); }
3839 unsigned long along;
3841 unsigned short ashort;
3844 signal(SIGFPE, blech);
3845 along = (unsigned long)f;
3846 aint = (unsigned int)f;
3847 ashort = (unsigned short)f;
3848 if (along != (unsigned long)-123)
3850 if (aint != (unsigned int)-123)
3852 if (ashort != (unsigned short)-123)
3854 f = (double)0x40000000;
3857 along = (unsigned long)f;
3858 if (along != 0x80000000)
3862 along = (unsigned long)f;
3863 if (along != 0x7fffffff)
3867 along = (unsigned long)f;
3868 if (along != 0x80000001)
3874 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
3878 echo "(I can't seem to compile the test program--assuming it can't)"
3881 case "$castflags" in
3886 echo "Nope, it can't."
3893 : see if vprintf exists
3895 if set vprintf val -f d_vprintf; eval $csym; $val; then
3896 echo 'vprintf() found.' >&4
3898 $cat >vprintf.c <<'EOF'
3899 #include <varargs.h>
3901 main() { xxx("foo"); }
3910 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
3913 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
3914 echo "Your vsprintf() returns (int)." >&4
3917 echo "Your vsprintf() returns (char*)." >&4
3921 echo 'vprintf() NOT found.' >&4
3931 : see if chown exists
3935 : see if chroot exists
3939 : see if chsize exists
3943 : check for const keyword
3945 echo 'Checking to see if your C compiler knows about "const"...' >&4
3946 $cat >const.c <<'EOCP'
3947 typedef struct spug { int drokk; } spug;
3954 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
3956 echo "Yup, it does."
3959 echo "Nope, it doesn't."
3964 : see if crypt exists
3966 if set crypt val -f d_crypt; eval $csym; $val; then
3967 echo 'crypt() found.' >&4
3971 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
3972 if $test -z "$cryptlib"; then
3973 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
3977 if $test -z "$cryptlib"; then
3978 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
3982 if $test -z "$cryptlib"; then
3983 cryptlib=`./loc libcrypt.a "" $libpth`
3987 if $test -z "$cryptlib"; then
3988 echo 'crypt() NOT found.' >&4
3997 : get csh whereabouts
3999 'csh') val="$undef" ;;
4006 : see if cuserid exists
4007 set cuserid d_cuserid
4010 : define an alternate in-header-list? function
4011 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4012 cont=true; xxf="echo \"<\$1> found.\" >&4";
4013 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4014 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4016 case $# in 4) instead=instead;; *) instead="at last";; esac;
4017 while $test "$cont"; do
4019 var=$2; eval "was=\$$2";
4020 if $test "$xxx" && $test -r "$xxx";
4022 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4025 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4026 set $yyy; shift; shift; yyy=$@;
4027 case $# in 0) cont="";;
4028 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4029 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4030 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4031 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4035 do set $yyy; var=$2; eval "was=\$$2";
4036 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4037 set $yyy; shift; shift; yyy=$@;
4040 : see if this is a limits.h system
4041 set limits.h i_limits
4044 : see if this is a float.h system
4048 : See if number of significant digits in a double precision number is known
4050 $cat >dbl_dig.c <<EOM
4060 printf("Contains DBL_DIG");
4063 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
4064 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
4065 echo "DBL_DIG found." >&4
4068 echo "DBL_DIG NOT found." >&4
4075 : see if difftime exists
4076 set difftime d_difftime
4079 : see if this is a dirent system
4081 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
4083 echo "<dirent.h> found." >&4
4086 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
4087 echo "<sys/dir.h> found." >&4
4090 xinc=`./findhdr sys/ndir.h`
4092 echo "<dirent.h> NOT found." >&4
4097 : Look for type of directory structure.
4099 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4101 case "$direntrytype" in
4104 $define) guess1='struct dirent' ;;
4105 *) guess1='struct direct' ;;
4108 *) guess1="$direntrytype"
4113 'struct dirent') guess2='struct direct' ;;
4114 *) guess2='struct dirent' ;;
4117 if $contains "$guess1" try.c >/dev/null 2>&1; then
4118 direntrytype="$guess1"
4119 echo "Your directory entries are $direntrytype." >&4
4120 elif $contains "$guess2" try.c >/dev/null 2>&1; then
4121 direntrytype="$guess2"
4122 echo "Your directory entries seem to be $direntrytype." >&4
4124 echo "I don't recognize your system's directory entries." >&4
4125 rp="What type is used for directory entries on this system?"
4133 : see if the directory entry stores field length
4135 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4136 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
4137 echo "Good, your directory entry keeps length information in d_namlen." >&4
4140 echo "Your directory entry does not know about the d_namlen field." >&4
4147 : see if dlerror exists
4148 set dlerror d_dlerror
4151 : see if dld is available
4155 : see if dlopen exists
4159 : determine which dynamic loading, if any, to compile in
4161 dldir="ext/DynaLoader"
4174 $define) dflt='y' ;;
4177 $define) dflt='y' ;;
4179 : Does a dl_xxx.xs file exist for this operating system
4180 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4183 rp="Do you wish to use dynamic loading?"
4190 if $test -f ../$dldir/dl_${osname}.xs ; then
4191 dflt="$dldir/dl_${osname}.xs"
4192 elif $test "$d_dlopen" = "$define" ; then
4193 dflt="$dldir/dl_dlopen.xs"
4194 elif $test "$i_dld" = "$define" ; then
4195 dflt="$dldir/dl_dld.xs"
4200 *) dflt="$dldir/$dlsrc"
4203 echo "The following dynamic loading files are available:"
4204 : Can not go over to $dldir because getfile has path hard-coded in.
4205 cd ..; ls -C $dldir/dl*.xs; cd UU
4206 rp="Source file to use for dynamic loading"
4211 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4214 Some systems may require passing special flags to $cc -c to
4215 compile modules that will be used to create a shared library.
4216 To use no flags, say "none".
4219 case "$cccdlflags" in
4220 ''|' ') case "$cc" in
4221 *gcc*) dflt='-fpic' ;;
4222 *) case "$osname" in
4224 next) dflt='none' ;;
4225 solaris) dflt='-K pic' ;;
4226 sunos) dflt='-pic' ;;
4227 svr4*|esix*) dflt='-Kpic' ;;
4231 *) dflt="$cccdlflags" ;;
4233 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4236 none) cccdlflags='' ;;
4237 *) cccdlflags="$ans" ;;
4242 Some systems may require passing special flags to ld to create a
4243 library that can be dynamically loaded. If your ld flags include
4244 -L/other/path options to locate libraries outside your loader's normal
4245 search path, you may need to specify those -L options here as well. To
4246 use no flags, say "none".
4249 case "$lddlflags" in
4250 ''|' ') case "$osname" in
4252 next) dflt='none' ;;
4253 solaris) dflt='-G' ;;
4254 sunos) dflt='-assert nodefinitions' ;;
4255 svr4*|esix*) dflt="-G $ldflags" ;;
4259 *) dflt="$lddlflags" ;;
4261 rp="Any special flags to pass to ld to create a dynamically loaded library?"
4264 none) lddlflags='' ;;
4265 *) lddlflags="$ans" ;;
4270 Some systems may require passing special flags to $cc to indicate that
4271 the resulting executable will use dynamic linking. To use no flags,
4275 case "$ccdlflags" in
4276 ''|' ') case "$osname" in
4277 hpux) dflt='none' ;;
4278 next) dflt='none' ;;
4279 sunos) dflt='none' ;;
4282 *) dflt="$ccdlflags" ;;
4284 rp="Any special flags to pass to $cc to use dynamic loading?"
4287 none) ccdlflags='' ;;
4288 *) ccdlflags="$ans" ;;
4305 System V Release 4 systems can support dynamic loading
4306 only if libperl is created as a shared library.
4313 set d_shrplib; eval $setvar
4314 case "$d_shrplib" in
4318 Be sure to add the perl source directory to the LD_LIBRARY_PATH
4319 environment variable before running make:
4320 LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH
4322 setenv LD_LIBRARY_PATH `cd ..;pwd`
4327 case "$d_shrplib" in
4330 "") dflt="$archlib/CORE";;
4331 *) dflt="$shrpdir";;
4333 rp="What directory should we install the shared libperl into?"
4342 : see if dlfcn is available
4350 On a few systems, the dynamically loaded modules that perl generates and uses
4351 will need a different extension then shared libs. The default will probably
4359 rp='What is the extension of dynamically loaded modules'
4368 : Check if dlsym need a leading underscore
4374 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
4375 $cat >dyna.c <<'EOM'
4384 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
4386 #include <sys/types.h>
4400 int mode = RTLD_LAZY ;
4402 handle = dlopen("./dyna.$dlext", mode) ;
4403 if (handle == NULL) {
4407 symbol = dlsym(handle, "fred") ;
4408 if (symbol == NULL) {
4409 /* try putting a leading underscore */
4410 symbol = dlsym(handle, "_fred") ;
4411 if (symbol == NULL) {
4422 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
4423 ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 &&
4424 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
4427 1) echo "Test program failed using dlopen." >&4
4428 echo "Perhaps you should not use dynamic loading." >&4;;
4429 2) echo "Test program failed using dlsym." >&4
4430 echo "Perhaps you should not use dynamic loading." >&4;;
4431 3) echo "dlsym needs a leading underscore" >&4
4433 4) echo "dlsym doesn't need a leading underscore." >&4;;
4436 echo "I can't compile and run the test program." >&4
4441 $rm -f fred fred.? dyna.$dlext dyna.?
4446 : see if setuid scripts can be secure
4449 Some kernels have a bug that prevents setuid #! scripts from being
4450 secure. Some sites have disabled setuid #! scripts because of this.
4452 First let's decide if your kernel supports secure setuid #! scripts.
4453 (If setuid #! scripts would be secure but have been disabled anyway,
4454 don't say that they are secure if asked.)
4459 if $test -d /dev/fd; then
4460 echo "#!$ls" >reflect
4461 chmod +x,u+s reflect
4462 ./reflect >flect 2>&1
4463 if $contains "/dev/fd" flect >/dev/null; then
4464 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4468 If you are not sure if they are secure, I can check but I'll need a
4469 username and password different from the one you are using right now.
4470 If you don't have such a username or don't want me to test, simply
4474 rp='Other username to test security of setuid scripts with?'
4479 case "$d_suidsafe" in
4480 '') echo "I'll assume setuid scripts are *not* secure." >&4
4483 echo "Well, the $hint value is *not* secure." >&4
4485 *) echo "Well, the $hint value *is* secure." >&4
4490 $rm -f reflect flect
4491 echo "#!$ls" >reflect
4492 chmod +x,u+s reflect
4495 echo '"su" will (probably) prompt you for '"$ans's password."
4496 su $ans -c './reflect >flect'
4497 if $contains "/dev/fd" flect >/dev/null; then
4498 echo "Okay, it looks like setuid scripts are secure." >&4
4501 echo "I don't think setuid scripts are secure." >&4
4506 rp='Does your kernel have *secure* setuid scripts?'
4509 [yY]*) val="$define";;
4514 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4520 $rm -f reflect flect
4522 : now see if they want to do setuid emulation
4525 case "$d_suidsafe" in
4528 echo "No need to emulate SUID scripts since they are secure here." >& 4
4532 Some systems have disabled setuid scripts, especially systems where
4533 setuid scripts cannot be secure. On systems where setuid scripts have
4534 been disabled, the setuid/setgid bits on scripts are currently
4535 useless. It is possible for $package to detect those bits and emulate
4536 setuid/setgid in a secure fashion. This emulation will only work if
4537 setuid scripts have been disabled in your kernel.
4541 "$define") dflt=y ;;
4544 rp="Do you want to do setuid/setgid emulation?"
4547 [yY]*) val="$define";;
4555 : see if drem exists
4559 : see if dup2 exists
4563 : see if fchmod exists
4567 : see if fchown exists
4571 : see if this is an fcntl system
4575 : see if fgetpos exists
4576 set fgetpos d_fgetpos
4579 : see if we can have long filenames
4581 rmlist="$rmlist /tmp/cf$$"
4582 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
4583 first=123456789abcdef
4584 second=/tmp/cf$$/$first
4585 $rm -f $first $second
4586 if (echo hi >$first) 2>/dev/null; then
4587 if $test -f 123456789abcde; then
4588 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
4591 if (echo hi >$second) 2>/dev/null; then
4592 if $test -f /tmp/cf$$/123456789abcde; then
4594 That's peculiar... You can have filenames longer than 14 characters, but only
4595 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
4596 I shall consider your system cannot support long filenames at all.
4600 echo 'You can have filenames longer than 14 characters.' >&4
4605 How confusing! Some of your filesystems are sane enough to allow filenames
4606 longer than 14 characters but some others like /tmp can't even think about them.
4607 So, for now on, I shall assume your kernel does not allow them at all.
4614 You can't have filenames longer than 14 chars. You can't even think about them!
4620 $rm -rf /tmp/cf$$ 123456789abcde*
4622 : see if flock exists
4626 : see if fmod exists
4630 : see if fork exists
4634 : see if pathconf exists
4635 set pathconf d_pathconf
4638 : see if fpathconf exists
4639 set fpathconf d_fpathconf
4642 : see if fsetpos exists
4643 set fsetpos d_fsetpos
4646 : see if gethostent exists
4647 set gethostent d_gethent
4650 : see if getlogin exists
4651 set getlogin d_getlogin
4654 : see if getpgrp exists
4655 set getpgrp d_getpgrp
4658 : see if getpgrp2 exists
4659 set getpgrp2 d_getpgrp2
4662 : see if getppid exists
4663 set getppid d_getppid
4666 : see if getpriority exists
4667 set getpriority d_getprior
4670 : see if this is a netinet/in.h or sys/in.h system
4671 set netinet/in.h i_niin sys/in.h i_sysin
4674 : see if htonl --and friends-- exists
4679 : Maybe they are macros.
4684 #include <sys/types.h>
4685 #$i_niin I_NETINET_IN
4688 #include <netinet/in.h>
4694 printf("Defined as a macro.");
4697 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
4698 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
4700 echo "But it seems to be defined as a macro." >&4
4708 : see which of string.h or strings.h is needed
4710 strings=`./findhdr string.h`
4711 if $test "$strings" && $test -r "$strings"; then
4712 echo "Using <string.h> instead of <strings.h>." >&4
4716 strings=`./findhdr strings.h`
4717 if $test "$strings" && $test -r "$strings"; then
4718 echo "Using <strings.h> instead of <string.h>." >&4
4720 echo "No string header found -- You'll surely have problems." >&4
4726 "$undef") strings=`./findhdr strings.h`;;
4727 *) strings=`./findhdr string.h`;;
4732 if set index val -f; eval $csym; $val; then
4733 if set strchr val -f d_strchr; eval $csym; $val; then
4734 if $contains strchr "$strings" >/dev/null 2>&1 ; then
4737 echo "strchr() found." >&4
4741 echo "index() found." >&4
4746 echo "index() found." >&4
4749 if set strchr val -f d_strchr; eval $csym; $val; then
4752 echo "strchr() found." >&4
4754 echo "No index() or strchr() found!" >&4
4759 set d_strchr; eval $setvar
4761 set d_index; eval $setvar
4765 $cat >isascii.c <<'EOCP'
4776 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
4777 echo "isascii() found." >&4
4780 echo "isascii() NOT found." >&4
4787 : see if killpg exists
4791 : see if link exists
4795 : see if stdio is really std
4797 xxx=`./findhdr stdio.h`
4798 if $contains 'char.*_ptr;' "$xxx" >/dev/null 2>&1 ; then
4799 if $contains '_cnt;' "$xxx" >/dev/null 2>&1 ; then
4800 echo "Your stdio is pretty std." >&4
4803 echo "Your stdio isn't very std." >&4
4807 echo "Your stdio isn't very std." >&4
4813 : see if stdio is like that in linux
4814 case "$d_stdstdio" in
4817 xxx=`./findhdr stdio.h`
4818 $cppstdin $cppflags $cppminus < "$xxx" > stdio.E
4819 if $contains 'char.*_IO_read_base' stdio.E >/dev/null 2>&1 && \
4820 $contains '_IO_read_ptr' stdio.E >/dev/null 2>&1 && \
4821 $contains '_IO_read_end' stdio.E >/dev/null 2>&1 ; then
4822 echo "Your stdio looks like linux." >&4
4825 echo "You don't have linux stdio, either." >&4
4836 : see if localeconv exists
4837 set localeconv d_locconv
4840 : see if lockf exists
4844 : see if lstat exists
4848 : see if mblen exists
4852 : see if mbstowcs exists
4853 set mbstowcs d_mbstowcs
4856 : see if mbtowc exists
4860 : see if memcmp exists
4864 : see if memcpy exists
4868 : see if memmove exists
4869 set memmove d_memmove
4872 : see if memset exists
4876 : see if mkdir exists
4880 : see if mkfifo exists
4884 : see if mktime exists
4888 : see if msgctl exists
4892 : see if msgget exists
4896 : see if msgsnd exists
4900 : see if msgrcv exists
4904 : see how much of the 'msg*(2)' library is present.
4907 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
4908 *"$undef"*) h_msg=false;;
4910 : we could also check for sys/ipc.h ...
4911 if $h_msg && $test `./findhdr sys/msg.h`; then
4912 echo "You have the full msg*(2) library." >&4
4915 echo "You don't have the full msg*(2) library." >&4
4921 : see if this is a malloc.h system
4922 set malloc.h i_malloc
4925 : see if stdlib is available
4926 set stdlib.h i_stdlib
4929 : determine which malloc to compile in
4931 case "$usemymalloc" in
4932 ''|y*|true) dflt='y' ;;
4933 n*|false) dflt='n' ;;
4934 *) dflt="$usemymalloc" ;;
4936 rp="Do you wish to attempt to use the malloc that comes with $package?"
4942 mallocsrc='malloc.c'
4943 mallocobj='malloc.o'
4944 d_mymalloc="$define"
4947 : Remove malloc from list of libraries to use
4948 echo "Removing unneeded -lmalloc from library list" >&4
4949 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4952 echo "libs = $libs" >&4
4964 : compute the return types of malloc and free
4966 $cat >malloc.c <<END
4970 #include <sys/types.h>
4984 case "$malloctype" in
4986 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4993 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4997 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5004 echo "Your system uses $freetype free(), it would seem." >&4
5006 : see if nice exists
5010 : Locate the flags for 'open()'
5012 $cat >open3.c <<'EOCP'
5013 #include <sys/types.h>
5018 #include <sys/file.h>
5029 : check sys/file.h first to get FREAD on Sun
5030 if $test `./findhdr sys/file.h` && \
5031 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
5033 echo "<sys/file.h> defines the O_* constants..." >&4
5035 echo "and you have the 3 argument form of open()." >&4
5038 echo "but not the 3 argument form of open(). Oh, well." >&4
5041 elif $test `./findhdr fcntl.h` && \
5042 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
5044 echo "<fcntl.h> defines the O_* constants..." >&4
5046 echo "and you have the 3 argument form of open()." >&4
5049 echo "but not the 3 argument form of open(). Oh, well." >&4
5054 echo "I can't find the O_* constant definitions! You got problems." >&4
5060 : see if pause exists
5064 : see if pipe exists
5068 : see if this is a pwd system
5070 xxx=`./findhdr pwd.h`
5071 if $test "$xxx"; then
5073 echo "<pwd.h> found." >&4
5074 $cppstdin $cppflags $cppminus < $xxx >$$.h
5075 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
5080 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
5085 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
5086 d_pwchange="$define"
5090 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
5095 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
5096 d_pwexpire="$define"
5100 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
5101 d_pwcomment="$define"
5103 d_pwcomment="$undef"
5113 d_pwcomment="$undef"
5114 echo "<pwd.h> NOT found." >&4
5117 : see if readdir and friends exist
5118 set readdir d_readdir
5120 set seekdir d_seekdir
5122 set telldir d_telldir
5124 set rewinddir d_rewinddir
5127 : see if readlink exists
5128 set readlink d_readlink
5131 : see if rename exists
5135 : see if rmdir exists
5139 : can bcopy handle overlapping blocks?
5144 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
5145 $cat >foo.c <<'EOCP'
5148 char buf[128], abc[128];
5154 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
5156 for (align = 7; align >= 0; align--) {
5157 for (len = 36; len; len--) {
5160 for (off = 1; off <= len; off++) {
5161 bcopy(b, b+off, len);
5162 bcopy(b+off, b, len);
5163 if (bcmp(b, abc, len))
5171 if $cc foo.c -o safebcpy $ccflags $ldflags $libs >/dev/null 2>&1 ; then
5172 if ./safebcpy 2>/dev/null; then
5176 echo "It can't, sorry."
5179 echo "(I can't compile the test program, so we'll assume not...)"
5183 $rm -f foo.* safebcpy core
5187 : can memcpy handle overlapping blocks?
5192 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
5193 $cat >foo.c <<'EOCP'
5196 char buf[128], abc[128];
5202 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
5204 for (align = 7; align >= 0; align--) {
5205 for (len = 36; len; len--) {
5207 memcpy(abc, b, len);
5208 for (off = 1; off <= len; off++) {
5209 memcpy(b, b+off, len);
5210 memcpy(b+off, b, len);
5211 if (memcmp(b, abc, len))
5219 if $cc foo.c -o safemcpy $ccflags $ldflags $libs >/dev/null 2>&1 ; then
5220 if ./safemcpy 2>/dev/null; then
5224 echo "It can't, sorry."
5227 echo "(I can't compile the test program, so we'll assume not...)"
5231 $rm -f foo.* safemcpy core
5235 : see if select exists
5239 : see if semctl exists
5243 : see if semget exists
5247 : see if semop exists
5251 : see how much of the 'sem*(2)' library is present.
5254 case "$d_semctl$d_semget$d_semop" in
5255 *"$undef"*) h_sem=false;;
5257 : we could also check for sys/ipc.h ...
5258 if $h_sem && $test `./findhdr sys/sem.h`; then
5259 echo "You have the full sem*(2) library." >&4
5262 echo "You don't have the full sem*(2) library." >&4
5268 : see if setegid exists
5269 set setegid d_setegid
5272 : see if seteuid exists
5273 set seteuid d_seteuid
5276 : see if setlinebuf exists
5277 set setlinebuf d_setlinebuf
5280 : see if setlocale exists
5281 set setlocale d_setlocale
5284 : see if setpgid exists
5285 set setpgid d_setpgid
5288 : see if setpgrp2 exists
5289 set setpgrp2 d_setpgrp2
5292 : see if setpriority exists
5293 set setpriority d_setprior
5296 : see if setregid exists
5297 set setregid d_setregid
5299 set setresgid d_setresgid
5302 : see if setreuid exists
5303 set setreuid d_setreuid
5305 set setresuid d_setresuid
5308 : see if setrgid exists
5309 set setrgid d_setrgid
5312 : see if setruid exists
5313 set setruid d_setruid
5316 : see if setsid exists
5320 : see if shmctl exists
5324 : see if shmget exists
5328 : see if shmat exists
5331 : see what shmat returns
5334 $cat >shmat.c <<'END'
5335 #include <sys/shm.h>
5338 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
5343 echo "and it returns ($shmattype)." >&4
5344 : see if a prototype for shmat is available
5345 $cppstdin $cppflags $cppminus < $usrinc/sys/shm.h > shmat.c 2>/dev/null
5346 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
5357 set d_shmatprototype
5360 : see if shmdt exists
5364 : see how much of the 'shm*(2)' library is present.
5367 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
5368 *"$undef"*) h_shm=false;;
5370 : we could also check for sys/ipc.h ...
5371 if $h_shm && $test `./findhdr sys/shm.h`; then
5372 echo "You have the full shm*(2) library." >&4
5375 echo "You don't have the full shm*(2) library." >&4
5383 : see whether socket exists
5385 $echo $n "Hmm... $c" >&4
5386 if set socket val -f d_socket; eval $csym; $val; then
5387 echo "Looks like you have Berkeley networking support." >&4
5389 if set setsockopt val -f; eval $csym; $val; then
5392 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
5396 if $contains socklib libc.list >/dev/null 2>&1; then
5397 echo "Looks like you have Berkeley networking support." >&4
5399 : we will have to assume that it supports the 4.2 BSD interface
5402 echo "You don't have Berkeley networking in libc.a..." >&4
5403 if test -f /usr/lib/libnet.a; then
5404 ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \
5405 ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list
5406 if $contains socket libc.list >/dev/null 2>&1; then
5407 echo "...but the Wollongong group seems to have hacked it in." >&4
5409 sockethdr="-I/usr/netinclude"
5411 if $contains setsockopt libc.list >/dev/null 2>&1; then
5414 echo "...using the old 4.1c interface, rather than 4.2" >&4
5418 echo "or even in libnet.a, which is peculiar." >&4
5423 echo "or anywhere else I see." >&4
5430 : see if socketpair exists
5431 set socketpair d_sockpair
5434 : see if stat knows about block sizes
5436 xxx=`./findhdr sys/stat.h`
5437 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
5438 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
5439 echo "Your stat() knows about block sizes." >&4
5442 echo "Your stat() doesn't know about block sizes." >&4
5446 echo "Your stat() doesn't know about block sizes." >&4
5452 : see if strcoll exists
5453 set strcoll d_strcoll
5456 : check for structure copying
5458 echo "Checking to see if your C compiler can copy structs..." >&4
5459 $cat >try.c <<'EOCP'
5469 if $cc -c try.c >/dev/null 2>&1 ; then
5474 echo "Nope, it can't."
5480 : see if strerror and/or sys_errlist[] exist
5482 if set strerror val -f d_strerror; eval $csym; $val; then
5483 echo 'strerror() found.' >&4
5484 d_strerror="$define"
5485 d_strerrm='strerror(e)'
5486 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5487 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
5488 d_syserrlst="$define"
5490 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
5491 d_syserrlst="$undef"
5493 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
5494 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
5495 echo 'strerror() found in string header.' >&4
5496 d_strerror="$define"
5497 d_strerrm='strerror(e)'
5498 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5499 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
5500 d_syserrlst="$define"
5502 echo "(You don't appear to have any sys_errlist[], how can this be?)"
5503 d_syserrlst="$undef"
5505 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
5506 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
5508 d_syserrlst="$define"
5509 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
5511 echo 'strerror() and sys_errlist[] NOT found.' >&4
5513 d_syserrlst="$undef"
5514 d_strerrm='"unknown"'
5517 : see if strxfrm exists
5518 set strxfrm d_strxfrm
5521 : see if symlink exists
5522 set symlink d_symlink
5525 : see if syscall exists
5526 set syscall d_syscall
5529 : see if sysconf exists
5530 set sysconf d_sysconf
5533 : see if system exists
5537 : see if tcgetpgrp exists
5538 set tcgetpgrp d_tcgetpgrp
5541 : see if tcsetpgrp exists
5542 set tcsetpgrp d_tcsetpgrp
5545 : define an is-a-typedef? function
5546 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
5548 "") inclist="sys/types.h";;
5550 eval "varval=\$$var";
5554 for inc in $inclist; do
5555 echo "#include <$inc>" >>temp.c;
5557 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
5558 if $contains $type temp.E >/dev/null 2>&1; then
5564 *) eval "$var=$varval";;
5567 : see if this is a sys/times.h system
5568 set sys/times.h i_systimes
5571 : see if times exists
5573 if set times val -f d_times; eval $csym; $val; then
5574 echo 'times() found.' >&4
5577 case "$i_systimes" in
5578 "$define") inc='sys/times.h';;
5580 set clock_t clocktype long stdio.h sys/types.h $inc
5584 rp="What type is returned by times() on this sytem?"
5588 echo 'times() NOT found, hope that will do.' >&4
5593 : see if truncate exists
5594 set truncate d_truncate
5597 : see if tzname[] exists
5599 if set tzname val -a d_tzname; eval $csym; $val; then
5601 echo 'tzname[] found.' >&4
5604 echo 'tzname[] NOT found.' >&4
5609 : see if umask exists
5613 : see if we have to deal with yellow pages, now NIS.
5614 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5615 if $test -f /usr/etc/nibindd; then
5617 echo "I'm fairly confident you're on a NeXT."
5619 rp='Do you get the hosts file via NetInfo?'
5628 y*) hostcat='nidump hosts .';;
5637 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5645 rp='Are you getting the hosts file via yellow pages?'
5648 y*) hostcat='ypcat hosts';;
5649 *) hostcat='cat /etc/hosts';;
5655 : now get the host name
5657 echo "Figuring out host name..." >&4
5658 case "$myhostname" in
5660 echo 'Maybe "hostname" will work...'
5661 if tans=`sh -c hostname 2>&1` ; then
5669 if $test "$cont"; then
5671 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5672 if tans=`cat /etc/systemid 2>&1` ; then
5674 phostname='cat /etc/systemid'
5675 echo "Whadyaknow. Xenix always was a bit strange..."
5678 elif $test -r /etc/systemid; then
5679 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5682 if $test "$cont"; then
5683 echo 'No, maybe "uuname -l" will work...'
5684 if tans=`sh -c 'uuname -l' 2>&1` ; then
5686 phostname='uuname -l'
5688 echo 'Strange. Maybe "uname -n" will work...'
5689 if tans=`sh -c 'uname -n' 2>&1` ; then
5691 phostname='uname -n'
5693 echo 'Oh well, maybe I can mine it out of whoami.h...'
5694 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5695 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5696 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5698 case "$myhostname" in
5699 '') echo "Does this machine have an identity crisis or something?"
5702 echo "Well, you said $myhostname before..."
5703 phostname='echo $myhostname';;
5709 : you do not want to know about this
5714 if $test "$myhostname" ; then
5716 rp='Your host name appears to be "'$myhostname'".'" Right?"
5724 : bad guess or no guess
5725 while $test "X$myhostname" = X ; do
5727 rp="Please type the (one word) name of your host:"
5732 : translate upper to lower if necessary
5733 case "$myhostname" in
5735 echo "(Normalizing case in your host name)"
5736 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5740 : a little sanity check here
5741 case "$phostname" in
5744 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5745 $myhostname$mydomain|$myhostname) ;;
5747 case "$phostname" in
5749 echo "(That doesn't agree with your whoami.h file, by the way.)"
5752 echo "(That doesn't agree with your $phostname command, by the way.)"
5760 : see how we will look up host name
5763 : dummy stub to allow use of elif
5764 elif set uname val -f d_uname; eval $csym; $val; then
5767 uname() was found, but you're running xenix, and older versions of xenix
5768 have a broken uname(). If you don't really know whether your xenix is old
5769 enough to have a broken system call, use the default answer.
5776 rp='Is your uname() broken?'
5779 n*) d_uname="$define"; call=uname;;
5782 echo 'uname() found.' >&4
5787 case "$d_gethname" in
5788 '') d_gethname="$undef";;
5791 '') d_uname="$undef";;
5793 case "$d_phostname" in
5794 '') d_phostname="$undef";;
5797 : backward compatibility for d_hvfork
5798 if test X$d_hvfork != X; then
5802 : see if there is a vfork
5807 : Ok, but do we want to use it. vfork is reportedly unreliable in
5808 : perl on Solaris 2.x, and probably elsewhere.
5816 rp="Some systems have problems with vfork(). Do you want to use it?"
5821 echo "Ok, we won't use vfork()."
5830 $define) usevfork='true';;
5831 *) usevfork='false';;
5834 : see if this is an sysdir system
5835 set sys/dir.h i_sysdir
5838 : see if this is an sysndir system
5839 set sys/ndir.h i_sysndir
5842 : see if closedir exists
5843 set closedir d_closedir
5846 case "$d_closedir" in
5849 echo "Checking whether closedir() returns a status..." >&4
5850 cat > closedir.c <<EOM
5851 #$i_dirent I_DIRENT /**/
5852 #$i_sysdir I_SYS_DIR /**/
5853 #$i_sysndir I_SYS_NDIR /**/
5855 #if defined(I_DIRENT)
5857 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
5858 #include <sys/dir.h>
5862 #include <sys/ndir.h>
5866 #include <ndir.h> /* may be wrong in the future */
5868 #include <sys/dir.h>
5873 int main() { return closedir(opendir(".")); }
5875 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
5876 if ./closedir > /dev/null 2>&1 ; then
5877 echo "Yes, it does."
5880 echo "No, it doesn't."
5884 echo "(I can't seem to compile the test program--assuming it doesn't)"
5895 : check for volatile keyword
5897 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
5898 $cat >try.c <<'EOCP'
5901 typedef struct _goo_struct goo_struct;
5902 goo_struct * volatile goo = ((goo_struct *)0);
5903 struct _goo_struct {
5908 typedef unsigned short foo_t;
5911 volatile foo_t blech;
5915 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
5917 echo "Yup, it does."
5920 echo "Nope, it doesn't."
5926 : see if there is a wait4
5930 : see if waitpid exists
5931 set waitpid d_waitpid
5934 : see if wcstombs exists
5935 set wcstombs d_wcstombs
5938 : see if wctomb exists
5942 : preserve RCS keywords in files with variable substitution, grrr
5947 Revision='$Revision'
5949 : check for alignment requirements
5951 case "$alignbytes" in
5952 '') echo "Checking alignment constraints..." >&4
5953 $cat >try.c <<'EOCP'
5960 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
5963 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
5967 echo"(I can't seem to compile the test program...)"
5970 *) dflt="$alignbytes"
5973 rp="Doubles must be aligned on a how-many-byte boundary?"
5978 : determine where public executables go
5983 rp='Pathname where the public executables will reside?'
5985 if $test "X$ansexp" != "X$binexp"; then
5993 Since you are running AFS, I need to distinguish the directory in which
5994 executables reside from the directory in which they are installed (and from
5995 which they are presumably copied to the former directory by occult means).
5998 case "$installbin" in
5999 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
6000 *) dflt="$installbin";;
6003 rp='Where will public executables be installed?'
6007 installbin="$binexp"
6010 : check for ordering of bytes in a long
6011 case "$byteorder" in
6015 In the following, larger digits indicate more significance. A big-endian
6016 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
6017 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
6018 machines may have weird orders like 3412. A Cray will report 87654321. If
6019 the test program works the default is probably right.
6020 I'm now running the test program...
6022 $cat >try.c <<'EOCP'
6029 char c[sizeof(long)];
6032 if (sizeof(long) > 4)
6033 u.l = (0x08070605L << 32) | 0x04030201L;
6036 for (i = 0; i < sizeof(long); i++)
6037 printf("%c", u.c[i]+'0');
6041 if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
6044 ????|????????) echo "(The test program ran ok.)";;
6045 *) echo "(The test program didn't run right for some reason.)";;
6050 (I can't seem to compile the test program. Guessing big-endian...)
6059 rp="What is the order of bytes in a long?"
6064 : how do we catenate cpp tokens here?
6066 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
6067 $cat >cpp_stuff.c <<'EOCP'
6068 #define RCAT(a,b)a/**/b
6069 #define ACAT(a,b)a ## b
6073 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
6074 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
6075 echo "Oh! Smells like ANSI's been here."
6076 echo "We can catify or stringify, separately or together!"
6078 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
6079 echo "Ah, yes! The good old days!"
6080 echo "However, in the good old days we don't know how to stringify and"
6081 echo "catify at the same time."
6085 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
6086 to have to edit the values of CAT[2-5] in config.h...
6088 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
6092 : see if this is a db.h system
6098 : Check the return type needed for hash
6099 echo "Checking return type needed for hash for Berkeley DB ..." >&4
6101 #include <sys/types.h>
6112 info.hash = hash_cb ;
6115 if $cc $ccflags -c try.c >try.out 2>&1 ; then
6116 if $contains warning try.out >>/dev/null 2>&1 ; then
6119 db_hashtype='u_int32_t'
6122 echo "I can't seem to compile the test program." >&4
6126 echo "Your version of Berkeley DB uses $db_hashtype for hash."
6134 : Check the return type needed for prefix
6135 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
6137 #include <sys/types.h>
6140 prefix_cb (key1, key2)
6148 info.prefix = prefix_cb ;
6151 if $cc $ccflags -c try.c >try.out 2>&1 ; then
6152 if $contains warning try.out >>/dev/null 2>&1 ; then
6155 db_prefixtype='size_t'
6158 echo "I can't seem to compile the test program." >&4
6162 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
6164 *) db_prefixtype='int'
6168 : check for void type
6170 echo "Checking to see how well your C compiler groks the void type..." >&4
6173 Support flag bits are:
6174 1: basic void declarations.
6175 2: arrays of pointers to functions returning void.
6176 4: operations between pointers to and addresses of void functions.
6177 8: generic void pointers.
6180 case "$voidflags" in
6182 $cat >try.c <<'EOCP'
6188 extern void moo(); /* function returning void */
6189 void (*goo)(); /* ptr to func returning void */
6191 void *hue; /* generic ptr */
6205 if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6206 voidflags=$defvoidused
6207 echo "It appears to support void to the level $package wants ($defvoidused)."
6208 if $contains warning .out >/dev/null 2>&1; then
6209 echo "However, you might get some warnings that look like this:"
6213 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6214 if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then
6215 echo "It supports 1..."
6216 if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then
6217 echo "It also supports 2..."
6218 if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then
6220 echo "And it supports 4 but not 8 definitely."
6222 echo "It doesn't support 4..."
6223 if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then
6225 echo "But it supports 8."
6228 echo "Neither does it support 8."
6232 echo "It does not support 2..."
6233 if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then
6235 echo "But it supports 4 and 8."
6237 if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then
6239 echo "And it supports 4 but has not heard about 8."
6241 echo "However it supports 8 but not 4."
6246 echo "There is no support at all for void."
6252 rp="Your void support flags add up to what?"
6257 : see if dbm.h is available
6262 : see if dbmclose exists
6263 set dbmclose d_dbmclose
6265 case "$d_dbmclose" in
6268 echo "We won't be including <dbm.h>"
6277 : see if ndbm.h is available
6282 : see if dbm_open exists
6283 set dbm_open d_dbm_open
6285 case "$d_dbm_open" in
6288 echo "We won't be including <ndbm.h>"
6297 : see if gdbm.h is available
6302 : see if gdbm_open exists
6303 set gdbm_open d_gdbm_open
6305 case "$d_gdbm_open" in
6308 echo "We won't be including <gdbm.h>"
6318 echo "Looking for extensions..." >&4
6320 : If we are using the old config.sh, known_extensions may contain
6321 : old or inaccurate or duplicate values.
6323 : We do not use find because it might not be available.
6324 : We do not just use MANIFEST because the user may have dropped
6325 : some additional extensions into the source tree and expect them
6328 if $test -f $xxx/$xxx.xs; then
6329 known_extensions="$known_extensions $xxx"
6331 if $test -d $xxx; then
6334 if $test -f $yyy/$yyy.xs; then
6335 known_extensions="$known_extensions $xxx/$yyy"
6342 set X $known_extensions
6344 known_extensions="$*"
6347 : Now see which are supported on this system.
6349 for xxx in $known_extensions ; do
6351 DB_File) case "$i_db" in
6352 $define) avail_ext="$avail_ext $xxx" ;;
6355 GDBM_File) case "$i_gdbm" in
6356 $define) avail_ext="$avail_ext $xxx" ;;
6359 NDBM_File) case "$i_ndbm" in
6360 $define) avail_ext="$avail_ext $xxx" ;;
6363 ODBM_File) case "$i_dbm" in
6364 $define) avail_ext="$avail_ext $xxx" ;;
6367 POSIX) case "$useposix" in
6368 true|define|y) avail_ext="$avail_ext $xxx" ;;
6371 Socket) case "$d_socket" in
6372 $define) avail_ext="$avail_ext $xxx" ;;
6375 *) avail_ext="$avail_ext $xxx"
6387 A number of extensions are supplied with $package. You may choose to
6388 compile these extensions for dynamic loading (the default), compile
6389 them into the $package executable (static loading), or not include
6390 them at all. Answer "none" to include no extensions.
6393 case "$dynamic_ext" in
6394 ''|' ') dflt="$avail_ext" ;;
6395 *) dflt="$dynamic_ext" ;;
6400 rp="What extensions do you wish to load dynamically?"
6403 none) dynamic_ext='' ;;
6404 *) dynamic_ext="$ans" ;;
6407 case "$static_ext" in
6409 : Exclude those already listed in dynamic linking
6411 for xxx in $avail_ext; do
6412 case " $dynamic_ext " in
6414 *) dflt="$dflt $xxx" ;;
6421 *) dflt="$static_ext"
6428 rp="What extensions do you wish to load statically?"
6431 none) static_ext='' ;;
6432 *) static_ext="$ans" ;;
6437 A number of extensions are supplied with $package. Answer "none"
6438 to include no extensions.
6441 case "$static_ext" in
6442 ''|' ') dflt="$avail_ext" ;;
6443 *) dflt="$static_ext" ;;
6449 rp="What extensions do you wish to include?"
6452 none) static_ext='' ;;
6453 *) static_ext="$ans" ;;
6458 set X $dynamic_ext $static_ext
6462 : see what type file positions are declared as in the library
6463 set fpos_t fpostype long stdio.h sys/types.h
6467 rp="What is the type for file position used by fsetpos()?"
6471 : Store the full pathname to the sed program for use in the C program
6474 : see what type gids are declared as in the kernel
6475 set gid_t gidtype xxx stdio.h sys/types.h
6479 xxx=`./findhdr sys/user.h`
6480 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
6482 unsigned) dflt="$1 $2" ;;
6486 *) dflt="$gidtype";;
6489 rp="What is the type for group ids returned by getgid()?"
6493 : see if getgroups exists
6494 set getgroups d_getgrps
6497 : Find type of 2nd arg to getgroups
6499 case "$d_getgrps" in
6501 case "$groupstype" in
6502 '') dflt="$gidtype" ;;
6503 *) dflt="$groupstype" ;;
6506 What is the type of the second argument to getgroups()? Usually this
6507 is the same as group ids, $gidtype, but not always.
6510 rp='What type is the second argument to getgroups()?'
6514 *) groupstype="$gidtype";;
6517 : see what type lseek is declared as in the kernel
6518 set off_t lseektype long stdio.h sys/types.h
6522 rp="What type is lseek's offset on this system declared as?"
6526 : determine where manual pages go
6527 set mansrc mansrc none
6531 $spackage has manual pages available in source form.
6535 echo "However, you don't have nroff, so they're probably useless to you."
6540 echo "If you don't want the manual sources installed, answer 'none'."
6543 lookpath="$prefixexp/man/man1 $prefixexp/man/u_man/man1"
6544 lookpath="$lookpath $prefixexp/man/l_man/man1"
6545 lookpath="$lookpath /usr/local/man/man1 /opt/man/man1 /usr/man/manl"
6546 lookpath="$lookpath /usr/man/local/man1 /usr/man/l_man/man1"
6547 lookpath="$lookpath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6548 lookpath="$lookpath /usr/man/man.L"
6549 mansrc=`./loc . $prefixexp/man/man1 $lookpath`
6550 if $test -d "$mansrc"; then
6564 rp='Where do the manual pages (source) go?'
6566 if test "X$mansrcexp" != "X$ansexp"; then
6578 Since you are running AFS, I need to distinguish the directory in which
6579 manual pages reside from the directory in which they are installed (and from
6580 which they are presumably copied to the former directory by occult means).
6583 case "$installmansrc" in
6584 '') dflt=`echo $mansrcexp | sed 's#^/afs/#/afs/.#'`;;
6585 *) dflt="$installmansrc";;
6588 rp='Where will man pages be installed?'
6590 installmansrc="$ans"
6592 installmansrc="$mansrcexp"
6607 : see what type is used for mode_t
6608 set mode_t modetype int stdio.h sys/types.h
6612 rp="What type is used for file modes?"
6616 : set the base revision
6619 : get the patchlevel
6621 echo "Getting the current patchlevel..." >&4
6622 if $test -r ../patchlevel.h;then
6623 patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
6627 echo "(You have $package $baserev PL$patchlevel.)"
6629 : Cruising for prototypes
6631 echo "Checking out function prototypes..." >&4
6632 $cat >prototype.c <<'EOCP'
6633 main(int argc, char *argv[]) {
6636 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6637 echo "Your C compiler appears to support function prototypes."
6640 echo "Your C compiler doesn't seem to understand function prototypes."
6647 : check for size of random number generator
6651 echo "Checking to see how many bits your rand function produces..." >&4
6652 $cat >try.c <<'EOCP'
6657 register unsigned long tmp;
6658 register unsigned long max = 0L;
6660 for (i = 1000; i; i--) {
6661 tmp = (unsigned long)rand();
6662 if (tmp > max) max = tmp;
6664 for (i = 0; max; i++)
6669 if $cc try.c -o try >/dev/null 2>&1 ; then
6673 echo "(I can't seem to compile the test program...)"
6680 rp='How many bits does your rand() function produce?'
6685 : see if ar generates random libraries by itself
6687 echo "Checking how to generate random libraries on your machine..." >&4
6688 echo 'int bar1() { return bar2(); }' > bar1.c
6689 echo 'int bar2() { return 2; }' > bar2.c
6690 $cat > foo.c <<'EOP'
6691 main() { printf("%d\n", bar1()); exit(0); }
6693 $cc $ccflags -c bar1.c >/dev/null 2>&1
6694 $cc $ccflags -c bar2.c >/dev/null 2>&1
6695 $cc $ccflags -c foo.c >/dev/null 2>&1
6696 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
6697 if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
6698 ./foobar >/dev/null 2>&1; then
6699 echo "ar appears to generate random libraries itself."
6702 elif ar ts bar.a >/dev/null 2>&1 &&
6703 $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
6704 ./foobar >/dev/null 2>&1; then
6705 echo "a table of contents needs to be added with 'ar ts'."
6712 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
6713 $test -f $ranlib || ranlib=''
6716 if $test -n "$ranlib"; then
6717 echo "your system has '$ranlib'; we'll use that."
6720 echo "your system doesn't seem to support random libraries"
6721 echo "so we'll use lorder and tsort to order the libraries."
6728 : determine where public executable scripts go
6729 set scriptdir scriptdir
6731 case "$scriptdir" in
6734 : guess some guesses
6735 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6736 $test -d /usr/share/bin && dflt=/usr/share/bin
6737 $test -d /usr/local/script && dflt=/usr/local/script
6738 $test -d $prefixexp/script && dflt=$prefixexp/script
6742 *) dflt="$scriptdir"
6747 Some installations have a separate directory just for executable scripts so
6748 that they can mount it across multiple architectures but keep the scripts in
6749 one spot. You might, for example, have a subdirectory of /usr/share for this.
6750 Or you might just lump your scripts in with all your other executables.
6754 rp='Where do you keep publicly executable scripts?'
6756 if $test "X$ansexp" != "X$scriptdirexp"; then
6760 scriptdirexp="$ansexp"
6764 Since you are running AFS, I need to distinguish the directory in which
6765 scripts reside from the directory in which they are installed (and from
6766 which they are presumably copied to the former directory by occult means).
6769 case "$installscript" in
6770 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6771 *) dflt="$installscript";;
6774 rp='Where will public scripts be installed?'
6776 installscript="$ans"
6778 installscript="$scriptdirexp"
6781 : see if sys/select.h has to be included
6782 set sys/select.h i_sysselct
6785 : see if we should include time.h, sys/time.h, or both
6787 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
6788 $echo $n "I'm now running the test program...$c"
6789 $cat >try.c <<'EOCP'
6790 #include <sys/types.h>
6795 #ifdef SYSTIMEKERNEL
6798 #include <sys/time.h>
6801 #include <sys/select.h>
6810 struct timezone tzp;
6812 if (foo.tm_sec == foo.tm_sec)
6815 if (bar.tv_sec == bar.tv_sec)
6824 for s_timeval in '-DS_TIMEVAL' ''; do
6825 for i_systimek in '' '-DSYSTIMEKERNEL'; do
6826 for i_time in '' '-DI_TIME'; do
6827 for i_systime in '-DI_SYSTIME' ''; do
6831 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
6832 try.c -o try >/dev/null 2>&1 ; then
6833 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
6837 $echo $n "Succeeded with $flags$c"
6848 *SYSTIMEKERNEL*) i_systimek="$define"
6849 timeincl=`./findhdr sys/time.h`
6850 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
6851 *) i_systimek="$undef";;
6854 *I_TIME*) i_time="$define"
6855 timeincl=`./findhdr time.h`" $timeincl"
6856 echo "We'll include <time.h>." >&4;;
6857 *) i_time="$undef";;
6860 *I_SYSTIME*) i_systime="$define"
6861 timeincl=`./findhdr sys/time.h`" $timeincl"
6862 echo "We'll include <sys/time.h>." >&4;;
6863 *) i_systime="$undef";;
6867 : check for fd_set items
6870 Checking to see how well your C compiler handles fd_set and friends ...
6872 $cat >fd_set.c <<EOCP
6873 #$i_systime I_SYS_TIME
6874 #$i_sysselct I_SYS_SELECT
6875 #$d_socket HAS_SOCKET
6876 #include <sys/types.h>
6878 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
6881 #include <sys/time.h>
6884 #include <sys/select.h>
6894 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
6901 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
6902 d_fds_bits="$define"
6904 echo "Well, your system knows about the normal fd_set typedef..." >&4
6906 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
6907 d_fd_macros="$define"
6910 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
6912 d_fd_macros="$undef"
6916 Hmm, your compiler has some difficulty with fd_set. Checking further...
6918 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
6921 echo "Well, your system has some sort of fd_set available..." >&4
6923 echo "and you have the normal fd_set macros." >&4
6924 d_fd_macros="$define"
6927 but not the normal fd_set macros! Gross! More work for me...
6929 d_fd_macros="$undef"
6932 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
6935 d_fd_macros="$undef"
6941 : check for type of arguments to select. This will only really
6942 : work if the system supports prototypes and provides one for
6946 : Make initial guess
6947 case "$selecttype" in
6950 $define) xxx='fd_set *' ;;
6954 *) xxx="$selecttype"
6959 'fd_set *') yyy='int *' ;;
6960 'int *') yyy='fd_set *' ;;
6965 Checking to see what type of arguments are expected by select().
6968 #$i_systime I_SYS_TIME
6969 #$i_sysselct I_SYS_SELECT
6970 #$d_socket HAS_SOCKET
6971 #include <sys/types.h>
6973 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
6976 #include <sys/time.h>
6979 #include <sys/select.h>
6985 Select_fd_set_t readfds;
6986 Select_fd_set_t writefds;
6987 Select_fd_set_t exceptfds;
6988 struct timeval timeout;
6989 select(width, readfds, writefds, exceptfds, &timeout);
6993 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
6995 echo "Your system uses $xxx for the arguments to select." >&4
6996 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
6998 echo "Your system uses $yyy for the arguments to select." >&4
7000 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
7007 *) selecttype = 'int *'
7011 : generate list of signal names
7015 echo "Generating a list of signal names..." >&4
7016 xxx=`./findhdr signal.h`" "`./findhdr sys/signal.h`" "`./findhdr linux/signal.h`
7017 set X `cat $xxx 2>&1 | $awk '
7018 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $3 ~ /^[1-9][0-9]*$/ {
7019 sig[$3] = substr($2,4,20)
7020 if (max < $3 && $3 < 60) {
7026 for (i = 1; i <= max; i++) {
7040 echo 'kill -l' >/tmp/foo$$
7041 set X `csh -f </tmp/foo$$`
7045 0)set HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM
7053 echo "The following signals are available:"
7055 echo $sig_name | $awk \
7056 'BEGIN { linelen = 0 }
7058 for (i = 1; i < NF; i++) {
7060 linelen = linelen + length(name)
7063 linelen = length(name)
7070 : see what type is used for size_t
7071 set size_t sizetype 'unsigned int' stdio.h sys/types.h
7075 rp="What type is used for the length parameter for string functions?"
7079 : see what type is used for signed size_t
7080 set ssize_t ssizetype int stdio.h sys/types.h
7083 $cat > ssize.c <<EOM
7085 #include <sys/types.h>
7086 #define Size_t $sizetype
7087 #define SSize_t $dflt
7090 if (sizeof(Size_t) == sizeof(SSize_t))
7092 else if (sizeof(Size_t) == sizeof(int))
7099 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then
7101 echo "I'll be using $ssizetype for functions returning a byte count." >&4
7103 echo "(I can't compile the test program--please enlighten me!)"
7106 I need a type that is the same size as $sizetype, but is guaranteed to
7107 be signed. Common values are int and long.
7110 rp="What signed type is the same size as $sizetype?"
7114 $rm -f ssize ssize.[co]
7116 : see what type of char stdio uses.
7118 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7119 echo "Your stdio uses unsigned chars." >&4
7120 stdchar="unsigned char"
7122 echo "Your stdio uses signed chars." >&4
7126 : see if time exists
7128 if set time val -f d_time; eval $csym; $val; then
7129 echo 'time() found.' >&4
7131 set time_t timetype long stdio.h sys/types.h
7135 rp="What type is returned by time() on this sytem?"
7139 echo 'time() not found, hope that will do.' >&4
7146 : see what type uids are declared as in the kernel
7147 set uid_t uidtype xxx stdio.h sys/types.h
7151 xxx=`./findhdr sys/user.h`
7152 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
7154 unsigned) dflt="$1 $2" ;;
7158 *) dflt="$uidtype";;
7161 rp="What is the type for user ids returned by getuid()?"
7165 : see if this is a sys/file.h system
7170 : do we need to #include <sys/file.h> ?
7176 echo "We'll be including <sys/file.h>." >&4
7179 echo "We won't be including <sys/file.h>." >&4
7189 : see if fcntl.h is there
7194 : see if we can include fcntl.h
7200 echo "We'll be including <fcntl.h>." >&4
7204 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
7206 echo "We won't be including <fcntl.h>." >&4
7218 : see if this is an grp system
7222 : see if this is a math.h system
7226 : see if memory.h is available.
7231 : See if it conflicts with string.h
7237 $cppstdin $cppflags $cppminus < $strings > mem.h
7238 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
7240 echo "We won't be including <memory.h>."
7250 : see if net/errno.h is available
7255 : Unfortunately, it causes problems on some systems. Arrgh.
7261 #include <net/errno.h>
7267 if $cc $ccflags -c try.c >/dev/null 2>&1; then
7268 echo "We'll be including <net/errno.h>." >&4
7270 echo "We won't be including <net/errno.h>." >&4
7279 : get C preprocessor symbols handy
7281 $echo $n "Hmm... $c"
7282 echo $al | $tr ' ' '\012' >Cppsym.know
7294 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
7296 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
7299 unknown="\$unknown \$sym"
7309 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
7311 exit 0; _ _ _ _\1\\ \1\\
7314 echo "exit 1; _ _ _" >>Cppsym\$\$
7315 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
7317 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
7323 $rm -f Cppsym\$\$ Cppsym2\$\$
7328 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
7330 : now check the C compiler for additional symbols
7336 for i in \`$cc -v -c tmp.c 2>&1\`
7339 -D*) echo "\$i" | $sed 's/^-D//';;
7340 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
7347 ./ccsym | $sort | $uniq >ccsym.raw
7348 $awk '/\=/ { print $0; next } { print $0"=1" }' ccsym.raw >ccsym.list
7349 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
7350 $comm -13 ccsym.true ccsym.list >ccsym.own
7351 $comm -12 ccsym.true ccsym.list >ccsym.com
7352 $comm -23 ccsym.true ccsym.list >ccsym.cpp
7355 if $test -z ccsym.raw; then
7356 echo "Your C compiler doesn't seem to define any symbol!" >&4
7358 echo "However, your C preprocessor defines the following ones:"
7361 if $test -s ccsym.com; then
7362 echo "Your C compiler and pre-processor define these symbols:"
7363 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
7366 $test "$silent" || sleep 1
7368 if $test -s ccsym.cpp; then
7369 $test "$also" && echo " "
7370 echo "Your C pre-processor ${also}defines the following $symbols:"
7371 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
7373 $test "$silent" || sleep 1
7375 if $test -s ccsym.own; then
7376 $test "$also" && echo " "
7377 echo "Your C compiler ${also}defines the following cpp variables:"
7378 $sed -e 's/\(.*\)=1/\1/' ccsym.own
7379 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
7380 $test "$silent" || sleep 1
7385 : see if this is a termio system
7389 if $test `./findhdr termios.h`; then
7390 set tcsetattr i_termios
7396 "$define") echo "You have POSIX termios.h... good!" >&4;;
7397 *) if ./Cppsym pyr; then
7398 case "`/bin/universe`" in
7399 ucb) if $test `./findhdr sgtty.h`; then
7401 echo "<sgtty.h> found." >&4
7403 echo "System is pyramid with BSD universe."
7404 echo "<sgtty.h> not found--you could have problems." >&4
7406 *) if $test `./findhdr termio.h`; then
7408 echo "<termio.h> found." >&4
7410 echo "System is pyramid with USG universe."
7411 echo "<termio.h> not found--you could have problems." >&4
7415 if $test `./findhdr termio.h`; then
7416 echo "<termio.h> found." >&4
7418 elif $test `./findhdr sgtty.h`; then
7419 echo "<sgtty.h> found." >&4
7422 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
7425 if $test `./findhdr sgtty.h`; then
7426 echo "<sgtty.h> found." >&4
7428 elif $test `./findhdr termio.h`; then
7429 echo "<termio.h> found." >&4
7432 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
7436 set i_termio; eval $setvar
7437 val=$val2; set i_sgtty; eval $setvar
7438 val=$val3; set i_termios; eval $setvar
7440 : see if stdarg is available
7442 if $test `./findhdr stdarg.h`; then
7443 echo "<stdarg.h> found." >&4
7446 echo "<stdarg.h> NOT found." >&4
7450 : see if varags is available
7452 if $test `./findhdr varargs.h`; then
7453 echo "<varargs.h> found." >&4
7455 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
7458 : set up the varargs testing programs
7459 $cat > varargs.c <<EOP
7464 #include <varargs.h>
7482 p = va_arg(ap, char *);
7487 $cat > varargs <<EOP
7488 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
7497 : now check which varargs header should be included
7502 if `./varargs I_STDARG`; then
7504 elif `./varargs I_VARARGS`; then
7509 if `./varargs I_VARARGS`; then
7516 echo "I could not find the definition for va_dcl... You have problems..." >&4
7517 val="$undef"; set i_stdarg; eval $setvar
7518 val="$undef"; set i_varargs; eval $setvar
7525 val="$define"; set i_stdarg; eval $setvar
7526 val="$undef"; set i_varargs; eval $setvar
7529 val="$undef"; set i_stdarg; eval $setvar
7530 val="$define"; set i_varargs; eval $setvar
7533 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
7537 : see if stddef is available
7538 set stddef.h i_stddef
7541 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
7542 set sys/filio.h i_sysfilio
7545 if $test `./findhdr sys/ioctl.h`; then
7547 echo '<sys/ioctl.h> found.' >&4
7550 if $test $i_sysfilio = "$define"; then
7551 echo '<sys/ioctl.h> NOT found.' >&4
7553 $test $i_sgtty = "$define" && xxx="sgtty.h"
7554 $test $i_termio = "$define" && xxx="termio.h"
7555 $test $i_termios = "$define" && xxx="termios.h"
7556 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
7562 : see if this is a sys/param system
7563 set sys/param.h i_sysparam
7566 : see if sys/stat.h is available
7567 set sys/stat.h i_sysstat
7570 : see if sys/types.h has to be included
7571 set sys/types.h i_systypes
7574 : see if this is a unistd.h system
7575 set unistd.h i_unistd
7578 : see if this is an utime system
7582 : see if this is a vfork system
7593 : end of configuration questions
7595 echo "End of configuration questions."
7598 : back to where it started
7599 if test -d ../UU; then
7603 : configuration may be patched via a 'config.over' file
7604 if $test -f config.over; then
7607 rp='I see a config.over file. Do you wish to load it?'
7610 n*) echo "OK, I'll ignore it.";;
7612 echo "Configuration override changes have been loaded."
7617 : in case they want portability, strip down executable paths
7618 case "$d_portable" in
7621 echo "Stripping down executable paths..." >&4
7622 for file in $loclist $trylist; do
7628 : create config.sh file
7630 echo "Creating config.sh..." >&4
7631 $spitshell <<EOT >config.sh
7634 # This file was produced by running the Configure script. It holds all the
7635 # definitions figured out by Configure. Should you modify one of these values,
7636 # do not forget to propagate your changes by running "Configure -der". You may
7637 # instead choose to run each of the .SH files by yourself, or "Configure -S".
7640 # Configuration time: $cf_time
7641 # Configured by: $cf_by
7642 # Target system: $myuname
7652 Revision='$Revision'
7656 alignbytes='$alignbytes'
7657 aphostname='$aphostname'
7659 archlibexp='$archlibexp'
7660 archname='$archname'
7668 byteorder='$byteorder'
7670 castflags='$castflags'
7673 cccdlflags='$cccdlflags'
7674 ccdlflags='$ccdlflags'
7681 clocktype='$clocktype'
7683 compress='$compress'
7684 contains='$contains'
7688 cpp_stuff='$cpp_stuff'
7689 cppflags='$cppflags'
7691 cppminus='$cppminus'
7693 cppstdin='$cppstdin'
7694 cryptlib='$cryptlib'
7696 d_Gconvert='$d_Gconvert'
7697 d_access='$d_access'
7699 d_archlib='$d_archlib'
7700 d_attribut='$d_attribut'
7704 d_bsdpgrp='$d_bsdpgrp'
7707 d_casti32='$d_casti32'
7708 d_castneg='$d_castneg'
7709 d_charvspr='$d_charvspr'
7711 d_chroot='$d_chroot'
7712 d_chsize='$d_chsize'
7713 d_closedir='$d_closedir'
7717 d_cuserid='$d_cuserid'
7718 d_dbl_dig='$d_dbl_dig'
7719 d_difftime='$d_difftime'
7720 d_dirnamlen='$d_dirnamlen'
7721 d_dlerror='$d_dlerror'
7722 d_dlopen='$d_dlopen'
7723 d_dlsymun='$d_dlsymun'
7724 d_dosuid='$d_dosuid'
7727 d_eunice='$d_eunice'
7728 d_fchmod='$d_fchmod'
7729 d_fchown='$d_fchown'
7731 d_fd_macros='$d_fd_macros'
7732 d_fd_set='$d_fd_set'
7733 d_fds_bits='$d_fds_bits'
7734 d_fgetpos='$d_fgetpos'
7735 d_flexfnam='$d_flexfnam'
7739 d_fpathconf='$d_fpathconf'
7740 d_fsetpos='$d_fsetpos'
7741 d_getgrps='$d_getgrps'
7742 d_gethent='$d_gethent'
7743 d_gethname='$d_gethname'
7744 d_getlogin='$d_getlogin'
7745 d_getpgrp2='$d_getpgrp2'
7746 d_getpgrp='$d_getpgrp'
7747 d_getppid='$d_getppid'
7748 d_getprior='$d_getprior'
7751 d_isascii='$d_isascii'
7752 d_killpg='$d_killpg'
7754 d_linuxstd='$d_linuxstd'
7755 d_locconv='$d_locconv'
7759 d_mbstowcs='$d_mbstowcs'
7760 d_mbtowc='$d_mbtowc'
7761 d_memcmp='$d_memcmp'
7762 d_memcpy='$d_memcpy'
7763 d_memmove='$d_memmove'
7764 d_memset='$d_memset'
7766 d_mkfifo='$d_mkfifo'
7767 d_mktime='$d_mktime'
7769 d_msgctl='$d_msgctl'
7770 d_msgget='$d_msgget'
7771 d_msgrcv='$d_msgrcv'
7772 d_msgsnd='$d_msgsnd'
7773 d_mymalloc='$d_mymalloc'
7775 d_oldsock='$d_oldsock'
7777 d_pathconf='$d_pathconf'
7779 d_phostname='$d_phostname'
7781 d_portable='$d_portable'
7783 d_pwchange='$d_pwchange'
7784 d_pwclass='$d_pwclass'
7785 d_pwcomment='$d_pwcomment'
7786 d_pwexpire='$d_pwexpire'
7787 d_pwquota='$d_pwquota'
7788 d_readdir='$d_readdir'
7789 d_readlink='$d_readlink'
7790 d_rename='$d_rename'
7791 d_rewinddir='$d_rewinddir'
7793 d_safebcpy='$d_safebcpy'
7794 d_safemcpy='$d_safemcpy'
7795 d_seekdir='$d_seekdir'
7796 d_select='$d_select'
7798 d_semctl='$d_semctl'
7799 d_semget='$d_semget'
7801 d_setegid='$d_setegid'
7802 d_seteuid='$d_seteuid'
7803 d_setlinebuf='$d_setlinebuf'
7804 d_setlocale='$d_setlocale'
7805 d_setpgid='$d_setpgid'
7806 d_setpgrp2='$d_setpgrp2'
7807 d_setpgrp='$d_setpgrp'
7808 d_setprior='$d_setprior'
7809 d_setregid='$d_setregid'
7810 d_setresgid='$d_setresgid'
7811 d_setresuid='$d_setresuid'
7812 d_setreuid='$d_setreuid'
7813 d_setrgid='$d_setrgid'
7814 d_setruid='$d_setruid'
7815 d_setsid='$d_setsid'
7818 d_shmatprototype='$d_shmatprototype'
7819 d_shmctl='$d_shmctl'
7821 d_shmget='$d_shmget'
7822 d_shrplib='$d_shrplib'
7823 d_socket='$d_socket'
7824 d_sockpair='$d_sockpair'
7825 d_statblks='$d_statblks'
7826 d_stdstdio='$d_stdstdio'
7827 d_strchr='$d_strchr'
7828 d_strcoll='$d_strcoll'
7829 d_strctcpy='$d_strctcpy'
7830 d_strerrm='$d_strerrm'
7831 d_strerror='$d_strerror'
7832 d_strxfrm='$d_strxfrm'
7833 d_suidsafe='$d_suidsafe'
7834 d_symlink='$d_symlink'
7835 d_syscall='$d_syscall'
7836 d_sysconf='$d_sysconf'
7837 d_sysernlst='$d_sysernlst'
7838 d_syserrlst='$d_syserrlst'
7839 d_system='$d_system'
7840 d_tcgetpgrp='$d_tcgetpgrp'
7841 d_tcsetpgrp='$d_tcsetpgrp'
7842 d_telldir='$d_telldir'
7845 d_truncate='$d_truncate'
7846 d_tzname='$d_tzname'
7850 d_void_closedir='$d_void_closedir'
7851 d_voidsig='$d_voidsig'
7852 d_voidtty='$d_voidtty'
7853 d_volatile='$d_volatile'
7854 d_vprintf='$d_vprintf'
7856 d_waitpid='$d_waitpid'
7857 d_wcstombs='$d_wcstombs'
7858 d_wctomb='$d_wctomb'
7861 db_hashtype='$db_hashtype'
7862 db_prefixtype='$db_prefixtype'
7863 defvoidused='$defvoidused'
7864 direntrytype='$direntrytype'
7867 dynamic_ext='$dynamic_ext'
7871 eunicefix='$eunicefix'
7873 extensions='$extensions'
7876 fpostype='$fpostype'
7877 freetype='$freetype'
7878 full_csh='$full_csh'
7879 full_sed='$full_sed'
7881 gccversion='$gccversion'
7885 groupcat='$groupcat'
7886 groupstype='$groupstype'
7888 h_sysfile='$h_sysfile'
7892 i_bsdioctl='$i_bsdioctl'
7895 i_dirent='$i_dirent'
7902 i_limits='$i_limits'
7903 i_malloc='$i_malloc'
7905 i_memory='$i_memory'
7907 i_neterrno='$i_neterrno'
7911 i_stdarg='$i_stdarg'
7912 i_stddef='$i_stddef'
7913 i_stdlib='$i_stdlib'
7914 i_string='$i_string'
7915 i_sysdir='$i_sysdir'
7916 i_sysfile='$i_sysfile'
7917 i_sysfilio='$i_sysfilio'
7919 i_sysioctl='$i_sysioctl'
7920 i_sysndir='$i_sysndir'
7921 i_sysparam='$i_sysparam'
7922 i_sysselct='$i_sysselct'
7923 i_syssockio='$i_syssockio'
7924 i_sysstat='$i_sysstat'
7925 i_systime='$i_systime'
7926 i_systimek='$i_systimek'
7927 i_systimes='$i_systimes'
7928 i_systypes='$i_systypes'
7929 i_termio='$i_termio'
7930 i_termios='$i_termios'
7932 i_unistd='$i_unistd'
7934 i_varargs='$i_varargs'
7935 i_varhdr='$i_varhdr'
7939 installarchlib='$installarchlib'
7940 installbin='$installbin'
7941 installmansrc='$installmansrc'
7942 installprivlib='$installprivlib'
7943 installscript='$installscript'
7945 known_extensions='$known_extensions'
7948 lddlflags='$lddlflags'
7954 libswanted='$libswanted'
7963 lseektype='$lseektype'
7967 mallocobj='$mallocobj'
7968 mallocsrc='$mallocsrc'
7969 malloctype='$malloctype'
7972 mansrcexp='$mansrcexp'
7975 mips_type='$mips_type'
7978 modetype='$modetype'
7981 myarchname='$myarchname'
7982 mydomain='$mydomain'
7983 myhostname='$myhostname'
7988 optimize='$optimize'
7989 orderlib='$orderlib'
7994 patchlevel='$patchlevel'
7997 phostname='$phostname'
8002 prefixexp='$prefixexp'
8004 privlibexp='$privlibexp'
8005 prototype='$prototype'
8006 randbits='$randbits'
8011 scriptdir='$scriptdir'
8012 scriptdirexp='$scriptdirexp'
8014 selecttype='$selecttype'
8015 sendmail='$sendmail'
8018 sharpbang='$sharpbang'
8019 shmattype='$shmattype'
8022 sig_name='$sig_name'
8023 signal_t='$signal_t'
8024 sizetype='$sizetype'
8029 sockethdr='$sockethdr'
8030 socketlib='$socketlib'
8032 spackage='$spackage'
8033 spitshell='$spitshell'
8035 ssizetype='$ssizetype'
8037 static_ext='$static_ext'
8046 timeincl='$timeincl'
8047 timetype='$timetype'
8055 usemymalloc='$usemymalloc'
8057 useposix='$useposix'
8058 usevfork='$usevfork'
8062 voidflags='$voidflags'
8067 : add special variables
8068 $test -f patchlevel.h && \
8069 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
8070 echo "CONFIG=true" >>config.sh
8072 : propagate old symbols
8073 if $test -f UU/config.sh; then
8074 <UU/config.sh sort | uniq >UU/oldconfig.sh
8075 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
8076 sort | uniq -u >UU/oldsyms
8077 set X `cat UU/oldsyms`
8083 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
8085 echo "# Variables propagated from previous config.sh file." >>config.sh
8086 for sym in `cat UU/oldsyms`; do
8087 echo " Propagating $hint variable "'$'"$sym..."
8088 eval 'tmp="$'"${sym}"'"'
8090 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
8096 : Finish up by extracting the .SH files
8110 If you'd like to make any changes to the config.sh file before I begin
8111 to configure things, do it as a shell escape now (e.g. !vi config.sh).
8114 rp="Press return or use a shell escape to edit config.sh:"
8119 *) : in case they cannot read
8125 : if this fails, just run all the .SH files by hand
8132 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
8139 Now you need to generate make dependencies by running "make depend".
8140 You might prefer to run it in background: "make depend > makedepend.out &"
8141 It can take a while, so you might not want to run it right now.
8146 rp="Run make depend now?"
8150 make depend && echo "Now you must run a make."
8153 echo "You must run 'make depend' then 'make'."
8156 elif test -f [Mm]akefile; then
8158 echo "Now you must run a make."
8163 $rm -f kit*isdone ark*isdone