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 Sat Feb 1 00:26:40 EST 1997 [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 : Test and see if we are running under ksh, either blatantly or in disguise.
95 if (PATH=.; alias -x) >/dev/null 2>&1; then
96 : running under ksh. Is this a good thing?
97 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname ; then
98 if test X`/usr/bin/uname -v` = X4 ; then
99 : on AIX 4, /bin/sh is really ksh, and it causes us problems.
102 (Feeding myself to /usr/bin/bsh to avoid AIX 4's /bin/sh.)
105 exec /usr/bin/bsh $0 "$@"
108 if test ! -f /hp-ux ; then
109 : Warn them if they use ksh on other systems
111 (I see you are using the Korn shell. Some ksh's blow up on $me,
112 especially on older exotic systems. If yours does, try the Bourne
118 : Not running under ksh. Maybe we should be?
119 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
120 if test -f /hp-ux -a -f /bin/ksh; then
122 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
125 exec /bin/ksh $0 "$@"
129 : Configure runs within the UU subdirectory
130 test -d UU || mkdir UU
629 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
632 : We must find out about Eunice early
634 if test -f /etc/unixtovms; then
635 eunicefix=/etc/unixtovms
637 if test -f /etc/unixtovms.exe; then
638 eunicefix=/etc/unixtovms.exe
641 : list of known cpp symbols, sorted alphabetically
642 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
643 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
644 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
645 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
646 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
647 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
648 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
649 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
650 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
651 al="$al VMS Xenix286"
652 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
653 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
654 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
655 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
656 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
657 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
658 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
659 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
660 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
661 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
662 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
663 al="$al __SVR4_2__ __UMAXV__"
664 al="$al ____386BSD____ __alpha __alpha__ __amiga"
665 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
666 al="$al __host_mips__"
667 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
668 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
669 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
670 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
671 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
672 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
673 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
674 al="$al __mc88100 __mc88100__ __mips __mips__"
675 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
676 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
677 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
678 al="$al _host_mips _mips _unix"
679 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
680 al="$al apollo ardent att386 att3b"
681 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
682 al="$al cadmus clipper concurrent convex cray ctix"
683 al="$al dmert encore gcos gcx gimpel gould"
684 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
685 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
686 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
687 al="$al i186 i286 i386 i486 i8086"
688 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
689 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
690 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
691 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
692 al="$al mc88000 mc88100 merlin mert mips mvs n16"
693 al="$al ncl_el ncl_mr"
694 al="$al news1500 news1700 news1800 news1900 news3700"
695 al="$al news700 news800 news900 ns16000 ns32000"
696 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
697 al="$al parisc pc532 pdp11 plexus posix pyr"
698 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
699 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
700 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
701 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
702 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
703 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
708 : default library list
710 : set useposix=false in your hint file to disable the POSIX extension.
712 : set useopcode=false in your hint file to disable the Opcode extension.
714 : Define several unixisms. These can be used in hint files.
716 : Extra object files, if any, needed on this platform.
718 : Possible local include directories to search.
719 : Set locincpth to "" in a hint file to defeat local include searches.
720 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
721 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
723 : no include file wanted by default
726 : change the next line if compiling for Xenix/286 on Xenix/386
727 xlibpth='/usr/lib/386 /lib/386'
729 : Possible local library directories to search.
730 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
731 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
733 : general looking path for locating libraries
734 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
735 glibpth="$glibpth /lib /usr/lib $xlibpth"
736 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
737 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
739 : Private path used by Configure to find libraries. Its value
740 : is prepended to libpth. This variable takes care of special
741 : machines, like the mips. Usually, it should be empty.
744 : full support for void wanted by default
747 : List of libraries we want.
748 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
749 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
750 libswanted="$libswanted ucb bsd BSD PW x"
751 : We probably want to search /usr/shlib before most other libraries.
752 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
753 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
754 glibpth="/usr/shlib $glibpth"
755 : Do not use vfork unless overridden by a hint file.
758 : Find the basic shell for Bourne shell scripts
761 : SYSTYPE is for some older MIPS systems.
762 : I do not know if it is still needed.
764 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
767 if test -f "$xxx"; then
770 : Build up a list and do a single loop so we can 'break' out.
771 pth=`echo $PATH | sed -e "s/$p_/ /g"`
772 for xxx in sh bash ksh pdksh ash; do
774 try="$try ${p}/${xxx}"
778 if test -f "$xxx"; then
780 echo "Your Bourne shell appears to be in $sh."
782 elif test -f "$xxx.exe"; then
784 echo "Hmm. Your Bourne shell appears to be in $sh."
794 $me: Fatal Error: I can't find a Bourne Shell anywhere.
795 Usually it's in /bin/sh. How did you even get this far?
796 Please contact me (Chip Salzenberg) at chip@atlantic.net and
797 we'll try to straigten this all out.
803 : see if sh knows # comments
804 if `$sh -c '#' >/dev/null 2>&1`; then
809 test -f $xcat || xcat=/usr/bin/cat
814 if test -s today; then
817 echo "#! $xcat" > try
821 if test -s today; then
824 echo "Okay, let's see if #! works on this system..."
825 echo "It's just a comment."
830 echo "Your $sh doesn't grok # comments--I will strip them later on."
833 echo "exec grep -v '^[ ]*#'" >spitshell
836 spitshell=`pwd`/spitshell
838 echo "I presume that if # doesn't work, #! won't work either!"
843 : figure out how to guarantee sh startup
845 '') startsh=${sharpbang}${sh} ;;
857 : echo "Yup, it does."
859 echo "Hmm. '$startsh' didn't work."
860 echo "You may have to fix up the shell scripts to make sure sh runs them."
864 : script used to extract .SH files with variable substitutions
868 cat >>extract <<'EOS'
870 echo "Doing variable substitutions on .SH files..."
871 if test -f MANIFEST; then
872 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
873 : Pick up possible extension manifests.
874 for dir in ext/* ; do
875 if test -f $dir/MANIFEST; then
876 xxx=`awk '{print $1}' < $dir/MANIFEST |
877 sed -n "/\.SH$/ s@^@$dir/@p"`
878 shlist="$shlist $xxx"
883 echo "(Looking for .SH files under the current directory.)"
884 set x `find . -name "*.SH" -print`
888 0) set x *.SH; shift;;
890 if test ! -f $1; then
896 dir=`expr X$file : 'X\(.*\)/'`
897 file=`expr X$file : 'X.*/\(.*\)'`
898 (cd $dir && . ./$file)
905 if test -f config_h.SH; then
906 if test ! -f config.h; then
907 : oops, they left it out of MANIFEST, probably, so do it anyway.
913 : produce awk script to parse command line options
914 cat >options.awk <<'EOF'
916 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
918 len = length(optstr);
919 for (i = 1; i <= len; i++) {
920 c = substr(optstr, i, 1);
921 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
932 if (substr(str, 1, 1) != "-") {
933 printf("'%s'\n", str);
937 for (i = 2; i <= len; i++) {
938 c = substr(str, i, 1);
940 printf("-%s\n", substr(str, i));
946 printf("'%s'\n", substr(str, i + 1));
959 : process the command line options
960 set X `for arg in "$@"; do echo "X$arg"; done |
961 sed -e s/X// | awk -f options.awk`
966 : set up default values
983 while test $# -gt 0; do
985 -d) shift; fastread=yes;;
986 -e) shift; alldone=cont;;
990 if test -r "$1"; then
993 echo "$me: cannot read config file $1." >&2
998 -h) shift; error=true;;
999 -r) shift; reuseval=true;;
1000 -s) shift; silent=true;;
1001 -E) shift; alldone=exit;;
1002 -K) shift; knowitall=true;;
1003 -O) shift; override=true;;
1004 -S) shift; extractsh=true;;
1009 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1010 echo "$me: ignoring -D $1" >&2
1013 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1014 *) echo "$1='define'" >> optdef.sh;;
1021 *=) echo "$1" >> optdef.sh;;
1023 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1024 echo "$me: ignoring -U $1" >&2
1026 *) echo "$1='undef'" >> optdef.sh;;
1030 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1033 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1041 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1042 [-U symbol] [-U symbol=]
1043 -d : use defaults for all answers.
1044 -e : go on without questioning past the production of config.sh.
1045 -f : specify an alternate default configuration file.
1046 -h : print this help message and exit (with an error status).
1047 -r : reuse C symbols value if possible (skips costly nm extraction).
1048 -s : silent mode, only echoes questions and essential information.
1049 -D : define symbol to have some value:
1050 -D symbol symbol gets the value 'define'
1051 -D symbol=value symbol gets the value 'value'
1052 -E : stop at the end of questions, after having produced config.sh.
1053 -K : do not use unless you know what you are doing.
1054 -O : let -D and -U override definitions from loaded configuration file.
1055 -S : perform variable substitutions on all .SH files (can mix with -f)
1056 -U : undefine symbol:
1057 -U symbol symbol gets the value 'undef'
1058 -U symbol= symbol gets completely empty
1059 -V : print version number and exit (with a zero status).
1067 true) exec 1>/dev/null;;
1070 : run the defines and the undefines, if any, but leave the file out there...
1074 case "$extractsh" in
1076 case "$config_sh" in
1077 '') config_sh='config.sh'; config='./config.sh';;
1078 /*) config="$config_sh";;
1079 *) config="./$config_sh";;
1082 echo "Fetching answers from $config_sh..."
1085 test "$override" && . ./optdef.sh
1096 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1097 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1098 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1099 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1100 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1103 : Eunice requires " " instead of "", can you believe it
1106 echo "Beginning of configuration questions for $package."
1108 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1110 : Some greps do not return status, grrr.
1111 echo "grimblepritz" >grimble
1112 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1114 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1120 : the following should work in any shell
1124 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1125 cat >contains <<'EOSS'
1126 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1131 : first determine how to suppress newline on echo command
1133 echo "Checking echo to see how to suppress newlines..."
1134 (echo "hi there\c" ; echo " ") >.echotmp
1135 if $contains c .echotmp >/dev/null 2>&1 ; then
1146 echo $n "The star should be here-->$c"
1150 : Now test for existence of everything in MANIFEST
1152 if test -f ../MANIFEST; then
1153 echo "First let's make sure your kit is complete. Checking..." >&4
1154 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1156 for filelist in x??; do
1157 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1159 if test -s missing; then
1163 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1165 You have the option of continuing the configuration process, despite the
1166 distinct possibility that your kit is damaged, by typing 'y'es. If you
1167 do, don't blame me if something goes wrong. I advise you to type 'n'o
1168 and contact the author (chip@atlantic.net).
1171 echo $n "Continue? [n] $c" >&4
1175 echo "Continuing..." >&4
1179 echo "ABORTING..." >&4
1184 echo "Looks good..." >&4
1187 echo "There is no MANIFEST file. I hope your kit is complete !"
1191 : compute the number of columns on the terminal for proper question formatting
1196 : set up the echo used in my read
1197 myecho="case \"\$xxxm\" in
1198 '') echo $n \"\$rp $c\" >&4;;
1200 '') echo $n \"[\$xxxm] $c\";;
1202 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1204 echo $n \"[\$xxxm] $c\" >&4
1206 echo $n \"\$rp [\$xxxm] $c\" >&4
1212 : now set up to do reads with possible shell escape and default assignment
1218 case "\$fastread" in
1219 yes) case "\$dflt" in
1222 case "\$silent-\$rp" in
1227 *) case "\$silent" in
1228 true) case "\$rp" in
1233 while expr "X\$ans" : "X!" >/dev/null; do
1237 aok=''; eval ans="\\"\$answ\\"" && aok=y
1242 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1247 echo "(OK, I'll run with -d after this question.)" >&4
1250 echo "*** Sorry, \$1 not supported yet." >&4
1262 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1272 echo "*** Substitution done -- please confirm."
1274 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1279 echo "*** Error -- try again."
1286 case "\$ans\$xxxm\$nostick" in
1298 : create .config dir to save info across Configure sessions
1299 test -d ../.config || mkdir ../.config
1300 cat >../.config/README <<EOF
1301 This directory created by Configure to save information that should
1302 persist across sessions.
1304 You may safely delete it if you wish.
1307 : general instructions
1310 user=`(logname) 2>/dev/null`
1312 user=`whoami 2>&1` ;;
1314 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1317 rp='Would you like to see the instructions?'
1328 This installation shell script will examine your system and ask you questions
1329 to determine how the perl5 package should be installed. If you get
1330 stuck on a question, you may use a ! shell escape to start a subshell or
1331 execute a command. Many of the questions will have default answers in square
1332 brackets; typing carriage return will give you the default.
1334 On some of the questions which ask for file or directory names you are allowed
1335 to use the ~name construct to specify the login directory belonging to "name",
1336 even if you don't have a shell which knows about that. Questions where this is
1337 allowed will be marked "(~name ok)".
1341 dflt='Type carriage return to continue'
1345 The prompter used in this script allows you to use shell variables and
1346 backticks in your answers. You may use $1, $2, etc... to refer to the words
1347 in the default answer, as if the default line was a set of arguments given to a
1348 script shell. This means you may also use $* to repeat the whole default line,
1349 so you do not have to re-type everything to add something to the default.
1351 Everytime there is a substitution, you will have to confirm. If there is an
1352 error (e.g. an unmatched backtick), the default answer will remain unchanged
1353 and you will be prompted again.
1355 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1356 the questions and use the computed defaults (or the previous answers if there
1357 was already a config.sh file). Type 'Configure -h' for a list of options.
1358 You may also start interactively and then answer '& -d' at any prompt to turn
1359 on the non-interactive behaviour for the remaining of the execution.
1365 Much effort has been expended to ensure that this shell script will run on any
1366 Unix system. If despite that it blows up on yours, your best bet is to edit
1367 Configure and run it again. If you can't run Configure for some reason,
1368 you'll have to generate a config.sh file by hand. Whatever problems you
1369 have, let me (chip@atlantic.net) know how I blew it.
1371 This installation script affects things in two ways:
1373 1) it may do direct variable substitutions on some of the files included
1375 2) it builds a config.h file for inclusion in C programs. You may edit
1376 any of these files as the need arises after running this script.
1378 If you make a mistake on a question, there is no easy way to back up to it
1379 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1380 files. Configure will offer to let you do this before it runs the SH files.
1383 dflt='Type carriage return to continue'
1385 case "$firsttime" in
1386 true) echo $user >>../.config/instruct;;
1390 : find out where common programs are
1392 echo "Locating common programs..." >&4
1405 if test -d \$dir/\$thing; then
1411 for thisthing in \$dir/\$thing; do
1412 : just loop through to pick last item
1414 if test -f \$thisthing; then
1417 elif test -f \$dir/\$thing.exe; then
1418 : on Eunice apparently
1468 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1469 pth="$pth /lib /usr/lib"
1470 for file in $loclist; do
1471 xxx=`./loc $file $file $pth`
1476 echo $file is in $xxx.
1479 echo $file is in $xxx.
1482 echo "I don't know where '$file' is, and my life depends on it." >&4
1483 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1489 echo "Don't worry if any of the following aren't found..."
1491 for file in $trylist; do
1492 xxx=`./loc $file $file $pth`
1497 echo $file is in $xxx.
1500 echo $file is in $xxx.
1503 echo "I don't see $file out there, $say."
1510 echo "Substituting grep for egrep."
1516 echo "Substituting cp for ln."
1522 echo "Hopefully test is built into your sh."
1525 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1526 echo "Using the test built into your sh."
1534 echo "Hopefully echo is built into your sh."
1539 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1540 $echo $n "hi there$c" >foo1
1541 echo $n "hi there$c" >foo2
1542 if cmp foo1 foo2 >/dev/null 2>&1; then
1543 echo "They are compatible. In fact, they may be identical."
1550 They are not compatible! You are probably running ksh on a non-USG system.
1551 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1552 have echo built in and we may have to run some Bourne shell scripts. That
1553 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1556 $echo $n "The star should be here-->$c"
1563 : determine whether symbolic links are supported
1566 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1567 echo "Symbolic links are supported." >&4
1570 echo "Symbolic links are NOT supported." >&4
1575 : see whether [:lower:] and [:upper:] are supported character classes
1579 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1581 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1586 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1589 : set up the translation script tr, must be called with ./tr of course
1593 '[A-Z][a-z]') exec $tr '$up' '$low';;
1594 '[a-z][A-Z]') exec $tr '$low' '$up';;
1601 : Try to determine whether config.sh was made on this system
1602 case "$config_sh" in
1604 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1605 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1606 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1607 newmyuname="$myuname"
1609 case "$knowitall" in
1611 if test -f ../config.sh; then
1612 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1613 eval "`grep myuname= ../config.sh`"
1615 if test "X$myuname" = "X$newmyuname"; then
1623 : Get old answers from old config file if Configure was run on the
1624 : same system, otherwise use the hints.
1627 if test -f config.sh; then
1629 rp="I see a config.sh file. Shall I use it to set the defaults?"
1632 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1633 *) echo "Fetching default answers from your old config.sh file..." >&4
1641 : Older versions did not always set $sh. Catch re-use of such
1650 if test ! -f config.sh; then
1653 First time through, eh? I have some defaults handy for the following systems:
1656 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1658 : Half the following guesses are probably wrong... If you have better
1659 : tests or hints, please send them to chip@atlantic.net
1660 : The metaconfig authors would also appreciate a copy...
1661 $test -f /irix && osname=irix
1662 $test -f /xenix && osname=sco_xenix
1663 $test -f /dynix && osname=dynix
1664 $test -f /dnix && osname=dnix
1665 $test -f /lynx.os && osname=lynxos
1666 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1667 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
1668 $test -f /bin/mips && /bin/mips && osname=mips
1669 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1670 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1671 $test -d /usr/apollo/bin && osname=apollo
1672 $test -f /etc/saf/_sactab && osname=svr4
1673 $test -d /usr/include/minix && osname=minix
1674 if $test -d /MachTen; then
1676 if $test -x /sbin/version; then
1677 osvers=`/sbin/version | $awk '{print $2}' |
1678 $sed -e 's/[A-Za-z]$//'`
1679 elif $test -x /usr/etc/version; then
1680 osvers=`/usr/etc/version | $awk '{print $2}' |
1681 $sed -e 's/[A-Za-z]$//'`
1686 if $test -f $uname; then
1694 umips) osname=umips ;;
1697 [23]100) osname=mips ;;
1698 next*) osname=next ;;
1699 news*) osname=news ;;
1701 if $test -f /etc/kconfig; then
1703 if test "$lns" = "ln -s"; then
1705 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1707 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1716 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1718 'not found') osvers="$4"."$3" ;;
1719 '<3240'|'<>3240') osvers=3.2.0 ;;
1720 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1721 '=3250'|'>3250') osvers=3.2.5 ;;
1725 *dc.osx) osname=dcosx
1731 domainos) osname=apollo
1737 dynixptx*) osname=dynixptx
1740 freebsd) osname=freebsd
1742 genix) osname=genix ;;
1747 *.10.*) osvers=10 ;;
1764 netbsd*) osname=netbsd
1767 bsd386) osname=bsd386
1770 next*) osname=next ;;
1771 solaris) osname=solaris
1773 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1780 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1784 titanos) osname=titanos
1793 ultrix) osname=ultrix
1796 osf1|mls+) case "$5" in
1799 osvers=`echo "$3" | sed 's/^[vt]//'`
1801 hp*) osname=hp_osf1 ;;
1802 mips) osname=mips_osf1 ;;
1811 $2) case "$osname" in
1815 : svr4.x or possibly later
1825 if test -f /stand/boot ; then
1826 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1827 if test -n "$INITPROG" -a -f "$INITPROG"; then
1828 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1829 if test -n "$isesix"; then
1837 *) if test -f /etc/systemid; then
1839 set `echo $3 | $sed 's/\./ /g'` $4
1840 if $test -f sco_$1_$2_$3.sh; then
1842 elif $test -f sco_$1_$2.sh; then
1844 elif $test -f sco_$1.sh; then
1849 '') : Still unknown. Probably a generic Sys V.
1858 *) case "$osname" in
1859 '') : Still unknown. Probably a generic BSD.
1867 if test -f /vmunix -a -f news_os.sh; then
1868 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1869 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1872 $rm -f ../UU/kernel.what
1873 elif test -d c:/.; then
1880 : Now look for a hint file osname_osvers, unless one has been
1881 : specified already.
1884 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1885 : Also try without trailing minor version numbers.
1886 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1887 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1888 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1889 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1892 *) case "$osvers" in
1895 *) if $test -f $file.sh ; then
1897 elif $test -f $xfile.sh ; then
1899 elif $test -f $xxfile.sh ; then
1901 elif $test -f $xxxfile.sh ; then
1903 elif $test -f $xxxxfile.sh ; then
1905 elif $test -f "${osname}.sh" ; then
1916 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1922 You may give one or more space-separated answers, or "none" if appropriate.
1923 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1926 rp="Which of these apply, if any?"
1929 for file in $tans; do
1930 if $test -f $file.sh; then
1932 $cat $file.sh >> ../UU/config.sh
1933 elif $test X$tans = X -o X$tans = Xnone ; then
1936 : Give one chance to correct a possible typo.
1937 echo "$file.sh does not exist"
1939 rp="hint to use instead?"
1941 for file in $ans; do
1942 if $test -f "$file.sh"; then
1944 $cat $file.sh >> ../UU/config.sh
1945 elif $test X$ans = X -o X$ans = Xnone ; then
1948 echo "$file.sh does not exist -- ignored."
1955 : Remember our hint file for later.
1956 if $test -f "$file.sh" ; then
1968 echo "Fetching default answers from $config_sh..." >&4
1972 cp $config_sh config.sh 2>/dev/null
1982 test "$override" && . ./optdef.sh
1983 myuname="$newmyuname"
1985 : Restore computed paths
1986 for file in $loclist $trylist; do
1987 eval $file="\$_$file"
1992 Configure uses the operating system name and version to set some defaults.
1993 The default value is probably right if the name rings a bell. Otherwise,
1994 since spelling matters for me, either accept the default or answer "none"
2001 ''|' '|none) dflt=none ;;
2002 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2005 *) dflt="$osname" ;;
2007 rp="Operating system name?"
2011 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2017 ''|' '|none) dflt=none ;;
2018 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2019 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2021 ''|' ') dflt=none ;;
2026 *) dflt="$osvers" ;;
2028 rp="Operating system version?"
2037 : who configured the system
2038 cf_time=`$date 2>&1`
2039 cf_by=`(logname) 2>/dev/null`
2040 case "$cf_by" in "")
2041 cf_by=`(whoami) 2>/dev/null`
2042 case "$cf_by" in "")
2047 : determine the architecture name
2049 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2050 tarch=`arch`"-$osname"
2051 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2052 if uname -m > tmparch 2>&1 ; then
2053 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2054 -e 's/$/'"-$osname/" tmparch`
2062 case "$myarchname" in
2065 echo "(Your architecture name used to be $myarchname.)"
2071 *) dflt="$archname";;
2073 rp='What is your architecture name'
2081 $define|true) afs=true ;;
2082 $undef|false) afs=false ;;
2083 *) if test -d /afs; then
2091 echo "AFS may be running... I'll be extra cautious then..." >&4
2093 echo "AFS does not seem to be running..." >&4
2096 : decide how portable to be. Allow command line overrides.
2097 case "$d_portable" in
2099 *) d_portable="$define" ;;
2102 : set up shell script to do ~ expansion
2108 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2111 if $test -f /bin/csh; then
2112 /bin/csh -f -c "glob \$1"
2117 name=\`$expr x\$1 : '..\([^/]*\)'\`
2118 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2119 if $test ! -d "\$dir"; then
2121 echo "\$me: can't locate home directory for: \$name" >&2
2126 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2142 : now set up to get a file name
2146 cat <<'EOSC' >>getfile
2159 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2160 fn=`echo $fn | sed 's/(.*)//'`
2166 loc_file=`expr $fn : '.*:\(.*\)'`
2167 fn=`expr $fn : '\(.*\):.*'`
2175 */*) fullpath=true;;
2184 *e*) exp_file=true;;
2187 *p*) nopath_ok=true;;
2192 *d*) type='Directory';;
2193 *l*) type='Locate';;
2198 Locate) what='File';;
2203 case "$d_portable" in
2211 while test "$type"; do
2216 true) rp="$rp (~name ok)";;
2219 if test -f UU/getfile.ok && \
2220 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2239 value=`UU/filexp $ans`
2242 if test "$ans" != "$value"; then
2243 echo "(That expands to $value on this system.)"
2257 /*) value="$ansexp" ;;
2262 echo "I shall only accept a full path name, as in /bin/ls." >&4
2263 echo "Use a ! shell escape if you wish to check pathnames." >&4
2266 echo "Please give a full path name, starting with slash." >&4
2269 echo "Note that using ~name is ok provided it expands well." >&4
2282 if test -f "$ansexp"; then
2284 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2286 echo "($value is not a plain file, but that's ok.)"
2291 if test -d "$ansexp"; then
2296 if test -d "$ansexp"; then
2297 echo "(Looking for $loc_file in directory $value.)"
2298 value="$value/$loc_file"
2299 ansexp="$ansexp/$loc_file"
2301 if test -f "$ansexp"; then
2304 case "$nopath_ok" in
2305 true) case "$value" in
2307 *) echo "Assuming $value will be in people's path."
2323 if test "$fastread" = yes; then
2328 rp="$what $value doesn't exist. Use that name anyway?"
2349 : determine root of directory hierarchy where package will be installed.
2352 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2360 By default, $package will be installed in $dflt/bin, manual
2361 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2362 all installation directories. Typically set to /usr/local, but you
2363 may choose /usr if you wish to install $package among your system
2364 binaries. If you wish to have binaries under /bin but manual pages
2365 under /usr/local/man, that's ok: you will be prompted separately
2366 for each of the installation directories, the prefix being only used
2367 to set the defaults.
2371 rp='Installation prefix to use?'
2379 *) oldprefix="$prefix";;
2386 : set the prefixit variable, to compute a suitable default value
2387 prefixit='case "$3" in
2389 case "$oldprefix" in
2390 "") eval "$1=\"\$$2\"";;
2397 ""|" ") eval "$1=\"\$$2\"";;
2403 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2405 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2406 /*-$oldprefix/*|\~*-$oldprefix/*)
2407 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2408 *) eval "$1=\"\$$2\"";;
2412 : determine where private library files go
2413 : Usual default is /usr/local/lib/perl5. Also allow things like
2414 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2416 *perl*) set dflt privlib lib ;;
2417 *) set dflt privlib lib/$package ;;
2422 There are some auxiliary files for $package that need to be put into a
2423 private library directory that is accessible by everyone.
2427 rp='Pathname where the private library files will reside?'
2429 if $test "X$privlibexp" != "X$ansexp"; then
2433 privlibexp="$ansexp"
2437 Since you are running AFS, I need to distinguish the directory in which
2438 private files reside from the directory in which they are installed (and from
2439 which they are presumably copied to the former directory by occult means).
2442 case "$installprivlib" in
2443 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2444 *) dflt="$installprivlib";;
2447 rp='Where will private files be installed?'
2449 installprivlib="$ans"
2451 installprivlib="$privlibexp"
2454 : set the base revision
2457 : get the patchlevel
2459 echo "Getting the current patchlevel..." >&4
2460 if $test -r ../patchlevel.h;then
2461 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2462 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2467 $echo $n "(You have $package" $c
2470 *) $echo $n " $baserev" $c ;;
2472 $echo $n " patchlevel $patchlevel" $c
2473 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2476 : set the prefixup variable, to restore leading tilda escape
2477 prefixup='case "$prefixexp" in
2479 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2482 : determine where public architecture dependent libraries go
2488 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2492 *) if test 0 -eq "$subversion"; then
2493 version=`LC_ALL=C; export LC_ALL; \
2494 echo $baserev $patchlevel | \
2495 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2497 version=`LC_ALL=C; export LC_ALL; \
2498 echo $baserev $patchlevel $subversion | \
2499 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
2501 dflt="$privlib/$archname/$version"
2511 $spackage contains architecture-dependent library files. If you are
2512 sharing libraries in a heterogeneous environment, you might store
2513 these files in a separate location. Otherwise, you can just include
2514 them with the rest of the public library files.
2518 rp='Where do you want to put the public architecture-dependent libraries?'
2521 archlibexp="$ansexp"
2526 Since you are running AFS, I need to distinguish the directory in which
2527 private files reside from the directory in which they are installed (and from
2528 which they are presumably copied to the former directory by occult means).
2531 case "$installarchlib" in
2532 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2533 *) dflt="$installarchlib";;
2536 rp='Where will architecture-dependent library files be installed?'
2538 installarchlib="$ans"
2540 installarchlib="$archlibexp"
2542 if $test X"$archlib" = X"$privlib"; then
2548 : set up the script used to warn in case of inconsistency
2555 echo "*** WHOA THERE!!! ***" >&4
2556 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2557 rp=" Keep the $hint value?"
2560 y) td=$was; tu=$was;;
2564 : function used to set $1 to $val
2565 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2567 $define$undef) . ./whoa; eval "$var=\$td";;
2568 $undef$define) . ./whoa; eval "$var=\$tu";;
2569 *) eval "$var=$val";;
2574 Perl 5.004 can be compiled for binary compatibility with 5.003.
2575 If you decide to do so, you will be able to continue using any
2576 extensions that were compiled for Perl 5.003. However, binary
2577 compatibility forces Perl to expose some of its internal symbols
2578 in the same way that 5.003 did. So you may have symbol conflicts
2579 if you embed a binary-compatible Perl in other programs.
2582 case "$d_bincompat3" in
2586 rp='Binary compatibility with Perl 5.003?'
2589 y*) val="$define" ;;
2594 case "$d_bincompat3" in
2595 "$define") bincompat3=y ;;
2599 : make some quick guesses about what we are up against
2601 $echo $n "Hmm... $c"
2611 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2612 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2614 echo "Looks kind of like an OSF/1 system, but we'll see..."
2616 elif test `echo abc | tr a-z A-Z` = Abc ; then
2617 xxx=`./loc addbib blurfl $pth`
2618 if $test -f $xxx; then
2619 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2623 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2624 echo "Looks kind of like an extended USG system, but we'll see..."
2626 echo "Looks kind of like a USG system, but we'll see..."
2630 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2631 echo "Looks kind of like a BSD system, but we'll see..."
2635 echo "Looks kind of like a Version 7 system, but we'll see..."
2638 case "$eunicefix" in
2641 There is, however, a strange, musty smell in the air that reminds me of
2642 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2646 : it so happens the Eunice I know will not run shell scripts in Unix format
2650 echo "Congratulations. You aren't running Eunice."
2654 : Detect OS2. The p_ variable is set above in the Head.U unit.
2659 I have the feeling something is not exactly right, however...don't tell me...
2660 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2665 if test -f /xenix; then
2666 echo "Actually, this looks more like a XENIX system..."
2671 echo "It's not Xenix..."
2676 if test -f /venix; then
2677 echo "Actually, this looks more like a VENIX system..."
2684 echo "Nor is it Venix..."
2687 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2688 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2691 : see if setuid scripts can be secure
2694 Some kernels have a bug that prevents setuid #! scripts from being
2695 secure. Some sites have disabled setuid #! scripts because of this.
2697 First let's decide if your kernel supports secure setuid #! scripts.
2698 (If setuid #! scripts would be secure but have been disabled anyway,
2699 don't say that they are secure if asked.)
2704 if $test -d /dev/fd; then
2705 echo "#!$ls" >reflect
2706 chmod +x,u+s reflect
2707 ./reflect >flect 2>&1
2708 if $contains "/dev/fd" flect >/dev/null; then
2709 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2713 If you are not sure if they are secure, I can check but I'll need a
2714 username and password different from the one you are using right now.
2715 If you don't have such a username or don't want me to test, simply
2719 rp='Other username to test security of setuid scripts with?'
2724 case "$d_suidsafe" in
2725 '') echo "I'll assume setuid scripts are *not* secure." >&4
2728 echo "Well, the $hint value is *not* secure." >&4
2730 *) echo "Well, the $hint value *is* secure." >&4
2735 $rm -f reflect flect
2736 echo "#!$ls" >reflect
2737 chmod +x,u+s reflect
2740 echo '"su" will (probably) prompt you for '"$ans's password."
2741 su $ans -c './reflect >flect'
2742 if $contains "/dev/fd" flect >/dev/null; then
2743 echo "Okay, it looks like setuid scripts are secure." >&4
2746 echo "I don't think setuid scripts are secure." >&4
2751 rp='Does your kernel have *secure* setuid scripts?'
2754 [yY]*) val="$define";;
2759 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2760 echo "(That's for file descriptors, not floppy disks.)"
2766 $rm -f reflect flect
2768 : now see if they want to do setuid emulation
2771 case "$d_suidsafe" in
2774 echo "No need to emulate SUID scripts since they are secure here." >& 4
2778 Some systems have disabled setuid scripts, especially systems where
2779 setuid scripts cannot be secure. On systems where setuid scripts have
2780 been disabled, the setuid/setgid bits on scripts are currently
2781 useless. It is possible for $package to detect those bits and emulate
2782 setuid/setgid in a secure fashion. This emulation will only work if
2783 setuid scripts have been disabled in your kernel.
2787 "$define") dflt=y ;;
2790 rp="Do you want to do setuid/setgid emulation?"
2793 [yY]*) val="$define";;
2801 : determine where site specific libraries go.
2805 '') dflt="$privlib/site_perl" ;;
2806 *) dflt="$sitelib" ;;
2810 The installation process will also create a directory for
2811 site-specific extensions and modules. Some users find it convenient
2812 to place all local files in this directory rather than in the main
2813 distribution directory.
2817 rp='Pathname for the site-specific library files?'
2819 if $test "X$sitelibexp" != "X$ansexp"; then
2823 sitelibexp="$ansexp"
2827 Since you are running AFS, I need to distinguish the directory in which
2828 private files reside from the directory in which they are installed (and from
2829 which they are presumably copied to the former directory by occult means).
2832 case "$installsitelib" in
2833 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2834 *) dflt="$installsitelib";;
2837 rp='Where will private files be installed?'
2839 installsitelib="$ans"
2841 installsitelib="$sitelibexp"
2844 : determine where site specific architecture-dependent libraries go.
2845 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2846 : xxx is usuually lib/site_perl/archname.
2847 set sitearch sitearch none
2850 '') dflt="$sitelib/$archname" ;;
2851 *) dflt="$sitearch" ;;
2855 The installation process will also create a directory for
2856 architecture-dependent site-specific extensions and modules.
2860 rp='Pathname for the site-specific architecture-dependent library files?'
2862 if $test "X$sitearchexp" != "X$ansexp"; then
2866 sitearchexp="$ansexp"
2870 Since you are running AFS, I need to distinguish the directory in which
2871 private files reside from the directory in which they are installed (and from
2872 which they are presumably copied to the former directory by occult means).
2875 case "$installsitearch" in
2876 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2877 *) dflt="$installsitearch";;
2880 rp='Where will private files be installed?'
2882 installsitearch="$ans"
2884 installsitearch="$sitearchexp"
2887 : determine where old public architecture dependent libraries might be
2888 case "$oldarchlib" in
2889 '') case "$privlib" in
2891 *) dflt="$privlib/$archname"
2895 *) dflt="$oldarchlib"
2898 if $test ! -d "$dflt/auto"; then
2903 In 5.001, Perl stored architecture-dependent library files in a directory
2904 with a name such as $privlib/$archname,
2905 and this directory contained files from the standard extensions and
2906 files from any additional extensions you might have added. Starting
2907 with version 5.002, all the architecture-dependent standard extensions
2908 will go into a version-specific directory such as
2910 while locally-added extensions will go into
2913 If you wish Perl to continue to search the old architecture-dependent
2914 library for your local extensions, give the path to that directory.
2915 If you do not wish to use your old architecture-dependent library
2916 files, answer 'none'.
2920 rp='Directory for your old 5.001 architecture-dependent libraries?'
2923 oldarchlibexp="$ansexp"
2924 case "$oldarchlib" in
2925 ''|' ') val="$undef" ;;
2931 : determine where public executables go
2936 rp='Pathname where the public executables will reside?'
2938 if $test "X$ansexp" != "X$binexp"; then
2946 Since you are running AFS, I need to distinguish the directory in which
2947 executables reside from the directory in which they are installed (and from
2948 which they are presumably copied to the former directory by occult means).
2951 case "$installbin" in
2952 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2953 *) dflt="$installbin";;
2956 rp='Where will public executables be installed?'
2960 installbin="$binexp"
2963 : determine where manual pages are on this system
2967 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2968 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2969 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2970 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2971 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2972 sysman=`./loc . /usr/man/man1 $syspath`
2975 if $test -d "$sysman"; then
2976 echo "System manual is in $sysman." >&4
2978 echo "Could not find manual pages in source form." >&4
2981 : see what memory models we can support
2984 $cat >pdp11.c <<'EOP'
2993 cc -o pdp11 pdp11.c >/dev/null 2>&1
2994 if ./pdp11 2>/dev/null; then
2995 dflt='unsplit split'
2997 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3000 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3005 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3008 if $test -d /lib/large || $test -d /usr/lib/large; then
3011 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3020 Some systems have different model sizes. On most systems they are called
3021 small, medium, large, and huge. On the PDP11 they are called unsplit and
3022 split. If your system doesn't support different memory models, say "none".
3023 If you wish to force everything to one memory model, say "none" here and
3024 put the appropriate flags later when it asks you for other cc and ld flags.
3025 Venix systems may wish to put "none" and let the compiler figure things out.
3026 (In the following question multiple model names should be space separated.)
3029 rp="Which memory models are supported?"
3044 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3045 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3052 rp="What flag indicates separate I and D space?"
3060 *large*|*small*|*medium*|*huge*)
3067 rp="What flag indicates large model?"
3077 *huge*) case "$huge" in
3081 rp="What flag indicates huge model?"
3091 *medium*) case "$medium" in
3095 rp="What flag indicates medium model?"
3102 *) medium="$large";;
3105 *small*) case "$small" in
3109 rp="What flag indicates small model?"
3120 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3124 : see if we need a special compiler
3132 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3133 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3146 On some systems the default C compiler will not resolve multiple global
3147 references that happen to have the same name. On some such systems the "Mcc"
3148 command may be used to force these to be resolved. On other systems a "cc -M"
3149 command is required. (Note that the -M flag on other systems indicates a
3150 memory model to use!) If you have the Gnu C compiler, you might wish to use
3154 rp="What command will force resolution on this system?"
3162 rp="Use which C compiler?"
3167 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3168 $cat >gccvers.c <<EOM
3173 printf("%s\n", __VERSION__);
3175 printf("%s\n", "1");
3181 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3182 gccversion=`./gccvers`
3183 case "$gccversion" in
3184 '') echo "You are not using GNU cc." ;;
3185 *) echo "You are using GNU cc $gccversion." ;;
3189 echo "*** WHOA THERE!!! ***" >&4
3190 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3191 case "$knowitall" in
3193 echo " You'd better start hunting for one and let me know about it." >&4
3199 case "$gccversion" in
3200 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3203 : What should the include directory be ?
3205 $echo $n "Hmm... $c"
3209 if $test -f /bin/mips && /bin/mips; then
3210 echo "Looks like a MIPS system..."
3211 $cat >usr.c <<'EOCP'
3212 #ifdef SYSTYPE_BSD43
3216 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3217 dflt='/bsd43/usr/include'
3221 mips_type='System V'
3223 $rm -f usr.c usr.out
3224 echo "and you're compiling with the $mips_type compiler and libraries."
3228 echo "Doesn't look like a MIPS system."
3239 case "$xxx_prompt" in
3241 rp='Where are the include files you want to use?'
3249 : Set private lib path
3252 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3257 '') dlist="$loclibpth $plibpth $glibpth";;
3258 *) dlist="$libpth";;
3261 : Now check and see which directories actually exist, avoiding duplicates
3265 if $test -d $xxx; then
3268 *) libpth="$libpth $xxx";;
3274 Some systems have incompatible or broken versions of libraries. Among
3275 the directories listed in the question below, please remove any you
3276 know not to be holding relevant libraries, and add any that are needed.
3277 Say "none" for none.
3288 rp="Directories to use for library searches?"
3295 : Define several unixisms. Hints files or command line options
3296 : can be used to override them.
3309 : Which makefile gets called first. This is used by make depend.
3310 case "$firstmakefile" in
3311 '') firstmakefile='makefile';;
3314 : compute shared library extension
3317 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3327 On some systems, shared libraries may be available. Answer 'none' if
3328 you want to suppress searching of shared libraries for the remaining
3329 of this configuration.
3332 rp='What is the file extension used for shared libraries?'
3336 : Looking for optional libraries
3338 echo "Checking for optional libraries..." >&4
3343 case "$libswanted" in
3344 '') libswanted='c_s';;
3346 for thislib in $libswanted; do
3348 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3349 echo "Found -l$thislib (shared)."
3352 *) dflt="$dflt -l$thislib";;
3354 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3355 echo "Found -l$thislib (shared)."
3358 *) dflt="$dflt -l$thislib";;
3360 elif xxx=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3361 echo "Found -l$thislib."
3364 *) dflt="$dflt -l$thislib";;
3366 elif xxx=`./loc $thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3367 echo "Found -l$thislib."
3370 *) dflt="$dflt -l$thislib";;
3372 elif xxx=`./loc lib${thislib}_s$lib_ext X $libpth`; $test -f "$xxx"; then
3373 echo "Found -l${thislib}_s."
3376 *) dflt="$dflt -l${thislib}_s";;
3378 elif xxx=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$xxx"; then
3379 echo "Found -l$thislib."
3382 *) dflt="$dflt -l$thislib";;
3385 echo "No -l$thislib."
3396 ' '|'') dflt='none';;
3401 Some versions of Unix support shared libraries, which make executables smaller
3402 but make load time slightly longer.
3404 On some systems, mostly System V Release 3's, the shared library is included
3405 by putting the option "-lc_s" as the last thing on the cc command line when
3406 linking. Other systems use shared libraries by default. There may be other
3407 libraries needed to compile $package on your machine as well. If your system
3408 needs the "-lc_s" option, include it here. Include any other special libraries
3409 here as well. Say "none" for none.
3413 rp="Any additional libraries?"
3420 : see how we invoke the C preprocessor
3422 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3423 cat <<'EOT' >testcpp.c
3429 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3431 wrapper=`pwd`/cppstdin
3435 if $test "X$cppstdin" != "X" && \
3436 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3437 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3439 echo "You used to use $cppstdin $cppminus so we'll use that again."
3441 '') echo "But let's see if we can live without a wrapper..." ;;
3443 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3444 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3446 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3449 echo "(However, $cpprun $cpplast does not work, let's see...)"
3457 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3464 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3465 $cc -E <testcpp.c >testcpp.out 2>&1; \
3466 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3467 echo "Yup, it does."
3470 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3471 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3472 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3473 echo "Yup, it does."
3476 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3477 $cc -P <testcpp.c >testcpp.out 2>&1; \
3478 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3479 echo "Yipee, that works!"
3482 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3483 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3484 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3485 echo "At long last!"
3488 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3489 $cpp <testcpp.c >testcpp.out 2>&1; \
3490 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3494 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3495 $cpp - <testcpp.c >testcpp.out 2>&1; \
3496 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3497 echo "Hooray, it works! I was beginning to wonder."
3500 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3501 $wrapper <testcpp.c >testcpp.out 2>&1; \
3502 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3508 rp="No dice. I can't find a C preprocessor. Name one:"
3512 $x_cpp <testcpp.c >testcpp.out 2>&1
3513 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3514 echo "OK, that will do." >&4
3516 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3531 echo "Perhaps can we force $cc -E using a wrapper..."
3532 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3533 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3539 echo "Nope, we'll have to live without it..."
3554 *) $rm -f $wrapper;;
3556 $rm -f testcpp.c testcpp.out
3558 : determine optimize, if desired, or use for debug flag also
3560 ' '|$undef) dflt='none';;
3562 *) dflt="$optimize";;
3566 Some C compilers have problems with their optimizers. By default, $package
3567 compiles with the -O flag to use the optimizer. Alternately, you might want
3568 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3569 systems). Either flag can be specified here. To use neither flag, specify
3573 rp="What optimizer/debugger flag should be used?"
3577 'none') optimize=" ";;
3581 : We will not override a previous value, but we might want to
3582 : augment a hint file
3585 case "$gccversion" in
3586 1*) dflt='-fpcc-struct-return' ;;
3589 *-g*) dflt="$dflt -DDEBUGGING";;
3591 case "$gccversion" in
3592 2*) if test -d /etc/conf/kconfig.d &&
3593 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3602 case "$mips_type" in
3603 *BSD*|'') inclwanted="$locincpth $usrinc";;
3604 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3606 for thisincl in $inclwanted; do
3607 if $test -d $thisincl; then
3608 if $test x$thisincl != x$usrinc; then
3611 *) dflt="$dflt -I$thisincl";;
3617 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3619 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3627 *) dflt="$dflt -D$2";;
3632 set signal.h __LANGUAGE_C__; eval $inctest
3634 set signal.h LANGUAGE_C; eval $inctest
3638 none|recommended) dflt="$ccflags $dflt" ;;
3639 *) dflt="$ccflags";;
3647 Your C compiler may want other flags. For this question you should include
3648 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3649 but you should NOT include libraries or ld flags like -lwhatever. If you
3650 want $package to honor its debug switch, you should include -DDEBUGGING here.
3651 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3652 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3654 To use no flags, specify the word "none".
3660 rp="Any additional cc flags?"
3667 : the following weeds options from ccflags that are of no interest to cpp
3669 case "$gccversion" in
3670 1*) cppflags="$cppflags -D__GNUC__"
3672 case "$mips_type" in
3674 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3680 echo "Let me guess what the preprocessor flags are..." >&4
3694 *) ftry="$previous $flag";;
3696 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3697 >cpp1.out 2>/dev/null && \
3698 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3699 >cpp2.out 2>/dev/null && \
3700 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3701 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3703 cppflags="$cppflags $ftry"
3713 *-*) echo "They appear to be: $cppflags";;
3715 $rm -f cpp.c cpp?.out
3719 : flags used in final linking phase
3722 '') if ./venix; then
3728 *-posix*) dflt="$dflt -posix" ;;
3731 *) dflt="$ldflags";;
3734 : Try to guess additional flags to pick up local libraries.
3735 for thislibdir in $libpth; do
3736 case " $loclibpth " in
3739 *"-L$thislibdir "*) ;;
3740 *) dflt="$dflt -L$thislibdir" ;;
3752 Your C linker may need flags. For this question you should
3753 include -L/whatever and any other flags used by the C linker, but you
3754 should NOT include libraries like -lwhatever.
3756 Make sure you include the appropriate -L/path flags if your C linker
3757 does not normally search all of the directories you specified above,
3760 To use no flags, specify the word "none".
3764 rp="Any additional ld flags (NOT including libraries)?"
3770 rmlist="$rmlist pdp11"
3774 echo "Checking your choice of C compiler, libs, and flags for coherency..." >&4
3775 set X $cc $optimize $ccflags $ldflags -o try try.c $libs
3778 I've tried to compile and run a simple program with:
3783 and I got the following output:
3786 $cat > try.c <<'EOF'
3791 if sh -c "$cc $optimize $ccflags -o try try.c $ldflags $libs" >>try.msg 2>&1; then
3792 if sh -c './try' >>try.msg 2>&1; then
3795 echo "The program compiled OK, but exited with status $?." >>try.msg
3796 rp="You have a problem. Shall I abort Configure"
3800 echo "I can't compile the test program." >>try.msg
3801 rp="You have a BIG problem. Shall I abort Configure"
3807 case "$knowitall" in
3809 echo "(The supplied flags might be incorrect with this C compiler.)"
3817 *) echo "Ok. Stopping Configure." >&4
3822 n) echo "OK, that should do.";;
3824 $rm -f try try.* core
3827 echo "Checking for GNU C Library..." >&4
3828 cat >gnulibc.c <<EOM
3832 return __libc_main();
3835 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3836 ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3838 echo "You are using the GNU C Library"
3841 echo "You are not using the GNU C Library"
3847 : see if nm is to be used to determine whether a symbol is defined or not
3850 case "$d_gnulibc" in
3855 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3856 if $test $dflt -gt 20; then
3873 I can use 'nm' to extract the symbols from your C libraries. This is a time
3874 consuming task which may generate huge output on the disk (up to 3 megabytes)
3875 but that should make the symbols extraction faster. The alternative is to skip
3876 the 'nm' extraction part and to compile a small test program instead to
3877 determine whether each symbol is present. If you have a fast C compiler and/or
3878 if your 'nm' output cannot be parsed, this may be the best solution.
3879 You shouldn't let me use 'nm' if you have the GNU C Library.
3882 rp='Shall I use nm to extract C symbols from the libraries?'
3894 : nm options which may be necessary
3896 '') if $test -f /mach_boot; then
3898 elif $test -d /usr/ccs/lib; then
3899 nm_opt='-p' # Solaris (and SunOS?)
3900 elif $test -f /dgux; then
3902 elif $test -f /lib64/rld; then
3903 nm_opt='-p' # 64-bit Irix
3909 : nm options which may be necessary for shared libraries but illegal
3910 : for archive libraries. Thank you, Linux.
3911 case "$nm_so_opt" in
3912 '') case "$myuname" in
3914 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3915 nm_so_opt='--dynamic'
3924 : get list of predefined functions in a handy place
3929 *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth`
3936 *) for thislib in $libs; do
3939 : Handle C library specially below.
3942 thislib=`echo $thislib | $sed -e 's/^-l//'`
3943 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3945 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3947 elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then
3949 elif try=`./loc $thislib$lib_ext X $libpth`; $test -f "$try"; then
3951 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3953 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3955 elif try=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$try"; then
3960 libnames="$libnames $try"
3962 *) libnames="$libnames $thislib" ;;
3971 for xxx in $libpth; do
3972 $test -r $1 || set $xxx/libc.$so
3973 : The messy sed command sorts on library version numbers.
3975 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3976 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3978 s/[0-9][0-9]*/0000&/g
3979 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3982 sort | $sed -e 's/^.* //'`
3985 $test -r $1 || set /usr/ccs/lib/libc.$so
3986 $test -r $1 || set /lib/libsys_s$lib_ext
3992 if $test -r "$1"; then
3993 echo "Your (shared) C library seems to be in $1."
3995 elif $test -r /lib/libc && $test -r /lib/clib; then
3996 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3998 libc='/lib/clib /lib/libc'
3999 if $test -r /lib/syslib; then
4000 echo "(Your math library is in /lib/syslib.)"
4001 libc="$libc /lib/syslib"
4003 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4004 echo "Your C library seems to be in $libc, as you said before."
4005 elif $test -r $incpath/usr/lib/libc$lib_ext; then
4006 libc=$incpath/usr/lib/libc$lib_ext;
4007 echo "Your C library seems to be in $libc. That's fine."
4008 elif $test -r /lib/libc$lib_ext; then
4009 libc=/lib/libc$lib_ext;
4010 echo "Your C library seems to be in $libc. You're normal."
4012 if tans=`./loc libc$lib_ext blurfl/dyick $libpth`; $test -r "$tans"; then
4014 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4015 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4016 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4018 elif tans=`./loc Slibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4020 elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4023 tans=`./loc Llibc$lib_ext blurfl/dyick $xlibpth`
4025 if $test -r "$tans"; then
4026 echo "Your C library seems to be in $tans, of all places."
4032 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4036 If the guess above is wrong (which it might be if you're using a strange
4037 compiler, or your machine supports multiple models), you can override it here.
4042 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4044 I can't seem to find your C library. I've looked in the following places:
4047 $sed 's/^/ /' libpath
4050 None of these seems to contain your C library. I need to get its name...
4055 rp='Where is your C library?'
4060 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4061 set X `cat libnames`
4064 case $# in 1) xxx=file; esac
4065 echo "Extracting names from the following $xxx for later perusal:" >&4
4067 $sed 's/^/ /' libnames >&4
4069 $echo $n "This may take a while...$c" >&4
4071 : Linux may need the special Dynamic option to nm for shared libraries.
4072 : In general, this is stored in the nm_so_opt variable.
4073 : Unfortunately, that option may be fatal on non-shared libraries.
4074 for nm_libs_ext in $*; do
4075 case $nm_libs_ext in
4076 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4077 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4082 $grep fprintf libc.tmp > libc.ptf
4083 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4084 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4086 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4088 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4090 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4092 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4094 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4096 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4098 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4100 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4102 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4104 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4106 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4108 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4110 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4111 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4113 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4115 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4117 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4119 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4121 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4123 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4125 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4127 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4129 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4131 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4133 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4135 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4137 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4140 nm -p $* 2>/dev/null >libc.tmp
4141 $grep fprintf libc.tmp > libc.ptf
4142 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4143 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4149 echo "nm didn't seem to work right. Trying ar instead..." >&4
4151 if ar t $libc > libc.tmp; then
4152 for thisname in $libnames; do
4153 ar t $thisname >>libc.tmp
4155 $sed -e 's/\.o$//' < libc.tmp > libc.list
4158 echo "ar didn't seem to work right." >&4
4159 echo "Maybe this is a Cray...trying bld instead..." >&4
4160 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4162 for thisname in $libnames; do
4164 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4165 ar t $thisname >>libc.tmp
4169 echo "That didn't work either. Giving up." >&4
4176 if $test -f /lib/syscalls.exp; then
4178 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4179 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4183 $rm -f libnames libpath
4185 : determine filename position in cpp output
4187 echo "Computing filename position in cpp output for #include directives..." >&4
4188 echo '#include <stdio.h>' > foo.c
4191 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4192 $grep '^[ ]*#.*stdio\.h' | \
4193 while read cline; do
4196 while $test \$# -gt 0; do
4197 if $test -r \`echo \$1 | $tr -d '"'\`; then
4202 pos=\`expr \$pos + 1\`
4214 *) pos="${fieldn}th";;
4216 echo "Your cpp writes the filename in the $pos field of the line."
4218 : locate header file
4223 if test -f $usrinc/\$wanted; then
4224 echo "$usrinc/\$wanted"
4227 awkprg='{ print \$$fieldn }'
4228 echo "#include <\$wanted>" > foo\$\$.c
4229 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4230 $grep "^[ ]*#.*\$wanted" | \
4231 while read cline; do
4232 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4234 */\$wanted) echo "\$name"; exit 0;;
4245 : define an alternate in-header-list? function
4246 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4247 cont=true; xxf="echo \"<\$1> found.\" >&4";
4248 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4249 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4251 case $# in 4) instead=instead;; *) instead="at last";; esac;
4252 while $test "$cont"; do
4254 var=$2; eval "was=\$$2";
4255 if $test "$xxx" && $test -r "$xxx";
4257 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4260 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4261 set $yyy; shift; shift; yyy=$@;
4262 case $# in 0) cont="";;
4263 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4264 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4265 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4266 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4270 do set $yyy; var=$2; eval "was=\$$2";
4271 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4272 set $yyy; shift; shift; yyy=$@;
4275 : see if dld is available
4279 : is a C symbol defined?
4282 -v) tf=libc.tmp; tc=""; tdc="";;
4283 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4284 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4287 case "$reuseval-$4" in
4289 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4295 if $contains $tlook $tf >/dev/null 2>&1;
4300 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4301 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4309 $define) tval=true;;
4315 : define an is-in-libc? function
4316 inlibc='echo " "; td=$define; tu=$undef;
4317 sym=$1; var=$2; eval "was=\$$2";
4319 case "$reuseval$was" in
4329 echo "$sym() found." >&4;
4330 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4332 echo "$sym() NOT found." >&4;
4333 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4337 $define) echo "$sym() found." >&4;;
4338 *) echo "$sym() NOT found." >&4;;
4342 : see if dlopen exists
4349 : determine which dynamic loading, if any, to compile in
4351 dldir="ext/DynaLoader"
4364 $define) dflt='y' ;;
4367 $define) dflt='y' ;;
4369 : Does a dl_xxx.xs file exist for this operating system
4370 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4373 rp="Do you wish to use dynamic loading?"
4380 if $test -f ../$dldir/dl_${osname}.xs ; then
4381 dflt="$dldir/dl_${osname}.xs"
4382 elif $test "$d_dlopen" = "$define" ; then
4383 dflt="$dldir/dl_dlopen.xs"
4384 elif $test "$i_dld" = "$define" ; then
4385 dflt="$dldir/dl_dld.xs"
4390 *) dflt="$dldir/$dlsrc"
4393 echo "The following dynamic loading files are available:"
4394 : Can not go over to $dldir because getfile has path hard-coded in.
4395 cd ..; ls -C $dldir/dl*.xs; cd UU
4396 rp="Source file to use for dynamic loading"
4401 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4405 Some systems may require passing special flags to $cc -c to
4406 compile modules that will be used to create a shared library.
4407 To use no flags, say "none".
4410 case "$cccdlflags" in
4411 '') case "$gccversion" in
4412 '') case "$osname" in
4414 next) dflt='none' ;;
4415 solaris|svr4*|esix*) dflt='-Kpic' ;;
4416 irix*) dflt='-KPIC' ;;
4417 sunos) dflt='-pic' ;;
4422 *) dflt="$cccdlflags" ;;
4424 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4427 none) cccdlflags=' ' ;;
4428 *) cccdlflags="$ans" ;;
4433 Some systems use ld to create libraries that can be dynamically loaded,
4434 while other systems (such as those using ELF) use $cc.
4438 '') $cat >try.c <<'EOM'
4439 /* Test for whether ELF binaries are produced */
4444 int i = open("a.out",O_RDONLY);
4447 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4448 exit(0); /* succeed (yes, it's ELF) */
4453 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4455 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4459 echo "I'll use ld to build dynamic libraries."
4468 rp="What command should be used to create dynamic libraries?"
4474 Some systems may require passing special flags to $ld to create a
4475 library that can be dynamically loaded. If your ld flags include
4476 -L/other/path options to locate libraries outside your loader's normal
4477 search path, you may need to specify those -L options here as well. To
4478 use no flags, say "none".
4481 case "$lddlflags" in
4482 '') case "$osname" in
4484 linux|irix*) dflt='-shared' ;;
4485 next) dflt='none' ;;
4486 solaris) dflt='-G' ;;
4487 sunos) dflt='-assert nodefinitions' ;;
4488 svr4*|esix*) dflt="-G $ldflags" ;;
4492 *) dflt="$lddlflags" ;;
4495 : Try to guess additional flags to pick up local libraries.
4496 for thisflag in $ldflags; do
4501 *) dflt="$dflt $thisflag" ;;
4511 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4514 none) lddlflags=' ' ;;
4515 *) lddlflags="$ans" ;;
4520 Some systems may require passing special flags to $cc to indicate that
4521 the resulting executable will use dynamic linking. To use no flags,
4525 case "$ccdlflags" in
4526 '') case "$osname" in
4527 hpux) dflt='-Wl,-E' ;;
4528 linux) dflt='-rdynamic' ;;
4529 next) dflt='none' ;;
4530 sunos) dflt='none' ;;
4533 *) dflt="$ccdlflags" ;;
4535 rp="Any special flags to pass to $cc to use dynamic loading?"
4538 none) ccdlflags=' ' ;;
4539 *) ccdlflags="$ans" ;;
4553 # No dynamic loading being used, so don't bother even to prompt.
4556 *) case "$useshrplib" in
4557 '') case "$osname" in
4558 svr4*|dgux|dynixptx|esix|powerux)
4560 also='Building a shared libperl is required for dynamic loading to work on your system.'
4565 also='Building a shared libperl is needed for MAB support.'
4573 also='Building a shared libperl will definitely not work on SunOS 4.'
4587 The perl executable is normally obtained by linking perlmain.c with
4588 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4589 any other libraries needed on this system (such as -lm, etc.). Since
4590 your system supports dynamic loading, it is probably possible to build
4591 a shared libperl.$so. If you will have more than one executable linked
4592 to libperl.$so, this will significantly reduce the size of each
4593 executable, but it may have a noticeable affect on performance. The
4594 default is probably sensible for your system.
4598 rp="Build a shared libperl.$so (y/n)"
4603 # Why does next4 have to be so different?
4604 case "${osname}${osvers}" in
4605 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4606 *) xxx='LD_LIBRARY_PATH' ;;
4610 To build perl, you must add the current working directory to your
4611 $xxx environtment variable before running make. You can do
4613 $xxx=\`pwd\`; export $xxx
4614 for Bourne-style shells, or
4616 for Csh-style shells. You *MUST* do this before running make.
4620 *) useshrplib='false' ;;
4625 case "$useshrplib" in
4629 # Figure out a good name for libperl.so. Since it gets stored in
4630 # a version-specific architecture-dependent library, the version
4631 # number isn't really that important, except for making cc/ld happy.
4633 # A name such as libperl.so.3.1
4634 majmin="libperl.$so.$patchlevel.$subversion"
4635 # A name such as libperl.so.301
4636 majonly=`echo $patchlevel $subversion |
4637 $awk '{printf "%d%02d", $1, $2}'`
4638 majonly=libperl.$so.$majonly
4639 # I'd prefer to keep the os-specific stuff here to a minimum, and
4640 # rely on figuring it out from the naming of libc.
4641 case "${osname}${osvers}" in
4644 # XXX How handle the --version stuff for MAB?
4646 linux*) # ld won't link with a bare -lperl otherwise.
4649 *) # Try to guess based on whether libc has major.minor.
4651 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4652 *libc.$so.[0-9]*) dflt=$majonly ;;
4653 *) dflt=libperl.$so ;;
4663 I need to select a good name for the shared libperl. If your system uses
4664 library names with major and minor numbers, then you might want something
4665 like $majmin. Alternatively, if your system uses a single version
4666 number for shared libraries, then you might want to use $majonly.
4667 Or, your system might be quite happy with a simple libperl.$so.
4669 Since the shared libperl will get installed into a version-specific
4670 architecture-dependent directory, the version number of the shared perl
4671 library probably isn't important, so the default should be o.k.
4674 rp='What name do you want to give to the shared libperl?'
4677 echo "Ok, I'll use $libperl"
4680 libperl="libperl${lib_ext}"
4684 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4688 WARNING: Use of the shrpdir variable for the installation location of
4689 the shared $libperl is not supported. It was never documented and
4690 will not work in this version. Let me (chip@atlantic.net)
4691 know of any problems this may cause.
4697 But your current setting of $shrpdir is
4698 the default anyway, so it's harmless.
4703 Further, your current attempted setting of $shrpdir
4704 conflicts with the value of $archlibexp/CORE
4705 that installperl will use.
4712 # How will the perl executable find the installed shared $libperl?
4713 # Add $xxx to ccdlflags.
4714 # If we can't figure out a command-line option, use $shrpenv to
4715 # set env LD_RUN_PATH. The main perl makefile uses this.
4716 shrpdir=$archlibexp/CORE
4719 if "$useshrplib"; then
4725 xxx="-Wl,-R$shrpdir"
4727 linux|irix*|dec_osf)
4728 xxx="-Wl,-rpath,$shrpdir"
4731 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
4737 # Only add $xxx if it isn't already in ccdlflags.
4738 case " $ccdlflags " in
4740 *) ccdlflags="$ccdlflags $xxx"
4743 Adding $xxx to the flags
4744 passed to $ld so that the perl executable will find the
4745 installed shared $libperl.
4753 # Respect a hint or command-line value.
4755 '') shrpenv="$tmp_shrpenv" ;;
4758 : determine where manual pages go
4759 set man1dir man1dir none
4763 $spackage has manual pages available in source form.
4767 echo "However, you don't have nroff, so they're probably useless to you."
4769 '') man1dir="none";;
4772 echo "If you don't want the manual sources installed, answer 'none'."
4777 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
4778 lookpath="$lookpath $prefixexp/man/p_man/man1"
4779 lookpath="$lookpath $prefixexp/man/u_man/man1"
4780 lookpath="$lookpath $prefixexp/man/man.1"
4781 : If prefix contains 'perl' then we want to keep the man pages
4782 : under the prefix directory. Otherwise, look in a variety of
4783 : other possible places. This is debatable, but probably a
4784 : good compromise. Well, apparently not.
4785 : Experience has shown people expect man1dir to be under prefix,
4786 : so we now always put it there. Users who want other behavior
4787 : can answer interactively or use a command line option.
4788 : Does user have System V-style man paths.
4790 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
4791 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
4801 rp="Where do the main $spackage manual pages (source) go?"
4803 if $test "X$man1direxp" != "X$ansexp"; then
4807 man1direxp="$ansexp"
4815 Since you are running AFS, I need to distinguish the directory in which
4816 manual pages reside from the directory in which they are installed (and from
4817 which they are presumably copied to the former directory by occult means).
4820 case "$installman1dir" in
4821 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
4822 *) dflt="$installman1dir";;
4825 rp='Where will man pages be installed?'
4827 installman1dir="$ans"
4829 installman1dir="$man1direxp"
4832 : What suffix to use on installed man pages
4839 rp="What suffix should be used for the main $spackage man pages?"
4841 '') case "$man1dir" in
4855 *) dflt="$man1ext";;
4862 : see if we can have long filenames
4864 rmlist="$rmlist /tmp/cf$$"
4865 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
4866 first=123456789abcdef
4867 second=/tmp/cf$$/$first
4868 $rm -f $first $second
4869 if (echo hi >$first) 2>/dev/null; then
4870 if $test -f 123456789abcde; then
4871 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
4874 if (echo hi >$second) 2>/dev/null; then
4875 if $test -f /tmp/cf$$/123456789abcde; then
4877 That's peculiar... You can have filenames longer than 14 characters, but only
4878 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
4879 I shall consider your system cannot support long filenames at all.
4883 echo 'You can have filenames longer than 14 characters.' >&4
4888 How confusing! Some of your filesystems are sane enough to allow filenames
4889 longer than 14 characters but some others like /tmp can't even think about them.
4890 So, for now on, I shall assume your kernel does not allow them at all.
4897 You can't have filenames longer than 14 chars. You can't even think about them!
4903 $rm -rf /tmp/cf$$ 123456789abcde*
4905 : determine where library module manual pages go
4906 set man3dir man3dir none
4910 $spackage has manual pages for many of the library modules.
4916 However, you don't have nroff, so they're probably useless to you.
4917 You can use the supplied perldoc script instead.
4920 '') man3dir="none";;
4924 case "$d_flexfnam" in
4927 However, your system can't handle the long file names like File::Basename.3.
4928 You can use the supplied perldoc script instead.
4931 '') man3dir="none";;
4935 echo "If you don't want the manual sources installed, answer 'none'."
4936 : We dont use /usr/local/man/man3 because some man programs will
4937 : only show the /usr/local/man/man3 contents, and not the system ones,
4938 : thus man less will show the perl module less.pm, but not the system
4939 : less command. We might also conflict with TCL man pages.
4940 : However, something like /opt/perl/man/man3 is fine.
4942 '') case "$prefix" in
4943 *perl*) dflt=`echo $man1dir |
4944 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
4945 *) dflt="$privlib/man/man3" ;;
4949 *) dflt="$man3dir" ;;
4954 rp="Where do the $spackage library man pages (source) go?"
4956 if test "X$man3direxp" != "X$ansexp"; then
4961 man3direxp="$ansexp"
4969 Since you are running AFS, I need to distinguish the directory in which
4970 manual pages reside from the directory in which they are installed (and from
4971 which they are presumably copied to the former directory by occult means).
4974 case "$installman3dir" in
4975 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
4976 *) dflt="$installman3dir";;
4979 rp='Where will man pages be installed?'
4981 installman3dir="$ans"
4983 installman3dir="$man3direxp"
4986 : What suffix to use on installed man pages
4993 rp="What suffix should be used for the $spackage library man pages?"
4995 '') case "$man3dir" in
5009 *) dflt="$man3ext";;
5016 : see if we have to deal with yellow pages, now NIS.
5017 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5018 if $test -f /usr/etc/nibindd; then
5020 echo "I'm fairly confident you're on a NeXT."
5022 rp='Do you get the hosts file via NetInfo?'
5031 y*) hostcat='nidump hosts .';;
5032 *) case "$hostcat" in
5033 nidump*) hostcat='';;
5043 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5051 rp='Are you getting the hosts file via yellow pages?'
5054 y*) hostcat='ypcat hosts';;
5055 *) hostcat='cat /etc/hosts';;
5061 : now get the host name
5063 echo "Figuring out host name..." >&4
5064 case "$myhostname" in
5066 echo 'Maybe "hostname" will work...'
5067 if tans=`sh -c hostname 2>&1` ; then
5075 if $test "$cont"; then
5077 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5078 if tans=`cat /etc/systemid 2>&1` ; then
5080 phostname='cat /etc/systemid'
5081 echo "Whadyaknow. Xenix always was a bit strange..."
5084 elif $test -r /etc/systemid; then
5085 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5088 if $test "$cont"; then
5089 echo 'No, maybe "uuname -l" will work...'
5090 if tans=`sh -c 'uuname -l' 2>&1` ; then
5092 phostname='uuname -l'
5094 echo 'Strange. Maybe "uname -n" will work...'
5095 if tans=`sh -c 'uname -n' 2>&1` ; then
5097 phostname='uname -n'
5099 echo 'Oh well, maybe I can mine it out of whoami.h...'
5100 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5101 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5102 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5104 case "$myhostname" in
5105 '') echo "Does this machine have an identity crisis or something?"
5108 echo "Well, you said $myhostname before..."
5109 phostname='echo $myhostname';;
5115 : you do not want to know about this
5120 if $test "$myhostname" ; then
5122 rp='Your host name appears to be "'$myhostname'".'" Right?"
5130 : bad guess or no guess
5131 while $test "X$myhostname" = X ; do
5133 rp="Please type the (one word) name of your host:"
5138 : translate upper to lower if necessary
5139 case "$myhostname" in
5141 echo "(Normalizing case in your host name)"
5142 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5146 case "$myhostname" in
5148 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5149 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5150 echo "(Trimming domain name from host name--host name is now $myhostname)"
5152 *) case "$mydomain" in
5155 : If we use NIS, try ypmatch.
5156 : Is there some reason why this was not done before?
5157 test "X$hostcat" = "Xypcat hosts" &&
5158 ypmatch "$myhostname" hosts 2>/dev/null |\
5159 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5162 : Extract only the relevant hosts, reducing file size,
5163 : remove comments, insert trailing space for later use.
5164 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5165 /[ ]$myhostname[ . ]/p" > hosts
5168 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5169 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5170 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5171 hosts | $sort | $uniq | \
5172 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5173 case `$echo X$dflt` in
5174 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5177 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5182 tans=`./loc resolv.conf X /etc /usr/etc`
5183 if $test -f "$tans"; then
5184 echo "(Attempting domain name extraction from $tans)"
5185 : Why was there an Egrep here, when Sed works?
5186 : Look for either a search or a domain directive.
5187 dflt=.`$sed -n -e 's/ / /g' \
5188 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5189 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5191 .) dflt=.`$sed -n -e 's/ / /g' \
5192 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5193 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5200 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5201 dflt=.`sh -c domainname 2>/dev/null`
5204 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5209 .) echo "(Lost all hope -- silly guess then)"
5215 *) dflt="$mydomain";;
5219 rp="What is your domain name?"
5229 : translate upper to lower if necessary
5232 echo "(Normalizing case in your domain name)"
5233 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5237 : a little sanity check here
5238 case "$phostname" in
5241 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5242 $myhostname$mydomain|$myhostname) ;;
5244 case "$phostname" in
5246 echo "(That doesn't agree with your whoami.h file, by the way.)"
5249 echo "(That doesn't agree with your $phostname command, by the way.)"
5259 I need to get your e-mail address in Internet format if possible, i.e.
5260 something like user@host.domain. Please answer accurately since I have
5261 no easy means to double check it. The default value provided below
5262 is most probably close to the reality but may not be valid from outside
5263 your organization...
5267 while test "$cont"; do
5269 '') dflt="$cf_by@$myhostname$mydomain";;
5270 *) dflt="$cf_email";;
5272 rp='What is your e-mail address?'
5278 rp='Address does not look like an Internet one. Use it anyway?'
5294 If you or somebody else will be maintaining perl at your site, please
5295 fill in the correct e-mail address here so that they may be contacted
5296 if necessary. Currently, the "perlbug" program included with perl
5297 will send mail to this address in addition to perlbug@perl.com. You may
5298 enter "none" for no administrator.
5301 case "$perladmin" in
5302 '') dflt="$cf_email";;
5303 *) dflt="$perladmin";;
5305 rp='Perl administrator e-mail address'
5309 : figure out how to guarantee perl startup
5310 case "$startperl" in
5312 case "$sharpbang" in
5316 I can use the #! construct to start perl on your system. This will
5317 make startup of perl scripts faster, but may cause problems if you
5318 want to share those scripts and perl is not in a standard place
5319 ($binexp/perl) on all your platforms. The alternative is to force
5320 a shell by starting the script with a single ':' character.
5324 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5327 none) startperl=": # use perl";;
5328 *) startperl="#!$ans"
5329 if $test 33 -lt `echo "$ans" | wc -c`; then
5332 WARNING: Some systems limit the #! command to 32 characters.
5333 If you experience difficulty running Perl scripts with #!, try
5334 installing Perl in a directory with a shorter pathname.
5340 *) startperl=": # use perl"
5345 echo "I'll use $startperl to start perl scripts."
5347 : figure best path for perl in scripts
5350 perlpath="$binexp/perl"
5351 case "$startperl" in
5356 I will use the "eval 'exec'" idiom to start Perl on your system.
5357 I can use the full path of your Perl binary for this purpose, but
5358 doing so may cause problems if you want to share those scripts and
5359 Perl is not always in a standard place ($binexp/perl).
5363 rp="What path shall I use in \"eval 'exec'\"?"
5370 case "$startperl" in
5372 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
5375 : determine where public executable scripts go
5376 set scriptdir scriptdir
5378 case "$scriptdir" in
5381 : guess some guesses
5382 $test -d /usr/share/scripts && dflt=/usr/share/scripts
5383 $test -d /usr/share/bin && dflt=/usr/share/bin
5384 $test -d /usr/local/script && dflt=/usr/local/script
5385 $test -d $prefixexp/script && dflt=$prefixexp/script
5389 *) dflt="$scriptdir"
5394 Some installations have a separate directory just for executable scripts so
5395 that they can mount it across multiple architectures but keep the scripts in
5396 one spot. You might, for example, have a subdirectory of /usr/share for this.
5397 Or you might just lump your scripts in with all your other executables.
5401 rp='Where do you keep publicly executable scripts?'
5403 if $test "X$ansexp" != "X$scriptdirexp"; then
5407 scriptdirexp="$ansexp"
5411 Since you are running AFS, I need to distinguish the directory in which
5412 scripts reside from the directory in which they are installed (and from
5413 which they are presumably copied to the former directory by occult means).
5416 case "$installscript" in
5417 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
5418 *) dflt="$installscript";;
5421 rp='Where will public scripts be installed?'
5423 installscript="$ans"
5425 installscript="$scriptdirexp"
5430 Previous version of $package used the standard IO mechanisms as defined in
5431 <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
5432 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
5433 the default and is the only supported mechanism. This abstraction
5434 layer can use AT&T's sfio (if you already have sfio installed) or
5435 fall back on standard IO. This PerlIO abstraction layer is
5436 experimental and may cause problems with some extension modules.
5438 If this doesn't make any sense to you, just accept the default 'n'.
5440 case "$useperlio" in
5441 $define|true|[yY]*) dflt='y';;
5444 rp='Use the experimental PerlIO abstraction layer?'
5451 echo "Ok, doing things the stdio way"
5458 : Check how to convert floats to strings.
5460 echo "Checking for an efficient way to convert floats to strings."
5463 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
5464 char *myname = "gconvert";
5467 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
5468 char *myname = "gcvt";
5471 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
5472 char *myname = "sprintf";
5478 checkit(expect, got)
5482 if (strcmp(expect, got)) {
5483 printf("%s oddity: Expected %s, got %s\n",
5484 myname, expect, got);
5495 /* This must be 1st test on (which?) platform */
5496 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
5497 Gconvert(0.1, 8, 0, buf);
5498 checkit("0.1", buf);
5500 Gconvert(1.0, 8, 0, buf);
5503 Gconvert(0.0, 8, 0, buf);
5506 Gconvert(-1.0, 8, 0, buf);
5509 /* Some Linux gcvt's give 1.e+5 here. */
5510 Gconvert(100000.0, 8, 0, buf);
5511 checkit("100000", buf);
5513 /* Some Linux gcvt's give -1.e+5 here. */
5514 Gconvert(-100000.0, 8, 0, buf);
5515 checkit("-100000", buf);
5520 case "$d_Gconvert" in
5521 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
5522 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
5523 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
5524 *) xxx_list='gconvert gcvt sprintf' ;;
5527 for xxx_convert in $xxx_list; do
5528 echo "Trying $xxx_convert"
5530 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
5531 try.c $libs > /dev/null 2>&1 ; then
5532 echo "$xxx_convert" found. >&4
5534 echo "I'll use $xxx_convert to convert floats into a string." >&4
5537 echo "...But $xxx_convert didn't work as I expected."
5540 echo "$xxx_convert NOT found." >&4
5544 case "$xxx_convert" in
5545 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
5546 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
5547 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
5550 : Initialize h_fcntl
5553 : Initialize h_sysfile
5556 : access call always available on UNIX
5560 : locate the flags for 'access()'
5564 $cat >access.c <<'EOCP'
5565 #include <sys/types.h>
5570 #include <sys/file.h>
5579 : check sys/file.h first, no particular reason here
5580 if $test `./findhdr sys/file.h` && \
5581 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
5583 echo "<sys/file.h> defines the *_OK access constants." >&4
5584 elif $test `./findhdr fcntl.h` && \
5585 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
5587 echo "<fcntl.h> defines the *_OK access constants." >&4
5588 elif $test `./findhdr unistd.h` && \
5589 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
5590 echo "<unistd.h> defines the *_OK access constants." >&4
5592 echo "I can't find the four *_OK access constants--I'll use mine." >&4
5598 : see if alarm exists
5602 : Look for GNU-cc style attribute checking
5604 echo "Checking whether your compiler can handle __attribute__ ..." >&4
5605 $cat >attrib.c <<'EOCP'
5607 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
5609 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
5610 if $contains 'warning' attrib.out >/dev/null 2>&1; then
5611 echo "Your C compiler doesn't fully support __attribute__."
5614 echo "Your C compiler supports __attribute__."
5618 echo "Your C compiler doesn't seem to understand __attribute__ at all."
5625 : see if bcmp exists
5629 : see if bcopy exists
5633 : see if this is a unistd.h system
5634 set unistd.h i_unistd
5637 : see if getpgrp exists
5638 set getpgrp d_getpgrp
5641 echo "Checking to see which flavor of getpgrp is in use . . . "
5642 case "$d_getpgrp" in
5647 #include <sys/types.h>
5649 # include <unistd.h>
5653 if (getuid() == 0) {
5654 printf("(I see you are running Configure as super-user...)\n");
5658 if (getpgrp(1) == 0)
5667 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5668 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
5670 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5671 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
5674 echo "I can't seem to compile and run the test program."
5676 xxx="a USG one, i.e. you use getpgrp()."
5678 # SVR4 systems can appear rather BSD-ish.
5681 xxx="a BSD one, i.e. you use getpgrp(pid)."
5685 xxx="probably a USG one, i.e. you use getpgrp()."
5690 echo "Assuming your getpgrp is $xxx" >&4
5699 : see if setpgrp exists
5700 set setpgrp d_setpgrp
5703 echo "Checking to see which flavor of setpgrp is in use . . . "
5704 case "$d_setpgrp" in
5709 #include <sys/types.h>
5711 # include <unistd.h>
5715 if (getuid() == 0) {
5716 printf("(I see you are running Configure as super-user...)\n");
5720 if (-1 == setpgrp(1, 1))
5723 if (setpgrp() != -1)
5729 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5730 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
5732 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5733 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
5736 echo "I can't seem to compile and run the test program."
5738 xxx="a USG one, i.e. you use setpgrp()."
5740 # SVR4 systems can appear rather BSD-ish.
5743 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
5747 xxx="probably a USG one, i.e. you use setpgrp()."
5752 echo "Assuming your setpgrp is $xxx" >&4
5759 d_bsdpgrp=$d_bsdsetpgrp
5761 : see if bzero exists
5765 : check for lengths of integral types
5769 echo "Checking to see how big your integers are..." >&4
5770 $cat >intsize.c <<'EOCP'
5774 printf("intsize=%d;\n", sizeof(int));
5775 printf("longsize=%d;\n", sizeof(long));
5776 printf("shortsize=%d;\n", sizeof(short));
5781 # If $libs contains -lsfio, and sfio is mis-configured, then it
5782 # sometimes (apparently) runs and exits with a 0 status, but with no
5783 # output!. Thus we check with test -s whether we actually got any
5784 # output. I think it has to do with sfio's use of _exit vs. exit,
5785 # but I don't know for sure. --Andy Dougherty 1/27/97.
5786 if $cc $optimize $ccflags $ldflags -o intsize intsize.c $libs >/dev/null 2>&1 &&
5787 ./intsize > intsize.out 2>/dev/null && test -s intsize.out ; then
5788 eval `$cat intsize.out`
5789 echo "Your integers are $intsize bytes long."
5790 echo "Your long integers are $longsize bytes long."
5791 echo "Your short integers are $shortsize bytes long."
5795 Help! I can't compile and run the intsize test program: please enlighten me!
5796 (This is probably a misconfiguration in your system or libraries, and
5797 you really ought to fix it. Still, I'll try anyway.)
5801 rp="What is the size of an integer (in bytes)?"
5805 rp="What is the size of a long integer (in bytes)?"
5809 rp="What is the size of a short integer (in bytes)?"
5815 $rm -f intsize intsize.[co] intsize.out
5817 : see if signal is declared as pointer to function returning int or void
5819 xxx=`./findhdr signal.h`
5820 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
5821 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5822 echo "You have int (*signal())() instead of void." >&4
5824 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5825 echo "You have void (*signal())() instead of int." >&4
5827 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
5828 echo "You have int (*signal())() instead of void." >&4
5831 case "$d_voidsig" in
5833 echo "I can't determine whether signal handler returns void or int..." >&4
5835 rp="What type does your signal handler return?"
5842 echo "As you already told me, signal handler returns void." >&4;;
5844 echo "As you already told me, signal handler returns int." >&4;;
5849 case "$d_voidsig" in
5850 "$define") signal_t="void";;
5855 : check for ability to cast large floats to 32-bit ints.
5857 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
5858 if $test "$intsize" -eq 4; then
5864 #include <sys/types.h>
5866 $signal_t blech() { exit(3); }
5872 signal(SIGFPE, blech);
5874 f = (double) 0x7fffffff;
5878 if (i32 != ($xxx) f)
5883 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5887 echo "(I can't seem to compile the test program--assuming it can't)"
5895 echo "Nope, it can't."
5902 : check for ability to cast negative floats to unsigned
5904 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
5906 #include <sys/types.h>
5908 $signal_t blech() { exit(7); }
5909 $signal_t blech_in_list() { exit(4); }
5910 unsigned long dummy_long(p) unsigned long p; { return p; }
5911 unsigned int dummy_int(p) unsigned int p; { return p; }
5912 unsigned short dummy_short(p) unsigned short p; { return p; }
5916 unsigned long along;
5918 unsigned short ashort;
5921 signal(SIGFPE, blech);
5922 along = (unsigned long)f;
5923 aint = (unsigned int)f;
5924 ashort = (unsigned short)f;
5925 if (along != (unsigned long)-123)
5927 if (aint != (unsigned int)-123)
5929 if (ashort != (unsigned short)-123)
5931 f = (double)0x40000000;
5934 along = (unsigned long)f;
5935 if (along != 0x80000000)
5939 along = (unsigned long)f;
5940 if (along != 0x7fffffff)
5944 along = (unsigned long)f;
5945 if (along != 0x80000001)
5949 signal(SIGFPE, blech_in_list);
5951 along = dummy_long((unsigned long)f);
5952 aint = dummy_int((unsigned int)f);
5953 ashort = dummy_short((unsigned short)f);
5954 if (along != (unsigned long)123)
5956 if (aint != (unsigned int)123)
5958 if (ashort != (unsigned short)123)
5964 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5968 echo "(I can't seem to compile the test program--assuming it can't)"
5971 case "$castflags" in
5976 echo "Nope, it can't."
5983 : see if vprintf exists
5985 if set vprintf val -f d_vprintf; eval $csym; $val; then
5986 echo 'vprintf() found.' >&4
5988 $cat >vprintf.c <<'EOF'
5989 #include <varargs.h>
5991 main() { xxx("foo"); }
6000 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6003 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
6004 echo "Your vsprintf() returns (int)." >&4
6007 echo "Your vsprintf() returns (char*)." >&4
6011 echo 'vprintf() NOT found.' >&4
6021 : see if chown exists
6025 : see if chroot exists
6029 : see if chsize exists
6033 : check for const keyword
6035 echo 'Checking to see if your C compiler knows about "const"...' >&4
6036 $cat >const.c <<'EOCP'
6037 typedef struct spug { int drokk; } spug;
6044 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6046 echo "Yup, it does."
6049 echo "Nope, it doesn't."
6054 : see if crypt exists
6056 if set crypt val -f d_crypt; eval $csym; $val; then
6057 echo 'crypt() found.' >&4
6061 cryptlib=`./loc Slibcrypt$lib_ext "" $xlibpth`
6062 if $test -z "$cryptlib"; then
6063 cryptlib=`./loc Mlibcrypt$lib_ext "" $xlibpth`
6067 if $test -z "$cryptlib"; then
6068 cryptlib=`./loc Llibcrypt$lib_ext "" $xlibpth`
6072 if $test -z "$cryptlib"; then
6073 cryptlib=`./loc libcrypt$lib_ext "" $libpth`
6077 if $test -z "$cryptlib"; then
6078 echo 'crypt() NOT found.' >&4
6087 : get csh whereabouts
6089 'csh') val="$undef" ;;
6096 : see if cuserid exists
6097 set cuserid d_cuserid
6100 : see if this is a limits.h system
6101 set limits.h i_limits
6104 : see if this is a float.h system
6108 : See if number of significant digits in a double precision number is known
6110 $cat >dbl_dig.c <<EOM
6120 printf("Contains DBL_DIG");
6123 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
6124 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
6125 echo "DBL_DIG found." >&4
6128 echo "DBL_DIG NOT found." >&4
6135 : see if difftime exists
6136 set difftime d_difftime
6139 : see if this is a dirent system
6141 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
6143 echo "<dirent.h> found." >&4
6146 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
6147 echo "<sys/dir.h> found." >&4
6150 xinc=`./findhdr sys/ndir.h`
6152 echo "<dirent.h> NOT found." >&4
6157 : Look for type of directory structure.
6159 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6161 case "$direntrytype" in
6164 $define) guess1='struct dirent' ;;
6165 *) guess1='struct direct' ;;
6168 *) guess1="$direntrytype"
6173 'struct dirent') guess2='struct direct' ;;
6174 *) guess2='struct dirent' ;;
6177 if $contains "$guess1" try.c >/dev/null 2>&1; then
6178 direntrytype="$guess1"
6179 echo "Your directory entries are $direntrytype." >&4
6180 elif $contains "$guess2" try.c >/dev/null 2>&1; then
6181 direntrytype="$guess2"
6182 echo "Your directory entries seem to be $direntrytype." >&4
6184 echo "I don't recognize your system's directory entries." >&4
6185 rp="What type is used for directory entries on this system?"
6193 : see if the directory entry stores field length
6195 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6196 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
6197 echo "Good, your directory entry keeps length information in d_namlen." >&4
6200 echo "Your directory entry does not know about the d_namlen field." >&4
6207 : see if dlerror exists
6210 set dlerror d_dlerror
6214 : see if dlfcn is available
6222 On a few systems, the dynamically loaded modules that perl generates and uses
6223 will need a different extension then shared libs. The default will probably
6231 rp='What is the extension of dynamically loaded modules'
6240 : Check if dlsym need a leading underscore
6246 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
6247 $cat >dyna.c <<'EOM'
6256 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
6258 #include <sys/types.h>
6272 int mode = RTLD_LAZY ;
6274 handle = dlopen("./dyna.$dlext", mode) ;
6275 if (handle == NULL) {
6280 symbol = dlsym(handle, "fred") ;
6281 if (symbol == NULL) {
6282 /* try putting a leading underscore */
6283 symbol = dlsym(handle, "_fred") ;
6284 if (symbol == NULL) {
6297 : Call the object file tmp-dyna.o in case dlext=o.
6298 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
6299 mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6300 $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6301 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
6304 1) echo "Test program failed using dlopen." >&4
6305 echo "Perhaps you should not use dynamic loading." >&4;;
6306 2) echo "Test program failed using dlsym." >&4
6307 echo "Perhaps you should not use dynamic loading." >&4;;
6308 3) echo "dlsym needs a leading underscore" >&4
6310 4) echo "dlsym doesn't need a leading underscore." >&4;;
6313 echo "I can't compile and run the test program." >&4
6318 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
6323 : see if dup2 exists
6327 : Locate the flags for 'open()'
6329 $cat >open3.c <<'EOCP'
6330 #include <sys/types.h>
6335 #include <sys/file.h>
6346 : check sys/file.h first to get FREAD on Sun
6347 if $test `./findhdr sys/file.h` && \
6348 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
6350 echo "<sys/file.h> defines the O_* constants..." >&4
6352 echo "and you have the 3 argument form of open()." >&4
6355 echo "but not the 3 argument form of open(). Oh, well." >&4
6358 elif $test `./findhdr fcntl.h` && \
6359 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
6361 echo "<fcntl.h> defines the O_* constants..." >&4
6363 echo "and you have the 3 argument form of open()." >&4
6366 echo "but not the 3 argument form of open(). Oh, well." >&4
6371 echo "I can't find the O_* constant definitions! You got problems." >&4
6377 : check for non-blocking I/O stuff
6378 case "$h_sysfile" in
6379 true) echo "#include <sys/file.h>" > head.c;;
6382 true) echo "#include <fcntl.h>" > head.c;;
6383 *) echo "#include <sys/fcntl.h>" > head.c;;
6388 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
6389 case "$o_nonblock" in
6392 $cat >>try.c <<'EOCP'
6395 printf("O_NONBLOCK\n");
6399 printf("O_NDELAY\n");
6403 printf("FNDELAY\n");
6409 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6411 case "$o_nonblock" in
6412 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
6413 *) echo "Seems like we can use $o_nonblock.";;
6416 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
6419 *) echo "Using $hint value $o_nonblock.";;
6421 $rm -f try try.* .out core
6424 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
6430 #include <sys/types.h>
6432 #define MY_O_NONBLOCK $o_nonblock
6434 $signal_t blech(x) int x; { exit(3); }
6436 $cat >> try.c <<'EOCP'
6444 pipe(pd); /* Down: child -> parent */
6445 pipe(pu); /* Up: parent -> child */
6448 close(pd[1]); /* Parent reads from pd[0] */
6449 close(pu[0]); /* Parent writes (blocking) to pu[1] */
6450 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
6452 signal(SIGALRM, blech);
6454 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
6456 sprintf(string, "%d\n", ret);
6457 write(2, string, strlen(string));
6460 if (errno == EAGAIN) {
6466 if (errno == EWOULDBLOCK)
6467 printf("EWOULDBLOCK\n");
6470 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
6471 sleep(2); /* Give it time to close our pipe */
6473 ret = read(pd[0], buf, 1); /* Should read EOF */
6475 sprintf(string, "%d\n", ret);
6476 write(3, string, strlen(string));
6480 close(pd[0]); /* We write to pd[1] */
6481 close(pu[1]); /* We read from pu[0] */
6482 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
6483 close(pd[1]); /* Pipe pd is now fully closed! */
6484 exit(0); /* Bye bye, thank you for playing! */
6487 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6488 echo "$startsh" >mtry
6489 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
6491 ./mtry >/dev/null 2>&1
6493 0) eagain=`$cat try.out`;;
6494 1) echo "Could not perform non-blocking setting!";;
6495 2) echo "I did a successful read() for something that was not there!";;
6496 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
6497 *) echo "Something terribly wrong happened during testing.";;
6499 rd_nodata=`$cat try.ret`
6500 echo "A read() system call with no data present returns $rd_nodata."
6501 case "$rd_nodata" in
6504 echo "(That's peculiar, fixing that to be -1.)"
6510 echo "Forcing errno EAGAIN on read() with no data available."
6514 echo "Your read() sets errno to $eagain when no data is available."
6517 status=`$cat try.err`
6519 0) echo "And it correctly returns 0 to signal EOF.";;
6520 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
6521 *) echo "However, your read() returns '$status' on EOF??";;
6524 if test "$status" = "$rd_nodata"; then
6525 echo "WARNING: you can't distinguish between EOF and no data!"
6529 echo "I can't compile the test program--assuming errno EAGAIN will do."
6536 echo "Using $hint value $eagain."
6537 echo "Your read() returns $rd_nodata when no data is present."
6538 case "$d_eofnblk" in
6539 "$define") echo "And you can see EOF because read() returns 0.";;
6540 "$undef") echo "But you can't see EOF status from read() returned value.";;
6542 echo "(Assuming you can't see EOF status from read anyway.)"
6548 $rm -f try try.* .out core head.c mtry
6550 : see if fchmod exists
6554 : see if fchown exists
6558 : see if this is an fcntl system
6562 : see if fgetpos exists
6563 set fgetpos d_fgetpos
6566 : see if flock exists
6570 : see if fork exists
6574 : see if pathconf exists
6575 set pathconf d_pathconf
6578 : see if fpathconf exists
6579 set fpathconf d_fpathconf
6582 : see if fsetpos exists
6583 set fsetpos d_fsetpos
6586 : see if gethostent exists
6587 set gethostent d_gethent
6590 : see if getlogin exists
6591 set getlogin d_getlogin
6594 : see if getpgid exists
6595 set getpgid d_getpgid
6598 : see if getpgrp2 exists
6599 set getpgrp2 d_getpgrp2
6602 : see if getppid exists
6603 set getppid d_getppid
6606 : see if getpriority exists
6607 set getpriority d_getprior
6610 : see if gettimeofday or ftime exists
6611 set gettimeofday d_gettimeod
6613 case "$d_gettimeod" in
6619 val="$undef"; set d_ftime; eval $setvar
6622 case "$d_gettimeod$d_ftime" in
6625 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
6629 : see if this is a netinet/in.h or sys/in.h system
6630 set netinet/in.h i_niin sys/in.h i_sysin
6633 : see if htonl --and friends-- exists
6638 : Maybe they are macros.
6643 #include <sys/types.h>
6644 #$i_niin I_NETINET_IN
6647 #include <netinet/in.h>
6653 printf("Defined as a macro.");
6656 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
6657 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
6659 echo "But it seems to be defined as a macro." >&4
6667 : see which of string.h or strings.h is needed
6669 strings=`./findhdr string.h`
6670 if $test "$strings" && $test -r "$strings"; then
6671 echo "Using <string.h> instead of <strings.h>." >&4
6675 strings=`./findhdr strings.h`
6676 if $test "$strings" && $test -r "$strings"; then
6677 echo "Using <strings.h> instead of <string.h>." >&4
6679 echo "No string header found -- You'll surely have problems." >&4
6685 "$undef") strings=`./findhdr strings.h`;;
6686 *) strings=`./findhdr string.h`;;
6691 if set index val -f; eval $csym; $val; then
6692 if set strchr val -f d_strchr; eval $csym; $val; then
6693 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6696 echo "strchr() found." >&4
6700 echo "index() found." >&4
6705 echo "index() found." >&4
6708 if set strchr val -f d_strchr; eval $csym; $val; then
6711 echo "strchr() found." >&4
6713 echo "No index() or strchr() found!" >&4
6718 set d_strchr; eval $setvar
6720 set d_index; eval $setvar
6722 : check whether inet_aton exists
6723 set inet_aton d_inetaton
6728 $cat >isascii.c <<'EOCP'
6739 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6740 echo "isascii() found." >&4
6743 echo "isascii() NOT found." >&4
6750 : see if killpg exists
6754 : see if link exists
6758 : see if localeconv exists
6759 set localeconv d_locconv
6762 : see if lockf exists
6766 : see if lstat exists
6770 : see if mblen exists
6774 : see if mbstowcs exists
6775 set mbstowcs d_mbstowcs
6778 : see if mbtowc exists
6782 : see if memcmp exists
6786 : see if memcpy exists
6790 : see if memmove exists
6791 set memmove d_memmove
6794 : see if memset exists
6798 : see if mkdir exists
6802 : see if mkfifo exists
6806 : see if mktime exists
6810 : see if msgctl exists
6814 : see if msgget exists
6818 : see if msgsnd exists
6822 : see if msgrcv exists
6826 : see how much of the 'msg*(2)' library is present.
6829 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6830 *"$undef"*) h_msg=false;;
6832 : we could also check for sys/ipc.h ...
6833 if $h_msg && $test `./findhdr sys/msg.h`; then
6834 echo "You have the full msg*(2) library." >&4
6837 echo "You don't have the full msg*(2) library." >&4
6843 : see if this is a malloc.h system
6844 set malloc.h i_malloc
6847 : see if stdlib is available
6848 set stdlib.h i_stdlib
6851 : determine which malloc to compile in
6853 case "$usemymalloc" in
6854 ''|y*|true) dflt='y' ;;
6855 n*|false) dflt='n' ;;
6856 *) dflt="$usemymalloc" ;;
6858 rp="Do you wish to attempt to use the malloc that comes with $package?"
6864 mallocsrc='malloc.c'
6865 mallocobj='malloc.o'
6866 d_mymalloc="$define"
6869 : Remove malloc from list of libraries to use
6870 echo "Removing unneeded -lmalloc from library list" >&4
6871 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6874 echo "libs = $libs" >&4
6886 : compute the return types of malloc and free
6888 $cat >malloc.c <<END
6892 #include <sys/types.h>
6906 case "$malloctype" in
6908 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6915 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6919 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6926 echo "Your system uses $freetype free(), it would seem." >&4
6928 : see if nice exists
6932 : see if pause exists
6936 : see if pipe exists
6940 : see if poll exists
6944 : see if this is a pwd.h system
6950 xxx=`./findhdr pwd.h`
6951 $cppstdin $cppflags $cppminus < $xxx >$$.h
6953 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6961 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
6969 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
6977 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
6985 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
6993 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
7005 set d_pwquota; eval $setvar
7006 set d_pwage; eval $setvar
7007 set d_pwchange; eval $setvar
7008 set d_pwclass; eval $setvar
7009 set d_pwexpire; eval $setvar
7010 set d_pwcomment; eval $setvar
7014 : see if readdir and friends exist
7015 set readdir d_readdir
7017 set seekdir d_seekdir
7019 set telldir d_telldir
7021 set rewinddir d_rewinddir
7024 : see if readlink exists
7025 set readlink d_readlink
7028 : see if rename exists
7032 : see if rmdir exists
7036 : see if memory.h is available.
7041 : See if it conflicts with string.h
7047 $cppstdin $cppflags $cppminus < $strings > mem.h
7048 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
7050 echo "We won't be including <memory.h>."
7060 : can bcopy handle overlapping blocks?
7065 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
7072 $cat >>foo.c <<'EOCP'
7076 # include <memory.h>
7079 # include <stdlib.h>
7082 # include <string.h>
7084 # include <strings.h>
7087 # include <unistd.h> /* Needed for NetBSD */
7091 char buf[128], abc[128];
7097 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7098 try to store the string in read-only memory. */
7099 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
7101 for (align = 7; align >= 0; align--) {
7102 for (len = 36; len; len--) {
7105 for (off = 1; off <= len; off++) {
7106 bcopy(b, b+off, len);
7107 bcopy(b+off, b, len);
7108 if (bcmp(b, abc, len))
7116 if $cc $optimize $ccflags $ldflags foo.c \
7117 -o safebcpy $libs >/dev/null 2>&1; then
7118 if ./safebcpy 2>/dev/null; then
7122 echo "It can't, sorry."
7123 case "$d_memmove" in
7124 "$define") echo "But that's Ok since you have memmove()." ;;
7128 echo "(I can't compile the test program, so we'll assume not...)"
7129 case "$d_memmove" in
7130 "$define") echo "But that's Ok since you have memmove()." ;;
7135 $rm -f foo.* safebcpy core
7139 : can memcpy handle overlapping blocks?
7144 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
7151 $cat >>foo.c <<'EOCP'
7155 # include <memory.h>
7158 # include <stdlib.h>
7161 # include <string.h>
7163 # include <strings.h>
7166 # include <unistd.h> /* Needed for NetBSD */
7170 char buf[128], abc[128];
7176 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7177 try to store the string in read-only memory. */
7178 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
7180 for (align = 7; align >= 0; align--) {
7181 for (len = 36; len; len--) {
7183 memcpy(b, abc, len);
7184 for (off = 1; off <= len; off++) {
7185 memcpy(b+off, b, len);
7186 memcpy(b, b+off, len);
7187 if (memcmp(b, abc, len))
7195 if $cc $optimize $ccflags $ldflags foo.c \
7196 -o safemcpy $libs >/dev/null 2>&1; then
7197 if ./safemcpy 2>/dev/null; then
7201 echo "It can't, sorry."
7202 case "$d_memmove" in
7203 "$define") echo "But that's Ok since you have memmove()." ;;
7207 echo "(I can't compile the test program, so we'll assume not...)"
7208 case "$d_memmove" in
7209 "$define") echo "But that's Ok since you have memmove()." ;;
7214 $rm -f foo.* safemcpy core
7218 : can memcmp be trusted to compare relative magnitude?
7223 echo "Checking to see if your memcmp() can compare relative magnitude..." >&4
7230 $cat >>foo.c <<'EOCP'
7234 # include <memory.h>
7237 # include <stdlib.h>
7240 # include <string.h>
7242 # include <strings.h>
7245 # include <unistd.h> /* Needed for NetBSD */
7251 if ((a < b) && memcmp(&a, &b, 1) < 0)
7256 if $cc $optimize $ccflags $ldflags foo.c \
7257 -o sanemcmp $libs >/dev/null 2>&1; then
7258 if ./sanemcmp 2>/dev/null; then
7262 echo "No, it can't (it uses signed chars)."
7265 echo "(I can't compile the test program, so we'll assume not...)"
7269 $rm -f foo.* sanemcmp core
7273 : see if select exists
7277 : see if semctl exists
7281 : see if semget exists
7285 : see if semop exists
7289 : see how much of the 'sem*(2)' library is present.
7292 case "$d_semctl$d_semget$d_semop" in
7293 *"$undef"*) h_sem=false;;
7295 : we could also check for sys/ipc.h ...
7296 if $h_sem && $test `./findhdr sys/sem.h`; then
7297 echo "You have the full sem*(2) library." >&4
7300 echo "You don't have the full sem*(2) library." >&4
7306 : see if setegid exists
7307 set setegid d_setegid
7310 : see if seteuid exists
7311 set seteuid d_seteuid
7314 : see if setlinebuf exists
7315 set setlinebuf d_setlinebuf
7318 : see if setlocale exists
7319 set setlocale d_setlocale
7322 : see if setpgid exists
7323 set setpgid d_setpgid
7326 : see if setpgrp2 exists
7327 set setpgrp2 d_setpgrp2
7330 : see if setpriority exists
7331 set setpriority d_setprior
7334 : see if setregid exists
7335 set setregid d_setregid
7337 set setresgid d_setresgid
7340 : see if setreuid exists
7341 set setreuid d_setreuid
7343 set setresuid d_setresuid
7346 : see if setrgid exists
7347 set setrgid d_setrgid
7350 : see if setruid exists
7351 set setruid d_setruid
7354 : see if setsid exists
7358 : see if sfio.h is available
7363 : see if sfio library is available
7374 : Ok, but do we want to use it.
7378 true|$define|[yY]*) dflt='y';;
7381 echo "$package can use the sfio library, but it is experimental."
7382 rp="You seem to have sfio available, do you want to try using it?"
7386 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
7388 : Remove sfio from list of libraries to use
7389 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
7392 echo "libs = $libs" >&4
7396 *) case "$usesfio" in
7398 echo "Sorry, cannot find sfio on this machine" >&4
7399 echo "Ignoring your setting of usesfio=$usesfio" >&4
7407 $define) usesfio='true';;
7408 *) usesfio='false';;
7411 : see if shmctl exists
7415 : see if shmget exists
7419 : see if shmat exists
7422 : see what shmat returns
7425 $cat >shmat.c <<'END'
7426 #include <sys/shm.h>
7429 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
7434 echo "and it returns ($shmattype)." >&4
7435 : see if a prototype for shmat is available
7436 xxx=`./findhdr sys/shm.h`
7437 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
7438 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
7449 set d_shmatprototype
7452 : see if shmdt exists
7456 : see how much of the 'shm*(2)' library is present.
7459 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
7460 *"$undef"*) h_shm=false;;
7462 : we could also check for sys/ipc.h ...
7463 if $h_shm && $test `./findhdr sys/shm.h`; then
7464 echo "You have the full shm*(2) library." >&4
7467 echo "You don't have the full shm*(2) library." >&4
7474 : see if we have sigaction
7475 if set sigaction val -f d_sigaction; eval $csym; $val; then
7476 echo 'sigaction() found.' >&4
7479 echo 'sigaction NOT found.' >&4
7483 $cat > set.c <<'EOP'
7484 /* Solaris 2.5_x86 with SunWorks Pro C 3.0.1 doesn't have a complete
7485 sigaction structure if compiled with cc -Xc. This compile test
7486 will fail then. <doughera@lafcol.lafayette.edu>
7489 #include <sys/types.h>
7493 struct sigaction act, oact;
7497 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
7500 echo "But you don't seem to have a useable struct sigaction." >&4
7503 set d_sigaction; eval $setvar
7504 $rm -f set set.o set.c
7506 : see if sigsetjmp exists
7508 case "$d_sigsetjmp" in
7516 if (sigsetjmp(env,1))
7523 if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then
7524 if ./set >/dev/null 2>&1; then
7525 echo "POSIX sigsetjmp found." >&4
7529 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
7535 echo "sigsetjmp not found." >&4
7539 *) val="$d_sigsetjmp"
7540 case "$d_sigsetjmp" in
7541 $define) echo "POSIX sigsetjmp found." >&4;;
7542 $undef) echo "sigsetjmp not found." >&4;;
7552 : see whether socket exists
7554 $echo $n "Hmm... $c" >&4
7555 if set socket val -f d_socket; eval $csym; $val; then
7556 echo "Looks like you have Berkeley networking support." >&4
7558 if set setsockopt val -f; eval $csym; $val; then
7561 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
7565 if $contains socklib libc.list >/dev/null 2>&1; then
7566 echo "Looks like you have Berkeley networking support." >&4
7568 : we will have to assume that it supports the 4.2 BSD interface
7571 echo "You don't have Berkeley networking in libc$lib_ext..." >&4
7572 if test -f /usr/lib/libnet$lib_ext; then
7573 ( (nm $nm_opt /usr/lib/libnet$lib_ext | eval $nm_extract) || \
7574 ar t /usr/lib/libnet$lib_ext) 2>/dev/null >> libc.list
7575 if $contains socket libc.list >/dev/null 2>&1; then
7576 echo "...but the Wollongong group seems to have hacked it in." >&4
7578 sockethdr="-I/usr/netinclude"
7580 if $contains setsockopt libc.list >/dev/null 2>&1; then
7583 echo "...using the old 4.1c interface, rather than 4.2" >&4
7587 echo "or even in libnet$lib_ext, which is peculiar." >&4
7592 echo "or anywhere else I see." >&4
7599 : see if socketpair exists
7600 set socketpair d_sockpair
7603 : see if stat knows about block sizes
7605 xxx=`./findhdr sys/stat.h`
7606 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
7607 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
7608 echo "Your stat() knows about block sizes." >&4
7611 echo "Your stat() doesn't know about block sizes." >&4
7615 echo "Your stat() doesn't know about block sizes." >&4
7621 : see if _ptr and _cnt from stdio act std
7623 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7624 echo "(Looks like you have stdio.h from Linux.)"
7625 case "$stdio_ptr" in
7626 '') stdio_ptr='((fp)->_IO_read_ptr)'
7629 *) ptr_lval=$d_stdio_ptr_lval;;
7631 case "$stdio_cnt" in
7632 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
7635 *) cnt_lval=$d_stdio_cnt_lval;;
7637 case "$stdio_base" in
7638 '') stdio_base='((fp)->_IO_read_base)';;
7640 case "$stdio_bufsiz" in
7641 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
7644 case "$stdio_ptr" in
7645 '') stdio_ptr='((fp)->_ptr)'
7648 *) ptr_lval=$d_stdio_ptr_lval;;
7650 case "$stdio_cnt" in
7651 '') stdio_cnt='((fp)->_cnt)'
7654 *) cnt_lval=$d_stdio_cnt_lval;;
7656 case "$stdio_base" in
7657 '') stdio_base='((fp)->_base)';;
7659 case "$stdio_bufsiz" in
7660 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
7663 : test whether _ptr and _cnt really work
7664 echo "Checking how std your stdio is..." >&4
7667 #define FILE_ptr(fp) $stdio_ptr
7668 #define FILE_cnt(fp) $stdio_cnt
7670 FILE *fp = fopen("try.c", "r");
7673 18 <= FILE_cnt(fp) &&
7674 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
7681 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
7683 echo "Your stdio acts pretty std."
7686 echo "Your stdio isn't very std."
7689 echo "Your stdio doesn't appear very std."
7695 : Can _ptr be used as an lvalue?
7696 case "$d_stdstdio$ptr_lval" in
7697 $define$define) val=$define ;;
7700 set d_stdio_ptr_lval
7703 : Can _cnt be used as an lvalue?
7704 case "$d_stdstdio$cnt_lval" in
7705 $define$define) val=$define ;;
7708 set d_stdio_cnt_lval
7712 : see if _base is also standard
7714 case "$d_stdstdio" in
7718 #define FILE_base(fp) $stdio_base
7719 #define FILE_bufsiz(fp) $stdio_bufsiz
7721 FILE *fp = fopen("try.c", "r");
7724 19 <= FILE_bufsiz(fp) &&
7725 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
7731 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
7733 echo "And its _base field acts std."
7736 echo "But its _base field isn't std."
7739 echo "However, it seems to be lacking the _base field."
7747 : see if strcoll exists
7748 set strcoll d_strcoll
7751 : check for structure copying
7753 echo "Checking to see if your C compiler can copy structs..." >&4
7754 $cat >try.c <<'EOCP'
7764 if $cc -c try.c >/dev/null 2>&1 ; then
7769 echo "Nope, it can't."
7775 : see if strerror and/or sys_errlist[] exist
7777 if set strerror val -f d_strerror; eval $csym; $val; then
7778 echo 'strerror() found.' >&4
7779 d_strerror="$define"
7780 d_strerrm='strerror(e)'
7781 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7782 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
7783 d_syserrlst="$define"
7785 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
7786 d_syserrlst="$undef"
7788 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
7789 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
7790 echo 'strerror() found in string header.' >&4
7791 d_strerror="$define"
7792 d_strerrm='strerror(e)'
7793 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7794 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
7795 d_syserrlst="$define"
7797 echo "(You don't appear to have any sys_errlist[], how can this be?)"
7798 d_syserrlst="$undef"
7800 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7801 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
7803 d_syserrlst="$define"
7804 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
7806 echo 'strerror() and sys_errlist[] NOT found.' >&4
7808 d_syserrlst="$undef"
7809 d_strerrm='"unknown"'
7812 : see if strtod exists
7816 : see if strtol exists
7820 : see if strtoul exists
7821 set strtoul d_strtoul
7824 : see if strxfrm exists
7825 set strxfrm d_strxfrm
7828 : see if symlink exists
7829 set symlink d_symlink
7832 : see if syscall exists
7833 set syscall d_syscall
7836 : see if sysconf exists
7837 set sysconf d_sysconf
7840 : see if system exists
7844 : see if tcgetpgrp exists
7845 set tcgetpgrp d_tcgetpgrp
7848 : see if tcsetpgrp exists
7849 set tcsetpgrp d_tcsetpgrp
7852 : define an is-a-typedef? function
7853 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
7855 "") inclist="sys/types.h";;
7857 eval "varval=\$$var";
7861 for inc in $inclist; do
7862 echo "#include <$inc>" >>temp.c;
7864 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
7865 if $contains $type temp.E >/dev/null 2>&1; then
7871 *) eval "$var=\$varval";;
7874 : see if this is a sys/times.h system
7875 set sys/times.h i_systimes
7878 : see if times exists
7880 if set times val -f d_times; eval $csym; $val; then
7881 echo 'times() found.' >&4
7884 case "$i_systimes" in
7885 "$define") inc='sys/times.h';;
7887 set clock_t clocktype long stdio.h sys/types.h $inc
7891 rp="What type is returned by times() on this system?"
7895 echo 'times() NOT found, hope that will do.' >&4
7900 : see if truncate exists
7901 set truncate d_truncate
7904 : see if tzname[] exists
7906 if set tzname val -a d_tzname; eval $csym; $val; then
7908 echo 'tzname[] found.' >&4
7911 echo 'tzname[] NOT found.' >&4
7916 : see if umask exists
7920 : see how we will look up host name
7923 : dummy stub to allow use of elif
7924 elif set uname val -f d_uname; eval $csym; $val; then
7927 uname() was found, but you're running xenix, and older versions of xenix
7928 have a broken uname(). If you don't really know whether your xenix is old
7929 enough to have a broken system call, use the default answer.
7936 rp='Is your uname() broken?'
7939 n*) d_uname="$define"; call=uname;;
7942 echo 'uname() found.' >&4
7947 case "$d_gethname" in
7948 '') d_gethname="$undef";;
7951 '') d_uname="$undef";;
7953 case "$d_phostname" in
7954 '') d_phostname="$undef";;
7957 : backward compatibility for d_hvfork
7958 if test X$d_hvfork != X; then
7962 : see if there is a vfork
7967 : Ok, but do we want to use it. vfork is reportedly unreliable in
7968 : perl on Solaris 2.x, and probably elsewhere.
7976 rp="Some systems have problems with vfork(). Do you want to use it?"
7981 echo "Ok, we won't use vfork()."
7990 $define) usevfork='true';;
7991 *) usevfork='false';;
7994 : see if this is an sysdir system
7995 set sys/dir.h i_sysdir
7998 : see if this is an sysndir system
7999 set sys/ndir.h i_sysndir
8002 : see if closedir exists
8003 set closedir d_closedir
8006 case "$d_closedir" in
8009 echo "Checking whether closedir() returns a status..." >&4
8010 cat > closedir.c <<EOM
8011 #$i_dirent I_DIRENT /**/
8012 #$i_sysdir I_SYS_DIR /**/
8013 #$i_sysndir I_SYS_NDIR /**/
8015 #if defined(I_DIRENT)
8017 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
8018 #include <sys/dir.h>
8022 #include <sys/ndir.h>
8026 #include <ndir.h> /* may be wrong in the future */
8028 #include <sys/dir.h>
8033 int main() { return closedir(opendir(".")); }
8035 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
8036 if ./closedir > /dev/null 2>&1 ; then
8037 echo "Yes, it does."
8040 echo "No, it doesn't."
8044 echo "(I can't seem to compile the test program--assuming it doesn't)"
8055 : check for volatile keyword
8057 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
8058 $cat >try.c <<'EOCP'
8061 typedef struct _goo_struct goo_struct;
8062 goo_struct * volatile goo = ((goo_struct *)0);
8063 struct _goo_struct {
8068 typedef unsigned short foo_t;
8071 volatile foo_t blech;
8075 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
8077 echo "Yup, it does."
8080 echo "Nope, it doesn't."
8086 : see if there is a wait4
8090 : see if waitpid exists
8091 set waitpid d_waitpid
8094 : see if wcstombs exists
8095 set wcstombs d_wcstombs
8098 : see if wctomb exists
8102 : preserve RCS keywords in files with variable substitution, grrr
8107 Revision='$Revision'
8109 : check for alignment requirements
8111 case "$alignbytes" in
8112 '') echo "Checking alignment constraints..." >&4
8113 $cat >try.c <<'EOCP'
8120 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
8123 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
8127 echo "(I can't seem to compile the test program...)"
8130 *) dflt="$alignbytes"
8133 rp="Doubles must be aligned on a how-many-byte boundary?"
8138 : check for ordering of bytes in a long
8139 case "$byteorder" in
8143 In the following, larger digits indicate more significance. A big-endian
8144 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
8145 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
8146 machines may have weird orders like 3412. A Cray will report 87654321. If
8147 the test program works the default is probably right.
8148 I'm now running the test program...
8150 $cat >try.c <<'EOCP'
8157 char c[sizeof(long)];
8160 if (sizeof(long) > 4)
8161 u.l = (0x08070605L << 32) | 0x04030201L;
8164 for (i = 0; i < sizeof(long); i++)
8165 printf("%c", u.c[i]+'0');
8171 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
8174 [1-4][1-4][1-4][1-4]|12345678|87654321)
8175 echo "(The test program ran ok.)"
8176 echo "byteorder=$dflt"
8179 ????|????????) echo "(The test program ran ok.)" ;;
8180 *) echo "(The test program didn't run right for some reason.)" ;;
8185 (I can't seem to compile the test program. Guessing big-endian...)
8188 case "$xxx_prompt" in
8190 rp="What is the order of bytes in a long?"
8201 : how do we catenate cpp tokens here?
8203 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
8204 $cat >cpp_stuff.c <<'EOCP'
8205 #define RCAT(a,b)a/**/b
8206 #define ACAT(a,b)a ## b
8210 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
8211 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
8212 echo "Oh! Smells like ANSI's been here."
8213 echo "We can catify or stringify, separately or together!"
8215 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
8216 echo "Ah, yes! The good old days!"
8217 echo "However, in the good old days we don't know how to stringify and"
8218 echo "catify at the same time."
8222 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
8223 to have to edit the values of CAT[2-5] in config.h...
8225 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
8229 : see if this is a db.h system
8235 : Check db version. We can not use version 2.
8237 echo "Checking Berkeley DB version ..." >&4
8243 #include <sys/types.h>
8248 #ifdef DB_VERSION_MAJOR
8249 printf("You have Berkeley DB Version %d.%d\n",
8250 DB_VERSION_MAJOR, DB_VERSION_MINOR);
8251 printf("Perl currently only supports up to version 1.86.\n");
8258 if $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try; then
8259 echo 'Looks OK. (Perl supports up to version 1.86).' >&4
8261 echo "I can't use your Berkeley DB. I'll disable it." >&4
8265 : Remove db from list of libraries to use
8266 echo "Removing unusable -ldb from library list" >&4
8267 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
8270 echo "libs = $libs" >&4
8280 : Check the return type needed for hash
8282 echo "Checking return type needed for hash for Berkeley DB ..." >&4
8288 #include <sys/types.h>
8290 u_int32_t hash_cb (ptr, size)
8298 info.hash = hash_cb;
8301 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8302 if $contains warning try.out >>/dev/null 2>&1 ; then
8305 db_hashtype='u_int32_t'
8308 : XXX Maybe we should just give up here.
8309 db_hashtype=u_int32_t
8310 echo "Help: I can't seem to compile the db test program." >&4
8311 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
8314 echo "Your version of Berkeley DB uses $db_hashtype for hash."
8316 *) db_hashtype=u_int32_t
8322 : Check the return type needed for prefix
8324 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
8330 #include <sys/types.h>
8332 size_t prefix_cb (key1, key2)
8340 info.prefix = prefix_cb;
8343 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8344 if $contains warning try.out >>/dev/null 2>&1 ; then
8347 db_prefixtype='size_t'
8350 db_prefixtype='size_t'
8351 : XXX Maybe we should just give up here.
8352 echo "Help: I can't seem to compile the db test program." >&4
8353 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
8356 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
8358 *) db_prefixtype='size_t'
8362 : check for void type
8364 echo "Checking to see how well your C compiler groks the void type..." >&4
8367 Support flag bits are:
8368 1: basic void declarations.
8369 2: arrays of pointers to functions returning void.
8370 4: operations between pointers to and addresses of void functions.
8371 8: generic void pointers.
8374 case "$voidflags" in
8376 $cat >try.c <<'EOCP'
8382 extern void moo(); /* function returning void */
8383 void (*goo)(); /* ptr to func returning void */
8385 void *hue; /* generic ptr */
8400 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
8401 voidflags=$defvoidused
8402 echo "It appears to support void to the level $package wants ($defvoidused)."
8403 if $contains warning .out >/dev/null 2>&1; then
8404 echo "However, you might get some warnings that look like this:"
8408 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
8409 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
8410 echo "It supports 1..."
8411 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
8412 echo "It also supports 2..."
8413 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
8415 echo "And it supports 4 but not 8 definitely."
8417 echo "It doesn't support 4..."
8418 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
8420 echo "But it supports 8."
8423 echo "Neither does it support 8."
8427 echo "It does not support 2..."
8428 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
8430 echo "But it supports 4 and 8."
8432 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
8434 echo "And it supports 4 but has not heard about 8."
8436 echo "However it supports 8 but not 4."
8441 echo "There is no support at all for void."
8446 : Only prompt user if support does not match the level we want
8447 case "$voidflags" in
8451 rp="Your void support flags add up to what?"
8458 : see what type file positions are declared as in the library
8459 set fpos_t fpostype long stdio.h sys/types.h
8463 rp="What is the type for file position used by fsetpos()?"
8467 : Store the full pathname to the sed program for use in the C program
8470 : see what type gids are declared as in the kernel
8471 set gid_t gidtype xxx stdio.h sys/types.h
8475 xxx=`./findhdr sys/user.h`
8476 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
8478 unsigned) dflt="$1 $2" ;;
8482 *) dflt="$gidtype";;
8485 rp="What is the type for group ids returned by getgid()?"
8489 : see if getgroups exists
8490 set getgroups d_getgrps
8493 : Find type of 2nd arg to getgroups
8495 case "$d_getgrps" in
8497 case "$groupstype" in
8498 '') dflt="$gidtype" ;;
8499 *) dflt="$groupstype" ;;
8502 What is the type of the second argument to getgroups()? Usually this
8503 is the same as group ids, $gidtype, but not always.
8506 rp='What type is the second argument to getgroups()?'
8510 *) groupstype="$gidtype";;
8513 : see what type lseek is declared as in the kernel
8514 set off_t lseektype long stdio.h sys/types.h
8518 rp="What type is lseek's offset on this system declared as?"
8525 make=`./loc make make $pth`
8527 /*) echo make is in $make. ;;
8528 ?:[\\/]*) echo make is in $make. ;;
8529 *) echo "I don't know where 'make' is, and my life depends on it." >&4
8530 echo "Go find a make program or fix your PATH setting!" >&4
8535 *) echo make is in $make. ;;
8538 $echo $n "Checking if your $make program sets \$(MAKE)... $c" >&4
8539 case "$make_set_make" in
8541 $sed 's/^X //' > testmake.mak << 'EOF'
8543 X @echo 'ac_maketemp="$(MAKE)"'
8545 : GNU make sometimes prints "make[1]: Entering...", which would confuse us.
8546 case "`$make -f testmake.mak 2>/dev/null`" in
8547 *ac_maketemp=*) make_set_make='#' ;;
8548 *) make_set_make="MAKE=$make" ;;
8553 case "$make_set_make" in
8554 '#') echo "Yup, it does." >&4 ;;
8555 *) echo "Nope, it doesn't." >&4 ;;
8558 : see what type is used for mode_t
8559 set mode_t modetype int stdio.h sys/types.h
8563 rp="What type is used for file modes?"
8567 : locate the preferred pager for this system
8581 '') dflt=/usr/ucb/more;;
8588 rp='What pager is used on your system?'
8592 : Cruising for prototypes
8594 echo "Checking out function prototypes..." >&4
8595 $cat >prototype.c <<'EOCP'
8596 main(int argc, char *argv[]) {
8599 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
8600 echo "Your C compiler appears to support function prototypes."
8603 echo "Your C compiler doesn't seem to understand function prototypes."
8610 : check for size of random number generator
8614 echo "Checking to see how many bits your rand function produces..." >&4
8620 # include <unistd.h>
8623 # include <stdlib.h>
8626 $cat >>try.c <<'EOCP'
8630 register unsigned long tmp;
8631 register unsigned long max = 0L;
8633 for (i = 1000; i; i--) {
8634 tmp = (unsigned long)rand();
8635 if (tmp > max) max = tmp;
8637 for (i = 0; max; i++)
8643 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 ; then
8647 echo "(I can't seem to compile the test program...)"
8654 rp='How many bits does your rand() function produce?'
8657 $rm -f try.c try.o try
8659 : see if ar generates random libraries by itself
8661 echo "Checking how to generate random libraries on your machine..." >&4
8662 echo 'int bar1() { return bar2(); }' > bar1.c
8663 echo 'int bar2() { return 2; }' > bar2.c
8664 $cat > foo.c <<'EOP'
8665 main() { printf("%d\n", bar1()); exit(0); }
8667 $cc $ccflags -c bar1.c >/dev/null 2>&1
8668 $cc $ccflags -c bar2.c >/dev/null 2>&1
8669 $cc $ccflags -c foo.c >/dev/null 2>&1
8670 ar rc bar$lib_ext bar2.o bar1.o >/dev/null 2>&1
8671 if $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8672 ./foobar >/dev/null 2>&1; then
8673 echo "ar appears to generate random libraries itself."
8676 elif ar ts bar$lib_ext >/dev/null 2>&1 &&
8677 $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8678 ./foobar >/dev/null 2>&1; then
8679 echo "a table of contents needs to be added with 'ar ts'."
8686 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
8687 $test -f $ranlib || ranlib=''
8690 if $test -n "$ranlib"; then
8691 echo "your system has '$ranlib'; we'll use that."
8694 echo "your system doesn't seem to support random libraries"
8695 echo "so we'll use lorder and tsort to order the libraries."
8702 : see if sys/select.h has to be included
8703 set sys/select.h i_sysselct
8706 : see if we should include time.h, sys/time.h, or both
8708 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8709 $echo $n "I'm now running the test program...$c"
8710 $cat >try.c <<'EOCP'
8711 #include <sys/types.h>
8716 #ifdef SYSTIMEKERNEL
8719 #include <sys/time.h>
8722 #include <sys/select.h>
8731 struct timezone tzp;
8733 if (foo.tm_sec == foo.tm_sec)
8736 if (bar.tv_sec == bar.tv_sec)
8743 for s_timezone in '-DS_TIMEZONE' ''; do
8745 for s_timeval in '-DS_TIMEVAL' ''; do
8746 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8747 for i_time in '' '-DI_TIME'; do
8748 for i_systime in '-DI_SYSTIME' ''; do
8752 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
8753 try.c -o try >/dev/null 2>&1 ; then
8754 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8758 $echo $n "Succeeded with $flags$c"
8770 *SYSTIMEKERNEL*) i_systimek="$define"
8771 timeincl=`./findhdr sys/time.h`
8772 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8773 *) i_systimek="$undef";;
8776 *I_TIME*) i_time="$define"
8777 timeincl=`./findhdr time.h`" $timeincl"
8778 echo "We'll include <time.h>." >&4;;
8779 *) i_time="$undef";;
8782 *I_SYSTIME*) i_systime="$define"
8783 timeincl=`./findhdr sys/time.h`" $timeincl"
8784 echo "We'll include <sys/time.h>." >&4;;
8785 *) i_systime="$undef";;
8789 : check for fd_set items
8792 Checking to see how well your C compiler handles fd_set and friends ...
8794 $cat >fd_set.c <<EOCP
8795 #$i_systime I_SYS_TIME
8796 #$i_sysselct I_SYS_SELECT
8797 #$d_socket HAS_SOCKET
8798 #include <sys/types.h>
8800 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8803 #include <sys/time.h>
8806 #include <sys/select.h>
8815 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8822 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8823 d_fds_bits="$define"
8825 echo "Well, your system knows about the normal fd_set typedef..." >&4
8827 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8828 d_fd_macros="$define"
8831 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8833 d_fd_macros="$undef"
8837 Hmm, your compiler has some difficulty with fd_set. Checking further...
8839 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8842 echo "Well, your system has some sort of fd_set available..." >&4
8844 echo "and you have the normal fd_set macros." >&4
8845 d_fd_macros="$define"
8848 but not the normal fd_set macros! Gross! More work for me...
8850 d_fd_macros="$undef"
8853 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8856 d_fd_macros="$undef"
8862 : check for type of arguments to select. This will only really
8863 : work if the system supports prototypes and provides one for
8867 : Make initial guess
8868 case "$selecttype" in
8871 $define) xxx='fd_set *' ;;
8875 *) xxx="$selecttype"
8880 'fd_set *') yyy='int *' ;;
8881 'int *') yyy='fd_set *' ;;
8886 Checking to see what type of arguments are expected by select().
8889 #$i_systime I_SYS_TIME
8890 #$i_sysselct I_SYS_SELECT
8891 #$d_socket HAS_SOCKET
8892 #include <sys/types.h>
8894 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8897 #include <sys/time.h>
8900 #include <sys/select.h>
8905 Select_fd_set_t readfds;
8906 Select_fd_set_t writefds;
8907 Select_fd_set_t exceptfds;
8908 struct timeval timeout;
8909 select(width, readfds, writefds, exceptfds, &timeout);
8913 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
8915 echo "Your system uses $xxx for the arguments to select." >&4
8916 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
8918 echo "Your system uses $yyy for the arguments to select." >&4
8920 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
8927 *) selecttype='int *'
8931 : Trace out the files included by signal.h, then look for SIGxxx names.
8932 : Remove SIGARRAYSIZE used by HPUX.
8933 : Remove SIGTYP void lines used by OS2.
8934 xxx=`echo '#include <signal.h>' |
8935 $cppstdin $cppminus $cppflags 2>/dev/null |
8936 $grep '^[ ]*#.*include' |
8937 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
8938 : Check this list of files to be sure we have parsed the cpp output ok.
8939 : This will also avoid potentially non-existent files, such
8942 for xx in $xxx /dev/null ; do
8943 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
8945 : If we have found no files, at least try signal.h
8947 '') xxxfiles=`./findhdr signal.h` ;;
8950 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
8951 print substr($2, 4, 20)
8953 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8954 print substr($3, 4, 20)
8956 : Append some common names just in case the awk scan failed.
8957 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
8958 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
8959 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
8960 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
8961 : generate a few handy files for later
8962 $cat > signal.c <<'EOP'
8963 #include <sys/types.h>
8967 /* Strange style to avoid deeply-nested #if/#else/#endif */
8970 # define NSIG (_NSIG)
8976 # define NSIG (SIGMAX+1)
8982 # define NSIG (SIG_MAX+1)
8988 # define NSIG (MAXSIG+1)
8994 # define NSIG (MAX_SIG+1)
8999 # ifdef SIGARRAYSIZE
9000 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
9006 # define NSIG (_sys_nsig) /* Solaris 2.5 */
9010 /* Default to some arbitrary number that's big enough to get most
9011 of the common signals.
9017 printf("NSIG %d\n", NSIG);
9020 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
9022 printf "#ifdef SIG"; printf $1; printf "\n"
9023 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
9024 printf $1; printf ");\n"
9031 $cat >signal.awk <<'EOP'
9033 $1 ~ /^NSIG$/ { nsig = $2 }
9034 ($1 !~ /^NSIG$/) && (NF == 2) {
9035 if ($2 > maxsig) { maxsig = $2 }
9037 dup_name[ndups] = $1
9048 if (nsig == 0) { nsig = maxsig + 1 }
9049 for (n = 1; n < nsig; n++) {
9051 printf("%s %d\n", sig_name[n], sig_num[n])
9054 printf("NUM%d %d\n", n, n)
9057 for (n = 0; n < ndups; n++) {
9058 printf("%s %d\n", dup_name[n], dup_num[n])
9062 $cat >signal_cmd <<EOS
9064 $test -s signal.lst && exit 0
9065 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
9066 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
9068 echo "(I can't seem be able to compile the test program -- Guessing)"
9069 echo 'kill -l' >signal
9070 set X \`csh -f <signal\`
9074 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
9076 echo \$@ | $tr ' ' '\012' | \
9077 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
9079 $rm -f signal.c signal signal.o
9081 chmod a+x signal_cmd
9082 $eunicefix signal_cmd
9084 : generate list of signal names
9094 echo "Generating a list of signal names and numbers..." >&4
9096 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
9097 sig_name="ZERO $sig_name"
9098 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
9099 sig_num="0 $sig_num"
9102 echo "The following signals are available:"
9104 echo $sig_name | $awk \
9105 'BEGIN { linelen = 0 }
9107 for (i = 1; i <= NF; i++) {
9109 linelen = linelen + length(name)
9112 linelen = length(name)
9118 $rm -f signal signal.c signal.awk signal.lst signal_cmd
9120 : see what type is used for size_t
9121 set size_t sizetype 'unsigned int' stdio.h sys/types.h
9125 rp="What type is used for the length parameter for string functions?"
9129 : see what type is used for signed size_t
9130 set ssize_t ssizetype int stdio.h sys/types.h
9133 $cat > ssize.c <<EOM
9135 #include <sys/types.h>
9136 #define Size_t $sizetype
9137 #define SSize_t $dflt
9140 if (sizeof(Size_t) == sizeof(SSize_t))
9142 else if (sizeof(Size_t) == sizeof(int))
9151 # If $libs contains -lsfio, and sfio is mis-configured, then it
9152 # sometimes (apparently) runs and exits with a 0 status, but with no
9153 # output!. Thus we check with test -s whether we actually got any
9154 # output. I think it has to do with sfio's use of _exit vs. exit,
9155 # but I don't know for sure. --Andy Dougherty 1/27/97.
9156 if $cc $optimize $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 &&
9157 ./ssize > ssize.out 2>/dev/null && test -s ssize.out ; then
9158 ssizetype=`$cat ssize.out`
9159 echo "I'll be using $ssizetype for functions returning a byte count." >&4
9163 Help! I can't compile and run the ssize_t test program: please enlighten me!
9164 (This is probably a misconfiguration in your system or libraries, and
9165 you really ought to fix it. Still, I'll try anyway.)
9167 I need a type that is the same size as $sizetype, but is guaranteed to
9168 be signed. Common values are ssize_t, int and long.
9171 rp="What signed type is the same size as $sizetype?"
9175 $rm -f ssize ssize.[co] ssize.out
9177 : see what type of char stdio uses.
9179 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9180 echo "Your stdio uses unsigned chars." >&4
9181 stdchar="unsigned char"
9183 echo "Your stdio uses signed chars." >&4
9187 : see if time exists
9189 if set time val -f d_time; eval $csym; $val; then
9190 echo 'time() found.' >&4
9192 set time_t timetype long stdio.h sys/types.h
9196 rp="What type is returned by time() on this system?"
9200 echo 'time() not found, hope that will do.' >&4
9207 : see what type uids are declared as in the kernel
9208 set uid_t uidtype xxx stdio.h sys/types.h
9212 xxx=`./findhdr sys/user.h`
9213 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
9215 unsigned) dflt="$1 $2" ;;
9219 *) dflt="$uidtype";;
9222 rp="What is the type for user ids returned by getuid()?"
9226 : see if dbm.h is available
9227 : see if dbmclose exists
9228 set dbmclose d_dbmclose
9231 case "$d_dbmclose" in
9241 *) set rpcsvc/dbm.h i_rpcsvcdbm
9246 *) echo "We won't be including <dbm.h>"
9256 : see if this is a sys/file.h system
9261 : do we need to include sys/file.h ?
9267 echo "We'll be including <sys/file.h>." >&4
9270 echo "We won't be including <sys/file.h>." >&4
9280 : see if fcntl.h is there
9285 : see if we can include fcntl.h
9291 echo "We'll be including <fcntl.h>." >&4
9295 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
9297 echo "We won't be including <fcntl.h>." >&4
9309 : see if this is an grp system
9313 : see if locale.h is available
9314 set locale.h i_locale
9317 : see if this is a math.h system
9321 : see if ndbm.h is available
9326 : see if dbm_open exists
9327 set dbm_open d_dbm_open
9329 case "$d_dbm_open" in
9332 echo "We won't be including <ndbm.h>"
9341 : see if net/errno.h is available
9346 : Unfortunately, it causes problems on some systems. Arrgh.
9352 #include <net/errno.h>
9358 if $cc $ccflags -c try.c >/dev/null 2>&1; then
9359 echo "We'll be including <net/errno.h>." >&4
9361 echo "We won't be including <net/errno.h>." >&4
9370 : get C preprocessor symbols handy
9372 $echo $n "Hmm... $c"
9373 echo $al | $tr ' ' '\012' >Cppsym.know
9385 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
9387 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
9390 unknown="\$unknown \$sym"
9400 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
9402 exit 0; _ _ _ _\1\\ \1\\
9405 echo "exit 1; _ _ _" >>Cppsym\$\$
9406 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
9408 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
9414 $rm -f Cppsym\$\$ Cppsym2\$\$
9419 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
9421 : now check the C compiler for additional symbols
9427 for i in \`$cc -v -c tmp.c 2>&1\`
9430 -D*) echo "\$i" | $sed 's/^-D//';;
9431 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
9438 ./ccsym | $sort | $uniq >ccsym.raw
9439 $awk '/\=/ { print $0; next }
9440 { print $0"=1" }' ccsym.raw >ccsym.list
9441 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
9442 $comm -13 ccsym.true ccsym.list >ccsym.own
9443 $comm -12 ccsym.true ccsym.list >ccsym.com
9444 $comm -23 ccsym.true ccsym.list >ccsym.cpp
9447 if $test -z ccsym.raw; then
9448 echo "Your C compiler doesn't seem to define any symbol!" >&4
9450 echo "However, your C preprocessor defines the following ones:"
9453 if $test -s ccsym.com; then
9454 echo "Your C compiler and pre-processor define these symbols:"
9455 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
9458 $test "$silent" || sleep 1
9460 if $test -s ccsym.cpp; then
9461 $test "$also" && echo " "
9462 echo "Your C pre-processor ${also}defines the following $symbols:"
9463 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
9465 $test "$silent" || sleep 1
9467 if $test -s ccsym.own; then
9468 $test "$also" && echo " "
9469 echo "Your C compiler ${also}defines the following cpp variables:"
9470 $sed -e 's/\(.*\)=1/\1/' ccsym.own
9471 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
9472 $test "$silent" || sleep 1
9477 : see if this is a termio system
9481 if $test `./findhdr termios.h`; then
9482 set tcsetattr i_termios
9488 "$define") echo "You have POSIX termios.h... good!" >&4;;
9489 *) if ./Cppsym pyr; then
9490 case "`/bin/universe`" in
9491 ucb) if $test `./findhdr sgtty.h`; then
9493 echo "<sgtty.h> found." >&4
9495 echo "System is pyramid with BSD universe."
9496 echo "<sgtty.h> not found--you could have problems." >&4
9498 *) if $test `./findhdr termio.h`; then
9500 echo "<termio.h> found." >&4
9502 echo "System is pyramid with USG universe."
9503 echo "<termio.h> not found--you could have problems." >&4
9507 if $test `./findhdr termio.h`; then
9508 echo "<termio.h> found." >&4
9510 elif $test `./findhdr sgtty.h`; then
9511 echo "<sgtty.h> found." >&4
9514 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
9517 if $test `./findhdr sgtty.h`; then
9518 echo "<sgtty.h> found." >&4
9520 elif $test `./findhdr termio.h`; then
9521 echo "<termio.h> found." >&4
9524 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
9528 set i_termio; eval $setvar
9529 val=$val2; set i_sgtty; eval $setvar
9530 val=$val3; set i_termios; eval $setvar
9532 : see if stdarg is available
9534 if $test `./findhdr stdarg.h`; then
9535 echo "<stdarg.h> found." >&4
9538 echo "<stdarg.h> NOT found." >&4
9542 : see if varags is available
9544 if $test `./findhdr varargs.h`; then
9545 echo "<varargs.h> found." >&4
9547 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
9550 : set up the varargs testing programs
9551 $cat > varargs.c <<EOP
9556 #include <varargs.h>
9574 p = va_arg(ap, char *);
9579 $cat > varargs <<EOP
9581 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
9590 : now check which varargs header should be included
9595 if `./varargs I_STDARG`; then
9597 elif `./varargs I_VARARGS`; then
9602 if `./varargs I_VARARGS`; then
9609 echo "I could not find the definition for va_dcl... You have problems..." >&4
9610 val="$undef"; set i_stdarg; eval $setvar
9611 val="$undef"; set i_varargs; eval $setvar
9618 val="$define"; set i_stdarg; eval $setvar
9619 val="$undef"; set i_varargs; eval $setvar
9622 val="$undef"; set i_stdarg; eval $setvar
9623 val="$define"; set i_varargs; eval $setvar
9626 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
9630 : see if stddef is available
9631 set stddef.h i_stddef
9634 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
9635 set sys/filio.h i_sysfilio
9638 if $test `./findhdr sys/ioctl.h`; then
9640 echo '<sys/ioctl.h> found.' >&4
9643 if $test $i_sysfilio = "$define"; then
9644 echo '<sys/ioctl.h> NOT found.' >&4
9646 $test $i_sgtty = "$define" && xxx="sgtty.h"
9647 $test $i_termio = "$define" && xxx="termio.h"
9648 $test $i_termios = "$define" && xxx="termios.h"
9649 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
9655 : see if this is a sys/param system
9656 set sys/param.h i_sysparam
9659 : see if sys/resource.h has to be included
9660 set sys/resource.h i_sysresrc
9663 : see if sys/stat.h is available
9664 set sys/stat.h i_sysstat
9667 : see if sys/types.h has to be included
9668 set sys/types.h i_systypes
9671 : see if this is a sys/un.h system
9672 set sys/un.h i_sysun
9675 : see if this is a syswait system
9676 set sys/wait.h i_syswait
9679 : see if this is an utime system
9683 : see if this is a values.h system
9684 set values.h i_values
9687 : see if this is a vfork system
9698 : see if gdbm.h is available
9703 : see if gdbm_open exists
9704 set gdbm_open d_gdbm_open
9706 case "$d_gdbm_open" in
9709 echo "We won't be including <gdbm.h>"
9719 echo "Looking for extensions..." >&4
9721 : If we are using the old config.sh, known_extensions may contain
9722 : old or inaccurate or duplicate values.
9724 : We do not use find because it might not be available.
9725 : We do not just use MANIFEST because the user may have dropped
9726 : some additional extensions into the source tree and expect them
9731 *) if $test -f $xxx/$xxx.xs; then
9732 known_extensions="$known_extensions $xxx"
9734 if $test -d $xxx; then
9737 if $test -f $yyy/$yyy.xs; then
9738 known_extensions="$known_extensions $xxx/$yyy"
9746 set X $known_extensions
9748 known_extensions="$*"
9751 : Now see which are supported on this system.
9753 for xxx in $known_extensions ; do
9755 DB_File) case "$i_db" in
9756 $define) avail_ext="$avail_ext $xxx" ;;
9759 GDBM_File) case "$i_gdbm" in
9760 $define) avail_ext="$avail_ext $xxx" ;;
9763 NDBM_File) case "$i_ndbm" in
9764 $define) avail_ext="$avail_ext $xxx" ;;
9767 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
9768 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
9771 POSIX) case "$useposix" in
9772 true|define|y) avail_ext="$avail_ext $xxx" ;;
9775 Opcode) case "$useopcode" in
9776 true|define|y) avail_ext="$avail_ext $xxx" ;;
9779 Socket) case "$d_socket" in
9780 $define) avail_ext="$avail_ext $xxx" ;;
9783 *) avail_ext="$avail_ext $xxx"
9795 A number of extensions are supplied with $package. You may choose to
9796 compile these extensions for dynamic loading (the default), compile
9797 them into the $package executable (static loading), or not include
9798 them at all. Answer "none" to include no extensions.
9801 case "$dynamic_ext" in
9802 '') dflt="$avail_ext" ;;
9803 *) dflt="$dynamic_ext" ;;
9808 rp="What extensions do you wish to load dynamically?"
9811 none) dynamic_ext=' ' ;;
9812 *) dynamic_ext="$ans" ;;
9815 case "$static_ext" in
9817 : Exclude those already listed in dynamic linking
9819 for xxx in $avail_ext; do
9820 case " $dynamic_ext " in
9822 *) dflt="$dflt $xxx" ;;
9829 *) dflt="$static_ext"
9836 rp="What extensions do you wish to load statically?"
9839 none) static_ext=' ' ;;
9840 *) static_ext="$ans" ;;
9845 A number of extensions are supplied with $package. Answer "none"
9846 to include no extensions.
9849 case "$static_ext" in
9850 '') dflt="$avail_ext" ;;
9851 *) dflt="$static_ext" ;;
9857 rp="What extensions do you wish to include?"
9860 none) static_ext=' ' ;;
9861 *) static_ext="$ans" ;;
9866 set X $dynamic_ext $static_ext
9870 : Remove build directory name from cppstdin so it can be used from
9871 : either the present location or the final installed location.
9873 : Get out of the UU directory to get correct path name.
9877 echo "Stripping down cppstdin path name"
9883 : end of configuration questions
9885 echo "End of configuration questions."
9888 : back to where it started
9889 if test -d ../UU; then
9893 : configuration may be patched via a 'config.over' file
9894 if $test -f config.over; then
9897 rp='I see a config.over file. Do you wish to load it?'
9900 n*) echo "OK, I'll ignore it.";;
9902 echo "Configuration override changes have been loaded."
9907 : in case they want portability, strip down executable paths
9908 case "$d_portable" in
9911 echo "Stripping down executable paths..." >&4
9912 for file in $loclist $trylist; do
9918 : create config.sh file
9920 echo "Creating config.sh..." >&4
9921 $spitshell <<EOT >config.sh
9924 # This file was produced by running the Configure script. It holds all the
9925 # definitions figured out by Configure. Should you modify one of these values,
9926 # do not forget to propagate your changes by running "Configure -der". You may
9927 # instead choose to run each of the .SH files by yourself, or "Configure -S".
9930 # Configuration time: $cf_time
9931 # Configured by: $cf_by
9932 # Target system: $myuname
9942 Revision='$Revision'
9946 alignbytes='$alignbytes'
9947 aphostname='$aphostname'
9950 archlibexp='$archlibexp'
9951 archname='$archname'
9952 archobjs='$archobjs'
9957 bincompat3='$bincompat3'
9961 byteorder='$byteorder'
9963 castflags='$castflags'
9966 cccdlflags='$cccdlflags'
9967 ccdlflags='$ccdlflags'
9970 cf_email='$cf_email'
9975 clocktype='$clocktype'
9977 compress='$compress'
9978 contains='$contains'
9982 cpp_stuff='$cpp_stuff'
9983 cppflags='$cppflags'
9985 cppminus='$cppminus'
9987 cppstdin='$cppstdin'
9988 cryptlib='$cryptlib'
9990 d_Gconvert='$d_Gconvert'
9991 d_access='$d_access'
9993 d_archlib='$d_archlib'
9994 d_attribut='$d_attribut'
9997 d_bincompat3='$d_bincompat3'
9999 d_bsdgetpgrp='$d_bsdgetpgrp'
10000 d_bsdpgrp='$d_bsdpgrp'
10001 d_bsdsetpgrp='$d_bsdsetpgrp'
10003 d_casti32='$d_casti32'
10004 d_castneg='$d_castneg'
10005 d_charvspr='$d_charvspr'
10007 d_chroot='$d_chroot'
10008 d_chsize='$d_chsize'
10009 d_closedir='$d_closedir'
10013 d_cuserid='$d_cuserid'
10014 d_dbl_dig='$d_dbl_dig'
10015 d_difftime='$d_difftime'
10016 d_dirnamlen='$d_dirnamlen'
10017 d_dlerror='$d_dlerror'
10018 d_dlopen='$d_dlopen'
10019 d_dlsymun='$d_dlsymun'
10020 d_dosuid='$d_dosuid'
10022 d_eofnblk='$d_eofnblk'
10023 d_eunice='$d_eunice'
10024 d_fchmod='$d_fchmod'
10025 d_fchown='$d_fchown'
10027 d_fd_macros='$d_fd_macros'
10028 d_fd_set='$d_fd_set'
10029 d_fds_bits='$d_fds_bits'
10030 d_fgetpos='$d_fgetpos'
10031 d_flexfnam='$d_flexfnam'
10034 d_fpathconf='$d_fpathconf'
10035 d_fsetpos='$d_fsetpos'
10037 d_getgrps='$d_getgrps'
10038 d_gethent='$d_gethent'
10039 d_gethname='$d_gethname'
10040 d_getlogin='$d_getlogin'
10041 d_getpgid='$d_getpgid'
10042 d_getpgrp2='$d_getpgrp2'
10043 d_getpgrp='$d_getpgrp'
10044 d_getppid='$d_getppid'
10045 d_getprior='$d_getprior'
10046 d_gettimeod='$d_gettimeod'
10047 d_gnulibc='$d_gnulibc'
10050 d_inetaton='$d_inetaton'
10051 d_isascii='$d_isascii'
10052 d_killpg='$d_killpg'
10054 d_locconv='$d_locconv'
10058 d_mbstowcs='$d_mbstowcs'
10059 d_mbtowc='$d_mbtowc'
10060 d_memcmp='$d_memcmp'
10061 d_memcpy='$d_memcpy'
10062 d_memmove='$d_memmove'
10063 d_memset='$d_memset'
10065 d_mkfifo='$d_mkfifo'
10066 d_mktime='$d_mktime'
10068 d_msgctl='$d_msgctl'
10069 d_msgget='$d_msgget'
10070 d_msgrcv='$d_msgrcv'
10071 d_msgsnd='$d_msgsnd'
10072 d_mymalloc='$d_mymalloc'
10074 d_oldarchlib='$d_oldarchlib'
10075 d_oldsock='$d_oldsock'
10077 d_pathconf='$d_pathconf'
10079 d_phostname='$d_phostname'
10082 d_portable='$d_portable'
10084 d_pwchange='$d_pwchange'
10085 d_pwclass='$d_pwclass'
10086 d_pwcomment='$d_pwcomment'
10087 d_pwexpire='$d_pwexpire'
10088 d_pwquota='$d_pwquota'
10089 d_readdir='$d_readdir'
10090 d_readlink='$d_readlink'
10091 d_rename='$d_rename'
10092 d_rewinddir='$d_rewinddir'
10094 d_safebcpy='$d_safebcpy'
10095 d_safemcpy='$d_safemcpy'
10096 d_sanemcmp='$d_sanemcmp'
10097 d_seekdir='$d_seekdir'
10098 d_select='$d_select'
10100 d_semctl='$d_semctl'
10101 d_semget='$d_semget'
10103 d_setegid='$d_setegid'
10104 d_seteuid='$d_seteuid'
10105 d_setlinebuf='$d_setlinebuf'
10106 d_setlocale='$d_setlocale'
10107 d_setpgid='$d_setpgid'
10108 d_setpgrp2='$d_setpgrp2'
10109 d_setpgrp='$d_setpgrp'
10110 d_setprior='$d_setprior'
10111 d_setregid='$d_setregid'
10112 d_setresgid='$d_setresgid'
10113 d_setresuid='$d_setresuid'
10114 d_setreuid='$d_setreuid'
10115 d_setrgid='$d_setrgid'
10116 d_setruid='$d_setruid'
10117 d_setsid='$d_setsid'
10121 d_shmatprototype='$d_shmatprototype'
10122 d_shmctl='$d_shmctl'
10124 d_shmget='$d_shmget'
10125 d_sigaction='$d_sigaction'
10126 d_sigsetjmp='$d_sigsetjmp'
10127 d_socket='$d_socket'
10128 d_sockpair='$d_sockpair'
10129 d_statblks='$d_statblks'
10130 d_stdio_cnt_lval='$d_stdio_cnt_lval'
10131 d_stdio_ptr_lval='$d_stdio_ptr_lval'
10132 d_stdiobase='$d_stdiobase'
10133 d_stdstdio='$d_stdstdio'
10134 d_strchr='$d_strchr'
10135 d_strcoll='$d_strcoll'
10136 d_strctcpy='$d_strctcpy'
10137 d_strerrm='$d_strerrm'
10138 d_strerror='$d_strerror'
10139 d_strtod='$d_strtod'
10140 d_strtol='$d_strtol'
10141 d_strtoul='$d_strtoul'
10142 d_strxfrm='$d_strxfrm'
10143 d_suidsafe='$d_suidsafe'
10144 d_symlink='$d_symlink'
10145 d_syscall='$d_syscall'
10146 d_sysconf='$d_sysconf'
10147 d_sysernlst='$d_sysernlst'
10148 d_syserrlst='$d_syserrlst'
10149 d_system='$d_system'
10150 d_tcgetpgrp='$d_tcgetpgrp'
10151 d_tcsetpgrp='$d_tcsetpgrp'
10152 d_telldir='$d_telldir'
10155 d_truncate='$d_truncate'
10156 d_tzname='$d_tzname'
10160 d_void_closedir='$d_void_closedir'
10161 d_voidsig='$d_voidsig'
10162 d_voidtty='$d_voidtty'
10163 d_volatile='$d_volatile'
10164 d_vprintf='$d_vprintf'
10166 d_waitpid='$d_waitpid'
10167 d_wcstombs='$d_wcstombs'
10168 d_wctomb='$d_wctomb'
10171 db_hashtype='$db_hashtype'
10172 db_prefixtype='$db_prefixtype'
10173 defvoidused='$defvoidused'
10174 direntrytype='$direntrytype'
10177 dynamic_ext='$dynamic_ext'
10182 eunicefix='$eunicefix'
10185 extensions='$extensions'
10187 firstmakefile='$firstmakefile'
10189 fpostype='$fpostype'
10190 freetype='$freetype'
10191 full_csh='$full_csh'
10192 full_sed='$full_sed'
10194 gccversion='$gccversion'
10198 groupcat='$groupcat'
10199 groupstype='$groupstype'
10202 h_sysfile='$h_sysfile'
10206 i_bsdioctl='$i_bsdioctl'
10209 i_dirent='$i_dirent'
10216 i_limits='$i_limits'
10217 i_locale='$i_locale'
10218 i_malloc='$i_malloc'
10220 i_memory='$i_memory'
10222 i_neterrno='$i_neterrno'
10225 i_rpcsvcdbm='$i_rpcsvcdbm'
10228 i_stdarg='$i_stdarg'
10229 i_stddef='$i_stddef'
10230 i_stdlib='$i_stdlib'
10231 i_string='$i_string'
10232 i_sysdir='$i_sysdir'
10233 i_sysfile='$i_sysfile'
10234 i_sysfilio='$i_sysfilio'
10236 i_sysioctl='$i_sysioctl'
10237 i_sysndir='$i_sysndir'
10238 i_sysparam='$i_sysparam'
10239 i_sysresrc='$i_sysresrc'
10240 i_sysselct='$i_sysselct'
10241 i_syssockio='$i_syssockio'
10242 i_sysstat='$i_sysstat'
10243 i_systime='$i_systime'
10244 i_systimek='$i_systimek'
10245 i_systimes='$i_systimes'
10246 i_systypes='$i_systypes'
10248 i_syswait='$i_syswait'
10249 i_termio='$i_termio'
10250 i_termios='$i_termios'
10252 i_unistd='$i_unistd'
10254 i_values='$i_values'
10255 i_varargs='$i_varargs'
10256 i_varhdr='$i_varhdr'
10260 installarchlib='$installarchlib'
10261 installbin='$installbin'
10262 installman1dir='$installman1dir'
10263 installman3dir='$installman3dir'
10264 installprivlib='$installprivlib'
10265 installscript='$installscript'
10266 installsitearch='$installsitearch'
10267 installsitelib='$installsitelib'
10269 known_extensions='$known_extensions'
10273 lddlflags='$lddlflags'
10281 libswanted='$libswanted'
10287 locincpth='$locincpth'
10288 loclibpth='$loclibpth'
10289 longsize='$longsize'
10293 lseektype='$lseektype'
10297 make_set_make='$make_set_make'
10298 mallocobj='$mallocobj'
10299 mallocsrc='$mallocsrc'
10300 malloctype='$malloctype'
10302 man1direxp='$man1direxp'
10305 man3direxp='$man3direxp'
10309 mips_type='$mips_type'
10312 modetype='$modetype'
10315 myarchname='$myarchname'
10316 mydomain='$mydomain'
10317 myhostname='$myhostname'
10321 nm_so_opt='$nm_so_opt'
10323 o_nonblock='$o_nonblock'
10325 oldarchlib='$oldarchlib'
10326 oldarchlibexp='$oldarchlibexp'
10327 optimize='$optimize'
10328 orderlib='$orderlib'
10334 patchlevel='$patchlevel'
10335 path_sep='$path_sep'
10337 perladmin='$perladmin'
10338 perlpath='$perlpath'
10340 phostname='$phostname'
10345 prefixexp='$prefixexp'
10347 privlibexp='$privlibexp'
10348 prototype='$prototype'
10349 randbits='$randbits'
10351 rd_nodata='$rd_nodata'
10355 scriptdir='$scriptdir'
10356 scriptdirexp='$scriptdirexp'
10358 selecttype='$selecttype'
10359 sendmail='$sendmail'
10362 sharpbang='$sharpbang'
10363 shmattype='$shmattype'
10364 shortsize='$shortsize'
10367 sig_name='$sig_name'
10369 signal_t='$signal_t'
10370 sitearch='$sitearch'
10371 sitearchexp='$sitearchexp'
10373 sitelibexp='$sitelibexp'
10374 sizetype='$sizetype'
10379 sockethdr='$sockethdr'
10380 socketlib='$socketlib'
10382 spackage='$spackage'
10383 spitshell='$spitshell'
10385 ssizetype='$ssizetype'
10386 startperl='$startperl'
10388 static_ext='$static_ext'
10390 stdio_base='$stdio_base'
10391 stdio_bufsiz='$stdio_bufsiz'
10392 stdio_cnt='$stdio_cnt'
10393 stdio_ptr='$stdio_ptr'
10396 subversion='$subversion'
10402 timeincl='$timeincl'
10403 timetype='$timetype'
10411 usemymalloc='$usemymalloc'
10413 useopcode='$useopcode'
10414 useperlio='$useperlio'
10415 useposix='$useposix'
10417 useshrplib='$useshrplib'
10418 usevfork='$usevfork'
10422 voidflags='$voidflags'
10428 : add special variables
10429 $test -f patchlevel.h && \
10430 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
10431 echo "CONFIG=true" >>config.sh
10433 : propagate old symbols
10434 if $test -f UU/config.sh; then
10435 <UU/config.sh sort | uniq >UU/oldconfig.sh
10436 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
10437 sort | uniq -u >UU/oldsyms
10438 set X `cat UU/oldsyms`
10444 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
10446 echo "# Variables propagated from previous config.sh file." >>config.sh
10447 for sym in `cat UU/oldsyms`; do
10448 echo " Propagating $hint variable "'$'"$sym..."
10449 eval 'tmp="$'"${sym}"'"'
10451 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
10457 : Finish up by extracting the .SH files
10471 If you'd like to make any changes to the config.sh file before I begin
10472 to configure things, do it as a shell escape now (e.g. !vi config.sh).
10475 rp="Press return or use a shell escape to edit config.sh:"
10480 *) : in case they cannot read
10481 sh 1>&4 -c "$ans";;
10486 : if this fails, just run all the .SH files by hand
10493 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
10500 Now you need to generate make dependencies by running "make depend".
10501 You might prefer to run it in background: "make depend > makedepend.out &"
10502 It can take a while, so you might not want to run it right now.
10507 rp="Run make depend now?"
10511 make depend && echo "Now you must run a make."
10514 echo "You must run 'make depend' then 'make'."
10517 elif test -f [Mm]akefile; then
10519 echo "Now you must run a make."
10524 $rm -f kit*isdone ark*isdone