3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc so you may fetch it yourself from your nearest
18 # archive site. Check with Archie if you don't know where that can be.)
21 # $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
23 # Generated on Thu Oct 10 15:08:34 EDT 1996 [metaconfig 3.0 PL60]
28 SCO csh still thinks true is false. Write to SCO today and tell them that next
29 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
32 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34 [End of diatribe. We now return you to your regularly scheduled programming...]
38 OOPS! You naughty creature! You didn't run Configure with sh!
39 I will attempt to remedy the situation by running sh for you...
42 true || cat /tmp/c1$$ /tmp/c2$$
43 true || exec sh $0 $argv:q
45 (exit $?0) || cat /tmp/c2$$
46 (exit $?0) || exec sh $0 $argv:q
47 rm -f /tmp/c1$$ /tmp/c2$$
49 : compute my invocation name
53 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
58 : Proper PATH separator
60 : On OS/2 this directory should exist if this is not floppy only system :-]
61 if test -d c:/. -a -n "$OS2_SHELL"; then
63 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
64 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
68 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
69 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
70 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
71 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
72 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
73 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
74 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
75 paths="$paths /sbin /usr/sbin /usr/libexec"
81 *) test -d $p && PATH=$PATH$p_$p ;;
90 echo "Say 'sh $me', not 'sh <$me'"
94 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
95 if test -f /hp-ux -a -f /bin/ksh; then
96 if (PATH=.; alias -x) >/dev/null 2>&1; then
97 : already under /bin/ksh
100 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
103 exec /bin/ksh $0 "$@"
106 : Warn them if they use ksh on other systems
107 (PATH=.; alias -x) >/dev/null 2>&1 && \
109 (I see you are using the Korn shell. Some ksh's blow up on $me,
110 especially on older exotic systems. If yours does, try the Bourne
115 : Configure runs within the UU subdirectory
116 test -d UU || mkdir UU
605 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
608 : We must find out about Eunice early
610 if test -f /etc/unixtovms; then
611 eunicefix=/etc/unixtovms
613 if test -f /etc/unixtovms.exe; then
614 eunicefix=/etc/unixtovms.exe
617 : list of known cpp symbols, sorted alphabetically
618 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
619 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
620 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
621 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
622 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
623 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
624 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
625 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
626 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
627 al="$al VMS Xenix286"
628 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
629 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
630 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
631 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
632 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
633 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
634 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
635 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
636 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
637 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
638 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
639 al="$al __SVR4_2__ __UMAXV__"
640 al="$al ____386BSD____ __alpha __alpha__ __amiga"
641 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
642 al="$al __host_mips__"
643 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
644 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
645 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
646 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
647 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
648 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
649 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
650 al="$al __mc88100 __mc88100__ __mips __mips__"
651 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
652 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
653 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
654 al="$al _host_mips _mips _unix"
655 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
656 al="$al apollo ardent att386 att3b"
657 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
658 al="$al cadmus clipper concurrent convex cray ctix"
659 al="$al dmert encore gcos gcx gimpel gould"
660 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
661 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
662 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
663 al="$al i186 i286 i386 i486 i8086"
664 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
665 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
666 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
667 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
668 al="$al mc88000 mc88100 merlin mert mips mvs n16"
669 al="$al ncl_el ncl_mr"
670 al="$al news1500 news1700 news1800 news1900 news3700"
671 al="$al news700 news800 news900 ns16000 ns32000"
672 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
673 al="$al parisc pc532 pdp11 plexus posix pyr"
674 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
675 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
676 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
677 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
678 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
679 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
684 : default library list
686 : set useposix=false in your hint file to disable the POSIX extension.
688 : set useopcode=false in your hint file to disable the Opcode extension.
690 : Define several unixisms. These can be used in hint files.
692 : Extra object files, if any, needed on this platform.
694 : Possible local include directories to search.
695 : Set locincpth to "" in a hint file to defeat local include searches.
696 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
697 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
699 : no include file wanted by default
702 : change the next line if compiling for Xenix/286 on Xenix/386
703 xlibpth='/usr/lib/386 /lib/386'
705 : Possible local library directories to search.
706 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
707 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
709 : general looking path for locating libraries
710 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
711 glibpth="$glibpth /lib /usr/lib $xlibpth"
712 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
713 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
715 : Private path used by Configure to find libraries. Its value
716 : is prepended to libpth. This variable takes care of special
717 : machines, like the mips. Usually, it should be empty.
720 : full support for void wanted by default
723 : List of libraries we want.
724 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
725 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
726 libswanted="$libswanted ucb bsd BSD PW x"
727 : We probably want to search /usr/shlib before most other libraries.
728 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
729 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
730 glibpth="/usr/shlib $glibpth"
731 : Do not use vfork unless overridden by a hint file.
734 : Find the basic shell for Bourne shell scripts
737 : SYSTYPE is for some older MIPS systems.
738 : I do not know if it is still needed.
740 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
743 if test -f "$xxx"; then
746 : Build up a list and do a single loop so we can 'break' out.
747 pth=`echo $PATH | sed -e "s/$p_/ /g"`
748 for xxx in sh bash ksh pdksh ash; do
750 try="$try ${p}/${xxx}"
754 if test -f "$xxx"; then
756 echo "Your Bourne shell appears to be in $sh."
758 elif test -f "$xxx.exe"; then
760 echo "Hmm. Your Bourne shell appears to be in $sh."
770 $me: Fatal Error: I can't find a Bourne Shell anywhere.
771 Usually it's in /bin/sh. How did you even get this far?
772 Please contact me (Andy Dougherty) at doughera@lafcol.lafayette.edu and
773 we'll try to straigten this all out.
779 : see if sh knows # comments
780 if `$sh -c '#' >/dev/null 2>&1`; then
785 test -f $xcat || xcat=/usr/bin/cat
790 if test -s today; then
793 echo "#! $xcat" > try
797 if test -s today; then
800 echo "Okay, let's see if #! works on this system..."
801 echo "It's just a comment."
806 echo "Your $sh doesn't grok # comments--I will strip them later on."
809 echo "exec grep -v '^[ ]*#'" >spitshell
812 spitshell=`pwd`/spitshell
814 echo "I presume that if # doesn't work, #! won't work either!"
819 : figure out how to guarantee sh startup
821 '') startsh=${sharpbang}${sh} ;;
833 : echo "Yup, it does."
835 echo "Hmm. '$startsh' didn't work."
836 echo "You may have to fix up the shell scripts to make sure sh runs them."
840 : script used to extract .SH files with variable substitutions
844 cat >>extract <<'EOS'
846 echo "Doing variable substitutions on .SH files..."
847 if test -f MANIFEST; then
848 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
849 : Pick up possible extension manifests.
850 for dir in ext/* ; do
851 if test -f $dir/MANIFEST; then
852 xxx=`awk '{print $1}' < $dir/MANIFEST |
853 sed -n "/\.SH$/ s@^@$dir/@p"`
854 shlist="$shlist $xxx"
859 echo "(Looking for .SH files under the current directory.)"
860 set x `find . -name "*.SH" -print`
864 0) set x *.SH; shift;;
866 if test ! -f $1; then
872 dir=`expr X$file : 'X\(.*\)/'`
873 file=`expr X$file : 'X.*/\(.*\)'`
874 (cd $dir && . ./$file)
881 if test -f config_h.SH; then
882 if test ! -f config.h; then
883 : oops, they left it out of MANIFEST, probably, so do it anyway.
889 : produce awk script to parse command line options
890 cat >options.awk <<'EOF'
892 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
894 len = length(optstr);
895 for (i = 1; i <= len; i++) {
896 c = substr(optstr, i, 1);
897 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
908 if (substr(str, 1, 1) != "-") {
909 printf("'%s'\n", str);
913 for (i = 2; i <= len; i++) {
914 c = substr(str, i, 1);
916 printf("-%s\n", substr(str, i));
922 printf("'%s'\n", substr(str, i + 1));
935 : process the command line options
936 set X `for arg in "$@"; do echo "X$arg"; done |
937 sed -e s/X// | awk -f options.awk`
942 : set up default values
955 while test $# -gt 0; do
957 -d) shift; fastread=yes;;
958 -e) shift; alldone=cont;;
962 if test -r "$1"; then
965 echo "$me: cannot read config file $1." >&2
970 -h) shift; error=true;;
971 -r) shift; reuseval=true;;
972 -s) shift; silent=true;;
973 -E) shift; alldone=exit;;
974 -K) shift; knowitall=true;;
975 -O) shift; override=true;;
976 -S) shift; extractsh=true;;
981 echo "$me: use '-U symbol=', not '-D symbol='." >&2
982 echo "$me: ignoring -D $1" >&2
985 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
986 *) echo "$1='define'" >> optdef.sh;;
993 *=) echo "$1" >> optdef.sh;;
995 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
996 echo "$me: ignoring -U $1" >&2
998 *) echo "$1='undef'" >> optdef.sh;;
1002 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1005 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1013 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1014 [-U symbol] [-U symbol=]
1015 -d : use defaults for all answers.
1016 -e : go on without questioning past the production of config.sh.
1017 -f : specify an alternate default configuration file.
1018 -h : print this help message and exit (with an error status).
1019 -r : reuse C symbols value if possible (skips costly nm extraction).
1020 -s : silent mode, only echoes questions and essential information.
1021 -D : define symbol to have some value:
1022 -D symbol symbol gets the value 'define'
1023 -D symbol=value symbol gets the value 'value'
1024 -E : stop at the end of questions, after having produced config.sh.
1025 -K : do not use unless you know what you are doing.
1026 -O : let -D and -U override definitions from loaded configuration file.
1027 -S : perform variable substitutions on all .SH files (can mix with -f)
1028 -U : undefine symbol:
1029 -U symbol symbol gets the value 'undef'
1030 -U symbol= symbol gets completely empty
1031 -V : print version number and exit (with a zero status).
1039 true) exec 1>/dev/null;;
1042 : run the defines and the undefines, if any, but leave the file out there...
1046 case "$extractsh" in
1048 case "$config_sh" in
1049 '') config_sh='config.sh'; config='./config.sh';;
1050 /*) config="$config_sh";;
1051 *) config="./$config_sh";;
1054 echo "Fetching answers from $config_sh..."
1057 test "$override" && . ./optdef.sh
1068 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1069 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1070 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1071 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1072 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1075 : Eunice requires " " instead of "", can you believe it
1078 echo "Beginning of configuration questions for $package."
1080 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1082 : Some greps do not return status, grrr.
1083 echo "grimblepritz" >grimble
1084 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1086 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1092 : the following should work in any shell
1096 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1097 cat >contains <<'EOSS'
1098 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1103 : first determine how to suppress newline on echo command
1105 echo "Checking echo to see how to suppress newlines..."
1106 (echo "hi there\c" ; echo " ") >.echotmp
1107 if $contains c .echotmp >/dev/null 2>&1 ; then
1118 echo $n "The star should be here-->$c"
1122 : Now test for existence of everything in MANIFEST
1124 if test -f ../MANIFEST; then
1125 echo "First let's make sure your kit is complete. Checking..." >&4
1126 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1128 for filelist in x??; do
1129 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1131 if test -s missing; then
1135 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1137 You have the option of continuing the configuration process, despite the
1138 distinct possibility that your kit is damaged, by typing 'y'es. If you
1139 do, don't blame me if something goes wrong. I advise you to type 'n'o
1140 and contact the author (doughera@lafcol.lafayette.edu).
1143 echo $n "Continue? [n] $c" >&4
1147 echo "Continuing..." >&4
1151 echo "ABORTING..." >&4
1156 echo "Looks good..." >&4
1159 echo "There is no MANIFEST file. I hope your kit is complete !"
1163 : compute the number of columns on the terminal for proper question formatting
1168 : set up the echo used in my read
1169 myecho="case \"\$xxxm\" in
1170 '') echo $n \"\$rp $c\" >&4;;
1172 '') echo $n \"[\$xxxm] $c\";;
1174 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1176 echo $n \"[\$xxxm] $c\" >&4
1178 echo $n \"\$rp [\$xxxm] $c\" >&4
1184 : now set up to do reads with possible shell escape and default assignment
1189 case "\$fastread" in
1190 yes) case "\$dflt" in
1193 case "\$silent-\$rp" in
1198 *) case "\$silent" in
1199 true) case "\$rp" in
1204 while expr "X\$ans" : "X!" >/dev/null; do
1208 aok=''; eval "ans=\"\$answ\"" && aok=y
1213 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1218 echo "(OK, I'll run with -d after this question.)" >&4
1221 echo "*** Sorry, \$1 not supported yet." >&4
1233 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1243 echo "*** Substitution done -- please confirm."
1245 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1250 echo "*** Error -- try again."
1257 case "\$ans\$xxxm\$nostick" in
1269 : create .config dir to save info across Configure sessions
1270 test -d ../.config || mkdir ../.config
1271 cat >../.config/README <<EOF
1272 This directory created by Configure to save information that should
1273 persist across sessions.
1275 You may safely delete it if you wish.
1278 : general instructions
1281 user=`(logname) 2>/dev/null`
1283 user=`whoami 2>&1` ;;
1285 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1288 rp='Would you like to see the instructions?'
1299 This installation shell script will examine your system and ask you questions
1300 to determine how the perl5 package should be installed. If you get
1301 stuck on a question, you may use a ! shell escape to start a subshell or
1302 execute a command. Many of the questions will have default answers in square
1303 brackets; typing carriage return will give you the default.
1305 On some of the questions which ask for file or directory names you are allowed
1306 to use the ~name construct to specify the login directory belonging to "name",
1307 even if you don't have a shell which knows about that. Questions where this is
1308 allowed will be marked "(~name ok)".
1312 dflt='Type carriage return to continue'
1316 The prompter used in this script allows you to use shell variables and
1317 backticks in your answers. You may use $1, $2, etc... to refer to the words
1318 in the default answer, as if the default line was a set of arguments given to a
1319 script shell. This means you may also use $* to repeat the whole default line,
1320 so you do not have to re-type everything to add something to the default.
1322 Everytime there is a substitution, you will have to confirm. If there is an
1323 error (e.g. an unmatched backtick), the default answer will remain unchanged
1324 and you will be prompted again.
1326 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1327 the questions and use the computed defaults (or the previous answers if there
1328 was already a config.sh file). Type 'Configure -h' for a list of options.
1329 You may also start interactively and then answer '& -d' at any prompt to turn
1330 on the non-interactive behaviour for the remaining of the execution.
1336 Much effort has been expended to ensure that this shell script will run on any
1337 Unix system. If despite that it blows up on yours, your best bet is to edit
1338 Configure and run it again. If you can't run Configure for some reason,
1339 you'll have to generate a config.sh file by hand. Whatever problems you
1340 have, let me (doughera@lafcol.lafayette.edu) know how I blew it.
1342 This installation script affects things in two ways:
1344 1) it may do direct variable substitutions on some of the files included
1346 2) it builds a config.h file for inclusion in C programs. You may edit
1347 any of these files as the need arises after running this script.
1349 If you make a mistake on a question, there is no easy way to back up to it
1350 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1351 files. Configure will offer to let you do this before it runs the SH files.
1354 dflt='Type carriage return to continue'
1356 case "$firsttime" in
1357 true) echo $user >>../.config/instruct;;
1361 : find out where common programs are
1363 echo "Locating common programs..." >&4
1376 if test -d \$dir/\$thing; then
1382 for thisthing in \$dir/\$thing; do
1383 : just loop through to pick last item
1385 if test -f \$thisthing; then
1388 elif test -f \$dir/\$thing.exe; then
1389 : on Eunice apparently
1439 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1440 pth="$pth /lib /usr/lib"
1441 for file in $loclist; do
1442 xxx=`./loc $file $file $pth`
1447 echo $file is in $xxx.
1450 echo $file is in $xxx.
1453 echo "I don't know where '$file' is, and my life depends on it." >&4
1454 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1460 echo "Don't worry if any of the following aren't found..."
1462 for file in $trylist; do
1463 xxx=`./loc $file $file $pth`
1468 echo $file is in $xxx.
1471 echo $file is in $xxx.
1474 echo "I don't see $file out there, $say."
1481 echo "Substituting grep for egrep."
1487 echo "Substituting cp for ln."
1493 echo "Hopefully test is built into your sh."
1496 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1497 echo "Using the test built into your sh."
1505 echo "Hopefully echo is built into your sh."
1510 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1511 $echo $n "hi there$c" >foo1
1512 echo $n "hi there$c" >foo2
1513 if cmp foo1 foo2 >/dev/null 2>&1; then
1514 echo "They are compatible. In fact, they may be identical."
1521 They are not compatible! You are probably running ksh on a non-USG system.
1522 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1523 have echo built in and we may have to run some Bourne shell scripts. That
1524 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1527 $echo $n "The star should be here-->$c"
1534 : determine whether symbolic links are supported
1537 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1538 echo "Symbolic links are supported." >&4
1541 echo "Symbolic links are NOT supported." >&4
1546 : see whether [:lower:] and [:upper:] are supported character classes
1550 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1552 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1557 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1560 : set up the translation script tr, must be called with ./tr of course
1564 '[A-Z][a-z]') exec $tr '$up' '$low';;
1565 '[a-z][A-Z]') exec $tr '$low' '$up';;
1572 : Try to determine whether config.sh was made on this system
1573 case "$config_sh" in
1575 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1576 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1577 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1578 newmyuname="$myuname"
1580 case "$knowitall" in
1582 if test -f ../config.sh; then
1583 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1584 eval "`grep myuname= ../config.sh`"
1586 if test "X$myuname" = "X$newmyuname"; then
1594 : Get old answers from old config file if Configure was run on the
1595 : same system, otherwise use the hints.
1598 if test -f config.sh; then
1600 rp="I see a config.sh file. Shall I use it to set the defaults?"
1603 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1604 *) echo "Fetching default answers from your old config.sh file..." >&4
1612 : Older versions did not always set $sh. Catch re-use of such
1621 if test ! -f config.sh; then
1624 First time through, eh? I have some defaults handy for the following systems:
1627 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1629 : Half the following guesses are probably wrong... If you have better
1630 : tests or hints, please send them to doughera@lafcol.lafayette.edu
1631 : The metaconfig authors would also appreciate a copy...
1632 $test -f /irix && osname=irix
1633 $test -f /xenix && osname=sco_xenix
1634 $test -f /dynix && osname=dynix
1635 $test -f /dnix && osname=dnix
1636 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1637 $test -f /bin/mips && /bin/mips && osname=mips
1638 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1639 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1640 $test -d /usr/apollo/bin && osname=apollo
1641 $test -f /etc/saf/_sactab && osname=svr4
1642 $test -d /usr/include/minix && osname=minix
1643 if $test -d /MachTen; then
1645 if $test -x /sbin/version; then
1646 osvers=`/sbin/version | $awk '{print $2}' |
1647 $sed -e 's/[A-Za-z]$//'`
1648 elif $test -x /usr/etc/version; then
1649 osvers=`/usr/etc/version | $awk '{print $2}' |
1650 $sed -e 's/[A-Za-z]$//'`
1655 if $test -f $uname; then
1663 umips) osname=umips ;;
1666 [23]100) osname=mips ;;
1667 next*) osname=next ;;
1668 news*) osname=news ;;
1670 if $test -f /etc/kconfig; then
1672 if test "$lns" = "ln -s"; then
1674 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1676 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1685 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1687 'not found') osvers="$4"."$3" ;;
1688 '<3240'|'<>3240') osvers=3.2.0 ;;
1689 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1690 '=3250'|'>3250') osvers=3.2.5 ;;
1697 domainos) osname=apollo
1703 dynixptx*) osname=dynixptx
1706 freebsd) osname=freebsd
1708 genix) osname=genix ;;
1713 *.10.*) osvers=10 ;;
1730 netbsd*) osname=netbsd
1733 bsd386) osname=bsd386
1736 next*) osname=next ;;
1737 solaris) osname=solaris
1739 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1746 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1750 titanos) osname=titanos
1759 ultrix) osname=ultrix
1765 osvers=`echo "$3" | sed 's/^[vt]//'`
1767 hp*) osname=hp_osf1 ;;
1768 mips) osname=mips_osf1 ;;
1774 $2) case "$osname" in
1778 : svr4.x or possibly later
1788 if test -f /stand/boot ; then
1789 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1790 if test -n "$INITPROG" -a -f "$INITPROG"; then
1791 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1792 if test -n "$isesix"; then
1800 *) if test -f /etc/systemid; then
1802 set `echo $3 | $sed 's/\./ /g'` $4
1803 if $test -f sco_$1_$2_$3.sh; then
1805 elif $test -f sco_$1_$2.sh; then
1807 elif $test -f sco_$1.sh; then
1812 '') : Still unknown. Probably a generic Sys V.
1821 *) case "$osname" in
1822 '') : Still unknown. Probably a generic BSD.
1830 if test -f /vmunix -a -f news_os.sh; then
1831 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1832 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1835 $rm -f ../UU/kernel.what
1836 elif test -d c:/.; then
1843 : Now look for a hint file osname_osvers, unless one has been
1844 : specified already.
1847 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1848 : Also try without trailing minor version numbers.
1849 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1850 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1851 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1852 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1855 *) case "$osvers" in
1858 *) if $test -f $file.sh ; then
1860 elif $test -f $xfile.sh ; then
1862 elif $test -f $xxfile.sh ; then
1864 elif $test -f $xxxfile.sh ; then
1866 elif $test -f $xxxxfile.sh ; then
1868 elif $test -f "${osname}.sh" ; then
1879 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1885 You may give one or more space-separated answers, or "none" if appropriate.
1886 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1889 rp="Which of these apply, if any?"
1892 for file in $tans; do
1893 if $test -f $file.sh; then
1895 $cat $file.sh >> ../UU/config.sh
1896 elif $test X$tans = X -o X$tans = Xnone ; then
1899 : Give one chance to correct a possible typo.
1900 echo "$file.sh does not exist"
1902 rp="hint to use instead?"
1904 for file in $ans; do
1905 if $test -f "$file.sh"; then
1907 $cat $file.sh >> ../UU/config.sh
1908 elif $test X$ans = X -o X$ans = Xnone ; then
1911 echo "$file.sh does not exist -- ignored."
1918 : Remember our hint file for later.
1919 if $test -f "$file.sh" ; then
1931 echo "Fetching default answers from $config_sh..." >&4
1935 cp $config_sh config.sh 2>/dev/null
1945 test "$override" && . ./optdef.sh
1946 myuname="$newmyuname"
1948 : Restore computed paths
1949 for file in $loclist $trylist; do
1950 eval $file="\$_$file"
1955 Configure uses the operating system name and version to set some defaults.
1956 The default value is probably right if the name rings a bell. Otherwise,
1957 since spelling matters for me, either accept the default or answer "none"
1964 ''|' '|none) dflt=none ;;
1965 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1968 *) dflt="$osname" ;;
1970 rp="Operating system name?"
1974 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1980 ''|' '|none) dflt=none ;;
1981 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
1982 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
1984 ''|' ') dflt=none ;;
1989 *) dflt="$osvers" ;;
1991 rp="Operating system version?"
2000 : who configured the system
2001 cf_time=`$date 2>&1`
2002 cf_by=`(logname) 2>/dev/null`
2003 case "$cf_by" in "")
2004 cf_by=`(whoami) 2>/dev/null`
2005 case "$cf_by" in "")
2010 : determine the architecture name
2012 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2013 tarch=`arch`"-$osname"
2014 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2015 if uname -m > tmparch 2>&1 ; then
2016 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
2024 case "$myarchname" in
2027 echo "(Your architecture name used to be $myarchname.)"
2033 *) dflt="$archname";;
2035 rp='What is your architecture name'
2043 $define|true) afs=true ;;
2044 $undef|false) afs=false ;;
2045 *) if test -d /afs; then
2053 echo "AFS may be running... I'll be extra cautious then..." >&4
2055 echo "AFS does not seem to be running..." >&4
2058 : decide how portable to be. Allow command line overrides.
2059 case "$d_portable" in
2061 *) d_portable="$define" ;;
2064 : set up shell script to do ~ expansion
2070 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2073 if $test -f /bin/csh; then
2074 /bin/csh -f -c "glob \$1"
2079 name=\`$expr x\$1 : '..\([^/]*\)'\`
2080 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2081 if $test ! -d "\$dir"; then
2083 echo "\$me: can't locate home directory for: \$name" >&2
2088 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2104 : now set up to get a file name
2105 cat <<'EOSC' >getfile
2118 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2119 fn=`echo $fn | sed 's/(.*)//'`
2125 loc_file=`expr $fn : '.*:\(.*\)'`
2126 fn=`expr $fn : '\(.*\):.*'`
2134 */*) fullpath=true;;
2143 *e*) exp_file=true;;
2146 *p*) nopath_ok=true;;
2151 *d*) type='Directory';;
2152 *l*) type='Locate';;
2157 Locate) what='File';;
2162 case "$d_portable" in
2170 while test "$type"; do
2175 true) rp="$rp (~name ok)";;
2178 if test -f UU/getfile.ok && \
2179 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2198 value=`UU/filexp $ans`
2201 if test "$ans" != "$value"; then
2202 echo "(That expands to $value on this system.)"
2216 /*) value="$ansexp" ;;
2221 echo "I shall only accept a full path name, as in /bin/ls." >&4
2222 echo "Use a ! shell escape if you wish to check pathnames." >&4
2225 echo "Please give a full path name, starting with slash." >&4
2228 echo "Note that using ~name is ok provided it expands well." >&4
2241 if test -f "$ansexp"; then
2243 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2245 echo "($value is not a plain file, but that's ok.)"
2250 if test -d "$ansexp"; then
2255 if test -d "$ansexp"; then
2256 echo "(Looking for $loc_file in directory $value.)"
2257 value="$value/$loc_file"
2258 ansexp="$ansexp/$loc_file"
2260 if test -f "$ansexp"; then
2263 case "$nopath_ok" in
2264 true) case "$value" in
2266 *) echo "Assuming $value will be in people's path."
2282 if test "$fastread" = yes; then
2287 rp="$what $value doesn't exist. Use that name anyway?"
2308 : determine root of directory hierarchy where package will be installed.
2311 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2319 By default, $package will be installed in $dflt/bin, manual
2320 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2321 all installation directories. Typically set to /usr/local, but you
2322 may choose /usr if you wish to install $package among your system
2323 binaries. If you wish to have binaries under /bin but manual pages
2324 under /usr/local/man, that's ok: you will be prompted separately
2325 for each of the installation directories, the prefix being only used
2326 to set the defaults.
2330 rp='Installation prefix to use?'
2338 *) oldprefix="$prefix";;
2345 : set the prefixit variable, to compute a suitable default value
2346 prefixit='case "$3" in
2348 case "$oldprefix" in
2349 "") eval "$1=\"\$$2\"";;
2356 ""|" ") eval "$1=\"\$$2\"";;
2362 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2364 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2365 /*-$oldprefix/*|\~*-$oldprefix/*)
2366 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2367 *) eval "$1=\"\$$2\"";;
2371 : determine where private library files go
2372 : Usual default is /usr/local/lib/perl5. Also allow things like
2373 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2375 *perl*) set dflt privlib lib ;;
2376 *) set dflt privlib lib/$package ;;
2381 There are some auxiliary files for $package that need to be put into a
2382 private library directory that is accessible by everyone.
2386 rp='Pathname where the private library files will reside?'
2388 if $test "X$privlibexp" != "X$ansexp"; then
2392 privlibexp="$ansexp"
2396 Since you are running AFS, I need to distinguish the directory in which
2397 private files reside from the directory in which they are installed (and from
2398 which they are presumably copied to the former directory by occult means).
2401 case "$installprivlib" in
2402 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2403 *) dflt="$installprivlib";;
2406 rp='Where will private files be installed?'
2408 installprivlib="$ans"
2410 installprivlib="$privlibexp"
2413 : set the base revision
2416 : get the patchlevel
2418 echo "Getting the current patchlevel..." >&4
2419 if $test -r ../patchlevel.h;then
2420 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2421 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2426 echo "(You have $package $baserev patchlevel $patchlevel subversion $subversion.)"
2428 : set the prefixup variable, to restore leading tilda escape
2429 prefixup='case "$prefixexp" in
2431 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2434 : determine where public architecture dependent libraries go
2440 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2444 *) version=`LC_ALL=C;export LC_ALL;\
2445 echo $baserev $patchlevel $subversion | \
2446 $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
2447 dflt="$privlib/$archname/$version"
2451 *) dflt="$archlib";;
2455 $spackage contains architecture-dependent library files. If you are
2456 sharing libraries in a heterogeneous environment, you might store
2457 these files in a separate location. Otherwise, you can just include
2458 them with the rest of the public library files.
2462 rp='Where do you want to put the public architecture-dependent libraries?'
2465 archlibexp="$ansexp"
2470 Since you are running AFS, I need to distinguish the directory in which
2471 private files reside from the directory in which they are installed (and from
2472 which they are presumably copied to the former directory by occult means).
2475 case "$installarchlib" in
2476 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2477 *) dflt="$installarchlib";;
2480 rp='Where will architecture-dependent library files be installed?'
2482 installarchlib="$ans"
2484 installarchlib="$archlibexp"
2486 if $test X"$archlib" = X"$privlib"; then
2492 : set up the script used to warn in case of inconsistency
2496 echo "*** WHOA THERE!!! ***" >&4
2497 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2498 rp=" Keep the $hint value?"
2501 y) td=$was; tu=$was;;
2505 : function used to set $1 to $val
2506 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2508 $define$undef) . ./whoa; eval "$var=\$td";;
2509 $undef$define) . ./whoa; eval "$var=\$tu";;
2510 *) eval "$var=$val";;
2513 : make some quick guesses about what we are up against
2515 $echo $n "Hmm... $c"
2525 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2526 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2528 echo "Looks kind of like an OSF/1 system, but we'll see..."
2530 elif test `echo abc | tr a-z A-Z` = Abc ; then
2531 xxx=`./loc addbib blurfl $pth`
2532 if $test -f $xxx; then
2533 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2537 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2538 echo "Looks kind of like an extended USG system, but we'll see..."
2540 echo "Looks kind of like a USG system, but we'll see..."
2544 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2545 echo "Looks kind of like a BSD system, but we'll see..."
2549 echo "Looks kind of like a Version 7 system, but we'll see..."
2552 case "$eunicefix" in
2555 There is, however, a strange, musty smell in the air that reminds me of
2556 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2560 : it so happens the Eunice I know will not run shell scripts in Unix format
2564 echo "Congratulations. You aren't running Eunice."
2568 : Detect OS2. The p_ variable is set above in the Head.U unit.
2573 I have the feeling something is not exactly right, however...don't tell me...
2574 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2579 if test -f /xenix; then
2580 echo "Actually, this looks more like a XENIX system..."
2585 echo "It's not Xenix..."
2590 if test -f /venix; then
2591 echo "Actually, this looks more like a VENIX system..."
2598 echo "Nor is it Venix..."
2601 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2602 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2605 : see if setuid scripts can be secure
2608 Some kernels have a bug that prevents setuid #! scripts from being
2609 secure. Some sites have disabled setuid #! scripts because of this.
2611 First let's decide if your kernel supports secure setuid #! scripts.
2612 (If setuid #! scripts would be secure but have been disabled anyway,
2613 don't say that they are secure if asked.)
2618 if $test -d /dev/fd; then
2619 echo "#!$ls" >reflect
2620 chmod +x,u+s reflect
2621 ./reflect >flect 2>&1
2622 if $contains "/dev/fd" flect >/dev/null; then
2623 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2627 If you are not sure if they are secure, I can check but I'll need a
2628 username and password different from the one you are using right now.
2629 If you don't have such a username or don't want me to test, simply
2633 rp='Other username to test security of setuid scripts with?'
2638 case "$d_suidsafe" in
2639 '') echo "I'll assume setuid scripts are *not* secure." >&4
2642 echo "Well, the $hint value is *not* secure." >&4
2644 *) echo "Well, the $hint value *is* secure." >&4
2649 $rm -f reflect flect
2650 echo "#!$ls" >reflect
2651 chmod +x,u+s reflect
2654 echo '"su" will (probably) prompt you for '"$ans's password."
2655 su $ans -c './reflect >flect'
2656 if $contains "/dev/fd" flect >/dev/null; then
2657 echo "Okay, it looks like setuid scripts are secure." >&4
2660 echo "I don't think setuid scripts are secure." >&4
2665 rp='Does your kernel have *secure* setuid scripts?'
2668 [yY]*) val="$define";;
2673 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2674 echo "(That's for file descriptors, not floppy disks.)"
2680 $rm -f reflect flect
2682 : now see if they want to do setuid emulation
2685 case "$d_suidsafe" in
2688 echo "No need to emulate SUID scripts since they are secure here." >& 4
2692 Some systems have disabled setuid scripts, especially systems where
2693 setuid scripts cannot be secure. On systems where setuid scripts have
2694 been disabled, the setuid/setgid bits on scripts are currently
2695 useless. It is possible for $package to detect those bits and emulate
2696 setuid/setgid in a secure fashion. This emulation will only work if
2697 setuid scripts have been disabled in your kernel.
2701 "$define") dflt=y ;;
2704 rp="Do you want to do setuid/setgid emulation?"
2707 [yY]*) val="$define";;
2715 : determine where site specific libraries go.
2719 '') dflt="$privlib/site_perl" ;;
2720 *) dflt="$sitelib" ;;
2724 The installation process will also create a directory for
2725 site-specific extensions and modules. Some users find it convenient
2726 to place all local files in this directory rather than in the main
2727 distribution directory.
2731 rp='Pathname for the site-specific library files?'
2733 if $test "X$sitelibexp" != "X$ansexp"; then
2737 sitelibexp="$ansexp"
2741 Since you are running AFS, I need to distinguish the directory in which
2742 private files reside from the directory in which they are installed (and from
2743 which they are presumably copied to the former directory by occult means).
2746 case "$installsitelib" in
2747 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2748 *) dflt="$installsitelib";;
2751 rp='Where will private files be installed?'
2753 installsitelib="$ans"
2755 installsitelib="$sitelibexp"
2758 : determine where site specific architecture-dependent libraries go.
2759 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2760 : xxx is usuually lib/site_perl/archname.
2761 set sitearch sitearch none
2764 '') dflt="$sitelib/$archname" ;;
2765 *) dflt="$sitearch" ;;
2769 The installation process will also create a directory for
2770 architecture-dependent site-specific extensions and modules.
2774 rp='Pathname for the site-specific architecture-dependent library files?'
2776 if $test "X$sitearchexp" != "X$ansexp"; then
2780 sitearchexp="$ansexp"
2784 Since you are running AFS, I need to distinguish the directory in which
2785 private files reside from the directory in which they are installed (and from
2786 which they are presumably copied to the former directory by occult means).
2789 case "$installsitearch" in
2790 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2791 *) dflt="$installsitearch";;
2794 rp='Where will private files be installed?'
2796 installsitearch="$ans"
2798 installsitearch="$sitearchexp"
2801 : determine where old public architecture dependent libraries might be
2802 case "$oldarchlib" in
2803 '') case "$privlib" in
2805 *) dflt="$privlib/$archname"
2809 *) dflt="$oldarchlib"
2812 if $test ! -d "$dflt/auto"; then
2817 In 5.001, Perl stored architecture-dependent library files in a directory
2818 with a name such as $privlib/$archname,
2819 and this directory contained files from the standard extensions and
2820 files from any additional extensions you might have added. Starting
2821 with version 5.002, all the architecture-dependent standard extensions
2822 will go into a version-specific directory such as
2824 while locally-added extensions will go into
2827 If you wish Perl to continue to search the old architecture-dependent
2828 library for your local extensions, give the path to that directory.
2829 If you do not wish to use your old architecture-dependent library
2830 files, answer 'none'.
2834 rp='Directory for your old 5.001 architecture-dependent libraries?'
2837 oldarchlibexp="$ansexp"
2838 case "$oldarchlib" in
2839 ''|' ') val="$undef" ;;
2845 : determine where public executables go
2850 rp='Pathname where the public executables will reside?'
2852 if $test "X$ansexp" != "X$binexp"; then
2860 Since you are running AFS, I need to distinguish the directory in which
2861 executables reside from the directory in which they are installed (and from
2862 which they are presumably copied to the former directory by occult means).
2865 case "$installbin" in
2866 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2867 *) dflt="$installbin";;
2870 rp='Where will public executables be installed?'
2874 installbin="$binexp"
2877 : determine where manual pages are on this system
2881 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2882 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2883 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2884 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2885 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2886 sysman=`./loc . /usr/man/man1 $syspath`
2889 if $test -d "$sysman"; then
2890 echo "System manual is in $sysman." >&4
2892 echo "Could not find manual pages in source form." >&4
2895 : see what memory models we can support
2898 $cat >pdp11.c <<'EOP'
2907 cc -o pdp11 pdp11.c >/dev/null 2>&1
2908 if ./pdp11 2>/dev/null; then
2909 dflt='unsplit split'
2911 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2914 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2919 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2922 if $test -d /lib/large || $test -d /usr/lib/large; then
2925 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2934 Some systems have different model sizes. On most systems they are called
2935 small, medium, large, and huge. On the PDP11 they are called unsplit and
2936 split. If your system doesn't support different memory models, say "none".
2937 If you wish to force everything to one memory model, say "none" here and
2938 put the appropriate flags later when it asks you for other cc and ld flags.
2939 Venix systems may wish to put "none" and let the compiler figure things out.
2940 (In the following question multiple model names should be space separated.)
2943 rp="Which memory models are supported?"
2958 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2959 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2966 rp="What flag indicates separate I and D space?"
2974 *large*|*small*|*medium*|*huge*)
2981 rp="What flag indicates large model?"
2991 *huge*) case "$huge" in
2995 rp="What flag indicates huge model?"
3005 *medium*) case "$medium" in
3009 rp="What flag indicates medium model?"
3016 *) medium="$large";;
3019 *small*) case "$small" in
3023 rp="What flag indicates small model?"
3034 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3038 : see if we need a special compiler
3046 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3047 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3060 On some systems the default C compiler will not resolve multiple global
3061 references that happen to have the same name. On some such systems the "Mcc"
3062 command may be used to force these to be resolved. On other systems a "cc -M"
3063 command is required. (Note that the -M flag on other systems indicates a
3064 memory model to use!) If you have the Gnu C compiler, you might wish to use
3068 rp="What command will force resolution on this system?"
3076 rp="Use which C compiler?"
3081 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3082 $cat >gccvers.c <<EOM
3087 printf("%s\n", __VERSION__);
3089 printf("%s\n", "1");
3095 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3096 gccversion=`./gccvers`
3097 case "$gccversion" in
3098 '') echo "You are not using GNU cc." ;;
3099 *) echo "You are using GNU cc $gccversion." ;;
3103 echo "*** WHOA THERE!!! ***" >&4
3104 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3105 case "$knowitall" in
3107 echo " You'd better start hunting for one and let me know about it." >&4
3113 case "$gccversion" in
3114 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3117 : What should the include directory be ?
3119 $echo $n "Hmm... $c"
3123 if $test -f /bin/mips && /bin/mips; then
3124 echo "Looks like a MIPS system..."
3125 $cat >usr.c <<'EOCP'
3126 #ifdef SYSTYPE_BSD43
3130 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3131 dflt='/bsd43/usr/include'
3135 mips_type='System V'
3137 $rm -f usr.c usr.out
3138 echo "and you're compiling with the $mips_type compiler and libraries."
3142 echo "Doesn't look like a MIPS system."
3153 case "$xxx_prompt" in
3155 rp='Where are the include files you want to use?'
3163 : Set private lib path
3166 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3171 '') dlist="$loclibpth $plibpth $glibpth";;
3172 *) dlist="$libpth";;
3175 : Now check and see which directories actually exist, avoiding duplicates
3179 if $test -d $xxx; then
3182 *) libpth="$libpth $xxx";;
3188 Some systems have incompatible or broken versions of libraries. Among
3189 the directories listed in the question below, please remove any you
3190 know not to be holding relevant libraries, and add any that are needed.
3191 Say "none" for none.
3202 rp="Directories to use for library searches?"
3209 : compute shared library extension
3212 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3222 On some systems, shared libraries may be available. Answer 'none' if
3223 you want to suppress searching of shared libraries for the remaining
3224 of this configuration.
3227 rp='What is the file extension used for shared libraries?'
3231 : Looking for optional libraries
3233 echo "Checking for optional libraries..." >&4
3238 case "$libswanted" in
3239 '') libswanted='c_s';;
3241 for thislib in $libswanted; do
3243 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3244 echo "Found -l$thislib (shared)."
3247 *) dflt="$dflt -l$thislib";;
3249 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3250 echo "Found -l$thislib (shared)."
3253 *) dflt="$dflt -l$thislib";;
3255 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
3256 echo "Found -l$thislib."
3259 *) dflt="$dflt -l$thislib";;
3261 elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
3262 echo "Found -l$thislib."
3265 *) dflt="$dflt -l$thislib";;
3267 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
3268 echo "Found -l${thislib}_s."
3271 *) dflt="$dflt -l${thislib}_s";;
3273 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
3274 echo "Found -l$thislib."
3277 *) dflt="$dflt -l$thislib";;
3280 echo "No -l$thislib."
3291 ' '|'') dflt='none';;
3296 Some versions of Unix support shared libraries, which make executables smaller
3297 but make load time slightly longer.
3299 On some systems, mostly System V Release 3's, the shared library is included
3300 by putting the option "-lc_s" as the last thing on the cc command line when
3301 linking. Other systems use shared libraries by default. There may be other
3302 libraries needed to compile $package on your machine as well. If your system
3303 needs the "-lc_s" option, include it here. Include any other special libraries
3304 here as well. Say "none" for none.
3308 rp="Any additional libraries?"
3315 : see how we invoke the C preprocessor
3317 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3318 cat <<'EOT' >testcpp.c
3324 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3326 wrapper=`pwd`/cppstdin
3330 if $test "X$cppstdin" != "X" && \
3331 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3332 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3334 echo "You used to use $cppstdin $cppminus so we'll use that again."
3336 '') echo "But let's see if we can live without a wrapper..." ;;
3338 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3339 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3341 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3344 echo "(However, $cpprun $cpplast does not work, let's see...)"
3352 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3359 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3360 $cc -E <testcpp.c >testcpp.out 2>&1; \
3361 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3362 echo "Yup, it does."
3365 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3366 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3367 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3368 echo "Yup, it does."
3371 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3372 $cc -P <testcpp.c >testcpp.out 2>&1; \
3373 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3374 echo "Yipee, that works!"
3377 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3378 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3379 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3380 echo "At long last!"
3383 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3384 $cpp <testcpp.c >testcpp.out 2>&1; \
3385 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3389 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3390 $cpp - <testcpp.c >testcpp.out 2>&1; \
3391 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3392 echo "Hooray, it works! I was beginning to wonder."
3395 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3396 $wrapper <testcpp.c >testcpp.out 2>&1; \
3397 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3403 rp="No dice. I can't find a C preprocessor. Name one:"
3407 $x_cpp <testcpp.c >testcpp.out 2>&1
3408 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3409 echo "OK, that will do." >&4
3411 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3426 echo "Perhaps can we force $cc -E using a wrapper..."
3427 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3428 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3434 echo "Nope, we'll have to live without it..."
3449 *) $rm -f $wrapper;;
3451 $rm -f testcpp.c testcpp.out
3453 : determine optimize, if desired, or use for debug flag also
3457 *) dflt="$optimize";;
3461 Some C compilers have problems with their optimizers. By default, $package
3462 compiles with the -O flag to use the optimizer. Alternately, you might want
3463 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3464 systems). Either flag can be specified here. To use neither flag, specify
3468 rp="What optimizer/debugger flag should be used?"
3472 'none') optimize=" ";;
3476 : We will not override a previous value, but we might want to
3477 : augment a hint file
3480 case "$gccversion" in
3481 1*) dflt='-fpcc-struct-return' ;;
3484 *-g*) dflt="$dflt -DDEBUGGING";;
3486 case "$gccversion" in
3487 2*) if test -d /etc/conf/kconfig.d &&
3488 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3497 case "$mips_type" in
3498 *BSD*|'') inclwanted="$locincpth $usrinc";;
3499 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3501 for thisincl in $inclwanted; do
3502 if $test -d $thisincl; then
3503 if $test x$thisincl != x$usrinc; then
3506 *) dflt="$dflt -I$thisincl";;
3512 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3514 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3522 *) dflt="$dflt -D$2";;
3527 set signal.h __LANGUAGE_C__; eval $inctest
3529 set signal.h LANGUAGE_C; eval $inctest
3531 set signal.h NO_PROTOTYPE; eval $inctest
3532 set signal.h _NO_PROTO; eval $inctest
3535 none|recommended) dflt="$ccflags $dflt" ;;
3536 *) dflt="$ccflags";;
3544 Your C compiler may want other flags. For this question you should include
3545 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3546 but you should NOT include libraries or ld flags like -lwhatever. If you
3547 want $package to honor its debug switch, you should include -DDEBUGGING here.
3548 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3549 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3551 To use no flags, specify the word "none".
3557 rp="Any additional cc flags?"
3564 : the following weeds options from ccflags that are of no interest to cpp
3566 case "$gccversion" in
3567 1*) cppflags="$cppflags -D__GNUC__"
3569 case "$mips_type" in
3571 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3577 echo "Let me guess what the preprocessor flags are..." >&4
3591 *) ftry="$previous $flag";;
3593 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3594 >cpp1.out 2>/dev/null && \
3595 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3596 >cpp2.out 2>/dev/null && \
3597 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3598 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3600 cppflags="$cppflags $ftry"
3610 *-*) echo "They appear to be: $cppflags";;
3612 $rm -f cpp.c cpp?.out
3616 : flags used in final linking phase
3619 '') if ./venix; then
3625 *-posix*) dflt="$dflt -posix" ;;
3628 *) dflt="$ldflags";;
3631 : Try to guess additional flags to pick up local libraries.
3632 for thislibdir in $libpth; do
3633 case " $loclibpth " in
3636 *"-L$thislibdir "*) ;;
3637 *) dflt="$dflt -L$thislibdir" ;;
3649 Your C linker may need flags. For this question you should
3650 include -L/whatever and any other flags used by the C linker, but you
3651 should NOT include libraries like -lwhatever.
3653 Make sure you include the appropriate -L/path flags if your C linker
3654 does not normally search all of the directories you specified above,
3657 To use no flags, specify the word "none".
3661 rp="Any additional ld flags (NOT including libraries)?"
3667 rmlist="$rmlist pdp11"
3671 echo "Checking your choice of C compiler and flags for coherency..." >&4
3672 set X $cc $optimize $ccflags $ldflags try.c -o try
3675 I've tried to compile and run a simple program with:
3680 and I got the following output:
3683 $cat > try.c <<'EOF'
3688 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
3689 if sh -c './try' >>try.msg 2>&1; then
3692 echo "The program compiled OK, but exited with status $?." >>try.msg
3693 rp="You have a problem. Shall I abort Configure"
3697 echo "I can't compile the test program." >>try.msg
3698 rp="You have a BIG problem. Shall I abort Configure"
3704 case "$knowitall" in
3706 echo "(The supplied flags might be incorrect with this C compiler.)"
3714 *) echo "Ok. Stopping Configure." >&4
3719 n) echo "OK, that should do.";;
3721 $rm -f try try.* core
3724 echo "Checking for GNU C Library..." >&4
3725 cat >gnulibc.c <<EOM
3729 return __libc_main();
3732 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3733 ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3735 echo "You are using the GNU C Library"
3738 echo "You are not using the GNU C Library"
3744 : see if nm is to be used to determine whether a symbol is defined or not
3747 case "$d_gnulibc" in
3752 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3753 if $test $dflt -gt 20; then
3770 I can use 'nm' to extract the symbols from your C libraries. This is a time
3771 consuming task which may generate huge output on the disk (up to 3 megabytes)
3772 but that should make the symbols extraction faster. The alternative is to skip
3773 the 'nm' extraction part and to compile a small test program instead to
3774 determine whether each symbol is present. If you have a fast C compiler and/or
3775 if your 'nm' output cannot be parsed, this may be the best solution.
3776 You shouldn't let me use 'nm' if you have the GNU C Library.
3779 rp='Shall I use nm to extract C symbols from the libraries?'
3791 : nm options which may be necessary
3793 '') if $test -f /mach_boot; then
3795 elif $test -d /usr/ccs/lib; then
3797 elif $test -f /dgux; then
3804 : nm options which may be necessary for shared libraries but illegal
3805 : for archive libraries. Thank you, Linux.
3806 case "$nm_so_opt" in
3807 '') case "$myuname" in
3809 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3810 nm_so_opt='--dynamic'
3819 : get list of predefined functions in a handy place
3824 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
3831 *) for thislib in $libs; do
3834 : Handle C library specially below.
3837 thislib=`echo $thislib | $sed -e 's/^-l//'`
3838 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3840 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3842 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
3844 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3846 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3848 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
3853 libnames="$libnames $try"
3855 *) libnames="$libnames $thislib" ;;
3864 for xxx in $libpth; do
3865 $test -r $1 || set $xxx/libc.$so
3866 : The messy sed command sorts on library version numbers.
3868 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3869 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3871 s/[0-9][0-9]*/0000&/g
3872 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3875 sort | $sed -e 's/^.* //'`
3878 $test -r $1 || set /usr/ccs/lib/libc.$so
3879 $test -r $1 || set /lib/libsys_s.a
3885 if $test -r "$1"; then
3886 echo "Your (shared) C library seems to be in $1."
3888 elif $test -r /lib/libc && $test -r /lib/clib; then
3889 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3891 libc='/lib/clib /lib/libc'
3892 if $test -r /lib/syslib; then
3893 echo "(Your math library is in /lib/syslib.)"
3894 libc="$libc /lib/syslib"
3896 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3897 echo "Your C library seems to be in $libc, as you said before."
3898 elif $test -r $incpath/usr/lib/libc.a; then
3899 libc=$incpath/usr/lib/libc.a;
3900 echo "Your C library seems to be in $libc. That's fine."
3901 elif $test -r /lib/libc.a; then
3903 echo "Your C library seems to be in $libc. You're normal."
3905 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
3907 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3908 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3909 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3911 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3913 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3916 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
3918 if $test -r "$tans"; then
3919 echo "Your C library seems to be in $tans, of all places."
3925 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3929 If the guess above is wrong (which it might be if you're using a strange
3930 compiler, or your machine supports multiple models), you can override it here.
3935 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
3937 I can't seem to find your C library. I've looked in the following places:
3940 $sed 's/^/ /' libpath
3943 None of these seems to contain your C library. I need to get its name...
3948 rp='Where is your C library?'
3953 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
3954 set X `cat libnames`
3957 case $# in 1) xxx=file; esac
3958 echo "Extracting names from the following $xxx for later perusal:" >&4
3960 $sed 's/^/ /' libnames >&4
3962 $echo $n "This may take a while...$c" >&4
3964 : Linux may need the special Dynamic option to nm for shared libraries.
3965 : In general, this is stored in the nm_so_opt variable.
3966 : Unfortunately, that option may be fatal on non-shared libraries.
3967 for nm_libs_ext in $*; do
3968 case $nm_libs_ext in
3969 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
3970 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
3975 $grep fprintf libc.tmp > libc.ptf
3976 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
3977 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
3979 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
3981 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3983 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
3985 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3987 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
3989 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3991 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
3993 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3995 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
3997 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3999 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4001 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4003 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4004 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4006 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4008 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4010 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4012 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4014 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4016 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4018 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4020 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4022 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4025 nm -p $* 2>/dev/null >libc.tmp
4026 $grep fprintf libc.tmp > libc.ptf
4027 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4028 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4034 echo "nm didn't seem to work right. Trying ar instead..." >&4
4036 if ar t $libc > libc.tmp; then
4037 for thisname in $libnames; do
4038 ar t $thisname >>libc.tmp
4040 $sed -e 's/\.o$//' < libc.tmp > libc.list
4043 echo "ar didn't seem to work right." >&4
4044 echo "Maybe this is a Cray...trying bld instead..." >&4
4045 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4047 for thisname in $libnames; do
4049 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4050 ar t $thisname >>libc.tmp
4054 echo "That didn't work either. Giving up." >&4
4061 if $test -f /lib/syscalls.exp; then
4063 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4064 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4068 $rm -f libnames libpath
4070 : Define several unixisms. Hints files or command line options
4071 : can be used to override them.
4084 : Which makefile gets called first. This is used by make depend.
4085 case "$firstmakefile" in
4086 '') firstmakefile='makefile';;
4089 : determine filename position in cpp output
4091 echo "Computing filename position in cpp output for #include directives..." >&4
4092 echo '#include <stdio.h>' > foo.c
4095 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4096 $grep '^[ ]*#.*stdio\.h' | \
4097 while read cline; do
4100 while $test \$# -gt 0; do
4101 if $test -r \`echo \$1 | $tr -d '"'\`; then
4106 pos=\`expr \$pos + 1\`
4118 *) pos="${fieldn}th";;
4120 echo "Your cpp writes the filename in the $pos field of the line."
4122 : locate header file
4127 if test -f $usrinc/\$wanted; then
4128 echo "$usrinc/\$wanted"
4131 awkprg='{ print \$$fieldn }'
4132 echo "#include <\$wanted>" > foo\$\$.c
4133 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4134 $grep "^[ ]*#.*\$wanted" | \
4135 while read cline; do
4136 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4138 */\$wanted) echo "\$name"; exit 0;;
4149 : define an alternate in-header-list? function
4150 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4151 cont=true; xxf="echo \"<\$1> found.\" >&4";
4152 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4153 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4155 case $# in 4) instead=instead;; *) instead="at last";; esac;
4156 while $test "$cont"; do
4158 var=$2; eval "was=\$$2";
4159 if $test "$xxx" && $test -r "$xxx";
4161 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4164 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4165 set $yyy; shift; shift; yyy=$@;
4166 case $# in 0) cont="";;
4167 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4168 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4169 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4170 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4174 do set $yyy; var=$2; eval "was=\$$2";
4175 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4176 set $yyy; shift; shift; yyy=$@;
4179 : see if dld is available
4183 : is a C symbol defined?
4186 -v) tf=libc.tmp; tc=""; tdc="";;
4187 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4188 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4191 case "$reuseval-$4" in
4193 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4199 if $contains $tlook $tf >/dev/null 2>&1;
4204 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4205 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4213 $define) tval=true;;
4219 : define an is-in-libc? function
4220 inlibc='echo " "; td=$define; tu=$undef;
4221 sym=$1; var=$2; eval "was=\$$2";
4223 case "$reuseval$was" in
4233 echo "$sym() found." >&4;
4234 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4236 echo "$sym() NOT found." >&4;
4237 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4241 $define) echo "$sym() found." >&4;;
4242 *) echo "$sym() NOT found." >&4;;
4246 : see if dlopen exists
4253 : determine which dynamic loading, if any, to compile in
4255 dldir="ext/DynaLoader"
4268 $define) dflt='y' ;;
4271 $define) dflt='y' ;;
4273 : Does a dl_xxx.xs file exist for this operating system
4274 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4277 rp="Do you wish to use dynamic loading?"
4284 if $test -f ../$dldir/dl_${osname}.xs ; then
4285 dflt="$dldir/dl_${osname}.xs"
4286 elif $test "$d_dlopen" = "$define" ; then
4287 dflt="$dldir/dl_dlopen.xs"
4288 elif $test "$i_dld" = "$define" ; then
4289 dflt="$dldir/dl_dld.xs"
4294 *) dflt="$dldir/$dlsrc"
4297 echo "The following dynamic loading files are available:"
4298 : Can not go over to $dldir because getfile has path hard-coded in.
4299 cd ..; ls -C $dldir/dl*.xs; cd UU
4300 rp="Source file to use for dynamic loading"
4305 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4309 Some systems may require passing special flags to $cc -c to
4310 compile modules that will be used to create a shared library.
4311 To use no flags, say "none".
4314 case "$cccdlflags" in
4315 '') case "$gccversion" in
4316 '') case "$osname" in
4318 next) dflt='none' ;;
4319 solaris|svr4*|esix*) dflt='-Kpic' ;;
4320 irix*) dflt='-KPIC' ;;
4321 sunos) dflt='-pic' ;;
4326 *) dflt="$cccdlflags" ;;
4328 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4331 none) cccdlflags=' ' ;;
4332 *) cccdlflags="$ans" ;;
4337 Some systems use ld to create libraries that can be dynamically loaded,
4338 while other systems (such as those using ELF) use $cc.
4342 '') $cat >try.c <<'EOM'
4343 /* Test for whether ELF binaries are produced */
4348 int i = open("a.out",O_RDONLY);
4351 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4352 exit(0); /* succeed (yes, it's ELF) */
4357 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4359 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4363 echo "I'll use ld to build dynamic libraries."
4372 rp="What command should be used to create dynamic libraries?"
4378 Some systems may require passing special flags to $ld to create a
4379 library that can be dynamically loaded. If your ld flags include
4380 -L/other/path options to locate libraries outside your loader's normal
4381 search path, you may need to specify those -L options here as well. To
4382 use no flags, say "none".
4385 case "$lddlflags" in
4386 '') case "$osname" in
4388 linux|irix*) dflt='-shared' ;;
4389 next) dflt='none' ;;
4390 solaris) dflt='-G' ;;
4391 sunos) dflt='-assert nodefinitions' ;;
4392 svr4*|esix*) dflt="-G $ldflags" ;;
4396 *) dflt="$lddlflags" ;;
4399 : Try to guess additional flags to pick up local libraries.
4400 for thisflag in $ldflags; do
4405 *) dflt="$dflt $thisflag" ;;
4415 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4418 none) lddlflags=' ' ;;
4419 *) lddlflags="$ans" ;;
4424 Some systems may require passing special flags to $cc to indicate that
4425 the resulting executable will use dynamic linking. To use no flags,
4429 case "$ccdlflags" in
4430 '') case "$osname" in
4431 hpux) dflt='-Wl,-E' ;;
4432 linux) dflt='-rdynamic' ;;
4433 next) dflt='none' ;;
4434 sunos) dflt='none' ;;
4437 *) dflt="$ccdlflags" ;;
4439 rp="Any special flags to pass to $cc to use dynamic loading?"
4442 none) ccdlflags=' ' ;;
4443 *) ccdlflags="$ans" ;;
4457 # No dynamic loading being used, so don't bother even to prompt.
4460 *) case "$useshrplib" in
4461 '') case "$osname" in
4462 svr4|dgux|dynixptx|esix|powerux)
4464 also='Building a shared libperl is required for dynamic loading to work on your system.'
4469 also='Building a shared libperl is needed for MAB support.'
4477 also='Building a shared libperl will definitely not work on SunOS 4.'
4491 The perl executable is normally obtained by linking perlmain.c with
4492 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4493 any other libraries needed on this system (such as -lm, etc.). Since
4494 your system supports dynamic loading, it is probably possible to build
4495 a shared libperl.$so. If you will have more than one executable linked
4496 to libperl.$so, this will significantly reduce the size of each
4497 executable, but it may have a noticeable affect on performance. The
4498 default is probably sensible for your system.
4502 rp="Build a shared libperl.$so (y/n)"
4507 # Why does next4 have to be so different?
4508 case "${osname}${osvers}" in
4509 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4510 *) xxx='LD_LIBRARY_PATH' ;;
4514 To build perl, you must add the current working directory to your
4515 $xxx environtment variable before running make. You can do
4517 $xxx=\`pwd\`; export $xxx
4518 for Bourne-style shells, or
4520 for Csh-style shells. You *MUST* do this before running make.
4524 *) useshrplib='false' ;;
4529 case "$useshrplib" in
4533 # Figure out a good name for libperl.so. Since it gets stored in
4534 # a version-specific architecture-dependent library, the version
4535 # number isn't really that important, except for making cc/ld happy.
4537 # A name such as libperl.so.3.1
4538 majmin="libperl.$so.$patchlevel.$subversion"
4539 # A name such as libperl.so.301
4540 majonly=`echo $patchlevel $subversion |
4541 $awk '{printf "%d%02d", $1, $2}'`
4542 majonly=libperl.$so.$majonly
4543 # I'd prefer to keep the os-specific stuff here to a minimum, and
4544 # rely on figuring it out from the naming of libc.
4545 case "${osname}${osvers}" in
4548 # XXX How handle the --version stuff for MAB?
4550 linux*) # ld won't link with a bare -lperl otherwise.
4553 *) # Try to guess based on whether libc has major.minor.
4555 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4556 *libc.$so.[0-9]*) dflt=$majonly ;;
4557 *) dflt=libperl.$so ;;
4567 I need to select a good name for the shared libperl. If your system uses
4568 library names with major and minor numbers, then you might want something
4569 like $majmin. Alternatively, if your system uses a single version
4570 number for shared libraries, then you might want to use $majonly.
4571 Or, your system might be quite happy with a simple libperl.$so.
4573 Since the shared libperl will get installed into a version-specific
4574 architecture-dependent directory, the version number of the shared perl
4575 library probably isn't important, so the default should be o.k.
4578 rp='What name do you want to give to the shared libperl?'
4581 echo "Ok, I'll use $libperl"
4584 libperl="libperl${lib_ext}"
4588 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4592 WARNING: Use of the shrpdir variable for the installation location of
4593 the shared $libperl is not supported. It was never documented and
4594 will not work in this version. Let me (doughera@lafcol.lafayette.edu)
4595 know of any problems this may cause.
4601 But your current setting of $shrpdir is
4602 the default anyway, so it's harmless.
4607 Further, your current attempted setting of $shrpdir
4608 conflicts with the value of $archlibexp/CORE
4609 that installperl will use.
4616 # How will the perl executable find the installed shared $libperl?
4617 # Add $xxx to ccdlflags.
4618 # If we can't figure out a command-line option, use $shrpenv to
4619 # set env LD_RUN_PATH. The main perl makefile uses this.
4620 shrpdir=$archlibexp/CORE
4623 if "$useshrplib"; then
4629 xxx="-Wl,-rpath,$shrpdir"
4632 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
4637 *) ccdlflags="$ccdlflags $xxx"
4640 Adding $xxx to the flags
4641 passed to $ld so that the perl executable will find the
4642 installed shared $libperl.
4648 # Respect a hint or command-line value.
4650 '') shrpenv="$tmp_shrpenv" ;;
4653 : determine where manual pages go
4654 set man1dir man1dir none
4658 $spackage has manual pages available in source form.
4662 echo "However, you don't have nroff, so they're probably useless to you."
4664 '') man1dir="none";;
4667 echo "If you don't want the manual sources installed, answer 'none'."
4672 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
4673 lookpath="$lookpath $prefixexp/man/p_man/man1"
4674 lookpath="$lookpath $prefixexp/man/u_man/man1"
4675 lookpath="$lookpath $prefixexp/man/man.1"
4676 : If prefix contains 'perl' then we want to keep the man pages
4677 : under the prefix directory. Otherwise, look in a variety of
4678 : other possible places. This is debatable, but probably a
4679 : good compromise. Well, apparently not.
4680 : Experience has shown people expect man1dir to be under prefix,
4681 : so we now always put it there. Users who want other behavior
4682 : can answer interactively or use a command line option.
4683 : Does user have System V-style man paths.
4685 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
4686 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
4696 rp="Where do the main $spackage manual pages (source) go?"
4698 if $test "X$man1direxp" != "X$ansexp"; then
4702 man1direxp="$ansexp"
4710 Since you are running AFS, I need to distinguish the directory in which
4711 manual pages reside from the directory in which they are installed (and from
4712 which they are presumably copied to the former directory by occult means).
4715 case "$installman1dir" in
4716 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
4717 *) dflt="$installman1dir";;
4720 rp='Where will man pages be installed?'
4722 installman1dir="$ans"
4724 installman1dir="$man1direxp"
4727 : What suffix to use on installed man pages
4734 rp="What suffix should be used for the main $spackage man pages?"
4736 '') case "$man1dir" in
4750 *) dflt="$man1ext";;
4757 : see if we can have long filenames
4759 rmlist="$rmlist /tmp/cf$$"
4760 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
4761 first=123456789abcdef
4762 second=/tmp/cf$$/$first
4763 $rm -f $first $second
4764 if (echo hi >$first) 2>/dev/null; then
4765 if $test -f 123456789abcde; then
4766 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
4769 if (echo hi >$second) 2>/dev/null; then
4770 if $test -f /tmp/cf$$/123456789abcde; then
4772 That's peculiar... You can have filenames longer than 14 characters, but only
4773 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
4774 I shall consider your system cannot support long filenames at all.
4778 echo 'You can have filenames longer than 14 characters.' >&4
4783 How confusing! Some of your filesystems are sane enough to allow filenames
4784 longer than 14 characters but some others like /tmp can't even think about them.
4785 So, for now on, I shall assume your kernel does not allow them at all.
4792 You can't have filenames longer than 14 chars. You can't even think about them!
4798 $rm -rf /tmp/cf$$ 123456789abcde*
4800 : determine where library module manual pages go
4801 set man3dir man3dir none
4805 $spackage has manual pages for many of the library modules.
4811 However, you don't have nroff, so they're probably useless to you.
4812 You can use the supplied perldoc script instead.
4815 '') man3dir="none";;
4819 case "$d_flexfnam" in
4822 However, your system can't handle the long file names like File::Basename.3.
4823 You can use the supplied perldoc script instead.
4826 '') man3dir="none";;
4830 echo "If you don't want the manual sources installed, answer 'none'."
4831 : We dont use /usr/local/man/man3 because some man programs will
4832 : only show the /usr/local/man/man3 contents, and not the system ones,
4833 : thus man less will show the perl module less.pm, but not the system
4834 : less command. We might also conflict with TCL man pages.
4835 : However, something like /opt/perl/man/man3 is fine.
4837 '') case "$prefix" in
4838 *perl*) dflt=`echo $man1dir |
4839 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
4840 *) dflt="$privlib/man/man3" ;;
4844 *) dflt="$man3dir" ;;
4849 rp="Where do the $spackage library man pages (source) go?"
4851 if test "X$man3direxp" != "X$ansexp"; then
4856 man3direxp="$ansexp"
4864 Since you are running AFS, I need to distinguish the directory in which
4865 manual pages reside from the directory in which they are installed (and from
4866 which they are presumably copied to the former directory by occult means).
4869 case "$installman3dir" in
4870 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
4871 *) dflt="$installman3dir";;
4874 rp='Where will man pages be installed?'
4876 installman3dir="$ans"
4878 installman3dir="$man3direxp"
4881 : What suffix to use on installed man pages
4888 rp="What suffix should be used for the $spackage library man pages?"
4890 '') case "$man3dir" in
4904 *) dflt="$man3ext";;
4911 : see if we have to deal with yellow pages, now NIS.
4912 if $test -d /usr/etc/yp || $test -d /etc/yp; then
4913 if $test -f /usr/etc/nibindd; then
4915 echo "I'm fairly confident you're on a NeXT."
4917 rp='Do you get the hosts file via NetInfo?'
4926 y*) hostcat='nidump hosts .';;
4927 *) case "$hostcat" in
4928 nidump*) hostcat='';;
4938 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
4946 rp='Are you getting the hosts file via yellow pages?'
4949 y*) hostcat='ypcat hosts';;
4950 *) hostcat='cat /etc/hosts';;
4956 : now get the host name
4958 echo "Figuring out host name..." >&4
4959 case "$myhostname" in
4961 echo 'Maybe "hostname" will work...'
4962 if tans=`sh -c hostname 2>&1` ; then
4970 if $test "$cont"; then
4972 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
4973 if tans=`cat /etc/systemid 2>&1` ; then
4975 phostname='cat /etc/systemid'
4976 echo "Whadyaknow. Xenix always was a bit strange..."
4979 elif $test -r /etc/systemid; then
4980 echo "(What is a non-Xenix system doing with /etc/systemid?)"
4983 if $test "$cont"; then
4984 echo 'No, maybe "uuname -l" will work...'
4985 if tans=`sh -c 'uuname -l' 2>&1` ; then
4987 phostname='uuname -l'
4989 echo 'Strange. Maybe "uname -n" will work...'
4990 if tans=`sh -c 'uname -n' 2>&1` ; then
4992 phostname='uname -n'
4994 echo 'Oh well, maybe I can mine it out of whoami.h...'
4995 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
4996 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
4997 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
4999 case "$myhostname" in
5000 '') echo "Does this machine have an identity crisis or something?"
5003 echo "Well, you said $myhostname before..."
5004 phostname='echo $myhostname';;
5010 : you do not want to know about this
5015 if $test "$myhostname" ; then
5017 rp='Your host name appears to be "'$myhostname'".'" Right?"
5025 : bad guess or no guess
5026 while $test "X$myhostname" = X ; do
5028 rp="Please type the (one word) name of your host:"
5033 : translate upper to lower if necessary
5034 case "$myhostname" in
5036 echo "(Normalizing case in your host name)"
5037 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5041 case "$myhostname" in
5043 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5044 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5045 echo "(Trimming domain name from host name--host name is now $myhostname)"
5047 *) case "$mydomain" in
5050 : If we use NIS, try ypmatch.
5051 : Is there some reason why this was not done before?
5052 test "X$hostcat" = "Xypcat hosts" &&
5053 ypmatch "$myhostname" hosts 2>/dev/null |\
5054 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5057 : Extract only the relevant hosts, reducing file size,
5058 : remove comments, insert trailing space for later use.
5059 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5060 /[ ]$myhostname[ . ]/p" > hosts
5063 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5064 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5065 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5066 hosts | $sort | $uniq | \
5067 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5068 case `$echo X$dflt` in
5069 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5072 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5077 tans=`./loc resolv.conf X /etc /usr/etc`
5078 if $test -f "$tans"; then
5079 echo "(Attempting domain name extraction from $tans)"
5080 : Why was there an Egrep here, when Sed works?
5081 : Look for either a search or a domain directive.
5082 dflt=.`$sed -n -e 's/^search[ ]*\(.*\)/\1/p' $tans \
5083 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5085 .) dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \
5086 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5093 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5094 dflt=.`sh -c domainname 2>/dev/null`
5097 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5102 .) echo "(Lost all hope -- silly guess then)"
5108 *) dflt="$mydomain";;
5112 rp="What is your domain name?"
5122 : translate upper to lower if necessary
5125 echo "(Normalizing case in your domain name)"
5126 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5130 : a little sanity check here
5131 case "$phostname" in
5134 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5135 $myhostname$mydomain|$myhostname) ;;
5137 case "$phostname" in
5139 echo "(That doesn't agree with your whoami.h file, by the way.)"
5142 echo "(That doesn't agree with your $phostname command, by the way.)"
5152 I need to get your e-mail address in Internet format if possible, i.e.
5153 something like user@host.domain. Please answer accurately since I have
5154 no easy means to double check it. The default value provided below
5155 is most probably close to the reality but may not be valid from outside
5156 your organization...
5160 while test "$cont"; do
5162 '') dflt="$cf_by@$myhostname$mydomain";;
5163 *) dflt="$cf_email";;
5165 rp='What is your e-mail address?'
5171 rp='Address does not look like an Internet one. Use it anyway?'
5187 If you or somebody else will be maintaining perl at your site, please
5188 fill in the correct e-mail address here so that they may be contacted
5189 if necessary. Currently, the "perlbug" program included with perl
5190 will send mail to this address in addition to perlbug@perl.com. You may
5191 enter "none" for no administrator.
5194 case "$perladmin" in
5195 '') dflt="$cf_email";;
5196 *) dflt="$perladmin";;
5198 rp='Perl administrator e-mail address'
5202 : determine where public executable scripts go
5203 set scriptdir scriptdir
5205 case "$scriptdir" in
5208 : guess some guesses
5209 $test -d /usr/share/scripts && dflt=/usr/share/scripts
5210 $test -d /usr/share/bin && dflt=/usr/share/bin
5211 $test -d /usr/local/script && dflt=/usr/local/script
5212 $test -d $prefixexp/script && dflt=$prefixexp/script
5216 *) dflt="$scriptdir"
5221 Some installations have a separate directory just for executable scripts so
5222 that they can mount it across multiple architectures but keep the scripts in
5223 one spot. You might, for example, have a subdirectory of /usr/share for this.
5224 Or you might just lump your scripts in with all your other executables.
5228 rp='Where do you keep publicly executable scripts?'
5230 if $test "X$ansexp" != "X$scriptdirexp"; then
5234 scriptdirexp="$ansexp"
5238 Since you are running AFS, I need to distinguish the directory in which
5239 scripts reside from the directory in which they are installed (and from
5240 which they are presumably copied to the former directory by occult means).
5243 case "$installscript" in
5244 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
5245 *) dflt="$installscript";;
5248 rp='Where will public scripts be installed?'
5250 installscript="$ans"
5252 installscript="$scriptdirexp"
5255 : determine perl absolute location
5257 '') perlpath=$binexp/perl ;;
5260 : figure out how to guarantee perl startup
5261 case "$startperl" in
5263 case "$sharpbang" in
5267 I can use the #! construct to start perl on your system. This will
5268 make startup of perl scripts faster, but may cause problems if you
5269 want to share those scripts and perl is not in a standard place
5270 ($perlpath) on all your platforms. The alternative is to force
5271 a shell by starting the script with a single ':' character.
5275 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5278 none) startperl=": # use perl";;
5279 *) startperl="#!$ans";;
5282 *) startperl=": # use perl"
5287 echo "I'll use $startperl to start perl scripts."
5291 Previous version of $package used the standard IO mechanisms as defined in
5292 <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
5293 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
5294 the default and is the only supported mechanism. This abstraction
5295 layer can use AT&T's sfio (if you already have sfio installed) or
5296 fall back on standard IO. This PerlIO abstraction layer is
5297 experimental and may cause problems with some extension modules.
5299 If this doesn't make any sense to you, just accept the default 'n'.
5301 case "$useperlio" in
5302 $define|true|[yY]*) dflt='y';;
5305 rp='Use the experimental PerlIO abstraction layer?'
5312 echo "Ok, doing things the stdio way"
5319 : Check how to convert floats to strings.
5321 echo "Checking for an efficient way to convert floats to strings."
5324 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
5325 char *myname = "gconvert";
5328 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
5329 char *myname = "gcvt";
5332 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
5333 char *myname = "sprintf";
5339 checkit(expect, got)
5343 if (strcmp(expect, got)) {
5344 printf("%s oddity: Expected %s, got %s\n",
5345 myname, expect, got);
5356 /* This must be 1st test on (which?) platform */
5357 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
5358 Gconvert(0.1, 8, 0, buf);
5359 checkit("0.1", buf);
5361 Gconvert(1.0, 8, 0, buf);
5364 Gconvert(0.0, 8, 0, buf);
5367 Gconvert(-1.0, 8, 0, buf);
5370 /* Some Linux gcvt's give 1.e+5 here. */
5371 Gconvert(100000.0, 8, 0, buf);
5372 checkit("100000", buf);
5374 /* Some Linux gcvt's give -1.e+5 here. */
5375 Gconvert(-100000.0, 8, 0, buf);
5376 checkit("-100000", buf);
5381 case "$d_Gconvert" in
5382 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
5383 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
5384 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
5385 *) xxx_list='gconvert gcvt sprintf' ;;
5388 for xxx_convert in $xxx_list; do
5389 echo "Trying $xxx_convert"
5391 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
5392 try.c $libs > /dev/null 2>&1 ; then
5393 echo "$xxx_convert" found. >&4
5395 echo "I'll use $xxx_convert to convert floats into a string." >&4
5398 echo "...But $xxx_convert didn't work as I expected."
5401 echo "$xxx_convert NOT found." >&4
5405 case "$xxx_convert" in
5406 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
5407 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
5408 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
5411 : Initialize h_fcntl
5414 : Initialize h_sysfile
5417 : access call always available on UNIX
5421 : locate the flags for 'access()'
5425 $cat >access.c <<'EOCP'
5426 #include <sys/types.h>
5431 #include <sys/file.h>
5440 : check sys/file.h first, no particular reason here
5441 if $test `./findhdr sys/file.h` && \
5442 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
5444 echo "<sys/file.h> defines the *_OK access constants." >&4
5445 elif $test `./findhdr fcntl.h` && \
5446 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
5448 echo "<fcntl.h> defines the *_OK access constants." >&4
5449 elif $test `./findhdr unistd.h` && \
5450 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
5451 echo "<unistd.h> defines the *_OK access constants." >&4
5453 echo "I can't find the four *_OK access constants--I'll use mine." >&4
5459 : see if alarm exists
5463 : Look for GNU-cc style attribute checking
5465 echo "Checking whether your compiler can handle __attribute__ ..." >&4
5466 $cat >attrib.c <<'EOCP'
5468 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
5470 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
5471 if $contains 'warning' attrib.out >/dev/null 2>&1; then
5472 echo "Your C compiler doesn't fully support __attribute__."
5475 echo "Your C compiler supports __attribute__."
5479 echo "Your C compiler doesn't seem to understand __attribute__ at all."
5486 : see if bcmp exists
5490 : see if bcopy exists
5494 : see if this is a unistd.h system
5495 set unistd.h i_unistd
5498 : see if getpgrp exists
5499 set getpgrp d_getpgrp
5502 echo "Checking to see which flavor of getpgrp is in use . . . "
5503 case "$d_getpgrp" in
5508 #include <sys/types.h>
5510 # include <unistd.h>
5514 if (getuid() == 0) {
5515 printf("(I see you are running Configure as super-user...)\n");
5519 if (getpgrp(1) == 0)
5528 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5529 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
5531 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5532 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
5535 echo "I can't seem to compile and run the test program."
5537 xxx="a USG one, i.e. you use getpgrp()."
5539 # SVR4 systems can appear rather BSD-ish.
5542 xxx="a BSD one, i.e. you use getpgrp(pid)."
5546 xxx="probably a USG one, i.e. you use getpgrp()."
5551 echo "Assuming your getpgrp is $xxx" >&4
5560 : see if setpgrp exists
5561 set setpgrp d_setpgrp
5564 echo "Checking to see which flavor of setpgrp is in use . . . "
5565 case "$d_setpgrp" in
5570 #include <sys/types.h>
5572 # include <unistd.h>
5576 if (getuid() == 0) {
5577 printf("(I see you are running Configure as super-user...)\n");
5581 if (-1 == setpgrp(1, 1))
5584 if (setpgrp() != -1)
5590 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5591 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
5593 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5594 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
5597 echo "I can't seem to compile and run the test program."
5599 xxx="a USG one, i.e. you use setpgrp()."
5601 # SVR4 systems can appear rather BSD-ish.
5604 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
5608 xxx="probably a USG one, i.e. you use setpgrp()."
5613 echo "Assuming your setpgrp is $xxx" >&4
5620 d_bsdpgrp=$d_bsdsetpgrp
5622 : see if bzero exists
5626 : check for length of integer
5630 echo "Checking to see how big your integers are..." >&4
5631 $cat >try.c <<'EOCP'
5635 printf("%d\n", sizeof(int));
5639 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
5641 echo "Your integers are $intsize bytes long."
5644 echo "(I can't seem to compile the test program. Guessing...)"
5645 rp="What is the size of an integer (in bytes)?"
5653 : see if signal is declared as pointer to function returning int or void
5655 xxx=`./findhdr signal.h`
5656 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
5657 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5658 echo "You have int (*signal())() instead of void." >&4
5660 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5661 echo "You have void (*signal())() instead of int." >&4
5663 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
5664 echo "You have int (*signal())() instead of void." >&4
5667 case "$d_voidsig" in
5669 echo "I can't determine whether signal handler returns void or int..." >&4
5671 rp="What type does your signal handler return?"
5678 echo "As you already told me, signal handler returns void." >&4;;
5680 echo "As you already told me, signal handler returns int." >&4;;
5685 case "$d_voidsig" in
5686 "$define") signal_t="void";;
5691 : check for ability to cast large floats to 32-bit ints.
5693 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
5694 if $test "$intsize" -eq 4; then
5700 #include <sys/types.h>
5702 $signal_t blech() { exit(3); }
5708 signal(SIGFPE, blech);
5710 f = (double) 0x7fffffff;
5714 if (i32 != ($xxx) f)
5719 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5723 echo "(I can't seem to compile the test program--assuming it can't)"
5731 echo "Nope, it can't."
5738 : check for ability to cast negative floats to unsigned
5740 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
5742 #include <sys/types.h>
5744 $signal_t blech() { exit(7); }
5745 $signal_t blech_in_list() { exit(4); }
5746 unsigned long dummy_long(p) unsigned long p; { return p; }
5747 unsigned int dummy_int(p) unsigned int p; { return p; }
5748 unsigned short dummy_short(p) unsigned short p; { return p; }
5752 unsigned long along;
5754 unsigned short ashort;
5757 signal(SIGFPE, blech);
5758 along = (unsigned long)f;
5759 aint = (unsigned int)f;
5760 ashort = (unsigned short)f;
5761 if (along != (unsigned long)-123)
5763 if (aint != (unsigned int)-123)
5765 if (ashort != (unsigned short)-123)
5767 f = (double)0x40000000;
5770 along = (unsigned long)f;
5771 if (along != 0x80000000)
5775 along = (unsigned long)f;
5776 if (along != 0x7fffffff)
5780 along = (unsigned long)f;
5781 if (along != 0x80000001)
5785 signal(SIGFPE, blech_in_list);
5787 along = dummy_long((unsigned long)f);
5788 aint = dummy_int((unsigned int)f);
5789 ashort = dummy_short((unsigned short)f);
5790 if (along != (unsigned long)123)
5792 if (aint != (unsigned int)123)
5794 if (ashort != (unsigned short)123)
5800 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5804 echo "(I can't seem to compile the test program--assuming it can't)"
5807 case "$castflags" in
5812 echo "Nope, it can't."
5819 : see if vprintf exists
5821 if set vprintf val -f d_vprintf; eval $csym; $val; then
5822 echo 'vprintf() found.' >&4
5824 $cat >vprintf.c <<'EOF'
5825 #include <varargs.h>
5827 main() { xxx("foo"); }
5836 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
5839 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
5840 echo "Your vsprintf() returns (int)." >&4
5843 echo "Your vsprintf() returns (char*)." >&4
5847 echo 'vprintf() NOT found.' >&4
5857 : see if chown exists
5861 : see if chroot exists
5865 : see if chsize exists
5869 : check for const keyword
5871 echo 'Checking to see if your C compiler knows about "const"...' >&4
5872 $cat >const.c <<'EOCP'
5873 typedef struct spug { int drokk; } spug;
5880 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
5882 echo "Yup, it does."
5885 echo "Nope, it doesn't."
5890 : see if crypt exists
5892 if set crypt val -f d_crypt; eval $csym; $val; then
5893 echo 'crypt() found.' >&4
5897 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
5898 if $test -z "$cryptlib"; then
5899 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
5903 if $test -z "$cryptlib"; then
5904 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
5908 if $test -z "$cryptlib"; then
5909 cryptlib=`./loc libcrypt.a "" $libpth`
5913 if $test -z "$cryptlib"; then
5914 echo 'crypt() NOT found.' >&4
5923 : get csh whereabouts
5925 'csh') val="$undef" ;;
5932 : see if cuserid exists
5933 set cuserid d_cuserid
5936 : see if this is a limits.h system
5937 set limits.h i_limits
5940 : see if this is a float.h system
5944 : See if number of significant digits in a double precision number is known
5946 $cat >dbl_dig.c <<EOM
5956 printf("Contains DBL_DIG");
5959 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
5960 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
5961 echo "DBL_DIG found." >&4
5964 echo "DBL_DIG NOT found." >&4
5971 : see if difftime exists
5972 set difftime d_difftime
5975 : see if this is a dirent system
5977 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
5979 echo "<dirent.h> found." >&4
5982 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
5983 echo "<sys/dir.h> found." >&4
5986 xinc=`./findhdr sys/ndir.h`
5988 echo "<dirent.h> NOT found." >&4
5993 : Look for type of directory structure.
5995 $cppstdin $cppflags $cppminus < "$xinc" > try.c
5997 case "$direntrytype" in
6000 $define) guess1='struct dirent' ;;
6001 *) guess1='struct direct' ;;
6004 *) guess1="$direntrytype"
6009 'struct dirent') guess2='struct direct' ;;
6010 *) guess2='struct dirent' ;;
6013 if $contains "$guess1" try.c >/dev/null 2>&1; then
6014 direntrytype="$guess1"
6015 echo "Your directory entries are $direntrytype." >&4
6016 elif $contains "$guess2" try.c >/dev/null 2>&1; then
6017 direntrytype="$guess2"
6018 echo "Your directory entries seem to be $direntrytype." >&4
6020 echo "I don't recognize your system's directory entries." >&4
6021 rp="What type is used for directory entries on this system?"
6029 : see if the directory entry stores field length
6031 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6032 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
6033 echo "Good, your directory entry keeps length information in d_namlen." >&4
6036 echo "Your directory entry does not know about the d_namlen field." >&4
6043 : see if dlerror exists
6046 set dlerror d_dlerror
6050 : see if dlfcn is available
6058 On a few systems, the dynamically loaded modules that perl generates and uses
6059 will need a different extension then shared libs. The default will probably
6067 rp='What is the extension of dynamically loaded modules'
6076 : Check if dlsym need a leading underscore
6082 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
6083 $cat >dyna.c <<'EOM'
6092 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
6094 #include <sys/types.h>
6108 int mode = RTLD_LAZY ;
6110 handle = dlopen("./dyna.$dlext", mode) ;
6111 if (handle == NULL) {
6115 symbol = dlsym(handle, "fred") ;
6116 if (symbol == NULL) {
6117 /* try putting a leading underscore */
6118 symbol = dlsym(handle, "_fred") ;
6119 if (symbol == NULL) {
6130 : Call the object file tmp-dyna.o in case dlext=o.
6131 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
6132 mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6133 $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6134 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
6137 1) echo "Test program failed using dlopen." >&4
6138 echo "Perhaps you should not use dynamic loading." >&4;;
6139 2) echo "Test program failed using dlsym." >&4
6140 echo "Perhaps you should not use dynamic loading." >&4;;
6141 3) echo "dlsym needs a leading underscore" >&4
6143 4) echo "dlsym doesn't need a leading underscore." >&4;;
6146 echo "I can't compile and run the test program." >&4
6151 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
6156 : see if dup2 exists
6160 : Locate the flags for 'open()'
6162 $cat >open3.c <<'EOCP'
6163 #include <sys/types.h>
6168 #include <sys/file.h>
6179 : check sys/file.h first to get FREAD on Sun
6180 if $test `./findhdr sys/file.h` && \
6181 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
6183 echo "<sys/file.h> defines the O_* constants..." >&4
6185 echo "and you have the 3 argument form of open()." >&4
6188 echo "but not the 3 argument form of open(). Oh, well." >&4
6191 elif $test `./findhdr fcntl.h` && \
6192 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
6194 echo "<fcntl.h> defines the O_* constants..." >&4
6196 echo "and you have the 3 argument form of open()." >&4
6199 echo "but not the 3 argument form of open(). Oh, well." >&4
6204 echo "I can't find the O_* constant definitions! You got problems." >&4
6210 : check for non-blocking I/O stuff
6211 case "$h_sysfile" in
6212 true) echo "#include <sys/file.h>" > head.c;;
6215 true) echo "#include <fcntl.h>" > head.c;;
6216 *) echo "#include <sys/fcntl.h>" > head.c;;
6221 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
6222 case "$o_nonblock" in
6225 $cat >>try.c <<'EOCP'
6228 printf("O_NONBLOCK\n");
6232 printf("O_NDELAY\n");
6236 printf("FNDELAY\n");
6242 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6244 case "$o_nonblock" in
6245 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
6246 *) echo "Seems like we can use $o_nonblock.";;
6249 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
6252 *) echo "Using $hint value $o_nonblock.";;
6254 $rm -f try try.* .out core
6257 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
6263 #include <sys/types.h>
6265 #define MY_O_NONBLOCK $o_nonblock
6267 $signal_t blech(x) int x; { exit(3); }
6269 $cat >> try.c <<'EOCP'
6277 pipe(pd); /* Down: child -> parent */
6278 pipe(pu); /* Up: parent -> child */
6281 close(pd[1]); /* Parent reads from pd[0] */
6282 close(pu[0]); /* Parent writes (blocking) to pu[1] */
6283 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
6285 signal(SIGALRM, blech);
6287 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
6289 sprintf(string, "%d\n", ret);
6290 write(2, string, strlen(string));
6293 if (errno == EAGAIN) {
6299 if (errno == EWOULDBLOCK)
6300 printf("EWOULDBLOCK\n");
6303 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
6304 sleep(2); /* Give it time to close our pipe */
6306 ret = read(pd[0], buf, 1); /* Should read EOF */
6308 sprintf(string, "%d\n", ret);
6309 write(3, string, strlen(string));
6313 close(pd[0]); /* We write to pd[1] */
6314 close(pu[1]); /* We read from pu[0] */
6315 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
6316 close(pd[1]); /* Pipe pd is now fully closed! */
6317 exit(0); /* Bye bye, thank you for playing! */
6320 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6321 echo "$startsh" >mtry
6322 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
6324 ./mtry >/dev/null 2>&1
6326 0) eagain=`$cat try.out`;;
6327 1) echo "Could not perform non-blocking setting!";;
6328 2) echo "I did a successful read() for something that was not there!";;
6329 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
6330 *) echo "Something terribly wrong happened during testing.";;
6332 rd_nodata=`$cat try.ret`
6333 echo "A read() system call with no data present returns $rd_nodata."
6334 case "$rd_nodata" in
6337 echo "(That's peculiar, fixing that to be -1.)"
6343 echo "Forcing errno EAGAIN on read() with no data available."
6347 echo "Your read() sets errno to $eagain when no data is available."
6350 status=`$cat try.err`
6352 0) echo "And it correctly returns 0 to signal EOF.";;
6353 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
6354 *) echo "However, your read() returns '$status' on EOF??";;
6357 if test "$status" -eq "$rd_nodata"; then
6358 echo "WARNING: you can't distinguish between EOF and no data!"
6362 echo "I can't compile the test program--assuming errno EAGAIN will do."
6369 echo "Using $hint value $eagain."
6370 echo "Your read() returns $rd_nodata when no data is present."
6371 case "$d_eofnblk" in
6372 "$define") echo "And you can see EOF because read() returns 0.";;
6373 "$undef") echo "But you can't see EOF status from read() returned value.";;
6375 echo "(Assuming you can't see EOF status from read anyway.)"
6381 $rm -f try try.* .out core head.c mtry
6383 : see if fchmod exists
6387 : see if fchown exists
6391 : see if this is an fcntl system
6395 : see if fgetpos exists
6396 set fgetpos d_fgetpos
6399 : see if flock exists
6403 : see if fork exists
6407 : see if pathconf exists
6408 set pathconf d_pathconf
6411 : see if fpathconf exists
6412 set fpathconf d_fpathconf
6415 : see if fsetpos exists
6416 set fsetpos d_fsetpos
6419 : see if gethostent exists
6420 set gethostent d_gethent
6423 : see if getlogin exists
6424 set getlogin d_getlogin
6427 : see if getpgid exists
6428 set getpgid d_getpgid
6431 : see if getpgrp2 exists
6432 set getpgrp2 d_getpgrp2
6435 : see if getppid exists
6436 set getppid d_getppid
6439 : see if getpriority exists
6440 set getpriority d_getprior
6443 : see if this is a netinet/in.h or sys/in.h system
6444 set netinet/in.h i_niin sys/in.h i_sysin
6447 : see if htonl --and friends-- exists
6452 : Maybe they are macros.
6457 #include <sys/types.h>
6458 #$i_niin I_NETINET_IN
6461 #include <netinet/in.h>
6467 printf("Defined as a macro.");
6470 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
6471 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
6473 echo "But it seems to be defined as a macro." >&4
6481 : see which of string.h or strings.h is needed
6483 strings=`./findhdr string.h`
6484 if $test "$strings" && $test -r "$strings"; then
6485 echo "Using <string.h> instead of <strings.h>." >&4
6489 strings=`./findhdr strings.h`
6490 if $test "$strings" && $test -r "$strings"; then
6491 echo "Using <strings.h> instead of <string.h>." >&4
6493 echo "No string header found -- You'll surely have problems." >&4
6499 "$undef") strings=`./findhdr strings.h`;;
6500 *) strings=`./findhdr string.h`;;
6505 if set index val -f; eval $csym; $val; then
6506 if set strchr val -f d_strchr; eval $csym; $val; then
6507 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6510 echo "strchr() found." >&4
6514 echo "index() found." >&4
6519 echo "index() found." >&4
6522 if set strchr val -f d_strchr; eval $csym; $val; then
6525 echo "strchr() found." >&4
6527 echo "No index() or strchr() found!" >&4
6532 set d_strchr; eval $setvar
6534 set d_index; eval $setvar
6538 $cat >isascii.c <<'EOCP'
6549 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6550 echo "isascii() found." >&4
6553 echo "isascii() NOT found." >&4
6560 : see if killpg exists
6564 : see if link exists
6568 : see if localeconv exists
6569 set localeconv d_locconv
6572 : see if lockf exists
6576 : see if lstat exists
6580 : see if mblen exists
6584 : see if mbstowcs exists
6585 set mbstowcs d_mbstowcs
6588 : see if mbtowc exists
6592 : see if memcmp exists
6596 : see if memcpy exists
6600 : see if memmove exists
6601 set memmove d_memmove
6604 : see if memset exists
6608 : see if mkdir exists
6612 : see if mkfifo exists
6616 : see if mktime exists
6620 : see if msgctl exists
6624 : see if msgget exists
6628 : see if msgsnd exists
6632 : see if msgrcv exists
6636 : see how much of the 'msg*(2)' library is present.
6639 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6640 *"$undef"*) h_msg=false;;
6642 : we could also check for sys/ipc.h ...
6643 if $h_msg && $test `./findhdr sys/msg.h`; then
6644 echo "You have the full msg*(2) library." >&4
6647 echo "You don't have the full msg*(2) library." >&4
6653 : see if this is a malloc.h system
6654 set malloc.h i_malloc
6657 : see if stdlib is available
6658 set stdlib.h i_stdlib
6661 : determine which malloc to compile in
6663 case "$usemymalloc" in
6664 ''|y*|true) dflt='y' ;;
6665 n*|false) dflt='n' ;;
6666 *) dflt="$usemymalloc" ;;
6668 rp="Do you wish to attempt to use the malloc that comes with $package?"
6674 mallocsrc='malloc.c'
6675 mallocobj='malloc.o'
6676 d_mymalloc="$define"
6679 : Remove malloc from list of libraries to use
6680 echo "Removing unneeded -lmalloc from library list" >&4
6681 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6684 echo "libs = $libs" >&4
6696 : compute the return types of malloc and free
6698 $cat >malloc.c <<END
6702 #include <sys/types.h>
6716 case "$malloctype" in
6718 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6725 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6729 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6736 echo "Your system uses $freetype free(), it would seem." >&4
6738 : see if nice exists
6742 : see if pause exists
6746 : see if pipe exists
6750 : see if poll exists
6754 : see if this is a pwd.h system
6760 xxx=`./findhdr pwd.h`
6761 $cppstdin $cppflags $cppminus < $xxx >$$.h
6763 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6771 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
6779 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
6787 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
6795 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
6803 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
6815 set d_pwquota; eval $setvar
6816 set d_pwage; eval $setvar
6817 set d_pwchange; eval $setvar
6818 set d_pwclass; eval $setvar
6819 set d_pwexpire; eval $setvar
6820 set d_pwcomment; eval $setvar
6824 : see if readdir and friends exist
6825 set readdir d_readdir
6827 set seekdir d_seekdir
6829 set telldir d_telldir
6831 set rewinddir d_rewinddir
6834 : see if readlink exists
6835 set readlink d_readlink
6838 : see if rename exists
6842 : see if rmdir exists
6846 : see if memory.h is available.
6851 : See if it conflicts with string.h
6857 $cppstdin $cppflags $cppminus < $strings > mem.h
6858 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
6860 echo "We won't be including <memory.h>."
6870 : can bcopy handle overlapping blocks?
6875 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
6882 $cat >>foo.c <<'EOCP'
6886 # include <memory.h>
6889 # include <stdlib.h>
6892 # include <string.h>
6894 # include <strings.h>
6897 # include <unistd.h> /* Needed for NetBSD */
6901 char buf[128], abc[128];
6907 /* Copy "abcde..." string to char abc[] so that gcc doesn't
6908 try to store the string in read-only memory. */
6909 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
6911 for (align = 7; align >= 0; align--) {
6912 for (len = 36; len; len--) {
6915 for (off = 1; off <= len; off++) {
6916 bcopy(b, b+off, len);
6917 bcopy(b+off, b, len);
6918 if (bcmp(b, abc, len))
6926 if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
6927 if ./safebcpy 2>/dev/null; then
6931 echo "It can't, sorry."
6932 case "$d_memmove" in
6933 "$define") echo "But that's Ok since you have memmove()." ;;
6937 echo "(I can't compile the test program, so we'll assume not...)"
6938 case "$d_memmove" in
6939 "$define") echo "But that's Ok since you have memmove()." ;;
6944 $rm -f foo.* safebcpy core
6948 : can memcpy handle overlapping blocks?
6953 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
6960 $cat >>foo.c <<'EOCP'
6964 # include <memory.h>
6967 # include <stdlib.h>
6970 # include <string.h>
6972 # include <strings.h>
6975 # include <unistd.h> /* Needed for NetBSD */
6979 char buf[128], abc[128];
6985 /* Copy "abcde..." string to char abc[] so that gcc doesn't
6986 try to store the string in read-only memory. */
6987 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
6989 for (align = 7; align >= 0; align--) {
6990 for (len = 36; len; len--) {
6992 memcpy(b, abc, len);
6993 for (off = 1; off <= len; off++) {
6994 memcpy(b+off, b, len);
6995 memcpy(b, b+off, len);
6996 if (memcmp(b, abc, len))
7004 if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
7005 if ./safemcpy 2>/dev/null; then
7009 echo "It can't, sorry."
7010 case "$d_memmove" in
7011 "$define") echo "But that's Ok since you have memmove()." ;;
7015 echo "(I can't compile the test program, so we'll assume not...)"
7016 case "$d_memmove" in
7017 "$define") echo "But that's Ok since you have memmove()." ;;
7022 $rm -f foo.* safemcpy core
7026 : see if select exists
7030 : see if semctl exists
7034 : see if semget exists
7038 : see if semop exists
7042 : see how much of the 'sem*(2)' library is present.
7045 case "$d_semctl$d_semget$d_semop" in
7046 *"$undef"*) h_sem=false;;
7048 : we could also check for sys/ipc.h ...
7049 if $h_sem && $test `./findhdr sys/sem.h`; then
7050 echo "You have the full sem*(2) library." >&4
7053 echo "You don't have the full sem*(2) library." >&4
7059 : see if setegid exists
7060 set setegid d_setegid
7063 : see if seteuid exists
7064 set seteuid d_seteuid
7067 : see if setlinebuf exists
7068 set setlinebuf d_setlinebuf
7071 : see if setlocale exists
7072 set setlocale d_setlocale
7075 : see if setpgid exists
7076 set setpgid d_setpgid
7079 : see if setpgrp2 exists
7080 set setpgrp2 d_setpgrp2
7083 : see if setpriority exists
7084 set setpriority d_setprior
7087 : see if setregid exists
7088 set setregid d_setregid
7090 set setresgid d_setresgid
7093 : see if setreuid exists
7094 set setreuid d_setreuid
7096 set setresuid d_setresuid
7099 : see if setrgid exists
7100 set setrgid d_setrgid
7103 : see if setruid exists
7104 set setruid d_setruid
7107 : see if setsid exists
7111 : see if sfio.h is available
7116 : see if sfio library is available
7127 : Ok, but do we want to use it.
7131 true|$define|[yY]*) dflt='y';;
7134 echo "$package can use the sfio library, but it is experimental."
7135 rp="You seem to have sfio available, do you want to try using it?"
7139 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
7144 *) case "$usesfio" in
7146 echo "Sorry, cannot find sfio on this machine" >&4
7147 echo "Ignoring your setting of usesfio=$usesfio" >&4
7155 $define) usesfio='true';;
7156 *) usesfio='false';;
7159 : see if shmctl exists
7163 : see if shmget exists
7167 : see if shmat exists
7170 : see what shmat returns
7173 $cat >shmat.c <<'END'
7174 #include <sys/shm.h>
7177 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
7182 echo "and it returns ($shmattype)." >&4
7183 : see if a prototype for shmat is available
7184 xxx=`./findhdr sys/shm.h`
7185 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
7186 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
7197 set d_shmatprototype
7200 : see if shmdt exists
7204 : see how much of the 'shm*(2)' library is present.
7207 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
7208 *"$undef"*) h_shm=false;;
7210 : we could also check for sys/ipc.h ...
7211 if $h_shm && $test `./findhdr sys/shm.h`; then
7212 echo "You have the full shm*(2) library." >&4
7215 echo "You don't have the full shm*(2) library." >&4
7222 : see if we have sigaction
7223 if set sigaction val -f d_sigaction; eval $csym; $val; then
7224 echo 'sigaction() found.' >&4
7227 echo 'sigaction NOT found.' >&4
7231 $cat > set.c <<'EOP'
7232 /* Solaris 2.5_x86 with SunWorks Pro C 3.0.1 doesn't have a complete
7233 sigaction structure if compiled with cc -Xc. This compile test
7234 will fail then. <doughera@lafcol.lafayette.edu>
7237 #include <sys/types.h>
7241 struct sigaction act, oact;
7245 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
7248 echo "But you don't seem to have a useable struct sigaction." >&4
7251 set d_sigaction; eval $setvar
7252 $rm -f set set.o set.c
7254 : see if sigsetjmp exists
7256 case "$d_sigsetjmp" in
7264 if (sigsetjmp(env,1))
7271 if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then
7272 if ./set >/dev/null 2>&1; then
7273 echo "POSIX sigsetjmp found." >&4
7277 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
7283 echo "sigsetjmp not found." >&4
7287 *) val="$d_sigsetjmp"
7288 case "$d_sigsetjmp" in
7289 $define) echo "POSIX sigsetjmp found." >&4;;
7290 $undef) echo "sigsetjmp not found." >&4;;
7300 : see whether socket exists
7302 $echo $n "Hmm... $c" >&4
7303 if set socket val -f d_socket; eval $csym; $val; then
7304 echo "Looks like you have Berkeley networking support." >&4
7306 if set setsockopt val -f; eval $csym; $val; then
7309 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
7313 if $contains socklib libc.list >/dev/null 2>&1; then
7314 echo "Looks like you have Berkeley networking support." >&4
7316 : we will have to assume that it supports the 4.2 BSD interface
7319 echo "You don't have Berkeley networking in libc.a..." >&4
7320 if test -f /usr/lib/libnet.a; then
7321 ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \
7322 ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list
7323 if $contains socket libc.list >/dev/null 2>&1; then
7324 echo "...but the Wollongong group seems to have hacked it in." >&4
7326 sockethdr="-I/usr/netinclude"
7328 if $contains setsockopt libc.list >/dev/null 2>&1; then
7331 echo "...using the old 4.1c interface, rather than 4.2" >&4
7335 echo "or even in libnet.a, which is peculiar." >&4
7340 echo "or anywhere else I see." >&4
7347 : see if socketpair exists
7348 set socketpair d_sockpair
7351 : see if stat knows about block sizes
7353 xxx=`./findhdr sys/stat.h`
7354 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
7355 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
7356 echo "Your stat() knows about block sizes." >&4
7359 echo "Your stat() doesn't know about block sizes." >&4
7363 echo "Your stat() doesn't know about block sizes." >&4
7369 : see if _ptr and _cnt from stdio act std
7371 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7372 echo "(Looks like you have stdio.h from Linux.)"
7373 case "$stdio_ptr" in
7374 '') stdio_ptr='((fp)->_IO_read_ptr)'
7377 *) ptr_lval=$d_stdio_ptr_lval;;
7379 case "$stdio_cnt" in
7380 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
7383 *) cnt_lval=$d_stdio_cnt_lval;;
7385 case "$stdio_base" in
7386 '') stdio_base='((fp)->_IO_read_base)';;
7388 case "$stdio_bufsiz" in
7389 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
7392 case "$stdio_ptr" in
7393 '') stdio_ptr='((fp)->_ptr)'
7396 *) ptr_lval=$d_stdio_ptr_lval;;
7398 case "$stdio_cnt" in
7399 '') stdio_cnt='((fp)->_cnt)'
7402 *) cnt_lval=$d_stdio_cnt_lval;;
7404 case "$stdio_base" in
7405 '') stdio_base='((fp)->_base)';;
7407 case "$stdio_bufsiz" in
7408 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
7411 : test whether _ptr and _cnt really work
7412 echo "Checking how std your stdio is..." >&4
7415 #define FILE_ptr(fp) $stdio_ptr
7416 #define FILE_cnt(fp) $stdio_cnt
7418 FILE *fp = fopen("try.c", "r");
7421 18 <= FILE_cnt(fp) &&
7422 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
7429 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
7431 echo "Your stdio acts pretty std."
7434 echo "Your stdio isn't very std."
7437 echo "Your stdio doesn't appear very std."
7443 : Can _ptr be used as an lvalue?
7444 case "$d_stdstdio$ptr_lval" in
7445 $define$define) val=$define ;;
7448 set d_stdio_ptr_lval
7451 : Can _cnt be used as an lvalue?
7452 case "$d_stdstdio$cnt_lval" in
7453 $define$define) val=$define ;;
7456 set d_stdio_cnt_lval
7459 : How to access the stdio _filbuf or __filbuf function.
7460 : If this fails, check how the getc macro in stdio.h works.
7461 case "${d_stdio_ptr_lval}${d_stdio_cnt_lval}" in
7463 : Try $hint value, if any, then _filbuf, __filbuf, _fill, then punt.
7464 : _fill is for os/2.
7466 for filbuf in $stdio_filbuf '_filbuf(fp)' '__filbuf(fp) ' '_fill(fp)' ; do
7469 #define FILE_ptr(fp) $stdio_ptr
7470 #define FILE_cnt(fp) $stdio_cnt
7471 #define FILE_filbuf(fp) $filbuf
7473 FILE *fp = fopen("try.c", "r");
7476 c = FILE_filbuf(fp); /* Just looking for linker errors.*/
7480 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 && ./try; then
7481 echo "Your stdio appears to use $filbuf"
7482 stdio_filbuf="$filbuf"
7486 echo "Hmm. $filbuf doesn't seem to work."
7491 notok) echo "I can't figure out how to access _filbuf"
7492 echo "I'll just have to work around it."
7493 d_stdio_ptr_lval="$undef"
7494 d_stdio_cnt_lval="$undef"
7501 : see if _base is also standard
7503 case "$d_stdstdio" in
7507 #define FILE_base(fp) $stdio_base
7508 #define FILE_bufsiz(fp) $stdio_bufsiz
7510 FILE *fp = fopen("try.c", "r");
7513 19 <= FILE_bufsiz(fp) &&
7514 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
7520 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
7522 echo "And its _base field acts std."
7525 echo "But its _base field isn't std."
7528 echo "However, it seems to be lacking the _base field."
7536 : see if strcoll exists
7537 set strcoll d_strcoll
7540 : check for structure copying
7542 echo "Checking to see if your C compiler can copy structs..." >&4
7543 $cat >try.c <<'EOCP'
7553 if $cc -c try.c >/dev/null 2>&1 ; then
7558 echo "Nope, it can't."
7564 : see if strerror and/or sys_errlist[] exist
7566 if set strerror val -f d_strerror; eval $csym; $val; then
7567 echo 'strerror() found.' >&4
7568 d_strerror="$define"
7569 d_strerrm='strerror(e)'
7570 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7571 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
7572 d_syserrlst="$define"
7574 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
7575 d_syserrlst="$undef"
7577 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
7578 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
7579 echo 'strerror() found in string header.' >&4
7580 d_strerror="$define"
7581 d_strerrm='strerror(e)'
7582 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7583 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
7584 d_syserrlst="$define"
7586 echo "(You don't appear to have any sys_errlist[], how can this be?)"
7587 d_syserrlst="$undef"
7589 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7590 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
7592 d_syserrlst="$define"
7593 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
7595 echo 'strerror() and sys_errlist[] NOT found.' >&4
7597 d_syserrlst="$undef"
7598 d_strerrm='"unknown"'
7601 : see if strxfrm exists
7602 set strxfrm d_strxfrm
7605 : see if symlink exists
7606 set symlink d_symlink
7609 : see if syscall exists
7610 set syscall d_syscall
7613 : see if sysconf exists
7614 set sysconf d_sysconf
7617 : see if system exists
7621 : see if tcgetpgrp exists
7622 set tcgetpgrp d_tcgetpgrp
7625 : see if tcsetpgrp exists
7626 set tcsetpgrp d_tcsetpgrp
7629 : define an is-a-typedef? function
7630 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
7632 "") inclist="sys/types.h";;
7634 eval "varval=\$$var";
7638 for inc in $inclist; do
7639 echo "#include <$inc>" >>temp.c;
7641 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
7642 if $contains $type temp.E >/dev/null 2>&1; then
7648 *) eval "$var=\$varval";;
7651 : see if this is a sys/times.h system
7652 set sys/times.h i_systimes
7655 : see if times exists
7657 if set times val -f d_times; eval $csym; $val; then
7658 echo 'times() found.' >&4
7661 case "$i_systimes" in
7662 "$define") inc='sys/times.h';;
7664 set clock_t clocktype long stdio.h sys/types.h $inc
7668 rp="What type is returned by times() on this system?"
7672 echo 'times() NOT found, hope that will do.' >&4
7677 : see if truncate exists
7678 set truncate d_truncate
7681 : see if tzname[] exists
7683 if set tzname val -a d_tzname; eval $csym; $val; then
7685 echo 'tzname[] found.' >&4
7688 echo 'tzname[] NOT found.' >&4
7693 : see if umask exists
7697 : see how we will look up host name
7700 : dummy stub to allow use of elif
7701 elif set uname val -f d_uname; eval $csym; $val; then
7704 uname() was found, but you're running xenix, and older versions of xenix
7705 have a broken uname(). If you don't really know whether your xenix is old
7706 enough to have a broken system call, use the default answer.
7713 rp='Is your uname() broken?'
7716 n*) d_uname="$define"; call=uname;;
7719 echo 'uname() found.' >&4
7724 case "$d_gethname" in
7725 '') d_gethname="$undef";;
7728 '') d_uname="$undef";;
7730 case "$d_phostname" in
7731 '') d_phostname="$undef";;
7734 : backward compatibility for d_hvfork
7735 if test X$d_hvfork != X; then
7739 : see if there is a vfork
7744 : Ok, but do we want to use it. vfork is reportedly unreliable in
7745 : perl on Solaris 2.x, and probably elsewhere.
7753 rp="Some systems have problems with vfork(). Do you want to use it?"
7758 echo "Ok, we won't use vfork()."
7767 $define) usevfork='true';;
7768 *) usevfork='false';;
7771 : see if this is an sysdir system
7772 set sys/dir.h i_sysdir
7775 : see if this is an sysndir system
7776 set sys/ndir.h i_sysndir
7779 : see if closedir exists
7780 set closedir d_closedir
7783 case "$d_closedir" in
7786 echo "Checking whether closedir() returns a status..." >&4
7787 cat > closedir.c <<EOM
7788 #$i_dirent I_DIRENT /**/
7789 #$i_sysdir I_SYS_DIR /**/
7790 #$i_sysndir I_SYS_NDIR /**/
7792 #if defined(I_DIRENT)
7794 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
7795 #include <sys/dir.h>
7799 #include <sys/ndir.h>
7803 #include <ndir.h> /* may be wrong in the future */
7805 #include <sys/dir.h>
7810 int main() { return closedir(opendir(".")); }
7812 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
7813 if ./closedir > /dev/null 2>&1 ; then
7814 echo "Yes, it does."
7817 echo "No, it doesn't."
7821 echo "(I can't seem to compile the test program--assuming it doesn't)"
7832 : check for volatile keyword
7834 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
7835 $cat >try.c <<'EOCP'
7838 typedef struct _goo_struct goo_struct;
7839 goo_struct * volatile goo = ((goo_struct *)0);
7840 struct _goo_struct {
7845 typedef unsigned short foo_t;
7848 volatile foo_t blech;
7852 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
7854 echo "Yup, it does."
7857 echo "Nope, it doesn't."
7863 : see if there is a wait4
7867 : see if waitpid exists
7868 set waitpid d_waitpid
7871 : see if wcstombs exists
7872 set wcstombs d_wcstombs
7875 : see if wctomb exists
7879 : preserve RCS keywords in files with variable substitution, grrr
7884 Revision='$Revision'
7886 : check for alignment requirements
7888 case "$alignbytes" in
7889 '') echo "Checking alignment constraints..." >&4
7890 $cat >try.c <<'EOCP'
7897 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
7900 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
7904 echo"(I can't seem to compile the test program...)"
7907 *) dflt="$alignbytes"
7910 rp="Doubles must be aligned on a how-many-byte boundary?"
7915 : check for ordering of bytes in a long
7916 case "$byteorder" in
7920 In the following, larger digits indicate more significance. A big-endian
7921 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
7922 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
7923 machines may have weird orders like 3412. A Cray will report 87654321. If
7924 the test program works the default is probably right.
7925 I'm now running the test program...
7927 $cat >try.c <<'EOCP'
7934 char c[sizeof(long)];
7937 if (sizeof(long) > 4)
7938 u.l = (0x08070605L << 32) | 0x04030201L;
7941 for (i = 0; i < sizeof(long); i++)
7942 printf("%c", u.c[i]+'0');
7948 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
7951 [1-4][1-4][1-4][1-4]|12345678|87654321)
7952 echo "(The test program ran ok.)"
7953 echo "byteorder=$dflt"
7956 ????|????????) echo "(The test program ran ok.)" ;;
7957 *) echo "(The test program didn't run right for some reason.)" ;;
7962 (I can't seem to compile the test program. Guessing big-endian...)
7965 case "$xxx_prompt" in
7967 rp="What is the order of bytes in a long?"
7978 : how do we catenate cpp tokens here?
7980 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
7981 $cat >cpp_stuff.c <<'EOCP'
7982 #define RCAT(a,b)a/**/b
7983 #define ACAT(a,b)a ## b
7987 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
7988 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
7989 echo "Oh! Smells like ANSI's been here."
7990 echo "We can catify or stringify, separately or together!"
7992 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
7993 echo "Ah, yes! The good old days!"
7994 echo "However, in the good old days we don't know how to stringify and"
7995 echo "catify at the same time."
7999 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
8000 to have to edit the values of CAT[2-5] in config.h...
8002 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
8006 : see if this is a db.h system
8012 : Check the return type needed for hash
8014 echo "Checking return type needed for hash for Berkeley DB ..." >&4
8020 #include <sys/types.h>
8022 u_int32_t hash_cb (ptr, size)
8030 info.hash = hash_cb;
8033 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8034 if $contains warning try.out >>/dev/null 2>&1 ; then
8037 db_hashtype='u_int32_t'
8040 echo "I can't seem to compile the test program." >&4
8044 echo "Your version of Berkeley DB uses $db_hashtype for hash."
8052 : Check the return type needed for prefix
8054 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
8060 #include <sys/types.h>
8062 size_t prefix_cb (key1, key2)
8070 info.prefix = prefix_cb;
8073 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8074 if $contains warning try.out >>/dev/null 2>&1 ; then
8077 db_prefixtype='size_t'
8080 echo "I can't seem to compile the test program." >&4
8084 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
8086 *) db_prefixtype='int'
8090 : check for void type
8092 echo "Checking to see how well your C compiler groks the void type..." >&4
8095 Support flag bits are:
8096 1: basic void declarations.
8097 2: arrays of pointers to functions returning void.
8098 4: operations between pointers to and addresses of void functions.
8099 8: generic void pointers.
8102 case "$voidflags" in
8104 $cat >try.c <<'EOCP'
8110 extern void moo(); /* function returning void */
8111 void (*goo)(); /* ptr to func returning void */
8113 void *hue; /* generic ptr */
8128 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
8129 voidflags=$defvoidused
8130 echo "It appears to support void to the level $package wants ($defvoidused)."
8131 if $contains warning .out >/dev/null 2>&1; then
8132 echo "However, you might get some warnings that look like this:"
8136 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
8137 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
8138 echo "It supports 1..."
8139 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
8140 echo "It also supports 2..."
8141 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
8143 echo "And it supports 4 but not 8 definitely."
8145 echo "It doesn't support 4..."
8146 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
8148 echo "But it supports 8."
8151 echo "Neither does it support 8."
8155 echo "It does not support 2..."
8156 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
8158 echo "But it supports 4 and 8."
8160 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
8162 echo "And it supports 4 but has not heard about 8."
8164 echo "However it supports 8 but not 4."
8169 echo "There is no support at all for void."
8174 : Only prompt user if support does not match the level we want
8175 case "$voidflags" in
8179 rp="Your void support flags add up to what?"
8186 : see what type file positions are declared as in the library
8187 set fpos_t fpostype long stdio.h sys/types.h
8191 rp="What is the type for file position used by fsetpos()?"
8195 : Store the full pathname to the sed program for use in the C program
8198 : see what type gids are declared as in the kernel
8199 set gid_t gidtype xxx stdio.h sys/types.h
8203 xxx=`./findhdr sys/user.h`
8204 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
8206 unsigned) dflt="$1 $2" ;;
8210 *) dflt="$gidtype";;
8213 rp="What is the type for group ids returned by getgid()?"
8217 : see if getgroups exists
8218 set getgroups d_getgrps
8221 : Find type of 2nd arg to getgroups
8223 case "$d_getgrps" in
8225 case "$groupstype" in
8226 '') dflt="$gidtype" ;;
8227 *) dflt="$groupstype" ;;
8230 What is the type of the second argument to getgroups()? Usually this
8231 is the same as group ids, $gidtype, but not always.
8234 rp='What type is the second argument to getgroups()?'
8238 *) groupstype="$gidtype";;
8241 : see what type lseek is declared as in the kernel
8242 set off_t lseektype long stdio.h sys/types.h
8246 rp="What type is lseek's offset on this system declared as?"
8253 make=`./loc make make $pth`
8255 /*) echo make is in $make. ;;
8256 ?:[\\/]*) echo make is in $make. ;;
8257 *) echo "I don't know where 'make' is, and my life depends on it." >&4
8258 echo "Go find a make program or fix your PATH setting!" >&4
8263 *) echo make is in $make. ;;
8266 $echo $n "Checking if your $make program sets \$(MAKE)... $c" >&4
8267 case "$make_set_make" in
8269 $sed 's/^X //' > testmake.mak << 'EOF'
8271 X @echo 'ac_maketemp="$(MAKE)"'
8273 : GNU make sometimes prints "make[1]: Entering...", which would confuse us.
8274 case "`$make -f testmake.mak 2>/dev/null`" in
8275 *ac_maketemp=*) make_set_make='#' ;;
8276 *) make_set_make="MAKE=$make" ;;
8281 case "$make_set_make" in
8282 '#') echo "Yup, it does." >&4 ;;
8283 *) echo "Nope, it doesn't." >&4 ;;
8286 : see what type is used for mode_t
8287 set mode_t modetype int stdio.h sys/types.h
8291 rp="What type is used for file modes?"
8295 : locate the preferred pager for this system
8309 '') dflt=/usr/ucb/more;;
8316 rp='What pager is used on your system?'
8320 : Cruising for prototypes
8322 echo "Checking out function prototypes..." >&4
8323 $cat >prototype.c <<'EOCP'
8324 main(int argc, char *argv[]) {
8327 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
8328 echo "Your C compiler appears to support function prototypes."
8331 echo "Your C compiler doesn't seem to understand function prototypes."
8338 : check for size of random number generator
8342 echo "Checking to see how many bits your rand function produces..." >&4
8348 # include <unistd.h>
8351 # include <stdlib.h>
8354 $cat >>try.c <<'EOCP'
8358 register unsigned long tmp;
8359 register unsigned long max = 0L;
8361 for (i = 1000; i; i--) {
8362 tmp = (unsigned long)rand();
8363 if (tmp > max) max = tmp;
8365 for (i = 0; max; i++)
8370 if $cc try.c -o try >/dev/null 2>&1 ; then
8374 echo "(I can't seem to compile the test program...)"
8381 rp='How many bits does your rand() function produce?'
8386 : see if ar generates random libraries by itself
8388 echo "Checking how to generate random libraries on your machine..." >&4
8389 echo 'int bar1() { return bar2(); }' > bar1.c
8390 echo 'int bar2() { return 2; }' > bar2.c
8391 $cat > foo.c <<'EOP'
8392 main() { printf("%d\n", bar1()); exit(0); }
8394 $cc $ccflags -c bar1.c >/dev/null 2>&1
8395 $cc $ccflags -c bar2.c >/dev/null 2>&1
8396 $cc $ccflags -c foo.c >/dev/null 2>&1
8397 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
8398 if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
8399 ./foobar >/dev/null 2>&1; then
8400 echo "ar appears to generate random libraries itself."
8403 elif ar ts bar.a >/dev/null 2>&1 &&
8404 $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
8405 ./foobar >/dev/null 2>&1; then
8406 echo "a table of contents needs to be added with 'ar ts'."
8413 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
8414 $test -f $ranlib || ranlib=''
8417 if $test -n "$ranlib"; then
8418 echo "your system has '$ranlib'; we'll use that."
8421 echo "your system doesn't seem to support random libraries"
8422 echo "so we'll use lorder and tsort to order the libraries."
8429 : see if sys/select.h has to be included
8430 set sys/select.h i_sysselct
8433 : see if we should include time.h, sys/time.h, or both
8435 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8436 $echo $n "I'm now running the test program...$c"
8437 $cat >try.c <<'EOCP'
8438 #include <sys/types.h>
8443 #ifdef SYSTIMEKERNEL
8446 #include <sys/time.h>
8449 #include <sys/select.h>
8458 struct timezone tzp;
8460 if (foo.tm_sec == foo.tm_sec)
8463 if (bar.tv_sec == bar.tv_sec)
8470 for s_timezone in '-DS_TIMEZONE' ''; do
8472 for s_timeval in '-DS_TIMEVAL' ''; do
8473 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8474 for i_time in '' '-DI_TIME'; do
8475 for i_systime in '-DI_SYSTIME' ''; do
8479 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
8480 try.c -o try >/dev/null 2>&1 ; then
8481 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8485 $echo $n "Succeeded with $flags$c"
8497 *SYSTIMEKERNEL*) i_systimek="$define"
8498 timeincl=`./findhdr sys/time.h`
8499 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8500 *) i_systimek="$undef";;
8503 *I_TIME*) i_time="$define"
8504 timeincl=`./findhdr time.h`" $timeincl"
8505 echo "We'll include <time.h>." >&4;;
8506 *) i_time="$undef";;
8509 *I_SYSTIME*) i_systime="$define"
8510 timeincl=`./findhdr sys/time.h`" $timeincl"
8511 echo "We'll include <sys/time.h>." >&4;;
8512 *) i_systime="$undef";;
8516 : check for fd_set items
8519 Checking to see how well your C compiler handles fd_set and friends ...
8521 $cat >fd_set.c <<EOCP
8522 #$i_systime I_SYS_TIME
8523 #$i_sysselct I_SYS_SELECT
8524 #$d_socket HAS_SOCKET
8525 #include <sys/types.h>
8527 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8530 #include <sys/time.h>
8533 #include <sys/select.h>
8542 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8549 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8550 d_fds_bits="$define"
8552 echo "Well, your system knows about the normal fd_set typedef..." >&4
8554 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8555 d_fd_macros="$define"
8558 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8560 d_fd_macros="$undef"
8564 Hmm, your compiler has some difficulty with fd_set. Checking further...
8566 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8569 echo "Well, your system has some sort of fd_set available..." >&4
8571 echo "and you have the normal fd_set macros." >&4
8572 d_fd_macros="$define"
8575 but not the normal fd_set macros! Gross! More work for me...
8577 d_fd_macros="$undef"
8580 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8583 d_fd_macros="$undef"
8589 : check for type of arguments to select. This will only really
8590 : work if the system supports prototypes and provides one for
8594 : Make initial guess
8595 case "$selecttype" in
8598 $define) xxx='fd_set *' ;;
8602 *) xxx="$selecttype"
8607 'fd_set *') yyy='int *' ;;
8608 'int *') yyy='fd_set *' ;;
8613 Checking to see what type of arguments are expected by select().
8616 #$i_systime I_SYS_TIME
8617 #$i_sysselct I_SYS_SELECT
8618 #$d_socket HAS_SOCKET
8619 #include <sys/types.h>
8621 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8624 #include <sys/time.h>
8627 #include <sys/select.h>
8632 Select_fd_set_t readfds;
8633 Select_fd_set_t writefds;
8634 Select_fd_set_t exceptfds;
8635 struct timeval timeout;
8636 select(width, readfds, writefds, exceptfds, &timeout);
8640 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
8642 echo "Your system uses $xxx for the arguments to select." >&4
8643 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
8645 echo "Your system uses $yyy for the arguments to select." >&4
8647 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
8654 *) selecttype='int *'
8658 : Trace out the files included by signal.h, then look for SIGxxx names.
8659 : Remove SIGARRAYSIZE used by HPUX.
8660 : Remove SIGTYP void lines used by OS2.
8661 xxx=`echo '#include <signal.h>' |
8662 $cppstdin $cppminus $cppflags 2>/dev/null |
8663 $grep '^[ ]*#.*include' |
8664 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
8665 : Check this list of files to be sure we have parsed the cpp output ok.
8666 : This will also avoid potentially non-existent files, such
8669 for xx in $xxx /dev/null ; do
8670 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
8672 : If we have found no files, at least try signal.h
8674 '') xxxfiles=`./findhdr signal.h` ;;
8677 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
8678 print substr($2, 4, 20)
8680 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8681 print substr($3, 4, 20)
8683 : Append some common names just in case the awk scan failed.
8684 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
8685 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
8686 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
8687 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
8688 : generate a few handy files for later
8689 $cat > signal.c <<'EOP'
8690 #include <sys/types.h>
8694 /* Strange style to avoid deeply-nested #if/#else/#endif */
8697 # define NSIG (_NSIG)
8703 # define NSIG (SIGMAX+1)
8709 # define NSIG (SIG_MAX+1)
8715 # define NSIG (MAXSIG+1)
8721 # define NSIG (MAX_SIG+1)
8726 # ifdef SIGARRAYSIZE
8727 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
8733 # define NSIG (_sys_nsig) /* Solaris 2.5 */
8737 /* Default to some arbitrary number that's big enough to get most
8738 of the common signals.
8744 printf("NSIG %d\n", NSIG);
8747 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
8749 printf "#ifdef SIG"; printf $1; printf "\n"
8750 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
8751 printf $1; printf ");\n"
8758 $cat >signal.awk <<'EOP'
8760 $1 ~ /^NSIG$/ { nsig = $2 }
8761 ($1 !~ /^NSIG$/) && (NF == 2) {
8762 if ($2 > maxsig) { maxsig = $2 }
8764 dup_name[ndups] = $1
8775 if (nsig == 0) { nsig = maxsig + 1 }
8776 for (n = 1; n < nsig; n++) {
8778 printf("%s %d\n", sig_name[n], sig_num[n])
8781 printf("NUM%d %d\n", n, n)
8784 for (n = 0; n < ndups; n++) {
8785 printf("%s %d\n", dup_name[n], dup_num[n])
8789 $cat >signal_cmd <<EOS
8791 $test -s signal.lst && exit 0
8792 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
8793 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8795 echo "(I can't seem be able to compile the test program -- Guessing)"
8796 echo 'kill -l' >signal
8797 set X \`csh -f <signal\`
8801 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
8803 echo \$@ | $tr ' ' '\012' | \
8804 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
8806 $rm -f signal.c signal signal.o
8808 chmod a+x signal_cmd
8809 $eunicefix signal_cmd
8811 : generate list of signal names
8821 echo "Generating a list of signal names and numbers..." >&4
8823 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
8824 sig_name="ZERO $sig_name"
8825 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
8826 sig_num="0 $sig_num"
8829 echo "The following signals are available:"
8831 echo $sig_name | $awk \
8832 'BEGIN { linelen = 0 }
8834 for (i = 1; i <= NF; i++) {
8836 linelen = linelen + length(name)
8839 linelen = length(name)
8845 $rm -f signal signal.c signal.awk signal.lst signal_cmd
8847 : see what type is used for size_t
8848 set size_t sizetype 'unsigned int' stdio.h sys/types.h
8852 rp="What type is used for the length parameter for string functions?"
8856 : see what type is used for signed size_t
8857 set ssize_t ssizetype int stdio.h sys/types.h
8860 $cat > ssize.c <<EOM
8862 #include <sys/types.h>
8863 #define Size_t $sizetype
8864 #define SSize_t $dflt
8867 if (sizeof(Size_t) == sizeof(SSize_t))
8869 else if (sizeof(Size_t) == sizeof(int))
8877 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 &&
8878 ./ssize > /dev/null 2>&1 ; then
8880 echo "I'll be using $ssizetype for functions returning a byte count." >&4
8882 echo "(I can't compile and run the test program--please enlighten me!)"
8885 I need a type that is the same size as $sizetype, but is guaranteed to
8886 be signed. Common values are int and long.
8889 rp="What signed type is the same size as $sizetype?"
8893 $rm -f ssize ssize.[co]
8895 : see what type of char stdio uses.
8897 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
8898 echo "Your stdio uses unsigned chars." >&4
8899 stdchar="unsigned char"
8901 echo "Your stdio uses signed chars." >&4
8905 : see if time exists
8907 if set time val -f d_time; eval $csym; $val; then
8908 echo 'time() found.' >&4
8910 set time_t timetype long stdio.h sys/types.h
8914 rp="What type is returned by time() on this system?"
8918 echo 'time() not found, hope that will do.' >&4
8925 : see what type uids are declared as in the kernel
8926 set uid_t uidtype xxx stdio.h sys/types.h
8930 xxx=`./findhdr sys/user.h`
8931 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
8933 unsigned) dflt="$1 $2" ;;
8937 *) dflt="$uidtype";;
8940 rp="What is the type for user ids returned by getuid()?"
8944 : see if dbm.h is available
8945 : see if dbmclose exists
8946 set dbmclose d_dbmclose
8949 case "$d_dbmclose" in
8959 *) set rpcsvc/dbm.h i_rpcsvcdbm
8964 *) echo "We won't be including <dbm.h>"
8974 : see if this is a sys/file.h system
8979 : do we need to include sys/file.h ?
8985 echo "We'll be including <sys/file.h>." >&4
8988 echo "We won't be including <sys/file.h>." >&4
8998 : see if fcntl.h is there
9003 : see if we can include fcntl.h
9009 echo "We'll be including <fcntl.h>." >&4
9013 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
9015 echo "We won't be including <fcntl.h>." >&4
9027 : see if this is an grp system
9031 : see if locale.h is available
9032 set locale.h i_locale
9035 : see if this is a math.h system
9039 : see if ndbm.h is available
9044 : see if dbm_open exists
9045 set dbm_open d_dbm_open
9047 case "$d_dbm_open" in
9050 echo "We won't be including <ndbm.h>"
9059 : see if net/errno.h is available
9064 : Unfortunately, it causes problems on some systems. Arrgh.
9070 #include <net/errno.h>
9076 if $cc $ccflags -c try.c >/dev/null 2>&1; then
9077 echo "We'll be including <net/errno.h>." >&4
9079 echo "We won't be including <net/errno.h>." >&4
9088 : get C preprocessor symbols handy
9090 $echo $n "Hmm... $c"
9091 echo $al | $tr ' ' '\012' >Cppsym.know
9103 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
9105 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
9108 unknown="\$unknown \$sym"
9118 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
9120 exit 0; _ _ _ _\1\\ \1\\
9123 echo "exit 1; _ _ _" >>Cppsym\$\$
9124 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
9126 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
9132 $rm -f Cppsym\$\$ Cppsym2\$\$
9137 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
9139 : now check the C compiler for additional symbols
9145 for i in \`$cc -v -c tmp.c 2>&1\`
9148 -D*) echo "\$i" | $sed 's/^-D//';;
9149 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
9156 ./ccsym | $sort | $uniq >ccsym.raw
9157 $awk '/\=/ { print $0; next }
9158 { print $0"=1" }' ccsym.raw >ccsym.list
9159 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
9160 $comm -13 ccsym.true ccsym.list >ccsym.own
9161 $comm -12 ccsym.true ccsym.list >ccsym.com
9162 $comm -23 ccsym.true ccsym.list >ccsym.cpp
9165 if $test -z ccsym.raw; then
9166 echo "Your C compiler doesn't seem to define any symbol!" >&4
9168 echo "However, your C preprocessor defines the following ones:"
9171 if $test -s ccsym.com; then
9172 echo "Your C compiler and pre-processor define these symbols:"
9173 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
9176 $test "$silent" || sleep 1
9178 if $test -s ccsym.cpp; then
9179 $test "$also" && echo " "
9180 echo "Your C pre-processor ${also}defines the following $symbols:"
9181 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
9183 $test "$silent" || sleep 1
9185 if $test -s ccsym.own; then
9186 $test "$also" && echo " "
9187 echo "Your C compiler ${also}defines the following cpp variables:"
9188 $sed -e 's/\(.*\)=1/\1/' ccsym.own
9189 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
9190 $test "$silent" || sleep 1
9195 : see if this is a termio system
9199 if $test `./findhdr termios.h`; then
9200 set tcsetattr i_termios
9206 "$define") echo "You have POSIX termios.h... good!" >&4;;
9207 *) if ./Cppsym pyr; then
9208 case "`/bin/universe`" in
9209 ucb) if $test `./findhdr sgtty.h`; then
9211 echo "<sgtty.h> found." >&4
9213 echo "System is pyramid with BSD universe."
9214 echo "<sgtty.h> not found--you could have problems." >&4
9216 *) if $test `./findhdr termio.h`; then
9218 echo "<termio.h> found." >&4
9220 echo "System is pyramid with USG universe."
9221 echo "<termio.h> not found--you could have problems." >&4
9225 if $test `./findhdr termio.h`; then
9226 echo "<termio.h> found." >&4
9228 elif $test `./findhdr sgtty.h`; then
9229 echo "<sgtty.h> found." >&4
9232 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
9235 if $test `./findhdr sgtty.h`; then
9236 echo "<sgtty.h> found." >&4
9238 elif $test `./findhdr termio.h`; then
9239 echo "<termio.h> found." >&4
9242 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
9246 set i_termio; eval $setvar
9247 val=$val2; set i_sgtty; eval $setvar
9248 val=$val3; set i_termios; eval $setvar
9250 : see if stdarg is available
9252 if $test `./findhdr stdarg.h`; then
9253 echo "<stdarg.h> found." >&4
9256 echo "<stdarg.h> NOT found." >&4
9260 : see if varags is available
9262 if $test `./findhdr varargs.h`; then
9263 echo "<varargs.h> found." >&4
9265 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
9268 : set up the varargs testing programs
9269 $cat > varargs.c <<EOP
9274 #include <varargs.h>
9292 p = va_arg(ap, char *);
9297 $cat > varargs <<EOP
9299 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
9308 : now check which varargs header should be included
9313 if `./varargs I_STDARG`; then
9315 elif `./varargs I_VARARGS`; then
9320 if `./varargs I_VARARGS`; then
9327 echo "I could not find the definition for va_dcl... You have problems..." >&4
9328 val="$undef"; set i_stdarg; eval $setvar
9329 val="$undef"; set i_varargs; eval $setvar
9336 val="$define"; set i_stdarg; eval $setvar
9337 val="$undef"; set i_varargs; eval $setvar
9340 val="$undef"; set i_stdarg; eval $setvar
9341 val="$define"; set i_varargs; eval $setvar
9344 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
9348 : see if stddef is available
9349 set stddef.h i_stddef
9352 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
9353 set sys/filio.h i_sysfilio
9356 if $test `./findhdr sys/ioctl.h`; then
9358 echo '<sys/ioctl.h> found.' >&4
9361 if $test $i_sysfilio = "$define"; then
9362 echo '<sys/ioctl.h> NOT found.' >&4
9364 $test $i_sgtty = "$define" && xxx="sgtty.h"
9365 $test $i_termio = "$define" && xxx="termio.h"
9366 $test $i_termios = "$define" && xxx="termios.h"
9367 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
9373 : see if this is a sys/param system
9374 set sys/param.h i_sysparam
9377 : see if sys/resource.h has to be included
9378 set sys/resource.h i_sysresrc
9381 : see if sys/stat.h is available
9382 set sys/stat.h i_sysstat
9385 : see if sys/types.h has to be included
9386 set sys/types.h i_systypes
9389 : see if this is a sys/un.h system
9390 set sys/un.h i_sysun
9393 : see if this is a syswait system
9394 set sys/wait.h i_syswait
9397 : see if this is an utime system
9401 : see if this is a values.h system
9402 set values.h i_values
9405 : see if this is a vfork system
9416 : see if gdbm.h is available
9421 : see if gdbm_open exists
9422 set gdbm_open d_gdbm_open
9424 case "$d_gdbm_open" in
9427 echo "We won't be including <gdbm.h>"
9437 echo "Looking for extensions..." >&4
9439 : If we are using the old config.sh, known_extensions may contain
9440 : old or inaccurate or duplicate values.
9442 : We do not use find because it might not be available.
9443 : We do not just use MANIFEST because the user may have dropped
9444 : some additional extensions into the source tree and expect them
9447 if $test -f $xxx/$xxx.xs; then
9448 known_extensions="$known_extensions $xxx"
9450 if $test -d $xxx; then
9453 if $test -f $yyy/$yyy.xs; then
9454 known_extensions="$known_extensions $xxx/$yyy"
9461 set X $known_extensions
9463 known_extensions="$*"
9466 : Now see which are supported on this system.
9468 for xxx in $known_extensions ; do
9470 DB_File) case "$i_db" in
9471 $define) avail_ext="$avail_ext $xxx" ;;
9474 GDBM_File) case "$i_gdbm" in
9475 $define) avail_ext="$avail_ext $xxx" ;;
9478 NDBM_File) case "$i_ndbm" in
9479 $define) avail_ext="$avail_ext $xxx" ;;
9482 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
9483 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
9486 POSIX) case "$useposix" in
9487 true|define|y) avail_ext="$avail_ext $xxx" ;;
9490 Opcode) case "$useopcode" in
9491 true|define|y) avail_ext="$avail_ext $xxx" ;;
9494 Socket) case "$d_socket" in
9495 $define) avail_ext="$avail_ext $xxx" ;;
9498 *) avail_ext="$avail_ext $xxx"
9510 A number of extensions are supplied with $package. You may choose to
9511 compile these extensions for dynamic loading (the default), compile
9512 them into the $package executable (static loading), or not include
9513 them at all. Answer "none" to include no extensions.
9516 case "$dynamic_ext" in
9517 '') dflt="$avail_ext" ;;
9518 *) dflt="$dynamic_ext" ;;
9523 rp="What extensions do you wish to load dynamically?"
9526 none) dynamic_ext=' ' ;;
9527 *) dynamic_ext="$ans" ;;
9530 case "$static_ext" in
9532 : Exclude those already listed in dynamic linking
9534 for xxx in $avail_ext; do
9535 case " $dynamic_ext " in
9537 *) dflt="$dflt $xxx" ;;
9544 *) dflt="$static_ext"
9551 rp="What extensions do you wish to load statically?"
9554 none) static_ext=' ' ;;
9555 *) static_ext="$ans" ;;
9560 A number of extensions are supplied with $package. Answer "none"
9561 to include no extensions.
9564 case "$static_ext" in
9565 '') dflt="$avail_ext" ;;
9566 *) dflt="$static_ext" ;;
9572 rp="What extensions do you wish to include?"
9575 none) static_ext=' ' ;;
9576 *) static_ext="$ans" ;;
9581 set X $dynamic_ext $static_ext
9585 : Remove build directory name from cppstdin so it can be used from
9586 : either the present location or the final installed location.
9588 : Get out of the UU directory to get correct path name.
9592 echo "Stripping down cppstdin path name"
9598 : end of configuration questions
9600 echo "End of configuration questions."
9603 : back to where it started
9604 if test -d ../UU; then
9608 : configuration may be patched via a 'config.over' file
9609 if $test -f config.over; then
9612 rp='I see a config.over file. Do you wish to load it?'
9615 n*) echo "OK, I'll ignore it.";;
9617 echo "Configuration override changes have been loaded."
9622 : in case they want portability, strip down executable paths
9623 case "$d_portable" in
9626 echo "Stripping down executable paths..." >&4
9627 for file in $loclist $trylist; do
9633 : create config.sh file
9635 echo "Creating config.sh..." >&4
9636 $spitshell <<EOT >config.sh
9639 # This file was produced by running the Configure script. It holds all the
9640 # definitions figured out by Configure. Should you modify one of these values,
9641 # do not forget to propagate your changes by running "Configure -der". You may
9642 # instead choose to run each of the .SH files by yourself, or "Configure -S".
9645 # Configuration time: $cf_time
9646 # Configured by: $cf_by
9647 # Target system: $myuname
9657 Revision='$Revision'
9661 alignbytes='$alignbytes'
9662 aphostname='$aphostname'
9665 archlibexp='$archlibexp'
9666 archname='$archname'
9667 archobjs='$archobjs'
9675 byteorder='$byteorder'
9677 castflags='$castflags'
9680 cccdlflags='$cccdlflags'
9681 ccdlflags='$ccdlflags'
9684 cf_email='$cf_email'
9689 clocktype='$clocktype'
9691 compress='$compress'
9692 contains='$contains'
9696 cpp_stuff='$cpp_stuff'
9697 cppflags='$cppflags'
9699 cppminus='$cppminus'
9701 cppstdin='$cppstdin'
9702 cryptlib='$cryptlib'
9704 d_Gconvert='$d_Gconvert'
9705 d_access='$d_access'
9707 d_archlib='$d_archlib'
9708 d_attribut='$d_attribut'
9712 d_bsdgetpgrp='$d_bsdgetpgrp'
9713 d_bsdpgrp='$d_bsdpgrp'
9714 d_bsdsetpgrp='$d_bsdsetpgrp'
9716 d_casti32='$d_casti32'
9717 d_castneg='$d_castneg'
9718 d_charvspr='$d_charvspr'
9720 d_chroot='$d_chroot'
9721 d_chsize='$d_chsize'
9722 d_closedir='$d_closedir'
9726 d_cuserid='$d_cuserid'
9727 d_dbl_dig='$d_dbl_dig'
9728 d_difftime='$d_difftime'
9729 d_dirnamlen='$d_dirnamlen'
9730 d_dlerror='$d_dlerror'
9731 d_dlopen='$d_dlopen'
9732 d_dlsymun='$d_dlsymun'
9733 d_dosuid='$d_dosuid'
9735 d_eofnblk='$d_eofnblk'
9736 d_eunice='$d_eunice'
9737 d_fchmod='$d_fchmod'
9738 d_fchown='$d_fchown'
9740 d_fd_macros='$d_fd_macros'
9741 d_fd_set='$d_fd_set'
9742 d_fds_bits='$d_fds_bits'
9743 d_fgetpos='$d_fgetpos'
9744 d_flexfnam='$d_flexfnam'
9747 d_fpathconf='$d_fpathconf'
9748 d_fsetpos='$d_fsetpos'
9749 d_getgrps='$d_getgrps'
9750 d_gethent='$d_gethent'
9751 d_gethname='$d_gethname'
9752 d_getlogin='$d_getlogin'
9753 d_getpgid='$d_getpgid'
9754 d_getpgrp2='$d_getpgrp2'
9755 d_getpgrp='$d_getpgrp'
9756 d_getppid='$d_getppid'
9757 d_getprior='$d_getprior'
9758 d_gnulibc='$d_gnulibc'
9761 d_isascii='$d_isascii'
9762 d_killpg='$d_killpg'
9764 d_locconv='$d_locconv'
9768 d_mbstowcs='$d_mbstowcs'
9769 d_mbtowc='$d_mbtowc'
9770 d_memcmp='$d_memcmp'
9771 d_memcpy='$d_memcpy'
9772 d_memmove='$d_memmove'
9773 d_memset='$d_memset'
9775 d_mkfifo='$d_mkfifo'
9776 d_mktime='$d_mktime'
9778 d_msgctl='$d_msgctl'
9779 d_msgget='$d_msgget'
9780 d_msgrcv='$d_msgrcv'
9781 d_msgsnd='$d_msgsnd'
9782 d_mymalloc='$d_mymalloc'
9784 d_oldarchlib='$d_oldarchlib'
9785 d_oldsock='$d_oldsock'
9787 d_pathconf='$d_pathconf'
9789 d_phostname='$d_phostname'
9792 d_portable='$d_portable'
9794 d_pwchange='$d_pwchange'
9795 d_pwclass='$d_pwclass'
9796 d_pwcomment='$d_pwcomment'
9797 d_pwexpire='$d_pwexpire'
9798 d_pwquota='$d_pwquota'
9799 d_readdir='$d_readdir'
9800 d_readlink='$d_readlink'
9801 d_rename='$d_rename'
9802 d_rewinddir='$d_rewinddir'
9804 d_safebcpy='$d_safebcpy'
9805 d_safemcpy='$d_safemcpy'
9806 d_seekdir='$d_seekdir'
9807 d_select='$d_select'
9809 d_semctl='$d_semctl'
9810 d_semget='$d_semget'
9812 d_setegid='$d_setegid'
9813 d_seteuid='$d_seteuid'
9814 d_setlinebuf='$d_setlinebuf'
9815 d_setlocale='$d_setlocale'
9816 d_setpgid='$d_setpgid'
9817 d_setpgrp2='$d_setpgrp2'
9818 d_setpgrp='$d_setpgrp'
9819 d_setprior='$d_setprior'
9820 d_setregid='$d_setregid'
9821 d_setresgid='$d_setresgid'
9822 d_setresuid='$d_setresuid'
9823 d_setreuid='$d_setreuid'
9824 d_setrgid='$d_setrgid'
9825 d_setruid='$d_setruid'
9826 d_setsid='$d_setsid'
9830 d_shmatprototype='$d_shmatprototype'
9831 d_shmctl='$d_shmctl'
9833 d_shmget='$d_shmget'
9834 d_sigaction='$d_sigaction'
9835 d_sigsetjmp='$d_sigsetjmp'
9836 d_socket='$d_socket'
9837 d_sockpair='$d_sockpair'
9838 d_statblks='$d_statblks'
9839 d_stdio_cnt_lval='$d_stdio_cnt_lval'
9840 d_stdio_ptr_lval='$d_stdio_ptr_lval'
9841 d_stdiobase='$d_stdiobase'
9842 d_stdstdio='$d_stdstdio'
9843 d_strchr='$d_strchr'
9844 d_strcoll='$d_strcoll'
9845 d_strctcpy='$d_strctcpy'
9846 d_strerrm='$d_strerrm'
9847 d_strerror='$d_strerror'
9848 d_strxfrm='$d_strxfrm'
9849 d_suidsafe='$d_suidsafe'
9850 d_symlink='$d_symlink'
9851 d_syscall='$d_syscall'
9852 d_sysconf='$d_sysconf'
9853 d_sysernlst='$d_sysernlst'
9854 d_syserrlst='$d_syserrlst'
9855 d_system='$d_system'
9856 d_tcgetpgrp='$d_tcgetpgrp'
9857 d_tcsetpgrp='$d_tcsetpgrp'
9858 d_telldir='$d_telldir'
9861 d_truncate='$d_truncate'
9862 d_tzname='$d_tzname'
9866 d_void_closedir='$d_void_closedir'
9867 d_voidsig='$d_voidsig'
9868 d_voidtty='$d_voidtty'
9869 d_volatile='$d_volatile'
9870 d_vprintf='$d_vprintf'
9872 d_waitpid='$d_waitpid'
9873 d_wcstombs='$d_wcstombs'
9874 d_wctomb='$d_wctomb'
9877 db_hashtype='$db_hashtype'
9878 db_prefixtype='$db_prefixtype'
9879 defvoidused='$defvoidused'
9880 direntrytype='$direntrytype'
9883 dynamic_ext='$dynamic_ext'
9888 eunicefix='$eunicefix'
9891 extensions='$extensions'
9893 firstmakefile='$firstmakefile'
9895 fpostype='$fpostype'
9896 freetype='$freetype'
9897 full_csh='$full_csh'
9898 full_sed='$full_sed'
9900 gccversion='$gccversion'
9904 groupcat='$groupcat'
9905 groupstype='$groupstype'
9908 h_sysfile='$h_sysfile'
9912 i_bsdioctl='$i_bsdioctl'
9915 i_dirent='$i_dirent'
9922 i_limits='$i_limits'
9923 i_locale='$i_locale'
9924 i_malloc='$i_malloc'
9926 i_memory='$i_memory'
9928 i_neterrno='$i_neterrno'
9931 i_rpcsvcdbm='$i_rpcsvcdbm'
9934 i_stdarg='$i_stdarg'
9935 i_stddef='$i_stddef'
9936 i_stdlib='$i_stdlib'
9937 i_string='$i_string'
9938 i_sysdir='$i_sysdir'
9939 i_sysfile='$i_sysfile'
9940 i_sysfilio='$i_sysfilio'
9942 i_sysioctl='$i_sysioctl'
9943 i_sysndir='$i_sysndir'
9944 i_sysparam='$i_sysparam'
9945 i_sysresrc='$i_sysresrc'
9946 i_sysselct='$i_sysselct'
9947 i_syssockio='$i_syssockio'
9948 i_sysstat='$i_sysstat'
9949 i_systime='$i_systime'
9950 i_systimek='$i_systimek'
9951 i_systimes='$i_systimes'
9952 i_systypes='$i_systypes'
9954 i_syswait='$i_syswait'
9955 i_termio='$i_termio'
9956 i_termios='$i_termios'
9958 i_unistd='$i_unistd'
9960 i_values='$i_values'
9961 i_varargs='$i_varargs'
9962 i_varhdr='$i_varhdr'
9966 installarchlib='$installarchlib'
9967 installbin='$installbin'
9968 installman1dir='$installman1dir'
9969 installman3dir='$installman3dir'
9970 installprivlib='$installprivlib'
9971 installscript='$installscript'
9972 installsitearch='$installsitearch'
9973 installsitelib='$installsitelib'
9975 known_extensions='$known_extensions'
9979 lddlflags='$lddlflags'
9987 libswanted='$libswanted'
9993 locincpth='$locincpth'
9994 loclibpth='$loclibpth'
9998 lseektype='$lseektype'
10002 make_set_make='$make_set_make'
10003 mallocobj='$mallocobj'
10004 mallocsrc='$mallocsrc'
10005 malloctype='$malloctype'
10007 man1direxp='$man1direxp'
10010 man3direxp='$man3direxp'
10014 mips_type='$mips_type'
10017 modetype='$modetype'
10020 myarchname='$myarchname'
10021 mydomain='$mydomain'
10022 myhostname='$myhostname'
10026 nm_so_opt='$nm_so_opt'
10028 o_nonblock='$o_nonblock'
10030 oldarchlib='$oldarchlib'
10031 oldarchlibexp='$oldarchlibexp'
10032 optimize='$optimize'
10033 orderlib='$orderlib'
10039 patchlevel='$patchlevel'
10040 path_sep='$path_sep'
10042 perladmin='$perladmin'
10043 perlpath='$perlpath'
10045 phostname='$phostname'
10050 prefixexp='$prefixexp'
10052 privlibexp='$privlibexp'
10053 prototype='$prototype'
10054 randbits='$randbits'
10056 rd_nodata='$rd_nodata'
10060 scriptdir='$scriptdir'
10061 scriptdirexp='$scriptdirexp'
10063 selecttype='$selecttype'
10064 sendmail='$sendmail'
10067 sharpbang='$sharpbang'
10068 shmattype='$shmattype'
10071 sig_name='$sig_name'
10073 signal_t='$signal_t'
10074 sitearch='$sitearch'
10075 sitearchexp='$sitearchexp'
10077 sitelibexp='$sitelibexp'
10078 sizetype='$sizetype'
10083 sockethdr='$sockethdr'
10084 socketlib='$socketlib'
10086 spackage='$spackage'
10087 spitshell='$spitshell'
10089 ssizetype='$ssizetype'
10090 startperl='$startperl'
10092 static_ext='$static_ext'
10094 stdio_base='$stdio_base'
10095 stdio_bufsiz='$stdio_bufsiz'
10096 stdio_cnt='$stdio_cnt'
10097 stdio_filbuf='$stdio_filbuf'
10098 stdio_ptr='$stdio_ptr'
10101 subversion='$subversion'
10107 timeincl='$timeincl'
10108 timetype='$timetype'
10116 usemymalloc='$usemymalloc'
10118 useopcode='$useopcode'
10119 useperlio='$useperlio'
10120 useposix='$useposix'
10122 useshrplib='$useshrplib'
10123 usevfork='$usevfork'
10127 voidflags='$voidflags'
10133 : add special variables
10134 $test -f patchlevel.h && \
10135 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
10136 echo "CONFIG=true" >>config.sh
10138 : propagate old symbols
10139 if $test -f UU/config.sh; then
10140 <UU/config.sh sort | uniq >UU/oldconfig.sh
10141 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
10142 sort | uniq -u >UU/oldsyms
10143 set X `cat UU/oldsyms`
10149 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
10151 echo "# Variables propagated from previous config.sh file." >>config.sh
10152 for sym in `cat UU/oldsyms`; do
10153 echo " Propagating $hint variable "'$'"$sym..."
10154 eval 'tmp="$'"${sym}"'"'
10156 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
10162 : Finish up by extracting the .SH files
10176 If you'd like to make any changes to the config.sh file before I begin
10177 to configure things, do it as a shell escape now (e.g. !vi config.sh).
10180 rp="Press return or use a shell escape to edit config.sh:"
10185 *) : in case they cannot read
10186 sh 1>&4 -c "$ans";;
10191 : if this fails, just run all the .SH files by hand
10198 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
10205 Now you need to generate make dependencies by running "make depend".
10206 You might prefer to run it in background: "make depend > makedepend.out &"
10207 It can take a while, so you might not want to run it right now.
10212 rp="Run make depend now?"
10216 make depend && echo "Now you must run a make."
10219 echo "You must run 'make depend' then 'make'."
10222 elif test -f [Mm]akefile; then
10224 echo "Now you must run a make."
10229 $rm -f kit*isdone ark*isdone