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 ;;
88 : This should not matter in a script, but apparently it does sometimes
93 echo "Say 'sh $me', not 'sh <$me'"
97 : Test and see if we are running under ksh, either blatantly or in disguise.
98 if (PATH=.; alias -x) >/dev/null 2>&1; then
99 : running under ksh. Is this a good thing?
100 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname ; then
101 if test X`/usr/bin/uname -v` = X4 ; then
102 : on AIX 4, /bin/sh is really ksh, and it causes us problems.
105 (Feeding myself to /usr/bin/bsh to avoid AIX 4's /bin/sh.)
108 exec /usr/bin/bsh $0 "$@"
111 if test ! -f /hp-ux ; then
112 : Warn them if they use ksh on other systems
114 (I see you are using the Korn shell. Some ksh's blow up on $me,
115 especially on older exotic systems. If yours does, try the Bourne
121 : Not running under ksh. Maybe we should be?
122 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
123 if test -f /hp-ux -a -f /bin/ksh; then
125 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
128 exec /bin/ksh $0 "$@"
132 : Configure runs within the UU subdirectory
133 test -d UU || mkdir UU
633 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
636 : We must find out about Eunice early
638 if test -f /etc/unixtovms; then
639 eunicefix=/etc/unixtovms
641 if test -f /etc/unixtovms.exe; then
642 eunicefix=/etc/unixtovms.exe
645 : list of known cpp symbols, sorted alphabetically
646 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
647 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
648 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
649 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
650 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
651 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
652 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
653 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
654 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
655 al="$al VMS Xenix286"
656 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
657 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
658 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
659 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
660 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
661 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
662 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
663 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
664 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
665 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
666 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
667 al="$al __SVR4_2__ __UMAXV__"
668 al="$al ____386BSD____ __alpha __alpha__ __amiga"
669 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
670 al="$al __host_mips__"
671 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
672 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
673 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
674 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
675 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
676 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
677 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
678 al="$al __mc88100 __mc88100__ __mips __mips__"
679 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
680 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
681 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
682 al="$al _host_mips _mips _unix"
683 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
684 al="$al apollo ardent att386 att3b"
685 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
686 al="$al cadmus clipper concurrent convex cray ctix"
687 al="$al dmert encore gcos gcx gimpel gould"
688 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
689 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
690 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
691 al="$al i186 i286 i386 i486 i8086"
692 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
693 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
694 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
695 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
696 al="$al mc88000 mc88100 merlin mert mips mvs n16"
697 al="$al ncl_el ncl_mr"
698 al="$al news1500 news1700 news1800 news1900 news3700"
699 al="$al news700 news800 news900 ns16000 ns32000"
700 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
701 al="$al parisc pc532 pdp11 plexus posix pyr"
702 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
703 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
704 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
705 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
706 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
707 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
712 : default library list
714 : set useposix=false in your hint file to disable the POSIX extension.
716 : set useopcode=false in your hint file to disable the Opcode extension.
718 : Define several unixisms. These can be used in hint files.
720 : Extra object files, if any, needed on this platform.
722 : Possible local include directories to search.
723 : Set locincpth to "" in a hint file to defeat local include searches.
724 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
725 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
727 : no include file wanted by default
730 : change the next line if compiling for Xenix/286 on Xenix/386
731 xlibpth='/usr/lib/386 /lib/386'
733 : Possible local library directories to search.
734 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
735 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
737 : general looking path for locating libraries
738 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
739 glibpth="$glibpth /lib /usr/lib $xlibpth"
740 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
741 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
743 : Private path used by Configure to find libraries. Its value
744 : is prepended to libpth. This variable takes care of special
745 : machines, like the mips. Usually, it should be empty.
748 : full support for void wanted by default
751 : List of libraries we want.
752 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
753 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
754 libswanted="$libswanted ucb bsd BSD PW x"
755 : We probably want to search /usr/shlib before most other libraries.
756 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
757 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
758 glibpth="/usr/shlib $glibpth"
759 : Do not use vfork unless overridden by a hint file.
762 : Find the basic shell for Bourne shell scripts
765 : SYSTYPE is for some older MIPS systems.
766 : I do not know if it is still needed.
768 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
771 if test -f "$xxx"; then
774 : Build up a list and do a single loop so we can 'break' out.
775 pth=`echo $PATH | sed -e "s/$p_/ /g"`
776 for xxx in sh bash ksh pdksh ash; do
778 try="$try ${p}/${xxx}"
782 if test -f "$xxx"; then
784 echo "Your Bourne shell appears to be in $sh."
786 elif test -f "$xxx.exe"; then
788 echo "Hmm. Your Bourne shell appears to be in $sh."
798 $me: Fatal Error: I can't find a Bourne Shell anywhere.
799 Usually it's in /bin/sh. How did you even get this far?
800 Please contact me (Chip Salzenberg) at chip@perl.com and
801 we'll try to straigten this all out.
807 : see if sh knows # comments
808 if `$sh -c '#' >/dev/null 2>&1`; then
813 test -f $xcat || xcat=/usr/bin/cat
818 if test -s today; then
821 echo "#! $xcat" > try
825 if test -s today; then
828 echo "Okay, let's see if #! works on this system..."
829 echo "It's just a comment."
834 echo "Your $sh doesn't grok # comments--I will strip them later on."
837 echo "exec grep -v '^[ ]*#'" >spitshell
840 spitshell=`pwd`/spitshell
842 echo "I presume that if # doesn't work, #! won't work either!"
847 : figure out how to guarantee sh startup
849 '') startsh=${sharpbang}${sh} ;;
861 : echo "Yup, it does."
863 echo "Hmm. '$startsh' didn't work."
864 echo "You may have to fix up the shell scripts to make sure sh runs them."
868 : script used to extract .SH files with variable substitutions
872 cat >>extract <<'EOS'
874 echo "Doing variable substitutions on .SH files..."
875 if test -f MANIFEST; then
876 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
877 : Pick up possible extension manifests.
878 for dir in ext/* ; do
879 if test -f $dir/MANIFEST; then
880 xxx=`awk '{print $1}' < $dir/MANIFEST |
881 sed -n "/\.SH$/ s@^@$dir/@p"`
882 shlist="$shlist $xxx"
887 echo "(Looking for .SH files under the current directory.)"
888 set x `find . -name "*.SH" -print`
892 0) set x *.SH; shift;;
894 if test ! -f $1; then
900 dir=`expr X$file : 'X\(.*\)/'`
901 file=`expr X$file : 'X.*/\(.*\)'`
902 (cd $dir && . ./$file)
909 if test -f config_h.SH; then
910 if test ! -f config.h; then
911 : oops, they left it out of MANIFEST, probably, so do it anyway.
917 : produce awk script to parse command line options
918 cat >options.awk <<'EOF'
920 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
922 len = length(optstr);
923 for (i = 1; i <= len; i++) {
924 c = substr(optstr, i, 1);
925 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
936 if (substr(str, 1, 1) != "-") {
937 printf("'%s'\n", str);
941 for (i = 2; i <= len; i++) {
942 c = substr(str, i, 1);
944 printf("-%s\n", substr(str, i));
950 printf("'%s'\n", substr(str, i + 1));
963 : process the command line options
964 set X `for arg in "$@"; do echo "X$arg"; done |
965 sed -e s/X// | awk -f options.awk`
970 : set up default values
987 while test $# -gt 0; do
989 -d) shift; fastread=yes;;
990 -e) shift; alldone=cont;;
994 if test -r "$1"; then
997 echo "$me: cannot read config file $1." >&2
1002 -h) shift; error=true;;
1003 -r) shift; reuseval=true;;
1004 -s) shift; silent=true;;
1005 -E) shift; alldone=exit;;
1006 -K) shift; knowitall=true;;
1007 -O) shift; override=true;;
1008 -S) shift; extractsh=true;;
1013 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1014 echo "$me: ignoring -D $1" >&2
1017 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1018 *) echo "$1='define'" >> optdef.sh;;
1025 *=) echo "$1" >> optdef.sh;;
1027 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1028 echo "$me: ignoring -U $1" >&2
1030 *) echo "$1='undef'" >> optdef.sh;;
1034 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1037 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1045 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1046 [-U symbol] [-U symbol=]
1047 -d : use defaults for all answers.
1048 -e : go on without questioning past the production of config.sh.
1049 -f : specify an alternate default configuration file.
1050 -h : print this help message and exit (with an error status).
1051 -r : reuse C symbols value if possible (skips costly nm extraction).
1052 -s : silent mode, only echoes questions and essential information.
1053 -D : define symbol to have some value:
1054 -D symbol symbol gets the value 'define'
1055 -D symbol=value symbol gets the value 'value'
1056 -E : stop at the end of questions, after having produced config.sh.
1057 -K : do not use unless you know what you are doing.
1058 -O : let -D and -U override definitions from loaded configuration file.
1059 -S : perform variable substitutions on all .SH files (can mix with -f)
1060 -U : undefine symbol:
1061 -U symbol symbol gets the value 'undef'
1062 -U symbol= symbol gets completely empty
1063 -V : print version number and exit (with a zero status).
1071 true) exec 1>/dev/null;;
1074 : run the defines and the undefines, if any, but leave the file out there...
1078 case "$extractsh" in
1080 case "$config_sh" in
1081 '') config_sh='config.sh'; config='./config.sh';;
1082 /*) config="$config_sh";;
1083 *) config="./$config_sh";;
1086 echo "Fetching answers from $config_sh..."
1089 test "$override" && . ./optdef.sh
1100 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1101 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1102 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1103 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1104 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1107 : Eunice requires " " instead of "", can you believe it
1110 echo "Beginning of configuration questions for $package."
1112 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1114 : Some greps do not return status, grrr.
1115 echo "grimblepritz" >grimble
1116 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1118 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1124 : the following should work in any shell
1128 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1129 cat >contains <<'EOSS'
1130 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1135 : first determine how to suppress newline on echo command
1137 echo "Checking echo to see how to suppress newlines..."
1138 (echo "hi there\c" ; echo " ") >.echotmp
1139 if $contains c .echotmp >/dev/null 2>&1 ; then
1150 echo $n "The star should be here-->$c"
1154 : Now test for existence of everything in MANIFEST
1156 if test -f ../MANIFEST; then
1157 echo "First let's make sure your kit is complete. Checking..." >&4
1158 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1160 for filelist in x??; do
1161 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1163 if test -s missing; then
1167 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1169 You have the option of continuing the configuration process, despite the
1170 distinct possibility that your kit is damaged, by typing 'y'es. If you
1171 do, don't blame me if something goes wrong. I advise you to type 'n'o
1172 and contact the author (chip@perl.com).
1175 echo $n "Continue? [n] $c" >&4
1179 echo "Continuing..." >&4
1183 echo "ABORTING..." >&4
1188 echo "Looks good..." >&4
1191 echo "There is no MANIFEST file. I hope your kit is complete !"
1195 : compute the number of columns on the terminal for proper question formatting
1200 : set up the echo used in my read
1201 myecho="case \"\$xxxm\" in
1202 '') echo $n \"\$rp $c\" >&4;;
1204 '') echo $n \"[\$xxxm] $c\";;
1206 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1208 echo $n \"[\$xxxm] $c\" >&4
1210 echo $n \"\$rp [\$xxxm] $c\" >&4
1216 : now set up to do reads with possible shell escape and default assignment
1222 case "\$fastread" in
1223 yes) case "\$dflt" in
1226 case "\$silent-\$rp" in
1231 *) case "\$silent" in
1232 true) case "\$rp" in
1237 while expr "X\$ans" : "X!" >/dev/null; do
1241 aok=''; eval ans="\\"\$answ\\"" && aok=y
1246 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1251 echo "(OK, I'll run with -d after this question.)" >&4
1254 echo "*** Sorry, \$1 not supported yet." >&4
1266 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1276 echo "*** Substitution done -- please confirm."
1278 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1283 echo "*** Error -- try again."
1290 case "\$ans\$xxxm\$nostick" in
1302 : create .config dir to save info across Configure sessions
1303 test -d ../.config || mkdir ../.config
1304 cat >../.config/README <<EOF
1305 This directory created by Configure to save information that should
1306 persist across sessions.
1308 You may safely delete it if you wish.
1311 : general instructions
1314 user=`(logname) 2>/dev/null`
1316 user=`whoami 2>&1` ;;
1318 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1321 rp='Would you like to see the instructions?'
1332 This installation shell script will examine your system and ask you questions
1333 to determine how the perl5 package should be installed. If you get
1334 stuck on a question, you may use a ! shell escape to start a subshell or
1335 execute a command. Many of the questions will have default answers in square
1336 brackets; typing carriage return will give you the default.
1338 On some of the questions which ask for file or directory names you are allowed
1339 to use the ~name construct to specify the login directory belonging to "name",
1340 even if you don't have a shell which knows about that. Questions where this is
1341 allowed will be marked "(~name ok)".
1345 dflt='Type carriage return to continue'
1349 The prompter used in this script allows you to use shell variables and
1350 backticks in your answers. You may use $1, $2, etc... to refer to the words
1351 in the default answer, as if the default line was a set of arguments given to a
1352 script shell. This means you may also use $* to repeat the whole default line,
1353 so you do not have to re-type everything to add something to the default.
1355 Everytime there is a substitution, you will have to confirm. If there is an
1356 error (e.g. an unmatched backtick), the default answer will remain unchanged
1357 and you will be prompted again.
1359 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1360 the questions and use the computed defaults (or the previous answers if there
1361 was already a config.sh file). Type 'Configure -h' for a list of options.
1362 You may also start interactively and then answer '& -d' at any prompt to turn
1363 on the non-interactive behavior for the remainder of the execution.
1369 Much effort has been expended to ensure that this shell script will run on any
1370 Unix system. If despite that it blows up on yours, your best bet is to edit
1371 Configure and run it again. If you can't run Configure for some reason,
1372 you'll have to generate a config.sh file by hand. Whatever problems you
1373 have, let me (chip@perl.com) know how I blew it.
1375 This installation script affects things in two ways:
1377 1) it may do direct variable substitutions on some of the files included
1379 2) it builds a config.h file for inclusion in C programs. You may edit
1380 any of these files as the need arises after running this script.
1382 If you make a mistake on a question, there is no easy way to back up to it
1383 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1384 files. Configure will offer to let you do this before it runs the SH files.
1387 dflt='Type carriage return to continue'
1389 case "$firsttime" in
1390 true) echo $user >>../.config/instruct;;
1394 : find out where common programs are
1396 echo "Locating common programs..." >&4
1409 if test -d \$dir/\$thing; then
1415 for thisthing in \$dir/\$thing; do
1416 : just loop through to pick last item
1418 if test -f \$thisthing; then
1421 elif test -f \$dir/\$thing.exe; then
1422 : on Eunice apparently
1472 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1473 pth="$pth /lib /usr/lib"
1474 for file in $loclist; do
1475 xxx=`./loc $file $file $pth`
1480 echo $file is in $xxx.
1483 echo $file is in $xxx.
1486 echo "I don't know where '$file' is, and my life depends on it." >&4
1487 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1493 echo "Don't worry if any of the following aren't found..."
1495 for file in $trylist; do
1496 xxx=`./loc $file $file $pth`
1501 echo $file is in $xxx.
1504 echo $file is in $xxx.
1507 echo "I don't see $file out there, $say."
1514 echo "Substituting grep for egrep."
1520 echo "Substituting cp for ln."
1526 echo "Hopefully test is built into your sh."
1529 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1530 echo "Using the test built into your sh."
1538 echo "Hopefully echo is built into your sh."
1543 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1544 $echo $n "hi there$c" >foo1
1545 echo $n "hi there$c" >foo2
1546 if cmp foo1 foo2 >/dev/null 2>&1; then
1547 echo "They are compatible. In fact, they may be identical."
1554 They are not compatible! You are probably running ksh on a non-USG system.
1555 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1556 have echo built in and we may have to run some Bourne shell scripts. That
1557 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1560 $echo $n "The star should be here-->$c"
1567 : determine whether symbolic links are supported
1570 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1571 echo "Symbolic links are supported." >&4
1574 echo "Symbolic links are NOT supported." >&4
1579 : see whether [:lower:] and [:upper:] are supported character classes
1583 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1585 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1590 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1593 : set up the translation script tr, must be called with ./tr of course
1597 '[A-Z][a-z]') exec $tr '$up' '$low';;
1598 '[a-z][A-Z]') exec $tr '$low' '$up';;
1605 : Try to determine whether config.sh was made on this system
1606 case "$config_sh" in
1608 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1609 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1610 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1611 newmyuname="$myuname"
1613 case "$knowitall" in
1615 if test -f ../config.sh; then
1616 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1617 eval "`grep myuname= ../config.sh`"
1619 if test "X$myuname" = "X$newmyuname"; then
1627 : Get old answers from old config file if Configure was run on the
1628 : same system, otherwise use the hints.
1631 if test -f config.sh; then
1633 rp="I see a config.sh file. Shall I use it to set the defaults?"
1636 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1637 *) echo "Fetching default answers from your old config.sh file..." >&4
1645 : Older versions did not always set $sh. Catch re-use of such
1654 if test ! -f config.sh; then
1657 First time through, eh? I have some defaults handy for the following systems:
1660 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1662 : Half the following guesses are probably wrong... If you have better
1663 : tests or hints, please send them to chip@perl.com
1664 : The metaconfig authors would also appreciate a copy...
1665 $test -f /irix && osname=irix
1666 $test -f /xenix && osname=sco_xenix
1667 $test -f /dynix && osname=dynix
1668 $test -f /dnix && osname=dnix
1669 $test -f /lynx.os && osname=lynxos
1670 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1671 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
1672 $test -f /bin/mips && /bin/mips && osname=mips
1673 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1674 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1675 $test -d /usr/apollo/bin && osname=apollo
1676 $test -f /etc/saf/_sactab && osname=svr4
1677 $test -d /usr/include/minix && osname=minix
1678 if $test -d /MachTen; then
1680 if $test -x /sbin/version; then
1681 osvers=`/sbin/version | $awk '{print $2}' |
1682 $sed -e 's/[A-Za-z]$//'`
1683 elif $test -x /usr/etc/version; then
1684 osvers=`/usr/etc/version | $awk '{print $2}' |
1685 $sed -e 's/[A-Za-z]$//'`
1690 if $test -f $uname; then
1698 umips) osname=umips ;;
1701 [23]100) osname=mips ;;
1702 next*) osname=next ;;
1703 news*) osname=news ;;
1705 if $test -f /etc/kconfig; then
1707 if test "$lns" = "ln -s"; then
1709 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1711 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1720 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1722 'not found') osvers="$4"."$3" ;;
1723 '<3240'|'<>3240') osvers=3.2.0 ;;
1724 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1725 '=3250'|'>3250') osvers=3.2.5 ;;
1729 *dc.osx) osname=dcosx
1735 domainos) osname=apollo
1741 dynixptx*) osname=dynixptx
1744 freebsd) osname=freebsd
1746 genix) osname=genix ;;
1751 *.10.*) osvers=10 ;;
1768 netbsd*) osname=netbsd
1771 bsd386) osname=bsd386
1774 next*) osname=next ;;
1775 solaris) osname=solaris
1777 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1784 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1788 titanos) osname=titanos
1797 ultrix) osname=ultrix
1800 osf1|mls+) case "$5" in
1803 osvers=`echo "$3" | sed 's/^[vt]//'`
1805 hp*) osname=hp_osf1 ;;
1806 mips) osname=mips_osf1 ;;
1815 $2) case "$osname" in
1819 : svr4.x or possibly later
1829 if test -f /stand/boot ; then
1830 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1831 if test -n "$INITPROG" -a -f "$INITPROG"; then
1832 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1833 if test -n "$isesix"; then
1841 *) if test -f /etc/systemid; then
1843 set `echo $3 | $sed 's/\./ /g'` $4
1844 if $test -f sco_$1_$2_$3.sh; then
1846 elif $test -f sco_$1_$2.sh; then
1848 elif $test -f sco_$1.sh; then
1853 '') : Still unknown. Probably a generic Sys V.
1862 *) case "$osname" in
1863 '') : Still unknown. Probably a generic BSD.
1871 if test -f /vmunix -a -f news_os.sh; then
1872 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1873 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1876 $rm -f ../UU/kernel.what
1877 elif test -d c:/.; then
1884 : Now look for a hint file osname_osvers, unless one has been
1885 : specified already.
1888 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1889 : Also try without trailing minor version numbers.
1890 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1891 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1892 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1893 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1896 *) case "$osvers" in
1899 *) if $test -f $file.sh ; then
1901 elif $test -f $xfile.sh ; then
1903 elif $test -f $xxfile.sh ; then
1905 elif $test -f $xxxfile.sh ; then
1907 elif $test -f $xxxxfile.sh ; then
1909 elif $test -f "${osname}.sh" ; then
1920 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1926 You may give one or more space-separated answers, or "none" if appropriate.
1927 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1930 rp="Which of these apply, if any?"
1933 for file in $tans; do
1934 if $test -f $file.sh; then
1936 $cat $file.sh >> ../UU/config.sh
1937 elif $test X$tans = X -o X$tans = Xnone ; then
1940 : Give one chance to correct a possible typo.
1941 echo "$file.sh does not exist"
1943 rp="hint to use instead?"
1945 for file in $ans; do
1946 if $test -f "$file.sh"; then
1948 $cat $file.sh >> ../UU/config.sh
1949 elif $test X$ans = X -o X$ans = Xnone ; then
1952 echo "$file.sh does not exist -- ignored."
1959 : Remember our hint file for later.
1960 if $test -f "$file.sh" ; then
1972 echo "Fetching default answers from $config_sh..." >&4
1976 cp $config_sh config.sh 2>/dev/null
1986 test "$override" && . ./optdef.sh
1987 myuname="$newmyuname"
1989 : Restore computed paths
1990 for file in $loclist $trylist; do
1991 eval $file="\$_$file"
1996 Configure uses the operating system name and version to set some defaults.
1997 The default value is probably right if the name rings a bell. Otherwise,
1998 since spelling matters for me, either accept the default or answer "none"
2005 ''|' '|none) dflt=none ;;
2006 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2009 *) dflt="$osname" ;;
2011 rp="Operating system name?"
2015 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2021 ''|' '|none) dflt=none ;;
2022 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2023 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2025 ''|' ') dflt=none ;;
2030 *) dflt="$osvers" ;;
2032 rp="Operating system version?"
2041 : who configured the system
2042 cf_time=`$date 2>&1`
2043 cf_by=`(logname) 2>/dev/null`
2044 case "$cf_by" in "")
2045 cf_by=`(whoami) 2>/dev/null`
2046 case "$cf_by" in "")
2051 : determine the architecture name
2053 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2054 tarch=`arch`"-$osname"
2055 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2056 if uname -m > tmparch 2>&1 ; then
2057 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2058 -e 's/$/'"-$osname/" tmparch`
2066 case "$myarchname" in
2069 echo "(Your architecture name used to be $myarchname.)"
2075 *) dflt="$archname";;
2077 rp='What is your architecture name'
2085 $define|true) afs=true ;;
2086 $undef|false) afs=false ;;
2087 *) if test -d /afs; then
2095 echo "AFS may be running... I'll be extra cautious then..." >&4
2097 echo "AFS does not seem to be running..." >&4
2100 : decide how portable to be. Allow command line overrides.
2101 case "$d_portable" in
2103 *) d_portable="$define" ;;
2106 : set up shell script to do ~ expansion
2112 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2115 if $test -f /bin/csh; then
2116 /bin/csh -f -c "glob \$1"
2121 name=\`$expr x\$1 : '..\([^/]*\)'\`
2122 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2123 if $test ! -d "\$dir"; then
2125 echo "\$me: can't locate home directory for: \$name" >&2
2130 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2146 : now set up to get a file name
2150 cat <<'EOSC' >>getfile
2163 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2164 fn=`echo $fn | sed 's/(.*)//'`
2170 loc_file=`expr $fn : '.*:\(.*\)'`
2171 fn=`expr $fn : '\(.*\):.*'`
2179 */*) fullpath=true;;
2188 *e*) exp_file=true;;
2191 *p*) nopath_ok=true;;
2196 *d*) type='Directory';;
2197 *l*) type='Locate';;
2202 Locate) what='File';;
2207 case "$d_portable" in
2215 while test "$type"; do
2220 true) rp="$rp (~name ok)";;
2223 if test -f UU/getfile.ok && \
2224 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2243 value=`UU/filexp $ans`
2246 if test "$ans" != "$value"; then
2247 echo "(That expands to $value on this system.)"
2261 /*) value="$ansexp" ;;
2266 echo "I shall only accept a full path name, as in /bin/ls." >&4
2267 echo "Use a ! shell escape if you wish to check pathnames." >&4
2270 echo "Please give a full path name, starting with slash." >&4
2273 echo "Note that using ~name is ok provided it expands well." >&4
2286 if test -f "$ansexp"; then
2288 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2290 echo "($value is not a plain file, but that's ok.)"
2295 if test -d "$ansexp"; then
2300 if test -d "$ansexp"; then
2301 echo "(Looking for $loc_file in directory $value.)"
2302 value="$value/$loc_file"
2303 ansexp="$ansexp/$loc_file"
2305 if test -f "$ansexp"; then
2308 case "$nopath_ok" in
2309 true) case "$value" in
2311 *) echo "Assuming $value will be in people's path."
2327 if test "$fastread" = yes; then
2332 rp="$what $value doesn't exist. Use that name anyway?"
2353 : determine root of directory hierarchy where package will be installed.
2356 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2364 By default, $package will be installed in $dflt/bin, manual
2365 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2366 all installation directories. Typically set to /usr/local, but you
2367 may choose /usr if you wish to install $package among your system
2368 binaries. If you wish to have binaries under /bin but manual pages
2369 under /usr/local/man, that's ok: you will be prompted separately
2370 for each of the installation directories, the prefix being only used
2371 to set the defaults.
2375 rp='Installation prefix to use?'
2383 *) oldprefix="$prefix";;
2390 : set the prefixit variable, to compute a suitable default value
2391 prefixit='case "$3" in
2393 case "$oldprefix" in
2394 "") eval "$1=\"\$$2\"";;
2401 ""|" ") eval "$1=\"\$$2\"";;
2407 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2409 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2410 /*-$oldprefix/*|\~*-$oldprefix/*)
2411 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2412 *) eval "$1=\"\$$2\"";;
2416 : determine where private library files go
2417 : Usual default is /usr/local/lib/perl5. Also allow things like
2418 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2420 *perl*) set dflt privlib lib ;;
2421 *) set dflt privlib lib/$package ;;
2426 There are some auxiliary files for $package that need to be put into a
2427 private library directory that is accessible by everyone.
2431 rp='Pathname where the private library files will reside?'
2433 if $test "X$privlibexp" != "X$ansexp"; then
2437 privlibexp="$ansexp"
2441 Since you are running AFS, I need to distinguish the directory in which
2442 private files reside from the directory in which they are installed (and from
2443 which they are presumably copied to the former directory by occult means).
2446 case "$installprivlib" in
2447 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2448 *) dflt="$installprivlib";;
2451 rp='Where will private files be installed?'
2453 installprivlib="$ans"
2455 installprivlib="$privlibexp"
2458 : set the base revision
2461 : get the patchlevel
2463 echo "Getting the current patchlevel..." >&4
2464 if $test -r ../patchlevel.h;then
2465 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2466 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2471 $echo $n "(You have $package" $c
2474 *) $echo $n " $baserev" $c ;;
2476 $echo $n " patchlevel $patchlevel" $c
2477 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2480 : set the prefixup variable, to restore leading tilda escape
2481 prefixup='case "$prefixexp" in
2483 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2486 : determine where public architecture dependent libraries go
2492 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2496 *) if test 0 -eq "$subversion"; then
2497 version=`LC_ALL=C; export LC_ALL; \
2498 echo $baserev $patchlevel | \
2499 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2501 version=`LC_ALL=C; export LC_ALL; \
2502 echo $baserev $patchlevel $subversion | \
2503 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
2505 dflt="$privlib/$archname/$version"
2515 $spackage contains architecture-dependent library files. If you are
2516 sharing libraries in a heterogeneous environment, you might store
2517 these files in a separate location. Otherwise, you can just include
2518 them with the rest of the public library files.
2522 rp='Where do you want to put the public architecture-dependent libraries?'
2525 archlibexp="$ansexp"
2530 Since you are running AFS, I need to distinguish the directory in
2531 which architecture-dependent library files reside from the directory
2532 in which they are installed (and from which they are presumably copied
2533 to the former directory by occult means).
2536 case "$installarchlib" in
2537 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2538 *) dflt="$installarchlib";;
2541 rp='Where will architecture-dependent library files be installed?'
2543 installarchlib="$ans"
2545 installarchlib="$archlibexp"
2547 if $test X"$archlib" = X"$privlib"; then
2553 : set up the script used to warn in case of inconsistency
2560 echo "*** WHOA THERE!!! ***" >&4
2561 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2562 rp=" Keep the $hint value?"
2565 y) td=$was; tu=$was;;
2569 : function used to set $1 to $val
2570 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2572 $define$undef) . ./whoa; eval "$var=\$td";;
2573 $undef$define) . ./whoa; eval "$var=\$tu";;
2574 *) eval "$var=$val";;
2579 Perl 5.004 can be compiled for binary compatibility with 5.003.
2580 If you decide to do so, you will be able to continue using any
2581 extensions that were compiled for Perl 5.003. However, binary
2582 compatibility forces Perl to expose some of its internal symbols
2583 in the same way that 5.003 did. So you may have symbol conflicts
2584 if you embed a binary-compatible Perl in other programs.
2587 case "$d_bincompat3" in
2591 rp='Binary compatibility with Perl 5.003?'
2594 y*) val="$define" ;;
2599 case "$d_bincompat3" in
2600 "$define") bincompat3=y ;;
2604 : make some quick guesses about what we are up against
2606 $echo $n "Hmm... $c"
2616 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2617 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2619 echo "Looks kind of like an OSF/1 system, but we'll see..."
2621 elif test `echo abc | tr a-z A-Z` = Abc ; then
2622 xxx=`./loc addbib blurfl $pth`
2623 if $test -f $xxx; then
2624 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2628 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2629 echo "Looks kind of like an extended USG system, but we'll see..."
2631 echo "Looks kind of like a USG system, but we'll see..."
2635 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2636 echo "Looks kind of like a BSD system, but we'll see..."
2640 echo "Looks kind of like a Version 7 system, but we'll see..."
2643 case "$eunicefix" in
2646 There is, however, a strange, musty smell in the air that reminds me of
2647 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2651 : it so happens the Eunice I know will not run shell scripts in Unix format
2655 echo "Congratulations. You aren't running Eunice."
2659 : Detect OS2. The p_ variable is set above in the Head.U unit.
2664 I have the feeling something is not exactly right, however...don't tell me...
2665 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2670 if test -f /xenix; then
2671 echo "Actually, this looks more like a XENIX system..."
2676 echo "It's not Xenix..."
2681 if test -f /venix; then
2682 echo "Actually, this looks more like a VENIX system..."
2689 echo "Nor is it Venix..."
2692 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2693 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2696 : see if setuid scripts can be secure
2699 Some kernels have a bug that prevents setuid #! scripts from being
2700 secure. Some sites have disabled setuid #! scripts because of this.
2702 First let's decide if your kernel supports secure setuid #! scripts.
2703 (If setuid #! scripts would be secure but have been disabled anyway,
2704 don't say that they are secure if asked.)
2709 if $test -d /dev/fd; then
2710 echo "#!$ls" >reflect
2711 chmod +x,u+s reflect
2712 ./reflect >flect 2>&1
2713 if $contains "/dev/fd" flect >/dev/null; then
2714 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2718 If you are not sure if they are secure, I can check but I'll need a
2719 username and password different from the one you are using right now.
2720 If you don't have such a username or don't want me to test, simply
2724 rp='Other username to test security of setuid scripts with?'
2729 case "$d_suidsafe" in
2730 '') echo "I'll assume setuid scripts are *not* secure." >&4
2733 echo "Well, the $hint value is *not* secure." >&4
2735 *) echo "Well, the $hint value *is* secure." >&4
2740 $rm -f reflect flect
2741 echo "#!$ls" >reflect
2742 chmod +x,u+s reflect
2745 echo '"su" will (probably) prompt you for '"$ans's password."
2746 su $ans -c './reflect >flect'
2747 if $contains "/dev/fd" flect >/dev/null; then
2748 echo "Okay, it looks like setuid scripts are secure." >&4
2751 echo "I don't think setuid scripts are secure." >&4
2756 rp='Does your kernel have *secure* setuid scripts?'
2759 [yY]*) val="$define";;
2764 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2765 echo "(That's for file descriptors, not floppy disks.)"
2771 $rm -f reflect flect
2773 : now see if they want to do setuid emulation
2776 case "$d_suidsafe" in
2779 echo "No need to emulate SUID scripts since they are secure here." >& 4
2783 Some systems have disabled setuid scripts, especially systems where
2784 setuid scripts cannot be secure. On systems where setuid scripts have
2785 been disabled, the setuid/setgid bits on scripts are currently
2786 useless. It is possible for $package to detect those bits and emulate
2787 setuid/setgid in a secure fashion. This emulation will only work if
2788 setuid scripts have been disabled in your kernel.
2792 "$define") dflt=y ;;
2795 rp="Do you want to do setuid/setgid emulation?"
2798 [yY]*) val="$define";;
2806 : determine where site specific libraries go.
2810 '') dflt="$privlib/site_perl" ;;
2811 *) dflt="$sitelib" ;;
2815 The installation process will also create a directory for
2816 site-specific extensions and modules. Some users find it convenient
2817 to place all local files in this directory rather than in the main
2818 distribution directory.
2822 rp='Pathname for the site-specific library files?'
2824 if $test "X$sitelibexp" != "X$ansexp"; then
2828 sitelibexp="$ansexp"
2832 Since you are running AFS, I need to distinguish the directory in
2833 which site-specific files reside from the directory in which they are
2834 installed (and from which they are presumably copied to the former
2835 directory by occult means).
2838 case "$installsitelib" in
2839 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2840 *) dflt="$installsitelib";;
2843 rp='Where will site-specific files be installed?'
2845 installsitelib="$ans"
2847 installsitelib="$sitelibexp"
2850 : determine where site specific architecture-dependent libraries go.
2851 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2852 : xxx is usuually lib/site_perl/archname.
2853 set sitearch sitearch none
2856 '') dflt="$sitelib/$archname" ;;
2857 *) dflt="$sitearch" ;;
2861 The installation process will also create a directory for
2862 architecture-dependent site-specific extensions and modules.
2866 rp='Pathname for the site-specific architecture-dependent library files?'
2868 if $test "X$sitearchexp" != "X$ansexp"; then
2872 sitearchexp="$ansexp"
2876 Since you are running AFS, I need to distinguish the directory in
2877 which site-specific architecture-dependent library files reside from
2878 the directory in which they are installed (and from which they are
2879 presumably copied to the former directory by occult means).
2882 case "$installsitearch" in
2883 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2884 *) dflt="$installsitearch";;
2887 rp='Where will site-specific architecture-dependent files be installed?'
2889 installsitearch="$ans"
2891 installsitearch="$sitearchexp"
2894 : determine where old public architecture dependent libraries might be
2895 case "$oldarchlib" in
2896 '') case "$privlib" in
2898 *) dflt="$privlib/$archname"
2902 *) dflt="$oldarchlib"
2905 if $test ! -d "$dflt/auto"; then
2910 In 5.001, Perl stored architecture-dependent library files in a directory
2911 with a name such as $privlib/$archname,
2912 and this directory contained files from the standard extensions and
2913 files from any additional extensions you might have added. Starting
2914 with version 5.002, all the architecture-dependent standard extensions
2915 will go into a version-specific directory such as
2917 while locally-added extensions will go into
2920 If you wish Perl to continue to search the old architecture-dependent
2921 library for your local extensions, give the path to that directory.
2922 If you do not wish to use your old architecture-dependent library
2923 files, answer 'none'.
2927 rp='Directory for your old 5.001 architecture-dependent libraries?'
2930 oldarchlibexp="$ansexp"
2931 case "$oldarchlib" in
2932 ''|' ') val="$undef" ;;
2938 : determine where public executables go
2943 rp='Pathname where the public executables will reside?'
2945 if $test "X$ansexp" != "X$binexp"; then
2953 Since you are running AFS, I need to distinguish the directory in which
2954 executables reside from the directory in which they are installed (and from
2955 which they are presumably copied to the former directory by occult means).
2958 case "$installbin" in
2959 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2960 *) dflt="$installbin";;
2963 rp='Where will public executables be installed?'
2967 installbin="$binexp"
2970 : determine where manual pages are on this system
2974 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2975 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2976 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2977 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2978 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2979 sysman=`./loc . /usr/man/man1 $syspath`
2982 if $test -d "$sysman"; then
2983 echo "System manual is in $sysman." >&4
2985 echo "Could not find manual pages in source form." >&4
2988 : see what memory models we can support
2991 $cat >pdp11.c <<'EOP'
3000 cc -o pdp11 pdp11.c >/dev/null 2>&1
3001 if ./pdp11 2>/dev/null; then
3002 dflt='unsplit split'
3004 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3007 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3012 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3015 if $test -d /lib/large || $test -d /usr/lib/large; then
3018 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3027 Some systems have different model sizes. On most systems they are called
3028 small, medium, large, and huge. On the PDP11 they are called unsplit and
3029 split. If your system doesn't support different memory models, say "none".
3030 If you wish to force everything to one memory model, say "none" here and
3031 put the appropriate flags later when it asks you for other cc and ld flags.
3032 Venix systems may wish to put "none" and let the compiler figure things out.
3033 (In the following question multiple model names should be space separated.)
3036 rp="Which memory models are supported?"
3051 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3052 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3059 rp="What flag indicates separate I and D space?"
3067 *large*|*small*|*medium*|*huge*)
3074 rp="What flag indicates large model?"
3084 *huge*) case "$huge" in
3088 rp="What flag indicates huge model?"
3098 *medium*) case "$medium" in
3102 rp="What flag indicates medium model?"
3109 *) medium="$large";;
3112 *small*) case "$small" in
3116 rp="What flag indicates small model?"
3127 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3131 : see if we need a special compiler
3139 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3140 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3153 On some systems the default C compiler will not resolve multiple global
3154 references that happen to have the same name. On some such systems the "Mcc"
3155 command may be used to force these to be resolved. On other systems a "cc -M"
3156 command is required. (Note that the -M flag on other systems indicates a
3157 memory model to use!) If you have the Gnu C compiler, you might wish to use
3161 rp="What command will force resolution on this system?"
3169 rp="Use which C compiler?"
3174 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3175 $cat >gccvers.c <<EOM
3180 printf("%s\n", __VERSION__);
3182 printf("%s\n", "1");
3188 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3189 gccversion=`./gccvers`
3190 case "$gccversion" in
3191 '') echo "You are not using GNU cc." ;;
3192 *) echo "You are using GNU cc $gccversion." ;;
3196 echo "*** WHOA THERE!!! ***" >&4
3197 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3198 case "$knowitall" in
3200 echo " You'd better start hunting for one and let me know about it." >&4
3206 case "$gccversion" in
3207 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3210 : What should the include directory be ?
3212 $echo $n "Hmm... $c"
3216 if $test -f /bin/mips && /bin/mips; then
3217 echo "Looks like a MIPS system..."
3218 $cat >usr.c <<'EOCP'
3219 #ifdef SYSTYPE_BSD43
3223 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3224 dflt='/bsd43/usr/include'
3228 mips_type='System V'
3230 $rm -f usr.c usr.out
3231 echo "and you're compiling with the $mips_type compiler and libraries."
3235 echo "Doesn't look like a MIPS system."
3246 case "$xxx_prompt" in
3248 rp='Where are the include files you want to use?'
3256 : Set private lib path
3259 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3264 '') dlist="$loclibpth $plibpth $glibpth";;
3265 *) dlist="$libpth";;
3268 : Now check and see which directories actually exist, avoiding duplicates
3272 if $test -d $xxx; then
3275 *) libpth="$libpth $xxx";;
3281 Some systems have incompatible or broken versions of libraries. Among
3282 the directories listed in the question below, please remove any you
3283 know not to be holding relevant libraries, and add any that are needed.
3284 Say "none" for none.
3295 rp="Directories to use for library searches?"
3302 : Define several unixisms. Hints files or command line options
3303 : can be used to override them.
3316 : Which makefile gets called first. This is used by make depend.
3317 case "$firstmakefile" in
3318 '') firstmakefile='makefile';;
3321 : compute shared library extension
3324 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3334 On some systems, shared libraries may be available. Answer 'none' if
3335 you want to suppress searching of shared libraries for the remaining
3336 of this configuration.
3339 rp='What is the file extension used for shared libraries?'
3343 : Looking for optional libraries
3345 echo "Checking for optional libraries..." >&4
3350 case "$libswanted" in
3351 '') libswanted='c_s';;
3353 for thislib in $libswanted; do
3355 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3356 echo "Found -l$thislib (shared)."
3359 *) dflt="$dflt -l$thislib";;
3361 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3362 echo "Found -l$thislib (shared)."
3365 *) dflt="$dflt -l$thislib";;
3367 elif xxx=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3368 echo "Found -l$thislib."
3371 *) dflt="$dflt -l$thislib";;
3373 elif xxx=`./loc $thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3374 echo "Found -l$thislib."
3377 *) dflt="$dflt -l$thislib";;
3379 elif xxx=`./loc lib${thislib}_s$lib_ext X $libpth`; $test -f "$xxx"; then
3380 echo "Found -l${thislib}_s."
3383 *) dflt="$dflt -l${thislib}_s";;
3385 elif xxx=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$xxx"; then
3386 echo "Found -l$thislib."
3389 *) dflt="$dflt -l$thislib";;
3392 echo "No -l$thislib."
3403 ' '|'') dflt='none';;
3408 Some versions of Unix support shared libraries, which make executables smaller
3409 but make load time slightly longer.
3411 On some systems, mostly System V Release 3's, the shared library is included
3412 by putting the option "-lc_s" as the last thing on the cc command line when
3413 linking. Other systems use shared libraries by default. There may be other
3414 libraries needed to compile $package on your machine as well. If your system
3415 needs the "-lc_s" option, include it here. Include any other special libraries
3416 here as well. Say "none" for none.
3420 rp="Any additional libraries?"
3427 : see how we invoke the C preprocessor
3429 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3430 cat <<'EOT' >testcpp.c
3436 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3438 wrapper=`pwd`/cppstdin
3442 if $test "X$cppstdin" != "X" && \
3443 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3444 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3446 echo "You used to use $cppstdin $cppminus so we'll use that again."
3448 '') echo "But let's see if we can live without a wrapper..." ;;
3450 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3451 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3453 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3456 echo "(However, $cpprun $cpplast does not work, let's see...)"
3464 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3471 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3472 $cc -E <testcpp.c >testcpp.out 2>&1; \
3473 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474 echo "Yup, it does."
3477 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3478 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3479 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480 echo "Yup, it does."
3483 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3484 $cc -P <testcpp.c >testcpp.out 2>&1; \
3485 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486 echo "Yipee, that works!"
3489 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3490 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3491 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492 echo "At long last!"
3495 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3496 $cpp <testcpp.c >testcpp.out 2>&1; \
3497 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3502 $cpp - <testcpp.c >testcpp.out 2>&1; \
3503 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3504 echo "Hooray, it works! I was beginning to wonder."
3507 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3508 $wrapper <testcpp.c >testcpp.out 2>&1; \
3509 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3515 rp="No dice. I can't find a C preprocessor. Name one:"
3519 $x_cpp <testcpp.c >testcpp.out 2>&1
3520 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3521 echo "OK, that will do." >&4
3523 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3538 echo "Perhaps can we force $cc -E using a wrapper..."
3539 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3540 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3546 echo "Nope, we'll have to live without it..."
3561 *) $rm -f $wrapper;;
3563 $rm -f testcpp.c testcpp.out
3565 : determine optimize, if desired, or use for debug flag also
3567 ' '|$undef) dflt='none';;
3569 *) dflt="$optimize";;
3573 Some C compilers have problems with their optimizers. By default, $package
3574 compiles with the -O flag to use the optimizer. Alternately, you might want
3575 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3576 systems). Either flag can be specified here. To use neither flag, specify
3580 rp="What optimizer/debugger flag should be used?"
3584 'none') optimize=" ";;
3588 : We will not override a previous value, but we might want to
3589 : augment a hint file
3592 case "$gccversion" in
3593 1*) dflt='-fpcc-struct-return' ;;
3596 *-g*) dflt="$dflt -DDEBUGGING";;
3598 case "$gccversion" in
3599 2*) if test -d /etc/conf/kconfig.d &&
3600 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3609 case "$mips_type" in
3610 *BSD*|'') inclwanted="$locincpth $usrinc";;
3611 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3613 for thisincl in $inclwanted; do
3614 if $test -d $thisincl; then
3615 if $test x$thisincl != x$usrinc; then
3618 *) dflt="$dflt -I$thisincl";;
3624 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3626 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3634 *) dflt="$dflt -D$2";;
3639 set signal.h __LANGUAGE_C__; eval $inctest
3641 set signal.h LANGUAGE_C; eval $inctest
3645 none|recommended) dflt="$ccflags $dflt" ;;
3646 *) dflt="$ccflags";;
3654 Your C compiler may want other flags. For this question you should include
3655 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3656 but you should NOT include libraries or ld flags like -lwhatever. If you
3657 want $package to honor its debug switch, you should include -DDEBUGGING here.
3658 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3659 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3661 To use no flags, specify the word "none".
3667 rp="Any additional cc flags?"
3674 : the following weeds options from ccflags that are of no interest to cpp
3676 case "$gccversion" in
3677 1*) cppflags="$cppflags -D__GNUC__"
3679 case "$mips_type" in
3681 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3687 echo "Let me guess what the preprocessor flags are..." >&4
3701 *) ftry="$previous $flag";;
3703 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3704 >cpp1.out 2>/dev/null && \
3705 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3706 >cpp2.out 2>/dev/null && \
3707 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3708 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3710 cppflags="$cppflags $ftry"
3720 *-*) echo "They appear to be: $cppflags";;
3722 $rm -f cpp.c cpp?.out
3726 : flags used in final linking phase
3729 '') if ./venix; then
3735 *-posix*) dflt="$dflt -posix" ;;
3738 *) dflt="$ldflags";;
3741 : Try to guess additional flags to pick up local libraries.
3742 for thislibdir in $libpth; do
3743 case " $loclibpth " in
3746 *"-L$thislibdir "*) ;;
3747 *) dflt="$dflt -L$thislibdir" ;;
3759 Your C linker may need flags. For this question you should
3760 include -L/whatever and any other flags used by the C linker, but you
3761 should NOT include libraries like -lwhatever.
3763 Make sure you include the appropriate -L/path flags if your C linker
3764 does not normally search all of the directories you specified above,
3767 To use no flags, specify the word "none".
3771 rp="Any additional ld flags (NOT including libraries)?"
3777 rmlist="$rmlist pdp11"
3781 echo "Checking your choice of C compiler, libs, and flags for coherency..." >&4
3782 set X $cc $optimize $ccflags $ldflags -o try try.c $libs
3785 I've tried to compile and run a simple program with:
3790 and I got the following output:
3793 $cat > try.c <<'EOF'
3798 if sh -c "$cc $optimize $ccflags -o try try.c $ldflags $libs" >>try.msg 2>&1; then
3799 if sh -c './try' >>try.msg 2>&1; then
3802 echo "The program compiled OK, but exited with status $?." >>try.msg
3803 rp="You have a problem. Shall I abort Configure"
3807 echo "I can't compile the test program." >>try.msg
3808 rp="You have a BIG problem. Shall I abort Configure"
3814 case "$knowitall" in
3816 echo "(The supplied flags might be incorrect with this C compiler.)"
3824 *) echo "Ok. Stopping Configure." >&4
3829 n) echo "OK, that should do.";;
3831 $rm -f try try.* core
3834 echo "Checking for GNU C Library..." >&4
3835 cat >gnulibc.c <<EOM
3839 return __libc_main();
3842 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3843 ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3845 echo "You are using the GNU C Library"
3848 echo "You are not using the GNU C Library"
3854 : see if nm is to be used to determine whether a symbol is defined or not
3857 case "$d_gnulibc" in
3862 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3863 if $test $dflt -gt 20; then
3880 I can use 'nm' to extract the symbols from your C libraries. This is a time
3881 consuming task which may generate huge output on the disk (up to 3 megabytes)
3882 but that should make the symbols extraction faster. The alternative is to skip
3883 the 'nm' extraction part and to compile a small test program instead to
3884 determine whether each symbol is present. If you have a fast C compiler and/or
3885 if your 'nm' output cannot be parsed, this may be the best solution.
3886 You shouldn't let me use 'nm' if you have the GNU C Library.
3889 rp='Shall I use nm to extract C symbols from the libraries?'
3901 : nm options which may be necessary
3903 '') if $test -f /mach_boot; then
3905 elif $test -d /usr/ccs/lib; then
3906 nm_opt='-p' # Solaris (and SunOS?)
3907 elif $test -f /dgux; then
3909 elif $test -f /lib64/rld; then
3910 nm_opt='-p' # 64-bit Irix
3916 : nm options which may be necessary for shared libraries but illegal
3917 : for archive libraries. Thank you, Linux.
3918 case "$nm_so_opt" in
3919 '') case "$myuname" in
3921 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3922 nm_so_opt='--dynamic'
3931 : get list of predefined functions in a handy place
3936 *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth`
3943 *) for thislib in $libs; do
3946 : Handle C library specially below.
3949 thislib=`echo $thislib | $sed -e 's/^-l//'`
3950 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3952 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3954 elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then
3956 elif try=`./loc $thislib$lib_ext X $libpth`; $test -f "$try"; then
3958 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3960 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3962 elif try=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$try"; then
3967 libnames="$libnames $try"
3969 *) libnames="$libnames $thislib" ;;
3978 for xxx in $libpth; do
3979 $test -r $1 || set $xxx/libc.$so
3980 : The messy sed command sorts on library version numbers.
3982 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3983 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3985 s/[0-9][0-9]*/0000&/g
3986 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3989 sort | $sed -e 's/^.* //'`
3992 $test -r $1 || set /usr/ccs/lib/libc.$so
3993 $test -r $1 || set /lib/libsys_s$lib_ext
3999 if $test -r "$1"; then
4000 echo "Your (shared) C library seems to be in $1."
4002 elif $test -r /lib/libc && $test -r /lib/clib; then
4003 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4005 libc='/lib/clib /lib/libc'
4006 if $test -r /lib/syslib; then
4007 echo "(Your math library is in /lib/syslib.)"
4008 libc="$libc /lib/syslib"
4010 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4011 echo "Your C library seems to be in $libc, as you said before."
4012 elif $test -r $incpath/usr/lib/libc$lib_ext; then
4013 libc=$incpath/usr/lib/libc$lib_ext;
4014 echo "Your C library seems to be in $libc. That's fine."
4015 elif $test -r /lib/libc$lib_ext; then
4016 libc=/lib/libc$lib_ext;
4017 echo "Your C library seems to be in $libc. You're normal."
4019 if tans=`./loc libc$lib_ext blurfl/dyick $libpth`; $test -r "$tans"; then
4021 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4022 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4023 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4025 elif tans=`./loc Slibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4027 elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4030 tans=`./loc Llibc$lib_ext blurfl/dyick $xlibpth`
4032 if $test -r "$tans"; then
4033 echo "Your C library seems to be in $tans, of all places."
4039 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4043 If the guess above is wrong (which it might be if you're using a strange
4044 compiler, or your machine supports multiple models), you can override it here.
4049 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4051 I can't seem to find your C library. I've looked in the following places:
4054 $sed 's/^/ /' libpath
4057 None of these seems to contain your C library. I need to get its name...
4062 rp='Where is your C library?'
4067 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4068 set X `cat libnames`
4071 case $# in 1) xxx=file; esac
4072 echo "Extracting names from the following $xxx for later perusal:" >&4
4074 $sed 's/^/ /' libnames >&4
4076 $echo $n "This may take a while...$c" >&4
4078 : Linux may need the special Dynamic option to nm for shared libraries.
4079 : In general, this is stored in the nm_so_opt variable.
4080 : Unfortunately, that option may be fatal on non-shared libraries.
4081 for nm_libs_ext in $*; do
4082 case $nm_libs_ext in
4083 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4084 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4089 $grep fprintf libc.tmp > libc.ptf
4090 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4091 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4093 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4095 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4097 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4099 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4101 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4103 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4105 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4107 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4109 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4111 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4113 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4115 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4117 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4118 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4120 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4122 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4124 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4126 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4128 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4130 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4132 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4134 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4136 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4138 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4140 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4142 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4144 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4147 nm -p $* 2>/dev/null >libc.tmp
4148 $grep fprintf libc.tmp > libc.ptf
4149 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4150 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4156 echo "nm didn't seem to work right. Trying ar instead..." >&4
4158 if ar t $libc > libc.tmp; then
4159 for thisname in $libnames; do
4160 ar t $thisname >>libc.tmp
4162 $sed -e 's/\.o$//' < libc.tmp > libc.list
4165 echo "ar didn't seem to work right." >&4
4166 echo "Maybe this is a Cray...trying bld instead..." >&4
4167 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4169 for thisname in $libnames; do
4171 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4172 ar t $thisname >>libc.tmp
4176 echo "That didn't work either. Giving up." >&4
4183 if $test -f /lib/syscalls.exp; then
4185 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4186 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4190 $rm -f libnames libpath
4192 : determine filename position in cpp output
4194 echo "Computing filename position in cpp output for #include directives..." >&4
4195 echo '#include <stdio.h>' > foo.c
4198 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4199 $grep '^[ ]*#.*stdio\.h' | \
4200 while read cline; do
4203 while $test \$# -gt 0; do
4204 if $test -r \`echo \$1 | $tr -d '"'\`; then
4209 pos=\`expr \$pos + 1\`
4221 *) pos="${fieldn}th";;
4223 echo "Your cpp writes the filename in the $pos field of the line."
4225 : locate header file
4230 if test -f $usrinc/\$wanted; then
4231 echo "$usrinc/\$wanted"
4234 awkprg='{ print \$$fieldn }'
4235 echo "#include <\$wanted>" > foo\$\$.c
4236 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4237 $grep "^[ ]*#.*\$wanted" | \
4238 while read cline; do
4239 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4241 */\$wanted) echo "\$name"; exit 0;;
4252 : define an alternate in-header-list? function
4253 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4254 cont=true; xxf="echo \"<\$1> found.\" >&4";
4255 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4256 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4258 case $# in 4) instead=instead;; *) instead="at last";; esac;
4259 while $test "$cont"; do
4261 var=$2; eval "was=\$$2";
4262 if $test "$xxx" && $test -r "$xxx";
4264 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4267 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4268 set $yyy; shift; shift; yyy=$@;
4269 case $# in 0) cont="";;
4270 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4271 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4272 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4273 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4277 do set $yyy; var=$2; eval "was=\$$2";
4278 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4279 set $yyy; shift; shift; yyy=$@;
4282 : see if dld is available
4286 : is a C symbol defined?
4289 -v) tf=libc.tmp; tc=""; tdc="";;
4290 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4291 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4294 case "$reuseval-$4" in
4296 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4302 if $contains $tlook $tf >/dev/null 2>&1;
4307 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4308 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4316 $define) tval=true;;
4322 : define an is-in-libc? function
4323 inlibc='echo " "; td=$define; tu=$undef;
4324 sym=$1; var=$2; eval "was=\$$2";
4326 case "$reuseval$was" in
4336 echo "$sym() found." >&4;
4337 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4339 echo "$sym() NOT found." >&4;
4340 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4344 $define) echo "$sym() found." >&4;;
4345 *) echo "$sym() NOT found." >&4;;
4349 : see if dlopen exists
4356 : determine which dynamic loading, if any, to compile in
4358 dldir="ext/DynaLoader"
4371 $define) dflt='y' ;;
4374 $define) dflt='y' ;;
4376 : Does a dl_xxx.xs file exist for this operating system
4377 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4380 rp="Do you wish to use dynamic loading?"
4387 if $test -f ../$dldir/dl_${osname}.xs ; then
4388 dflt="$dldir/dl_${osname}.xs"
4389 elif $test "$d_dlopen" = "$define" ; then
4390 dflt="$dldir/dl_dlopen.xs"
4391 elif $test "$i_dld" = "$define" ; then
4392 dflt="$dldir/dl_dld.xs"
4397 *) dflt="$dldir/$dlsrc"
4400 echo "The following dynamic loading files are available:"
4401 : Can not go over to $dldir because getfile has path hard-coded in.
4402 cd ..; ls -C $dldir/dl*.xs; cd UU
4403 rp="Source file to use for dynamic loading"
4408 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4412 Some systems may require passing special flags to $cc -c to
4413 compile modules that will be used to create a shared library.
4414 To use no flags, say "none".
4417 case "$cccdlflags" in
4418 '') case "$gccversion" in
4419 '') case "$osname" in
4421 next) dflt='none' ;;
4422 svr4*|esix*) dflt='-Kpic' ;;
4423 irix*) dflt='-KPIC' ;;
4424 solaris) case "$ccflags" in
4425 *-DDEBUGGING*) dflt='-KPIC' ;;
4428 sunos) dflt='-pic' ;;
4431 *) case "$osname/$ccflags" in
4432 solaris/*-DDEBUGGING*) dflt='-fPIC' ;;
4436 *) dflt="$cccdlflags" ;;
4438 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4441 none) cccdlflags=' ' ;;
4442 *) cccdlflags="$ans" ;;
4447 Some systems use ld to create libraries that can be dynamically loaded,
4448 while other systems (such as those using ELF) use $cc.
4452 '') $cat >try.c <<'EOM'
4453 /* Test for whether ELF binaries are produced */
4458 int i = open("a.out",O_RDONLY);
4461 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4462 exit(0); /* succeed (yes, it's ELF) */
4467 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4469 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4473 echo "I'll use ld to build dynamic libraries."
4482 rp="What command should be used to create dynamic libraries?"
4488 Some systems may require passing special flags to $ld to create a
4489 library that can be dynamically loaded. If your ld flags include
4490 -L/other/path options to locate libraries outside your loader's normal
4491 search path, you may need to specify those -L options here as well. To
4492 use no flags, say "none".
4495 case "$lddlflags" in
4496 '') case "$osname" in
4498 linux|irix*) dflt='-shared' ;;
4499 next) dflt='none' ;;
4500 solaris) dflt='-G' ;;
4501 sunos) dflt='-assert nodefinitions' ;;
4502 svr4*|esix*) dflt="-G $ldflags" ;;
4506 *) dflt="$lddlflags" ;;
4509 : Try to guess additional flags to pick up local libraries.
4510 for thisflag in $ldflags; do
4515 *) dflt="$dflt $thisflag" ;;
4525 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4528 none) lddlflags=' ' ;;
4529 *) lddlflags="$ans" ;;
4534 Some systems may require passing special flags to $cc to indicate that
4535 the resulting executable will use dynamic linking. To use no flags,
4539 case "$ccdlflags" in
4540 '') case "$osname" in
4541 hpux) dflt='-Wl,-E' ;;
4542 linux) dflt='-rdynamic' ;;
4543 next) dflt='none' ;;
4544 sunos) dflt='none' ;;
4547 *) dflt="$ccdlflags" ;;
4549 rp="Any special flags to pass to $cc to use dynamic loading?"
4552 none) ccdlflags=' ' ;;
4553 *) ccdlflags="$ans" ;;
4567 # No dynamic loading being used, so don't bother even to prompt.
4570 *) case "$useshrplib" in
4571 '') case "$osname" in
4572 svr4*|dgux|dynixptx|esix|powerux)
4574 also='Building a shared libperl is required for dynamic loading to work on your system.'
4579 also='Building a shared libperl is needed for MAB support.'
4587 also='Building a shared libperl will definitely not work on SunOS 4.'
4601 The perl executable is normally obtained by linking perlmain.c with
4602 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4603 any other libraries needed on this system (such as -lm, etc.). Since
4604 your system supports dynamic loading, it is probably possible to build
4605 a shared libperl.$so. If you will have more than one executable linked
4606 to libperl.$so, this will significantly reduce the size of each
4607 executable, but it may have a noticeable affect on performance. The
4608 default is probably sensible for your system.
4612 rp="Build a shared libperl.$so (y/n)"
4617 # Why does next4 have to be so different?
4618 case "${osname}${osvers}" in
4619 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4620 *) xxx='LD_LIBRARY_PATH' ;;
4624 To build perl, you must add the current working directory to your
4625 $xxx environtment variable before running make. You can do
4627 $xxx=\`pwd\`; export $xxx
4628 for Bourne-style shells, or
4630 for Csh-style shells. You *MUST* do this before running make.
4634 *) useshrplib='false' ;;
4639 case "$useshrplib" in
4643 # Figure out a good name for libperl.so. Since it gets stored in
4644 # a version-specific architecture-dependent library, the version
4645 # number isn't really that important, except for making cc/ld happy.
4647 # A name such as libperl.so.3.1
4648 majmin="libperl.$so.$patchlevel.$subversion"
4649 # A name such as libperl.so.301
4650 majonly=`echo $patchlevel $subversion |
4651 $awk '{printf "%d%02d", $1, $2}'`
4652 majonly=libperl.$so.$majonly
4653 # I'd prefer to keep the os-specific stuff here to a minimum, and
4654 # rely on figuring it out from the naming of libc.
4655 case "${osname}${osvers}" in
4658 # XXX How handle the --version stuff for MAB?
4660 linux*) # ld won't link with a bare -lperl otherwise.
4663 *) # Try to guess based on whether libc has major.minor.
4665 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4666 *libc.$so.[0-9]*) dflt=$majonly ;;
4667 *) dflt=libperl.$so ;;
4677 I need to select a good name for the shared libperl. If your system uses
4678 library names with major and minor numbers, then you might want something
4679 like $majmin. Alternatively, if your system uses a single version
4680 number for shared libraries, then you might want to use $majonly.
4681 Or, your system might be quite happy with a simple libperl.$so.
4683 Since the shared libperl will get installed into a version-specific
4684 architecture-dependent directory, the version number of the shared perl
4685 library probably isn't important, so the default should be o.k.
4688 rp='What name do you want to give to the shared libperl?'
4691 echo "Ok, I'll use $libperl"
4694 libperl="libperl${lib_ext}"
4698 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4702 WARNING: Use of the shrpdir variable for the installation location of
4703 the shared $libperl is not supported. It was never documented and
4704 will not work in this version. Let me (chip@perl.com) know of any
4705 problems this may cause.
4711 But your current setting of $shrpdir is
4712 the default anyway, so it's harmless.
4717 Further, your current attempted setting of $shrpdir
4718 conflicts with the value of $archlibexp/CORE
4719 that installperl will use.
4726 # How will the perl executable find the installed shared $libperl?
4727 # Add $xxx to ccdlflags.
4728 # If we can't figure out a command-line option, use $shrpenv to
4729 # set env LD_RUN_PATH. The main perl makefile uses this.
4730 shrpdir=$archlibexp/CORE
4733 if "$useshrplib"; then
4736 # We'll set it in Makefile.SH...
4742 xxx="-Wl,-R$shrpdir"
4744 linux|irix*|dec_osf)
4745 xxx="-Wl,-rpath,$shrpdir"
4748 # next doesn't like the default...
4751 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
4757 # Only add $xxx if it isn't already in ccdlflags.
4758 case " $ccdlflags " in
4760 *) ccdlflags="$ccdlflags $xxx"
4763 Adding $xxx to the flags
4764 passed to $ld so that the perl executable will find the
4765 installed shared $libperl.
4773 # Respect a hint or command-line value.
4775 '') shrpenv="$tmp_shrpenv" ;;
4778 : determine where manual pages go
4779 set man1dir man1dir none
4783 $spackage has manual pages available in source form.
4787 echo "However, you don't have nroff, so they're probably useless to you."
4789 '') man1dir="none";;
4792 echo "If you don't want the manual sources installed, answer 'none'."
4797 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
4798 lookpath="$lookpath $prefixexp/man/p_man/man1"
4799 lookpath="$lookpath $prefixexp/man/u_man/man1"
4800 lookpath="$lookpath $prefixexp/man/man.1"
4801 : If prefix contains 'perl' then we want to keep the man pages
4802 : under the prefix directory. Otherwise, look in a variety of
4803 : other possible places. This is debatable, but probably a
4804 : good compromise. Well, apparently not.
4805 : Experience has shown people expect man1dir to be under prefix,
4806 : so we now always put it there. Users who want other behavior
4807 : can answer interactively or use a command line option.
4808 : Does user have System V-style man paths.
4810 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
4811 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
4821 rp="Where do the main $spackage manual pages (source) go?"
4823 if $test "X$man1direxp" != "X$ansexp"; then
4827 man1direxp="$ansexp"
4835 Since you are running AFS, I need to distinguish the directory in which
4836 manual pages reside from the directory in which they are installed (and from
4837 which they are presumably copied to the former directory by occult means).
4840 case "$installman1dir" in
4841 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
4842 *) dflt="$installman1dir";;
4845 rp='Where will man pages be installed?'
4847 installman1dir="$ans"
4849 installman1dir="$man1direxp"
4852 : What suffix to use on installed man pages
4859 rp="What suffix should be used for the main $spackage man pages?"
4861 '') case "$man1dir" in
4875 *) dflt="$man1ext";;
4882 : see if we can have long filenames
4884 rmlist="$rmlist /tmp/cf$$"
4885 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
4886 first=123456789abcdef
4887 second=/tmp/cf$$/$first
4888 $rm -f $first $second
4889 if (echo hi >$first) 2>/dev/null; then
4890 if $test -f 123456789abcde; then
4891 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
4894 if (echo hi >$second) 2>/dev/null; then
4895 if $test -f /tmp/cf$$/123456789abcde; then
4897 That's peculiar... You can have filenames longer than 14 characters, but only
4898 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
4899 I shall consider your system cannot support long filenames at all.
4903 echo 'You can have filenames longer than 14 characters.' >&4
4908 How confusing! Some of your filesystems are sane enough to allow filenames
4909 longer than 14 characters but some others like /tmp can't even think about them.
4910 So, for now on, I shall assume your kernel does not allow them at all.
4917 You can't have filenames longer than 14 chars. You can't even think about them!
4923 $rm -rf /tmp/cf$$ 123456789abcde*
4925 : determine where library module manual pages go
4926 set man3dir man3dir none
4930 $spackage has manual pages for many of the library modules.
4936 However, you don't have nroff, so they're probably useless to you.
4937 You can use the supplied perldoc script instead.
4940 '') man3dir="none";;
4944 case "$d_flexfnam" in
4947 However, your system can't handle the long file names like File::Basename.3.
4948 You can use the supplied perldoc script instead.
4951 '') man3dir="none";;
4955 echo "If you don't want the manual sources installed, answer 'none'."
4956 : We dont use /usr/local/man/man3 because some man programs will
4957 : only show the /usr/local/man/man3 contents, and not the system ones,
4958 : thus man less will show the perl module less.pm, but not the system
4959 : less command. We might also conflict with TCL man pages.
4960 : However, something like /opt/perl/man/man3 is fine.
4962 '') case "$prefix" in
4963 *perl*) dflt=`echo $man1dir |
4964 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
4965 *) dflt="$privlib/man/man3" ;;
4969 *) dflt="$man3dir" ;;
4974 rp="Where do the $spackage library man pages (source) go?"
4976 if test "X$man3direxp" != "X$ansexp"; then
4981 man3direxp="$ansexp"
4989 Since you are running AFS, I need to distinguish the directory in which
4990 manual pages reside from the directory in which they are installed (and from
4991 which they are presumably copied to the former directory by occult means).
4994 case "$installman3dir" in
4995 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
4996 *) dflt="$installman3dir";;
4999 rp='Where will man pages be installed?'
5001 installman3dir="$ans"
5003 installman3dir="$man3direxp"
5006 : What suffix to use on installed man pages
5013 rp="What suffix should be used for the $spackage library man pages?"
5015 '') case "$man3dir" in
5029 *) dflt="$man3ext";;
5036 : see if we have to deal with yellow pages, now NIS.
5037 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5038 if $test -f /usr/etc/nibindd; then
5040 echo "I'm fairly confident you're on a NeXT."
5042 rp='Do you get the hosts file via NetInfo?'
5051 y*) hostcat='nidump hosts .';;
5052 *) case "$hostcat" in
5053 nidump*) hostcat='';;
5063 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5071 rp='Are you getting the hosts file via yellow pages?'
5074 y*) hostcat='ypcat hosts';;
5075 *) hostcat='cat /etc/hosts';;
5081 : now get the host name
5083 echo "Figuring out host name..." >&4
5084 case "$myhostname" in
5086 echo 'Maybe "hostname" will work...'
5087 if tans=`sh -c hostname 2>&1` ; then
5095 if $test "$cont"; then
5097 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5098 if tans=`cat /etc/systemid 2>&1` ; then
5100 phostname='cat /etc/systemid'
5101 echo "Whadyaknow. Xenix always was a bit strange..."
5104 elif $test -r /etc/systemid; then
5105 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5108 if $test "$cont"; then
5109 echo 'No, maybe "uuname -l" will work...'
5110 if tans=`sh -c 'uuname -l' 2>&1` ; then
5112 phostname='uuname -l'
5114 echo 'Strange. Maybe "uname -n" will work...'
5115 if tans=`sh -c 'uname -n' 2>&1` ; then
5117 phostname='uname -n'
5119 echo 'Oh well, maybe I can mine it out of whoami.h...'
5120 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5121 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5122 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5124 case "$myhostname" in
5125 '') echo "Does this machine have an identity crisis or something?"
5128 echo "Well, you said $myhostname before..."
5129 phostname='echo $myhostname';;
5135 : you do not want to know about this
5140 if $test "$myhostname" ; then
5142 rp='Your host name appears to be "'$myhostname'".'" Right?"
5150 : bad guess or no guess
5151 while $test "X$myhostname" = X ; do
5153 rp="Please type the (one word) name of your host:"
5158 : translate upper to lower if necessary
5159 case "$myhostname" in
5161 echo "(Normalizing case in your host name)"
5162 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5166 case "$myhostname" in
5168 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5169 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5170 echo "(Trimming domain name from host name--host name is now $myhostname)"
5172 *) case "$mydomain" in
5175 : If we use NIS, try ypmatch.
5176 : Is there some reason why this was not done before?
5177 test "X$hostcat" = "Xypcat hosts" &&
5178 ypmatch "$myhostname" hosts 2>/dev/null |\
5179 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5182 : Extract only the relevant hosts, reducing file size,
5183 : remove comments, insert trailing space for later use.
5184 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5185 /[ ]$myhostname[ . ]/p" > hosts
5188 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5189 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5190 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5191 hosts | $sort | $uniq | \
5192 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5193 case `$echo X$dflt` in
5194 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5197 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5202 tans=`./loc resolv.conf X /etc /usr/etc`
5203 if $test -f "$tans"; then
5204 echo "(Attempting domain name extraction from $tans)"
5205 : Why was there an Egrep here, when Sed works?
5206 : Look for either a search or a domain directive.
5207 dflt=.`$sed -n -e 's/ / /g' \
5208 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5209 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5211 .) dflt=.`$sed -n -e 's/ / /g' \
5212 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5213 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5220 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5221 dflt=.`sh -c domainname 2>/dev/null`
5224 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5229 .) echo "(Lost all hope -- silly guess then)"
5235 *) dflt="$mydomain";;
5239 rp="What is your domain name?"
5249 : translate upper to lower if necessary
5252 echo "(Normalizing case in your domain name)"
5253 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5257 : a little sanity check here
5258 case "$phostname" in
5261 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5262 $myhostname$mydomain|$myhostname) ;;
5264 case "$phostname" in
5266 echo "(That doesn't agree with your whoami.h file, by the way.)"
5269 echo "(That doesn't agree with your $phostname command, by the way.)"
5279 I need to get your e-mail address in Internet format if possible, i.e.
5280 something like user@host.domain. Please answer accurately since I have
5281 no easy means to double check it. The default value provided below
5282 is most probably close to the reality but may not be valid from outside
5283 your organization...
5287 while test "$cont"; do
5289 '') dflt="$cf_by@$myhostname$mydomain";;
5290 *) dflt="$cf_email";;
5292 rp='What is your e-mail address?'
5298 rp='Address does not look like an Internet one. Use it anyway?'
5314 If you or somebody else will be maintaining perl at your site, please
5315 fill in the correct e-mail address here so that they may be contacted
5316 if necessary. Currently, the "perlbug" program included with perl
5317 will send mail to this address in addition to perlbug@perl.com. You may
5318 enter "none" for no administrator.
5321 case "$perladmin" in
5322 '') dflt="$cf_email";;
5323 *) dflt="$perladmin";;
5325 rp='Perl administrator e-mail address'
5329 : figure out how to guarantee perl startup
5330 case "$startperl" in
5332 case "$sharpbang" in
5336 I can use the #! construct to start perl on your system. This will
5337 make startup of perl scripts faster, but may cause problems if you
5338 want to share those scripts and perl is not in a standard place
5339 ($binexp/perl) on all your platforms. The alternative is to force
5340 a shell by starting the script with a single ':' character.
5344 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5347 none) startperl=": # use perl";;
5348 *) startperl="#!$ans"
5349 if $test 33 -lt `echo "$ans" | wc -c`; then
5352 WARNING: Some systems limit the #! command to 32 characters.
5353 If you experience difficulty running Perl scripts with #!, try
5354 installing Perl in a directory with a shorter pathname.
5360 *) startperl=": # use perl"
5365 echo "I'll use $startperl to start perl scripts."
5367 : figure best path for perl in scripts
5370 perlpath="$binexp/perl"
5371 case "$startperl" in
5376 I will use the "eval 'exec'" idiom to start Perl on your system.
5377 I can use the full path of your Perl binary for this purpose, but
5378 doing so may cause problems if you want to share those scripts and
5379 Perl is not always in a standard place ($binexp/perl).
5383 rp="What path shall I use in \"eval 'exec'\"?"
5390 case "$startperl" in
5392 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
5395 : determine where public executable scripts go
5396 set scriptdir scriptdir
5398 case "$scriptdir" in
5401 : guess some guesses
5402 $test -d /usr/share/scripts && dflt=/usr/share/scripts
5403 $test -d /usr/share/bin && dflt=/usr/share/bin
5404 $test -d /usr/local/script && dflt=/usr/local/script
5405 $test -d $prefixexp/script && dflt=$prefixexp/script
5409 *) dflt="$scriptdir"
5414 Some installations have a separate directory just for executable scripts so
5415 that they can mount it across multiple architectures but keep the scripts in
5416 one spot. You might, for example, have a subdirectory of /usr/share for this.
5417 Or you might just lump your scripts in with all your other executables.
5421 rp='Where do you keep publicly executable scripts?'
5423 if $test "X$ansexp" != "X$scriptdirexp"; then
5427 scriptdirexp="$ansexp"
5431 Since you are running AFS, I need to distinguish the directory in which
5432 scripts reside from the directory in which they are installed (and from
5433 which they are presumably copied to the former directory by occult means).
5436 case "$installscript" in
5437 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
5438 *) dflt="$installscript";;
5441 rp='Where will public scripts be installed?'
5443 installscript="$ans"
5445 installscript="$scriptdirexp"
5450 Previous version of $package used the standard IO mechanisms as defined in
5451 <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
5452 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
5453 the default and is the only supported mechanism. This abstraction
5454 layer can use AT&T's sfio (if you already have sfio installed) or
5455 fall back on standard IO. This PerlIO abstraction layer is
5456 experimental and may cause problems with some extension modules.
5458 If this doesn't make any sense to you, just accept the default 'n'.
5460 case "$useperlio" in
5461 $define|true|[yY]*) dflt='y';;
5464 rp='Use the experimental PerlIO abstraction layer?'
5471 echo "Ok, doing things the stdio way"
5478 : Check how to convert floats to strings.
5480 echo "Checking for an efficient way to convert floats to strings."
5483 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
5484 char *myname = "gconvert";
5487 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
5488 char *myname = "gcvt";
5491 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
5492 char *myname = "sprintf";
5498 checkit(expect, got)
5502 if (strcmp(expect, got)) {
5503 printf("%s oddity: Expected %s, got %s\n",
5504 myname, expect, got);
5515 /* This must be 1st test on (which?) platform */
5516 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
5517 Gconvert(0.1, 8, 0, buf);
5518 checkit("0.1", buf);
5520 Gconvert(1.0, 8, 0, buf);
5523 Gconvert(0.0, 8, 0, buf);
5526 Gconvert(-1.0, 8, 0, buf);
5529 /* Some Linux gcvt's give 1.e+5 here. */
5530 Gconvert(100000.0, 8, 0, buf);
5531 checkit("100000", buf);
5533 /* Some Linux gcvt's give -1.e+5 here. */
5534 Gconvert(-100000.0, 8, 0, buf);
5535 checkit("-100000", buf);
5540 case "$d_Gconvert" in
5541 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
5542 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
5543 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
5544 *) xxx_list='gconvert gcvt sprintf' ;;
5547 for xxx_convert in $xxx_list; do
5548 echo "Trying $xxx_convert"
5550 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
5551 try.c $libs > /dev/null 2>&1 ; then
5552 echo "$xxx_convert" found. >&4
5554 echo "I'll use $xxx_convert to convert floats into a string." >&4
5557 echo "...But $xxx_convert didn't work as I expected."
5560 echo "$xxx_convert NOT found." >&4
5564 case "$xxx_convert" in
5565 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
5566 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
5567 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
5570 : Initialize h_fcntl
5573 : Initialize h_sysfile
5576 : access call always available on UNIX
5580 : locate the flags for 'access()'
5584 $cat >access.c <<'EOCP'
5585 #include <sys/types.h>
5590 #include <sys/file.h>
5599 : check sys/file.h first, no particular reason here
5600 if $test `./findhdr sys/file.h` && \
5601 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
5603 echo "<sys/file.h> defines the *_OK access constants." >&4
5604 elif $test `./findhdr fcntl.h` && \
5605 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
5607 echo "<fcntl.h> defines the *_OK access constants." >&4
5608 elif $test `./findhdr unistd.h` && \
5609 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
5610 echo "<unistd.h> defines the *_OK access constants." >&4
5612 echo "I can't find the four *_OK access constants--I'll use mine." >&4
5618 : see if alarm exists
5622 : Look for GNU-cc style attribute checking
5624 echo "Checking whether your compiler can handle __attribute__ ..." >&4
5625 $cat >attrib.c <<'EOCP'
5627 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
5629 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
5630 if $contains 'warning' attrib.out >/dev/null 2>&1; then
5631 echo "Your C compiler doesn't fully support __attribute__."
5634 echo "Your C compiler supports __attribute__."
5638 echo "Your C compiler doesn't seem to understand __attribute__ at all."
5645 : see if bcmp exists
5649 : see if bcopy exists
5653 : see if this is a unistd.h system
5654 set unistd.h i_unistd
5657 : see if getpgrp exists
5658 set getpgrp d_getpgrp
5661 echo "Checking to see which flavor of getpgrp is in use . . . "
5662 case "$d_getpgrp" in
5667 #include <sys/types.h>
5669 # include <unistd.h>
5673 if (getuid() == 0) {
5674 printf("(I see you are running Configure as super-user...)\n");
5678 if (getpgrp(1) == 0)
5687 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5688 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
5690 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5691 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
5694 echo "I can't seem to compile and run the test program."
5696 xxx="a USG one, i.e. you use getpgrp()."
5698 # SVR4 systems can appear rather BSD-ish.
5701 xxx="a BSD one, i.e. you use getpgrp(pid)."
5705 xxx="probably a USG one, i.e. you use getpgrp()."
5710 echo "Assuming your getpgrp is $xxx" >&4
5719 : see if setpgrp exists
5720 set setpgrp d_setpgrp
5723 echo "Checking to see which flavor of setpgrp is in use . . . "
5724 case "$d_setpgrp" in
5729 #include <sys/types.h>
5731 # include <unistd.h>
5735 if (getuid() == 0) {
5736 printf("(I see you are running Configure as super-user...)\n");
5740 if (-1 == setpgrp(1, 1))
5743 if (setpgrp() != -1)
5749 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5750 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
5752 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5753 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
5756 echo "I can't seem to compile and run the test program."
5758 xxx="a USG one, i.e. you use setpgrp()."
5760 # SVR4 systems can appear rather BSD-ish.
5763 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
5767 xxx="probably a USG one, i.e. you use setpgrp()."
5772 echo "Assuming your setpgrp is $xxx" >&4
5779 d_bsdpgrp=$d_bsdsetpgrp
5781 : see if bzero exists
5785 : check for lengths of integral types
5789 echo "Checking to see how big your integers are..." >&4
5790 $cat >intsize.c <<'EOCP'
5794 printf("intsize=%d;\n", sizeof(int));
5795 printf("longsize=%d;\n", sizeof(long));
5796 printf("shortsize=%d;\n", sizeof(short));
5801 # If $libs contains -lsfio, and sfio is mis-configured, then it
5802 # sometimes (apparently) runs and exits with a 0 status, but with no
5803 # output!. Thus we check with test -s whether we actually got any
5804 # output. I think it has to do with sfio's use of _exit vs. exit,
5805 # but I don't know for sure. --Andy Dougherty 1/27/97.
5806 if $cc $optimize $ccflags $ldflags -o intsize intsize.c $libs >/dev/null 2>&1 &&
5807 ./intsize > intsize.out 2>/dev/null && test -s intsize.out ; then
5808 eval `$cat intsize.out`
5809 echo "Your integers are $intsize bytes long."
5810 echo "Your long integers are $longsize bytes long."
5811 echo "Your short integers are $shortsize bytes long."
5815 Help! I can't compile and run the intsize test program: please enlighten me!
5816 (This is probably a misconfiguration in your system or libraries, and
5817 you really ought to fix it. Still, I'll try anyway.)
5821 rp="What is the size of an integer (in bytes)?"
5825 rp="What is the size of a long integer (in bytes)?"
5829 rp="What is the size of a short integer (in bytes)?"
5835 $rm -f intsize intsize.[co] intsize.out
5837 : see if signal is declared as pointer to function returning int or void
5839 xxx=`./findhdr signal.h`
5840 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
5841 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5842 echo "You have int (*signal())() instead of void." >&4
5844 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5845 echo "You have void (*signal())() instead of int." >&4
5847 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
5848 echo "You have int (*signal())() instead of void." >&4
5851 case "$d_voidsig" in
5853 echo "I can't determine whether signal handler returns void or int..." >&4
5855 rp="What type does your signal handler return?"
5862 echo "As you already told me, signal handler returns void." >&4;;
5864 echo "As you already told me, signal handler returns int." >&4;;
5869 case "$d_voidsig" in
5870 "$define") signal_t="void";;
5875 : check for ability to cast large floats to 32-bit ints.
5877 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
5878 if $test "$intsize" -eq 4; then
5884 #include <sys/types.h>
5886 $signal_t blech() { exit(3); }
5892 signal(SIGFPE, blech);
5894 f = (double) 0x7fffffff;
5898 if (i32 != ($xxx) f)
5903 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5907 echo "(I can't seem to compile the test program--assuming it can't)"
5915 echo "Nope, it can't."
5922 : check for ability to cast negative floats to unsigned
5924 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
5926 #include <sys/types.h>
5928 $signal_t blech() { exit(7); }
5929 $signal_t blech_in_list() { exit(4); }
5930 unsigned long dummy_long(p) unsigned long p; { return p; }
5931 unsigned int dummy_int(p) unsigned int p; { return p; }
5932 unsigned short dummy_short(p) unsigned short p; { return p; }
5936 unsigned long along;
5938 unsigned short ashort;
5941 signal(SIGFPE, blech);
5942 along = (unsigned long)f;
5943 aint = (unsigned int)f;
5944 ashort = (unsigned short)f;
5945 if (along != (unsigned long)-123)
5947 if (aint != (unsigned int)-123)
5949 if (ashort != (unsigned short)-123)
5951 f = (double)0x40000000;
5954 along = (unsigned long)f;
5955 if (along != 0x80000000)
5959 along = (unsigned long)f;
5960 if (along != 0x7fffffff)
5964 along = (unsigned long)f;
5965 if (along != 0x80000001)
5969 signal(SIGFPE, blech_in_list);
5971 along = dummy_long((unsigned long)f);
5972 aint = dummy_int((unsigned int)f);
5973 ashort = dummy_short((unsigned short)f);
5974 if (along != (unsigned long)123)
5976 if (aint != (unsigned int)123)
5978 if (ashort != (unsigned short)123)
5984 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5988 echo "(I can't seem to compile the test program--assuming it can't)"
5991 case "$castflags" in
5996 echo "Nope, it can't."
6003 : see if vprintf exists
6005 if set vprintf val -f d_vprintf; eval $csym; $val; then
6006 echo 'vprintf() found.' >&4
6008 $cat >vprintf.c <<'EOF'
6009 #include <varargs.h>
6011 main() { xxx("foo"); }
6020 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6023 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
6024 echo "Your vsprintf() returns (int)." >&4
6027 echo "Your vsprintf() returns (char*)." >&4
6031 echo 'vprintf() NOT found.' >&4
6041 : see if chown exists
6045 : see if chroot exists
6049 : see if chsize exists
6053 : check for const keyword
6055 echo 'Checking to see if your C compiler knows about "const"...' >&4
6056 $cat >const.c <<'EOCP'
6057 typedef struct spug { int drokk; } spug;
6064 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6066 echo "Yup, it does."
6069 echo "Nope, it doesn't."
6074 : see if crypt exists
6076 if set crypt val -f d_crypt; eval $csym; $val; then
6077 echo 'crypt() found.' >&4
6081 cryptlib=`./loc Slibcrypt$lib_ext "" $xlibpth`
6082 if $test -z "$cryptlib"; then
6083 cryptlib=`./loc Mlibcrypt$lib_ext "" $xlibpth`
6087 if $test -z "$cryptlib"; then
6088 cryptlib=`./loc Llibcrypt$lib_ext "" $xlibpth`
6092 if $test -z "$cryptlib"; then
6093 cryptlib=`./loc libcrypt$lib_ext "" $libpth`
6097 if $test -z "$cryptlib"; then
6098 echo 'crypt() NOT found.' >&4
6107 : get csh whereabouts
6109 'csh') val="$undef" ;;
6114 : Respect a hint or command line value for full_csh.
6116 '') full_csh=$csh ;;
6119 : see if cuserid exists
6120 set cuserid d_cuserid
6123 : see if this is a limits.h system
6124 set limits.h i_limits
6127 : see if this is a float.h system
6131 : See if number of significant digits in a double precision number is known
6133 $cat >dbl_dig.c <<EOM
6143 printf("Contains DBL_DIG");
6146 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
6147 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
6148 echo "DBL_DIG found." >&4
6151 echo "DBL_DIG NOT found." >&4
6158 : see if difftime exists
6159 set difftime d_difftime
6162 : see if this is a dirent system
6164 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
6166 echo "<dirent.h> found." >&4
6169 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
6170 echo "<sys/dir.h> found." >&4
6173 xinc=`./findhdr sys/ndir.h`
6175 echo "<dirent.h> NOT found." >&4
6180 : Look for type of directory structure.
6182 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6184 case "$direntrytype" in
6187 $define) guess1='struct dirent' ;;
6188 *) guess1='struct direct' ;;
6191 *) guess1="$direntrytype"
6196 'struct dirent') guess2='struct direct' ;;
6197 *) guess2='struct dirent' ;;
6200 if $contains "$guess1" try.c >/dev/null 2>&1; then
6201 direntrytype="$guess1"
6202 echo "Your directory entries are $direntrytype." >&4
6203 elif $contains "$guess2" try.c >/dev/null 2>&1; then
6204 direntrytype="$guess2"
6205 echo "Your directory entries seem to be $direntrytype." >&4
6207 echo "I don't recognize your system's directory entries." >&4
6208 rp="What type is used for directory entries on this system?"
6216 : see if the directory entry stores field length
6218 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6219 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
6220 echo "Good, your directory entry keeps length information in d_namlen." >&4
6223 echo "Your directory entry does not know about the d_namlen field." >&4
6230 : see if dlerror exists
6233 set dlerror d_dlerror
6237 : see if dlfcn is available
6245 On a few systems, the dynamically loaded modules that perl generates and uses
6246 will need a different extension then shared libs. The default will probably
6254 rp='What is the extension of dynamically loaded modules'
6263 : Check if dlsym need a leading underscore
6269 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
6270 $cat >dyna.c <<'EOM'
6279 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
6281 #include <sys/types.h>
6295 int mode = RTLD_LAZY ;
6297 handle = dlopen("./dyna.$dlext", mode) ;
6298 if (handle == NULL) {
6303 symbol = dlsym(handle, "fred") ;
6304 if (symbol == NULL) {
6305 /* try putting a leading underscore */
6306 symbol = dlsym(handle, "_fred") ;
6307 if (symbol == NULL) {
6320 : Call the object file tmp-dyna.o in case dlext=o.
6321 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
6322 mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6323 $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6324 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
6327 1) echo "Test program failed using dlopen." >&4
6328 echo "Perhaps you should not use dynamic loading." >&4;;
6329 2) echo "Test program failed using dlsym." >&4
6330 echo "Perhaps you should not use dynamic loading." >&4;;
6331 3) echo "dlsym needs a leading underscore" >&4
6333 4) echo "dlsym doesn't need a leading underscore." >&4;;
6336 echo "I can't compile and run the test program." >&4
6341 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
6346 : see if dup2 exists
6350 : Locate the flags for 'open()'
6352 $cat >open3.c <<'EOCP'
6353 #include <sys/types.h>
6358 #include <sys/file.h>
6369 : check sys/file.h first to get FREAD on Sun
6370 if $test `./findhdr sys/file.h` && \
6371 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
6373 echo "<sys/file.h> defines the O_* constants..." >&4
6375 echo "and you have the 3 argument form of open()." >&4
6378 echo "but not the 3 argument form of open(). Oh, well." >&4
6381 elif $test `./findhdr fcntl.h` && \
6382 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
6384 echo "<fcntl.h> defines the O_* constants..." >&4
6386 echo "and you have the 3 argument form of open()." >&4
6389 echo "but not the 3 argument form of open(). Oh, well." >&4
6394 echo "I can't find the O_* constant definitions! You got problems." >&4
6400 : check for non-blocking I/O stuff
6401 case "$h_sysfile" in
6402 true) echo "#include <sys/file.h>" > head.c;;
6405 true) echo "#include <fcntl.h>" > head.c;;
6406 *) echo "#include <sys/fcntl.h>" > head.c;;
6411 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
6412 case "$o_nonblock" in
6415 $cat >>try.c <<'EOCP'
6418 printf("O_NONBLOCK\n");
6422 printf("O_NDELAY\n");
6426 printf("FNDELAY\n");
6432 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6434 case "$o_nonblock" in
6435 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
6436 *) echo "Seems like we can use $o_nonblock.";;
6439 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
6442 *) echo "Using $hint value $o_nonblock.";;
6444 $rm -f try try.* .out core
6447 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
6453 #include <sys/types.h>
6455 #define MY_O_NONBLOCK $o_nonblock
6457 $signal_t blech(x) int x; { exit(3); }
6459 $cat >> try.c <<'EOCP'
6467 pipe(pd); /* Down: child -> parent */
6468 pipe(pu); /* Up: parent -> child */
6471 close(pd[1]); /* Parent reads from pd[0] */
6472 close(pu[0]); /* Parent writes (blocking) to pu[1] */
6473 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
6475 signal(SIGALRM, blech);
6477 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
6479 sprintf(string, "%d\n", ret);
6480 write(2, string, strlen(string));
6483 if (errno == EAGAIN) {
6489 if (errno == EWOULDBLOCK)
6490 printf("EWOULDBLOCK\n");
6493 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
6494 sleep(2); /* Give it time to close our pipe */
6496 ret = read(pd[0], buf, 1); /* Should read EOF */
6498 sprintf(string, "%d\n", ret);
6499 write(3, string, strlen(string));
6503 close(pd[0]); /* We write to pd[1] */
6504 close(pu[1]); /* We read from pu[0] */
6505 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
6506 close(pd[1]); /* Pipe pd is now fully closed! */
6507 exit(0); /* Bye bye, thank you for playing! */
6510 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6511 echo "$startsh" >mtry
6512 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
6514 ./mtry >/dev/null 2>&1
6516 0) eagain=`$cat try.out`;;
6517 1) echo "Could not perform non-blocking setting!";;
6518 2) echo "I did a successful read() for something that was not there!";;
6519 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
6520 *) echo "Something terribly wrong happened during testing.";;
6522 rd_nodata=`$cat try.ret`
6523 echo "A read() system call with no data present returns $rd_nodata."
6524 case "$rd_nodata" in
6527 echo "(That's peculiar, fixing that to be -1.)"
6533 echo "Forcing errno EAGAIN on read() with no data available."
6537 echo "Your read() sets errno to $eagain when no data is available."
6540 status=`$cat try.err`
6542 0) echo "And it correctly returns 0 to signal EOF.";;
6543 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
6544 *) echo "However, your read() returns '$status' on EOF??";;
6547 if test "$status" = "$rd_nodata"; then
6548 echo "WARNING: you can't distinguish between EOF and no data!"
6552 echo "I can't compile the test program--assuming errno EAGAIN will do."
6559 echo "Using $hint value $eagain."
6560 echo "Your read() returns $rd_nodata when no data is present."
6561 case "$d_eofnblk" in
6562 "$define") echo "And you can see EOF because read() returns 0.";;
6563 "$undef") echo "But you can't see EOF status from read() returned value.";;
6565 echo "(Assuming you can't see EOF status from read anyway.)"
6571 $rm -f try try.* .out core head.c mtry
6573 : see if fchmod exists
6577 : see if fchown exists
6581 : see if this is an fcntl system
6585 : see if fgetpos exists
6586 set fgetpos d_fgetpos
6589 : see if flock exists
6593 : see if fork exists
6597 : see if pathconf exists
6598 set pathconf d_pathconf
6601 : see if fpathconf exists
6602 set fpathconf d_fpathconf
6605 : see if fsetpos exists
6606 set fsetpos d_fsetpos
6609 : see if gethostent exists
6610 set gethostent d_gethent
6613 : see if getlogin exists
6614 set getlogin d_getlogin
6617 : see if getpgid exists
6618 set getpgid d_getpgid
6621 : see if getpgrp2 exists
6622 set getpgrp2 d_getpgrp2
6625 : see if getppid exists
6626 set getppid d_getppid
6629 : see if getpriority exists
6630 set getpriority d_getprior
6633 : see if gettimeofday or ftime exists
6634 set gettimeofday d_gettimeod
6636 case "$d_gettimeod" in
6642 val="$undef"; set d_ftime; eval $setvar
6645 case "$d_gettimeod$d_ftime" in
6648 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
6652 : see if this is a netinet/in.h or sys/in.h system
6653 set netinet/in.h i_niin sys/in.h i_sysin
6656 : see if htonl --and friends-- exists
6661 : Maybe they are macros.
6666 #include <sys/types.h>
6667 #$i_niin I_NETINET_IN
6670 #include <netinet/in.h>
6676 printf("Defined as a macro.");
6679 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
6680 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
6682 echo "But it seems to be defined as a macro." >&4
6690 : see which of string.h or strings.h is needed
6692 strings=`./findhdr string.h`
6693 if $test "$strings" && $test -r "$strings"; then
6694 echo "Using <string.h> instead of <strings.h>." >&4
6698 strings=`./findhdr strings.h`
6699 if $test "$strings" && $test -r "$strings"; then
6700 echo "Using <strings.h> instead of <string.h>." >&4
6702 echo "No string header found -- You'll surely have problems." >&4
6708 "$undef") strings=`./findhdr strings.h`;;
6709 *) strings=`./findhdr string.h`;;
6714 if set index val -f; eval $csym; $val; then
6715 if set strchr val -f d_strchr; eval $csym; $val; then
6716 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6719 echo "strchr() found." >&4
6723 echo "index() found." >&4
6728 echo "index() found." >&4
6731 if set strchr val -f d_strchr; eval $csym; $val; then
6734 echo "strchr() found." >&4
6736 echo "No index() or strchr() found!" >&4
6741 set d_strchr; eval $setvar
6743 set d_index; eval $setvar
6745 : check whether inet_aton exists
6746 set inet_aton d_inetaton
6751 $cat >isascii.c <<'EOCP'
6762 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6763 echo "isascii() found." >&4
6766 echo "isascii() NOT found." >&4
6773 : see if killpg exists
6777 : see if link exists
6781 : see if localeconv exists
6782 set localeconv d_locconv
6785 : see if lockf exists
6789 : see if lstat exists
6793 : see if mblen exists
6797 : see if mbstowcs exists
6798 set mbstowcs d_mbstowcs
6801 : see if mbtowc exists
6805 : see if memcmp exists
6809 : see if memcpy exists
6813 : see if memmove exists
6814 set memmove d_memmove
6817 : see if memset exists
6821 : see if mkdir exists
6825 : see if mkfifo exists
6829 : see if mktime exists
6833 : see if msgctl exists
6837 : see if msgget exists
6841 : see if msgsnd exists
6845 : see if msgrcv exists
6849 : see how much of the 'msg*(2)' library is present.
6852 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6853 *"$undef"*) h_msg=false;;
6855 : we could also check for sys/ipc.h ...
6856 if $h_msg && $test `./findhdr sys/msg.h`; then
6857 echo "You have the full msg*(2) library." >&4
6860 echo "You don't have the full msg*(2) library." >&4
6866 : see if this is a malloc.h system
6867 set malloc.h i_malloc
6870 : see if stdlib is available
6871 set stdlib.h i_stdlib
6874 : determine which malloc to compile in
6876 case "$usemymalloc" in
6877 ''|y*|true) dflt='y' ;;
6878 n*|false) dflt='n' ;;
6879 *) dflt="$usemymalloc" ;;
6881 rp="Do you wish to attempt to use the malloc that comes with $package?"
6887 mallocsrc='malloc.c'
6888 mallocobj='malloc.o'
6889 d_mymalloc="$define"
6892 : Remove malloc from list of libraries to use
6893 echo "Removing unneeded -lmalloc from library list" >&4
6894 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6897 echo "libs = $libs" >&4
6909 : compute the return types of malloc and free
6911 $cat >malloc.c <<END
6915 #include <sys/types.h>
6929 case "$malloctype" in
6931 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6938 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6942 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6949 echo "Your system uses $freetype free(), it would seem." >&4
6951 : see if nice exists
6955 : see if pause exists
6959 : see if pipe exists
6963 : see if poll exists
6967 : see if this is a pwd.h system
6973 xxx=`./findhdr pwd.h`
6974 $cppstdin $cppflags $cppminus < $xxx >$$.h
6976 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6984 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
6992 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
7000 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
7008 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
7016 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
7028 set d_pwquota; eval $setvar
7029 set d_pwage; eval $setvar
7030 set d_pwchange; eval $setvar
7031 set d_pwclass; eval $setvar
7032 set d_pwexpire; eval $setvar
7033 set d_pwcomment; eval $setvar
7037 : see if readdir and friends exist
7038 set readdir d_readdir
7040 set seekdir d_seekdir
7042 set telldir d_telldir
7044 set rewinddir d_rewinddir
7047 : see if readlink exists
7048 set readlink d_readlink
7051 : see if rename exists
7055 : see if rmdir exists
7059 : see if memory.h is available.
7064 : See if it conflicts with string.h
7070 $cppstdin $cppflags $cppminus < $strings > mem.h
7071 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
7073 echo "We won't be including <memory.h>."
7083 : can bcopy handle overlapping blocks?
7088 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
7095 $cat >>foo.c <<'EOCP'
7099 # include <memory.h>
7102 # include <stdlib.h>
7105 # include <string.h>
7107 # include <strings.h>
7110 # include <unistd.h> /* Needed for NetBSD */
7114 char buf[128], abc[128];
7120 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7121 try to store the string in read-only memory. */
7122 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
7124 for (align = 7; align >= 0; align--) {
7125 for (len = 36; len; len--) {
7128 for (off = 1; off <= len; off++) {
7129 bcopy(b, b+off, len);
7130 bcopy(b+off, b, len);
7131 if (bcmp(b, abc, len))
7139 if $cc $optimize $ccflags $ldflags foo.c \
7140 -o safebcpy $libs >/dev/null 2>&1; then
7141 if ./safebcpy 2>/dev/null; then
7145 echo "It can't, sorry."
7146 case "$d_memmove" in
7147 "$define") echo "But that's Ok since you have memmove()." ;;
7151 echo "(I can't compile the test program, so we'll assume not...)"
7152 case "$d_memmove" in
7153 "$define") echo "But that's Ok since you have memmove()." ;;
7158 $rm -f foo.* safebcpy core
7162 : can memcpy handle overlapping blocks?
7167 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
7174 $cat >>foo.c <<'EOCP'
7178 # include <memory.h>
7181 # include <stdlib.h>
7184 # include <string.h>
7186 # include <strings.h>
7189 # include <unistd.h> /* Needed for NetBSD */
7193 char buf[128], abc[128];
7199 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7200 try to store the string in read-only memory. */
7201 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
7203 for (align = 7; align >= 0; align--) {
7204 for (len = 36; len; len--) {
7206 memcpy(b, abc, len);
7207 for (off = 1; off <= len; off++) {
7208 memcpy(b+off, b, len);
7209 memcpy(b, b+off, len);
7210 if (memcmp(b, abc, len))
7218 if $cc $optimize $ccflags $ldflags foo.c \
7219 -o safemcpy $libs >/dev/null 2>&1; then
7220 if ./safemcpy 2>/dev/null; then
7224 echo "It can't, sorry."
7225 case "$d_memmove" in
7226 "$define") echo "But that's Ok since you have memmove()." ;;
7230 echo "(I can't compile the test program, so we'll assume not...)"
7231 case "$d_memmove" in
7232 "$define") echo "But that's Ok since you have memmove()." ;;
7237 $rm -f foo.* safemcpy core
7241 : can memcmp be trusted to compare relative magnitude?
7246 echo "Checking to see if your memcmp() can compare relative magnitude..." >&4
7253 $cat >>foo.c <<'EOCP'
7257 # include <memory.h>
7260 # include <stdlib.h>
7263 # include <string.h>
7265 # include <strings.h>
7268 # include <unistd.h> /* Needed for NetBSD */
7274 if ((a < b) && memcmp(&a, &b, 1) < 0)
7279 if $cc $optimize $ccflags $ldflags foo.c \
7280 -o sanemcmp $libs >/dev/null 2>&1; then
7281 if ./sanemcmp 2>/dev/null; then
7285 echo "No, it can't (it uses signed chars)."
7288 echo "(I can't compile the test program, so we'll assume not...)"
7292 $rm -f foo.* sanemcmp core
7296 : see if select exists
7300 : see if semctl exists
7304 : see if semget exists
7308 : see if semop exists
7312 : see how much of the 'sem*(2)' library is present.
7315 case "$d_semctl$d_semget$d_semop" in
7316 *"$undef"*) h_sem=false;;
7318 : we could also check for sys/ipc.h ...
7319 if $h_sem && $test `./findhdr sys/sem.h`; then
7320 echo "You have the full sem*(2) library." >&4
7323 echo "You don't have the full sem*(2) library." >&4
7329 : see if setegid exists
7330 set setegid d_setegid
7333 : see if seteuid exists
7334 set seteuid d_seteuid
7337 : see if setlinebuf exists
7338 set setlinebuf d_setlinebuf
7341 : see if setlocale exists
7342 set setlocale d_setlocale
7345 : see if setpgid exists
7346 set setpgid d_setpgid
7349 : see if setpgrp2 exists
7350 set setpgrp2 d_setpgrp2
7353 : see if setpriority exists
7354 set setpriority d_setprior
7357 : see if setregid exists
7358 set setregid d_setregid
7360 set setresgid d_setresgid
7363 : see if setreuid exists
7364 set setreuid d_setreuid
7366 set setresuid d_setresuid
7369 : see if setrgid exists
7370 set setrgid d_setrgid
7373 : see if setruid exists
7374 set setruid d_setruid
7377 : see if setsid exists
7381 : see if sfio.h is available
7386 : see if sfio library is available
7397 : Ok, but do we want to use it.
7401 true|$define|[yY]*) dflt='y';;
7404 echo "$package can use the sfio library, but it is experimental."
7405 rp="You seem to have sfio available, do you want to try using it?"
7409 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
7411 : Remove sfio from list of libraries to use
7412 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
7415 echo "libs = $libs" >&4
7419 *) case "$usesfio" in
7421 echo "Sorry, cannot find sfio on this machine" >&4
7422 echo "Ignoring your setting of usesfio=$usesfio" >&4
7430 $define) usesfio='true';;
7431 *) usesfio='false';;
7434 : see if shmctl exists
7438 : see if shmget exists
7442 : see if shmat exists
7445 : see what shmat returns
7448 $cat >shmat.c <<'END'
7449 #include <sys/shm.h>
7452 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
7457 echo "and it returns ($shmattype)." >&4
7458 : see if a prototype for shmat is available
7459 xxx=`./findhdr sys/shm.h`
7460 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
7461 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
7472 set d_shmatprototype
7475 : see if shmdt exists
7479 : see how much of the 'shm*(2)' library is present.
7482 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
7483 *"$undef"*) h_shm=false;;
7485 : we could also check for sys/ipc.h ...
7486 if $h_shm && $test `./findhdr sys/shm.h`; then
7487 echo "You have the full shm*(2) library." >&4
7490 echo "You don't have the full shm*(2) library." >&4
7497 : see if we have sigaction
7498 if set sigaction val -f d_sigaction; eval $csym; $val; then
7499 echo 'sigaction() found.' >&4
7502 echo 'sigaction NOT found.' >&4
7506 $cat > set.c <<'EOP'
7507 /* Solaris 2.5_x86 with SunWorks Pro C 3.0.1 doesn't have a complete
7508 sigaction structure if compiled with cc -Xc. This compile test
7509 will fail then. <doughera@lafcol.lafayette.edu>
7512 #include <sys/types.h>
7516 struct sigaction act, oact;
7520 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
7523 echo "But you don't seem to have a useable struct sigaction." >&4
7526 set d_sigaction; eval $setvar
7527 $rm -f set set.o set.c
7529 : see if sigsetjmp exists
7531 case "$d_sigsetjmp" in
7539 if (sigsetjmp(env,1))
7546 if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then
7547 if ./set >/dev/null 2>&1; then
7548 echo "POSIX sigsetjmp found." >&4
7552 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
7558 echo "sigsetjmp not found." >&4
7562 *) val="$d_sigsetjmp"
7563 case "$d_sigsetjmp" in
7564 $define) echo "POSIX sigsetjmp found." >&4;;
7565 $undef) echo "sigsetjmp not found." >&4;;
7575 : see whether socket exists
7577 $echo $n "Hmm... $c" >&4
7578 if set socket val -f d_socket; eval $csym; $val; then
7579 echo "Looks like you have Berkeley networking support." >&4
7581 if set setsockopt val -f; eval $csym; $val; then
7584 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
7588 if $contains socklib libc.list >/dev/null 2>&1; then
7589 echo "Looks like you have Berkeley networking support." >&4
7591 : we will have to assume that it supports the 4.2 BSD interface
7594 echo "You don't have Berkeley networking in libc$lib_ext..." >&4
7595 if test -f /usr/lib/libnet$lib_ext; then
7596 ( (nm $nm_opt /usr/lib/libnet$lib_ext | eval $nm_extract) || \
7597 ar t /usr/lib/libnet$lib_ext) 2>/dev/null >> libc.list
7598 if $contains socket libc.list >/dev/null 2>&1; then
7599 echo "...but the Wollongong group seems to have hacked it in." >&4
7601 sockethdr="-I/usr/netinclude"
7603 if $contains setsockopt libc.list >/dev/null 2>&1; then
7606 echo "...using the old 4.1c interface, rather than 4.2" >&4
7610 echo "or even in libnet$lib_ext, which is peculiar." >&4
7615 echo "or anywhere else I see." >&4
7622 : see if socketpair exists
7623 set socketpair d_sockpair
7626 : see if stat knows about block sizes
7628 xxx=`./findhdr sys/stat.h`
7629 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
7630 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
7631 echo "Your stat() knows about block sizes." >&4
7634 echo "Your stat() doesn't know about block sizes." >&4
7638 echo "Your stat() doesn't know about block sizes." >&4
7644 : see if _ptr and _cnt from stdio act std
7646 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7647 echo "(Looks like you have stdio.h from Linux.)"
7648 case "$stdio_ptr" in
7649 '') stdio_ptr='((fp)->_IO_read_ptr)'
7652 *) ptr_lval=$d_stdio_ptr_lval;;
7654 case "$stdio_cnt" in
7655 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
7658 *) cnt_lval=$d_stdio_cnt_lval;;
7660 case "$stdio_base" in
7661 '') stdio_base='((fp)->_IO_read_base)';;
7663 case "$stdio_bufsiz" in
7664 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
7667 case "$stdio_ptr" in
7668 '') stdio_ptr='((fp)->_ptr)'
7671 *) ptr_lval=$d_stdio_ptr_lval;;
7673 case "$stdio_cnt" in
7674 '') stdio_cnt='((fp)->_cnt)'
7677 *) cnt_lval=$d_stdio_cnt_lval;;
7679 case "$stdio_base" in
7680 '') stdio_base='((fp)->_base)';;
7682 case "$stdio_bufsiz" in
7683 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
7686 : test whether _ptr and _cnt really work
7687 echo "Checking how std your stdio is..." >&4
7690 #define FILE_ptr(fp) $stdio_ptr
7691 #define FILE_cnt(fp) $stdio_cnt
7693 FILE *fp = fopen("try.c", "r");
7696 18 <= FILE_cnt(fp) &&
7697 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
7704 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
7706 echo "Your stdio acts pretty std."
7709 echo "Your stdio isn't very std."
7712 echo "Your stdio doesn't appear very std."
7718 : Can _ptr be used as an lvalue?
7719 case "$d_stdstdio$ptr_lval" in
7720 $define$define) val=$define ;;
7723 set d_stdio_ptr_lval
7726 : Can _cnt be used as an lvalue?
7727 case "$d_stdstdio$cnt_lval" in
7728 $define$define) val=$define ;;
7731 set d_stdio_cnt_lval
7735 : see if _base is also standard
7737 case "$d_stdstdio" in
7741 #define FILE_base(fp) $stdio_base
7742 #define FILE_bufsiz(fp) $stdio_bufsiz
7744 FILE *fp = fopen("try.c", "r");
7747 19 <= FILE_bufsiz(fp) &&
7748 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
7754 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
7756 echo "And its _base field acts std."
7759 echo "But its _base field isn't std."
7762 echo "However, it seems to be lacking the _base field."
7770 : see if strcoll exists
7771 set strcoll d_strcoll
7774 : check for structure copying
7776 echo "Checking to see if your C compiler can copy structs..." >&4
7777 $cat >try.c <<'EOCP'
7787 if $cc -c try.c >/dev/null 2>&1 ; then
7792 echo "Nope, it can't."
7798 : see if strerror and/or sys_errlist[] exist
7800 if set strerror val -f d_strerror; eval $csym; $val; then
7801 echo 'strerror() found.' >&4
7802 d_strerror="$define"
7803 d_strerrm='strerror(e)'
7804 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7805 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
7806 d_syserrlst="$define"
7808 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
7809 d_syserrlst="$undef"
7811 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
7812 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
7813 echo 'strerror() found in string header.' >&4
7814 d_strerror="$define"
7815 d_strerrm='strerror(e)'
7816 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7817 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
7818 d_syserrlst="$define"
7820 echo "(You don't appear to have any sys_errlist[], how can this be?)"
7821 d_syserrlst="$undef"
7823 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7824 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
7826 d_syserrlst="$define"
7827 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
7829 echo 'strerror() and sys_errlist[] NOT found.' >&4
7831 d_syserrlst="$undef"
7832 d_strerrm='"unknown"'
7835 : see if strtod exists
7839 : see if strtol exists
7843 : see if strtoul exists
7844 set strtoul d_strtoul
7847 : see if strxfrm exists
7848 set strxfrm d_strxfrm
7851 : see if symlink exists
7852 set symlink d_symlink
7855 : see if syscall exists
7856 set syscall d_syscall
7859 : see if sysconf exists
7860 set sysconf d_sysconf
7863 : see if system exists
7867 : see if tcgetpgrp exists
7868 set tcgetpgrp d_tcgetpgrp
7871 : see if tcsetpgrp exists
7872 set tcsetpgrp d_tcsetpgrp
7875 : define an is-a-typedef? function
7876 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
7878 "") inclist="sys/types.h";;
7880 eval "varval=\$$var";
7884 for inc in $inclist; do
7885 echo "#include <$inc>" >>temp.c;
7887 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
7888 if $contains $type temp.E >/dev/null 2>&1; then
7894 *) eval "$var=\$varval";;
7897 : see if this is a sys/times.h system
7898 set sys/times.h i_systimes
7901 : see if times exists
7903 if set times val -f d_times; eval $csym; $val; then
7904 echo 'times() found.' >&4
7907 case "$i_systimes" in
7908 "$define") inc='sys/times.h';;
7910 set clock_t clocktype long stdio.h sys/types.h $inc
7914 rp="What type is returned by times() on this system?"
7918 echo 'times() NOT found, hope that will do.' >&4
7923 : see if truncate exists
7924 set truncate d_truncate
7927 : see if tzname[] exists
7929 if set tzname val -a d_tzname; eval $csym; $val; then
7931 echo 'tzname[] found.' >&4
7934 echo 'tzname[] NOT found.' >&4
7939 : see if umask exists
7943 : see how we will look up host name
7946 : dummy stub to allow use of elif
7947 elif set uname val -f d_uname; eval $csym; $val; then
7950 uname() was found, but you're running xenix, and older versions of xenix
7951 have a broken uname(). If you don't really know whether your xenix is old
7952 enough to have a broken system call, use the default answer.
7959 rp='Is your uname() broken?'
7962 n*) d_uname="$define"; call=uname;;
7965 echo 'uname() found.' >&4
7970 case "$d_gethname" in
7971 '') d_gethname="$undef";;
7974 '') d_uname="$undef";;
7976 case "$d_phostname" in
7977 '') d_phostname="$undef";;
7980 : backward compatibility for d_hvfork
7981 if test X$d_hvfork != X; then
7985 : see if there is a vfork
7990 : Ok, but do we want to use it. vfork is reportedly unreliable in
7991 : perl on Solaris 2.x, and probably elsewhere.
7999 rp="Some systems have problems with vfork(). Do you want to use it?"
8004 echo "Ok, we won't use vfork()."
8013 $define) usevfork='true';;
8014 *) usevfork='false';;
8017 : see if this is an sysdir system
8018 set sys/dir.h i_sysdir
8021 : see if this is an sysndir system
8022 set sys/ndir.h i_sysndir
8025 : see if closedir exists
8026 set closedir d_closedir
8029 case "$d_closedir" in
8032 echo "Checking whether closedir() returns a status..." >&4
8033 cat > closedir.c <<EOM
8034 #$i_dirent I_DIRENT /**/
8035 #$i_sysdir I_SYS_DIR /**/
8036 #$i_sysndir I_SYS_NDIR /**/
8038 #if defined(I_DIRENT)
8040 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
8041 #include <sys/dir.h>
8045 #include <sys/ndir.h>
8049 #include <ndir.h> /* may be wrong in the future */
8051 #include <sys/dir.h>
8056 int main() { return closedir(opendir(".")); }
8058 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
8059 if ./closedir > /dev/null 2>&1 ; then
8060 echo "Yes, it does."
8063 echo "No, it doesn't."
8067 echo "(I can't seem to compile the test program--assuming it doesn't)"
8078 : check for volatile keyword
8080 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
8081 $cat >try.c <<'EOCP'
8084 typedef struct _goo_struct goo_struct;
8085 goo_struct * volatile goo = ((goo_struct *)0);
8086 struct _goo_struct {
8091 typedef unsigned short foo_t;
8094 volatile foo_t blech;
8098 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
8100 echo "Yup, it does."
8103 echo "Nope, it doesn't."
8109 : see if there is a wait4
8113 : see if waitpid exists
8114 set waitpid d_waitpid
8117 : see if wcstombs exists
8118 set wcstombs d_wcstombs
8121 : see if wctomb exists
8125 : preserve RCS keywords in files with variable substitution, grrr
8130 Revision='$Revision'
8132 : check for alignment requirements
8134 case "$alignbytes" in
8135 '') echo "Checking alignment constraints..." >&4
8136 $cat >try.c <<'EOCP'
8143 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
8146 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
8150 echo "(I can't seem to compile the test program...)"
8153 *) dflt="$alignbytes"
8156 rp="Doubles must be aligned on a how-many-byte boundary?"
8161 : check for ordering of bytes in a long
8162 case "$byteorder" in
8166 In the following, larger digits indicate more significance. A big-endian
8167 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
8168 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
8169 machines may have weird orders like 3412. A Cray will report 87654321. If
8170 the test program works the default is probably right.
8171 I'm now running the test program...
8173 $cat >try.c <<'EOCP'
8180 char c[sizeof(long)];
8183 if (sizeof(long) > 4)
8184 u.l = (0x08070605L << 32) | 0x04030201L;
8187 for (i = 0; i < sizeof(long); i++)
8188 printf("%c", u.c[i]+'0');
8194 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
8197 [1-4][1-4][1-4][1-4]|12345678|87654321)
8198 echo "(The test program ran ok.)"
8199 echo "byteorder=$dflt"
8202 ????|????????) echo "(The test program ran ok.)" ;;
8203 *) echo "(The test program didn't run right for some reason.)" ;;
8208 (I can't seem to compile the test program. Guessing big-endian...)
8211 case "$xxx_prompt" in
8213 rp="What is the order of bytes in a long?"
8224 : how do we catenate cpp tokens here?
8226 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
8227 $cat >cpp_stuff.c <<'EOCP'
8228 #define RCAT(a,b)a/**/b
8229 #define ACAT(a,b)a ## b
8233 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
8234 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
8235 echo "Oh! Smells like ANSI's been here."
8236 echo "We can catify or stringify, separately or together!"
8238 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
8239 echo "Ah, yes! The good old days!"
8240 echo "However, in the good old days we don't know how to stringify and"
8241 echo "catify at the same time."
8245 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
8246 to have to edit the values of CAT[2-5] in config.h...
8248 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
8252 : see if this is a db.h system
8258 : Check db version. We can not use version 2.
8260 echo "Checking Berkeley DB version ..." >&4
8266 #include <sys/types.h>
8271 #ifdef DB_VERSION_MAJOR /* DB version >= 2: not yet. */
8272 printf("You have Berkeley DB Version %d.%d\n",
8273 DB_VERSION_MAJOR, DB_VERSION_MINOR);
8274 printf("Perl currently only supports up to version 1.86.\n");
8277 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
8278 exit(0); /* DB version < 2: the coast is clear. */
8280 exit(1); /* <db.h> not Berkeley DB? */
8285 if $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try; then
8286 echo 'Looks OK. (Perl supports up to version 1.86).' >&4
8288 echo "I can't use your Berkeley DB. I'll disable it." >&4
8292 : Remove db from list of libraries to use
8293 echo "Removing unusable -ldb from library list" >&4
8294 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
8297 echo "libs = $libs" >&4
8307 : Check the return type needed for hash
8309 echo "Checking return type needed for hash for Berkeley DB ..." >&4
8315 #include <sys/types.h>
8317 u_int32_t hash_cb (ptr, size)
8325 info.hash = hash_cb;
8328 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8329 if $contains warning try.out >>/dev/null 2>&1 ; then
8332 db_hashtype='u_int32_t'
8335 : XXX Maybe we should just give up here.
8336 db_hashtype=u_int32_t
8337 echo "Help: I can't seem to compile the db test program." >&4
8338 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
8341 echo "Your version of Berkeley DB uses $db_hashtype for hash."
8343 *) db_hashtype=u_int32_t
8349 : Check the return type needed for prefix
8351 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
8357 #include <sys/types.h>
8359 size_t prefix_cb (key1, key2)
8367 info.prefix = prefix_cb;
8370 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8371 if $contains warning try.out >>/dev/null 2>&1 ; then
8374 db_prefixtype='size_t'
8377 db_prefixtype='size_t'
8378 : XXX Maybe we should just give up here.
8379 echo "Help: I can't seem to compile the db test program." >&4
8380 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
8383 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
8385 *) db_prefixtype='size_t'
8389 : check for void type
8391 echo "Checking to see how well your C compiler groks the void type..." >&4
8394 Support flag bits are:
8395 1: basic void declarations.
8396 2: arrays of pointers to functions returning void.
8397 4: operations between pointers to and addresses of void functions.
8398 8: generic void pointers.
8401 case "$voidflags" in
8403 $cat >try.c <<'EOCP'
8409 extern void moo(); /* function returning void */
8410 void (*goo)(); /* ptr to func returning void */
8412 void *hue; /* generic ptr */
8427 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
8428 voidflags=$defvoidused
8429 echo "It appears to support void to the level $package wants ($defvoidused)."
8430 if $contains warning .out >/dev/null 2>&1; then
8431 echo "However, you might get some warnings that look like this:"
8435 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
8436 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
8437 echo "It supports 1..."
8438 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
8439 echo "It also supports 2..."
8440 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
8442 echo "And it supports 4 but not 8 definitely."
8444 echo "It doesn't support 4..."
8445 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
8447 echo "But it supports 8."
8450 echo "Neither does it support 8."
8454 echo "It does not support 2..."
8455 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
8457 echo "But it supports 4 and 8."
8459 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
8461 echo "And it supports 4 but has not heard about 8."
8463 echo "However it supports 8 but not 4."
8468 echo "There is no support at all for void."
8473 : Only prompt user if support does not match the level we want
8474 case "$voidflags" in
8478 rp="Your void support flags add up to what?"
8485 : see what type file positions are declared as in the library
8486 set fpos_t fpostype long stdio.h sys/types.h
8490 rp="What is the type for file position used by fsetpos()?"
8494 : Store the full pathname to the sed program for use in the C program
8497 : see what type gids are declared as in the kernel
8498 set gid_t gidtype xxx stdio.h sys/types.h
8502 xxx=`./findhdr sys/user.h`
8503 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
8505 unsigned) dflt="$1 $2" ;;
8509 *) dflt="$gidtype";;
8512 rp="What is the type for group ids returned by getgid()?"
8516 : see if getgroups exists
8517 set getgroups d_getgrps
8520 : see if setgroups exists
8521 set setgroups d_setgrps
8524 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
8526 case "$d_getgrps$d_setgrps" in
8528 case "$groupstype" in
8529 '') dflt="$gidtype" ;;
8530 *) dflt="$groupstype" ;;
8533 What is the type of the second argument to getgroups() and setgroups()?
8534 Usually this is the same as group ids, $gidtype, but not always.
8537 rp='What type is the second argument to getgroups() and setgroups()?'
8541 *) groupstype="$gidtype";;
8544 : see what type lseek is declared as in the kernel
8545 set off_t lseektype long stdio.h sys/types.h
8549 rp="What type is lseek's offset on this system declared as?"
8556 make=`./loc make make $pth`
8558 /*) echo make is in $make. ;;
8559 ?:[\\/]*) echo make is in $make. ;;
8560 *) echo "I don't know where 'make' is, and my life depends on it." >&4
8561 echo "Go find a make program or fix your PATH setting!" >&4
8566 *) echo make is in $make. ;;
8569 $echo $n "Checking if your $make program sets \$(MAKE)... $c" >&4
8570 case "$make_set_make" in
8572 $sed 's/^X //' > testmake.mak << 'EOF'
8574 X @echo 'ac_maketemp="$(MAKE)"'
8576 : GNU make sometimes prints "make[1]: Entering...", which would confuse us.
8577 case "`$make -f testmake.mak 2>/dev/null`" in
8578 *ac_maketemp=*) make_set_make='#' ;;
8579 *) make_set_make="MAKE=$make" ;;
8584 case "$make_set_make" in
8585 '#') echo "Yup, it does." >&4 ;;
8586 *) echo "Nope, it doesn't." >&4 ;;
8589 : see what type is used for mode_t
8590 set mode_t modetype int stdio.h sys/types.h
8594 rp="What type is used for file modes?"
8598 : locate the preferred pager for this system
8612 '') dflt=/usr/ucb/more;;
8619 rp='What pager is used on your system?'
8623 : Cruising for prototypes
8625 echo "Checking out function prototypes..." >&4
8626 $cat >prototype.c <<'EOCP'
8627 main(int argc, char *argv[]) {
8630 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
8631 echo "Your C compiler appears to support function prototypes."
8634 echo "Your C compiler doesn't seem to understand function prototypes."
8641 : check for size of random number generator
8645 echo "Checking to see how many bits your rand function produces..." >&4
8651 # include <unistd.h>
8654 # include <stdlib.h>
8657 $cat >>try.c <<'EOCP'
8661 register unsigned long tmp;
8662 register unsigned long max = 0L;
8664 for (i = 1000; i; i--) {
8665 tmp = (unsigned long)rand();
8666 if (tmp > max) max = tmp;
8668 for (i = 0; max; i++)
8674 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 ; then
8678 echo "(I can't seem to compile the test program...)"
8685 rp='How many bits does your rand() function produce?'
8688 $rm -f try.c try.o try
8690 : see if ar generates random libraries by itself
8692 echo "Checking how to generate random libraries on your machine..." >&4
8693 echo 'int bar1() { return bar2(); }' > bar1.c
8694 echo 'int bar2() { return 2; }' > bar2.c
8695 $cat > foo.c <<'EOP'
8696 main() { printf("%d\n", bar1()); exit(0); }
8698 $cc $ccflags -c bar1.c >/dev/null 2>&1
8699 $cc $ccflags -c bar2.c >/dev/null 2>&1
8700 $cc $ccflags -c foo.c >/dev/null 2>&1
8701 ar rc bar$lib_ext bar2.o bar1.o >/dev/null 2>&1
8702 if $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8703 ./foobar >/dev/null 2>&1; then
8704 echo "ar appears to generate random libraries itself."
8707 elif ar ts bar$lib_ext >/dev/null 2>&1 &&
8708 $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8709 ./foobar >/dev/null 2>&1; then
8710 echo "a table of contents needs to be added with 'ar ts'."
8717 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
8718 $test -f $ranlib || ranlib=''
8721 if $test -n "$ranlib"; then
8722 echo "your system has '$ranlib'; we'll use that."
8725 echo "your system doesn't seem to support random libraries"
8726 echo "so we'll use lorder and tsort to order the libraries."
8733 : see if sys/select.h has to be included
8734 set sys/select.h i_sysselct
8737 : see if we should include time.h, sys/time.h, or both
8739 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8740 $echo $n "I'm now running the test program...$c"
8741 $cat >try.c <<'EOCP'
8742 #include <sys/types.h>
8747 #ifdef SYSTIMEKERNEL
8750 #include <sys/time.h>
8753 #include <sys/select.h>
8762 struct timezone tzp;
8764 if (foo.tm_sec == foo.tm_sec)
8767 if (bar.tv_sec == bar.tv_sec)
8774 for s_timezone in '-DS_TIMEZONE' ''; do
8776 for s_timeval in '-DS_TIMEVAL' ''; do
8777 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8778 for i_time in '' '-DI_TIME'; do
8779 for i_systime in '-DI_SYSTIME' ''; do
8783 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
8784 try.c -o try >/dev/null 2>&1 ; then
8785 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8789 $echo $n "Succeeded with $flags$c"
8801 *SYSTIMEKERNEL*) i_systimek="$define"
8802 timeincl=`./findhdr sys/time.h`
8803 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8804 *) i_systimek="$undef";;
8807 *I_TIME*) i_time="$define"
8808 timeincl=`./findhdr time.h`" $timeincl"
8809 echo "We'll include <time.h>." >&4;;
8810 *) i_time="$undef";;
8813 *I_SYSTIME*) i_systime="$define"
8814 timeincl=`./findhdr sys/time.h`" $timeincl"
8815 echo "We'll include <sys/time.h>." >&4;;
8816 *) i_systime="$undef";;
8820 : check for fd_set items
8823 Checking to see how well your C compiler handles fd_set and friends ...
8825 $cat >fd_set.c <<EOCP
8826 #$i_systime I_SYS_TIME
8827 #$i_sysselct I_SYS_SELECT
8828 #$d_socket HAS_SOCKET
8829 #include <sys/types.h>
8831 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8834 #include <sys/time.h>
8837 #include <sys/select.h>
8846 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8853 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8854 d_fds_bits="$define"
8856 echo "Well, your system knows about the normal fd_set typedef..." >&4
8858 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8859 d_fd_macros="$define"
8862 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8864 d_fd_macros="$undef"
8868 Hmm, your compiler has some difficulty with fd_set. Checking further...
8870 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8873 echo "Well, your system has some sort of fd_set available..." >&4
8875 echo "and you have the normal fd_set macros." >&4
8876 d_fd_macros="$define"
8879 but not the normal fd_set macros! Gross! More work for me...
8881 d_fd_macros="$undef"
8884 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8887 d_fd_macros="$undef"
8893 : check for type of arguments to select. This will only really
8894 : work if the system supports prototypes and provides one for
8898 : Make initial guess
8899 case "$selecttype" in
8902 $define) xxx='fd_set *' ;;
8906 *) xxx="$selecttype"
8911 'fd_set *') yyy='int *' ;;
8912 'int *') yyy='fd_set *' ;;
8917 Checking to see what type of arguments are expected by select().
8920 #$i_systime I_SYS_TIME
8921 #$i_sysselct I_SYS_SELECT
8922 #$d_socket HAS_SOCKET
8923 #include <sys/types.h>
8925 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8928 #include <sys/time.h>
8931 #include <sys/select.h>
8936 Select_fd_set_t readfds;
8937 Select_fd_set_t writefds;
8938 Select_fd_set_t exceptfds;
8939 struct timeval timeout;
8940 select(width, readfds, writefds, exceptfds, &timeout);
8944 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
8946 echo "Your system uses $xxx for the arguments to select." >&4
8947 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
8949 echo "Your system uses $yyy for the arguments to select." >&4
8951 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
8958 *) selecttype='int *'
8962 : Trace out the files included by signal.h, then look for SIGxxx names.
8963 : Remove SIGARRAYSIZE used by HPUX.
8964 : Remove SIGTYP void lines used by OS2.
8965 xxx=`echo '#include <signal.h>' |
8966 $cppstdin $cppminus $cppflags 2>/dev/null |
8967 $grep '^[ ]*#.*include' |
8968 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
8969 : Check this list of files to be sure we have parsed the cpp output ok.
8970 : This will also avoid potentially non-existent files, such
8973 for xx in $xxx /dev/null ; do
8974 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
8976 : If we have found no files, at least try signal.h
8978 '') xxxfiles=`./findhdr signal.h` ;;
8981 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
8982 print substr($2, 4, 20)
8984 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8985 print substr($3, 4, 20)
8987 : Append some common names just in case the awk scan failed.
8988 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
8989 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
8990 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
8991 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
8992 : generate a few handy files for later
8993 $cat > signal.c <<'EOP'
8994 #include <sys/types.h>
8998 /* Strange style to avoid deeply-nested #if/#else/#endif */
9001 # define NSIG (_NSIG)
9007 # define NSIG (SIGMAX+1)
9013 # define NSIG (SIG_MAX+1)
9019 # define NSIG (MAXSIG+1)
9025 # define NSIG (MAX_SIG+1)
9030 # ifdef SIGARRAYSIZE
9031 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
9037 # define NSIG (_sys_nsig) /* Solaris 2.5 */
9041 /* Default to some arbitrary number that's big enough to get most
9042 of the common signals.
9048 printf("NSIG %d\n", NSIG);
9051 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
9053 printf "#ifdef SIG"; printf $1; printf "\n"
9054 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
9055 printf $1; printf ");\n"
9062 $cat >signal.awk <<'EOP'
9064 $1 ~ /^NSIG$/ { nsig = $2 }
9065 ($1 !~ /^NSIG$/) && (NF == 2) {
9066 if ($2 > maxsig) { maxsig = $2 }
9068 dup_name[ndups] = $1
9079 if (nsig == 0) { nsig = maxsig + 1 }
9080 for (n = 1; n < nsig; n++) {
9082 printf("%s %d\n", sig_name[n], sig_num[n])
9085 printf("NUM%d %d\n", n, n)
9088 for (n = 0; n < ndups; n++) {
9089 printf("%s %d\n", dup_name[n], dup_num[n])
9093 $cat >signal_cmd <<EOS
9095 $test -s signal.lst && exit 0
9096 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
9097 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
9099 echo "(I can't seem be able to compile the test program -- Guessing)"
9100 echo 'kill -l' >signal
9101 set X \`csh -f <signal\`
9105 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
9107 echo \$@ | $tr ' ' '\012' | \
9108 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
9110 $rm -f signal.c signal signal.o
9112 chmod a+x signal_cmd
9113 $eunicefix signal_cmd
9115 : generate list of signal names
9125 echo "Generating a list of signal names and numbers..." >&4
9127 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
9128 sig_name="ZERO $sig_name"
9129 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
9130 sig_num="0 $sig_num"
9133 echo "The following signals are available:"
9135 echo $sig_name | $awk \
9136 'BEGIN { linelen = 0 }
9138 for (i = 1; i <= NF; i++) {
9140 linelen = linelen + length(name)
9143 linelen = length(name)
9149 $rm -f signal signal.c signal.awk signal.lst signal_cmd
9151 : see what type is used for size_t
9152 set size_t sizetype 'unsigned int' stdio.h sys/types.h
9156 rp="What type is used for the length parameter for string functions?"
9160 : see what type is used for signed size_t
9161 set ssize_t ssizetype int stdio.h sys/types.h
9164 $cat > ssize.c <<EOM
9166 #include <sys/types.h>
9167 #define Size_t $sizetype
9168 #define SSize_t $dflt
9171 if (sizeof(Size_t) == sizeof(SSize_t))
9173 else if (sizeof(Size_t) == sizeof(int))
9182 # If $libs contains -lsfio, and sfio is mis-configured, then it
9183 # sometimes (apparently) runs and exits with a 0 status, but with no
9184 # output!. Thus we check with test -s whether we actually got any
9185 # output. I think it has to do with sfio's use of _exit vs. exit,
9186 # but I don't know for sure. --Andy Dougherty 1/27/97.
9187 if $cc $optimize $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 &&
9188 ./ssize > ssize.out 2>/dev/null && test -s ssize.out ; then
9189 ssizetype=`$cat ssize.out`
9190 echo "I'll be using $ssizetype for functions returning a byte count." >&4
9194 Help! I can't compile and run the ssize_t test program: please enlighten me!
9195 (This is probably a misconfiguration in your system or libraries, and
9196 you really ought to fix it. Still, I'll try anyway.)
9198 I need a type that is the same size as $sizetype, but is guaranteed to
9199 be signed. Common values are ssize_t, int and long.
9202 rp="What signed type is the same size as $sizetype?"
9206 $rm -f ssize ssize.[co] ssize.out
9208 : see what type of char stdio uses.
9210 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9211 echo "Your stdio uses unsigned chars." >&4
9212 stdchar="unsigned char"
9214 echo "Your stdio uses signed chars." >&4
9218 : see if time exists
9220 if set time val -f d_time; eval $csym; $val; then
9221 echo 'time() found.' >&4
9223 set time_t timetype long stdio.h sys/types.h
9227 rp="What type is returned by time() on this system?"
9231 echo 'time() not found, hope that will do.' >&4
9238 : see what type uids are declared as in the kernel
9239 set uid_t uidtype xxx stdio.h sys/types.h
9243 xxx=`./findhdr sys/user.h`
9244 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
9246 unsigned) dflt="$1 $2" ;;
9250 *) dflt="$uidtype";;
9253 rp="What is the type for user ids returned by getuid()?"
9257 : see if dbm.h is available
9258 : see if dbmclose exists
9259 set dbmclose d_dbmclose
9262 case "$d_dbmclose" in
9272 *) set rpcsvc/dbm.h i_rpcsvcdbm
9277 *) echo "We won't be including <dbm.h>"
9287 : see if this is a sys/file.h system
9292 : do we need to include sys/file.h ?
9298 echo "We'll be including <sys/file.h>." >&4
9301 echo "We won't be including <sys/file.h>." >&4
9311 : see if fcntl.h is there
9316 : see if we can include fcntl.h
9322 echo "We'll be including <fcntl.h>." >&4
9326 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
9328 echo "We won't be including <fcntl.h>." >&4
9340 : see if this is an grp system
9344 : see if locale.h is available
9345 set locale.h i_locale
9348 : see if this is a math.h system
9352 : see if ndbm.h is available
9357 : see if dbm_open exists
9358 set dbm_open d_dbm_open
9360 case "$d_dbm_open" in
9363 echo "We won't be including <ndbm.h>"
9372 : see if net/errno.h is available
9377 : Unfortunately, it causes problems on some systems. Arrgh.
9383 #include <net/errno.h>
9389 if $cc $ccflags -c try.c >/dev/null 2>&1; then
9390 echo "We'll be including <net/errno.h>." >&4
9392 echo "We won't be including <net/errno.h>." >&4
9401 : get C preprocessor symbols handy
9403 $echo $n "Hmm... $c"
9404 echo $al | $tr ' ' '\012' >Cppsym.know
9416 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
9418 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
9421 unknown="\$unknown \$sym"
9431 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
9433 exit 0; _ _ _ _\1\\ \1\\
9436 echo "exit 1; _ _ _" >>Cppsym\$\$
9437 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
9439 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
9445 $rm -f Cppsym\$\$ Cppsym2\$\$
9450 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
9452 : now check the C compiler for additional symbols
9458 for i in \`$cc -v -c tmp.c 2>&1\`
9461 -D*) echo "\$i" | $sed 's/^-D//';;
9462 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
9469 ./ccsym | $sort | $uniq >ccsym.raw
9470 $awk '/\=/ { print $0; next }
9471 { print $0"=1" }' ccsym.raw >ccsym.list
9472 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
9473 $comm -13 ccsym.true ccsym.list >ccsym.own
9474 $comm -12 ccsym.true ccsym.list >ccsym.com
9475 $comm -23 ccsym.true ccsym.list >ccsym.cpp
9478 if $test -z ccsym.raw; then
9479 echo "Your C compiler doesn't seem to define any symbol!" >&4
9481 echo "However, your C preprocessor defines the following ones:"
9484 if $test -s ccsym.com; then
9485 echo "Your C compiler and pre-processor define these symbols:"
9486 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
9489 $test "$silent" || sleep 1
9491 if $test -s ccsym.cpp; then
9492 $test "$also" && echo " "
9493 echo "Your C pre-processor ${also}defines the following $symbols:"
9494 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
9496 $test "$silent" || sleep 1
9498 if $test -s ccsym.own; then
9499 $test "$also" && echo " "
9500 echo "Your C compiler ${also}defines the following cpp variables:"
9501 $sed -e 's/\(.*\)=1/\1/' ccsym.own
9502 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
9503 $test "$silent" || sleep 1
9508 : see if this is a termio system
9512 if $test `./findhdr termios.h`; then
9513 set tcsetattr i_termios
9519 "$define") echo "You have POSIX termios.h... good!" >&4;;
9520 *) if ./Cppsym pyr; then
9521 case "`/bin/universe`" in
9522 ucb) if $test `./findhdr sgtty.h`; then
9524 echo "<sgtty.h> found." >&4
9526 echo "System is pyramid with BSD universe."
9527 echo "<sgtty.h> not found--you could have problems." >&4
9529 *) if $test `./findhdr termio.h`; then
9531 echo "<termio.h> found." >&4
9533 echo "System is pyramid with USG universe."
9534 echo "<termio.h> not found--you could have problems." >&4
9538 if $test `./findhdr termio.h`; then
9539 echo "<termio.h> found." >&4
9541 elif $test `./findhdr sgtty.h`; then
9542 echo "<sgtty.h> found." >&4
9545 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
9548 if $test `./findhdr sgtty.h`; then
9549 echo "<sgtty.h> found." >&4
9551 elif $test `./findhdr termio.h`; then
9552 echo "<termio.h> found." >&4
9555 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
9559 set i_termio; eval $setvar
9560 val=$val2; set i_sgtty; eval $setvar
9561 val=$val3; set i_termios; eval $setvar
9563 : see if stdarg is available
9565 if $test `./findhdr stdarg.h`; then
9566 echo "<stdarg.h> found." >&4
9569 echo "<stdarg.h> NOT found." >&4
9573 : see if varags is available
9575 if $test `./findhdr varargs.h`; then
9576 echo "<varargs.h> found." >&4
9578 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
9581 : set up the varargs testing programs
9582 $cat > varargs.c <<EOP
9587 #include <varargs.h>
9605 p = va_arg(ap, char *);
9610 $cat > varargs <<EOP
9612 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
9621 : now check which varargs header should be included
9626 if `./varargs I_STDARG`; then
9628 elif `./varargs I_VARARGS`; then
9633 if `./varargs I_VARARGS`; then
9640 echo "I could not find the definition for va_dcl... You have problems..." >&4
9641 val="$undef"; set i_stdarg; eval $setvar
9642 val="$undef"; set i_varargs; eval $setvar
9649 val="$define"; set i_stdarg; eval $setvar
9650 val="$undef"; set i_varargs; eval $setvar
9653 val="$undef"; set i_stdarg; eval $setvar
9654 val="$define"; set i_varargs; eval $setvar
9657 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
9661 : see if stddef is available
9662 set stddef.h i_stddef
9665 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
9666 set sys/filio.h i_sysfilio
9669 if $test `./findhdr sys/ioctl.h`; then
9671 echo '<sys/ioctl.h> found.' >&4
9674 if $test $i_sysfilio = "$define"; then
9675 echo '<sys/ioctl.h> NOT found.' >&4
9677 $test $i_sgtty = "$define" && xxx="sgtty.h"
9678 $test $i_termio = "$define" && xxx="termio.h"
9679 $test $i_termios = "$define" && xxx="termios.h"
9680 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
9686 : see if this is a sys/param system
9687 set sys/param.h i_sysparam
9690 : see if sys/resource.h has to be included
9691 set sys/resource.h i_sysresrc
9694 : see if sys/stat.h is available
9695 set sys/stat.h i_sysstat
9698 : see if sys/types.h has to be included
9699 set sys/types.h i_systypes
9702 : see if this is a sys/un.h system
9703 set sys/un.h i_sysun
9706 : see if this is a syswait system
9707 set sys/wait.h i_syswait
9710 : see if this is an utime system
9714 : see if this is a values.h system
9715 set values.h i_values
9718 : see if this is a vfork system
9729 : see if gdbm.h is available
9734 : see if gdbm_open exists
9735 set gdbm_open d_gdbm_open
9737 case "$d_gdbm_open" in
9740 echo "We won't be including <gdbm.h>"
9750 echo "Looking for extensions..." >&4
9752 : If we are using the old config.sh, known_extensions may contain
9753 : old or inaccurate or duplicate values.
9755 : We do not use find because it might not be available.
9756 : We do not just use MANIFEST because the user may have dropped
9757 : some additional extensions into the source tree and expect them
9762 *) if $test -f $xxx/$xxx.xs; then
9763 known_extensions="$known_extensions $xxx"
9765 if $test -d $xxx; then
9768 if $test -f $yyy/$yyy.xs; then
9769 known_extensions="$known_extensions $xxx/$yyy"
9777 set X $known_extensions
9779 known_extensions="$*"
9782 : Now see which are supported on this system.
9784 for xxx in $known_extensions ; do
9786 DB_File) case "$i_db" in
9787 $define) avail_ext="$avail_ext $xxx" ;;
9790 GDBM_File) case "$i_gdbm" in
9791 $define) avail_ext="$avail_ext $xxx" ;;
9794 NDBM_File) case "$i_ndbm" in
9795 $define) avail_ext="$avail_ext $xxx" ;;
9798 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
9799 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
9802 POSIX) case "$useposix" in
9803 true|define|y) avail_ext="$avail_ext $xxx" ;;
9806 Opcode) case "$useopcode" in
9807 true|define|y) avail_ext="$avail_ext $xxx" ;;
9810 Socket) case "$d_socket" in
9811 $define) avail_ext="$avail_ext $xxx" ;;
9814 *) avail_ext="$avail_ext $xxx"
9826 A number of extensions are supplied with $package. You may choose to
9827 compile these extensions for dynamic loading (the default), compile
9828 them into the $package executable (static loading), or not include
9829 them at all. Answer "none" to include no extensions.
9832 case "$dynamic_ext" in
9833 '') dflt="$avail_ext" ;;
9834 *) dflt="$dynamic_ext" ;;
9839 rp="What extensions do you wish to load dynamically?"
9842 none) dynamic_ext=' ' ;;
9843 *) dynamic_ext="$ans" ;;
9846 case "$static_ext" in
9848 : Exclude those already listed in dynamic linking
9850 for xxx in $avail_ext; do
9851 case " $dynamic_ext " in
9853 *) dflt="$dflt $xxx" ;;
9860 *) dflt="$static_ext"
9867 rp="What extensions do you wish to load statically?"
9870 none) static_ext=' ' ;;
9871 *) static_ext="$ans" ;;
9876 A number of extensions are supplied with $package. Answer "none"
9877 to include no extensions.
9880 case "$static_ext" in
9881 '') dflt="$avail_ext" ;;
9882 *) dflt="$static_ext" ;;
9888 rp="What extensions do you wish to include?"
9891 none) static_ext=' ' ;;
9892 *) static_ext="$ans" ;;
9897 set X $dynamic_ext $static_ext
9901 : Remove build directory name from cppstdin so it can be used from
9902 : either the present location or the final installed location.
9904 : Get out of the UU directory to get correct path name.
9908 echo "Stripping down cppstdin path name"
9914 : end of configuration questions
9916 echo "End of configuration questions."
9919 : back to where it started
9920 if test -d ../UU; then
9924 : configuration may be patched via a 'config.over' file
9925 if $test -f config.over; then
9928 rp='I see a config.over file. Do you wish to load it?'
9931 n*) echo "OK, I'll ignore it.";;
9933 echo "Configuration override changes have been loaded."
9938 : in case they want portability, strip down executable paths
9939 case "$d_portable" in
9942 echo "Stripping down executable paths..." >&4
9943 for file in $loclist $trylist; do
9949 : create config.sh file
9951 echo "Creating config.sh..." >&4
9952 $spitshell <<EOT >config.sh
9955 # This file was produced by running the Configure script. It holds all
9956 # the definitions figured out by Configure. Should you modify any of
9957 # these values, do not forget to propagate your changes by running
9958 # "Configure -S"; or, equivalently, you may run each .SH file yourself.
9961 # Configuration time: $cf_time
9962 # Configured by: $cf_by
9963 # Target system: $myuname
9973 Revision='$Revision'
9977 alignbytes='$alignbytes'
9978 aphostname='$aphostname'
9981 archlibexp='$archlibexp'
9982 archname='$archname'
9983 archobjs='$archobjs'
9988 bincompat3='$bincompat3'
9992 byteorder='$byteorder'
9994 castflags='$castflags'
9997 cccdlflags='$cccdlflags'
9998 ccdlflags='$ccdlflags'
10001 cf_email='$cf_email'
10006 clocktype='$clocktype'
10008 compress='$compress'
10009 contains='$contains'
10013 cpp_stuff='$cpp_stuff'
10014 cppflags='$cppflags'
10016 cppminus='$cppminus'
10018 cppstdin='$cppstdin'
10019 cryptlib='$cryptlib'
10021 d_Gconvert='$d_Gconvert'
10022 d_access='$d_access'
10024 d_archlib='$d_archlib'
10025 d_attribut='$d_attribut'
10028 d_bincompat3='$d_bincompat3'
10030 d_bsdgetpgrp='$d_bsdgetpgrp'
10031 d_bsdpgrp='$d_bsdpgrp'
10032 d_bsdsetpgrp='$d_bsdsetpgrp'
10034 d_casti32='$d_casti32'
10035 d_castneg='$d_castneg'
10036 d_charvspr='$d_charvspr'
10038 d_chroot='$d_chroot'
10039 d_chsize='$d_chsize'
10040 d_closedir='$d_closedir'
10044 d_cuserid='$d_cuserid'
10045 d_dbl_dig='$d_dbl_dig'
10046 d_difftime='$d_difftime'
10047 d_dirnamlen='$d_dirnamlen'
10048 d_dlerror='$d_dlerror'
10049 d_dlopen='$d_dlopen'
10050 d_dlsymun='$d_dlsymun'
10051 d_dosuid='$d_dosuid'
10053 d_eofnblk='$d_eofnblk'
10054 d_eunice='$d_eunice'
10055 d_fchmod='$d_fchmod'
10056 d_fchown='$d_fchown'
10058 d_fd_macros='$d_fd_macros'
10059 d_fd_set='$d_fd_set'
10060 d_fds_bits='$d_fds_bits'
10061 d_fgetpos='$d_fgetpos'
10062 d_flexfnam='$d_flexfnam'
10065 d_fpathconf='$d_fpathconf'
10066 d_fsetpos='$d_fsetpos'
10068 d_getgrps='$d_getgrps'
10069 d_setgrps='$d_setgrps'
10070 d_gethent='$d_gethent'
10071 d_gethname='$d_gethname'
10072 d_getlogin='$d_getlogin'
10073 d_getpgid='$d_getpgid'
10074 d_getpgrp2='$d_getpgrp2'
10075 d_getpgrp='$d_getpgrp'
10076 d_getppid='$d_getppid'
10077 d_getprior='$d_getprior'
10078 d_gettimeod='$d_gettimeod'
10079 d_gnulibc='$d_gnulibc'
10082 d_inetaton='$d_inetaton'
10083 d_isascii='$d_isascii'
10084 d_killpg='$d_killpg'
10086 d_locconv='$d_locconv'
10090 d_mbstowcs='$d_mbstowcs'
10091 d_mbtowc='$d_mbtowc'
10092 d_memcmp='$d_memcmp'
10093 d_memcpy='$d_memcpy'
10094 d_memmove='$d_memmove'
10095 d_memset='$d_memset'
10097 d_mkfifo='$d_mkfifo'
10098 d_mktime='$d_mktime'
10100 d_msgctl='$d_msgctl'
10101 d_msgget='$d_msgget'
10102 d_msgrcv='$d_msgrcv'
10103 d_msgsnd='$d_msgsnd'
10104 d_mymalloc='$d_mymalloc'
10106 d_oldarchlib='$d_oldarchlib'
10107 d_oldsock='$d_oldsock'
10109 d_pathconf='$d_pathconf'
10111 d_phostname='$d_phostname'
10114 d_portable='$d_portable'
10116 d_pwchange='$d_pwchange'
10117 d_pwclass='$d_pwclass'
10118 d_pwcomment='$d_pwcomment'
10119 d_pwexpire='$d_pwexpire'
10120 d_pwquota='$d_pwquota'
10121 d_readdir='$d_readdir'
10122 d_readlink='$d_readlink'
10123 d_rename='$d_rename'
10124 d_rewinddir='$d_rewinddir'
10126 d_safebcpy='$d_safebcpy'
10127 d_safemcpy='$d_safemcpy'
10128 d_sanemcmp='$d_sanemcmp'
10129 d_seekdir='$d_seekdir'
10130 d_select='$d_select'
10132 d_semctl='$d_semctl'
10133 d_semget='$d_semget'
10135 d_setegid='$d_setegid'
10136 d_seteuid='$d_seteuid'
10137 d_setlinebuf='$d_setlinebuf'
10138 d_setlocale='$d_setlocale'
10139 d_setpgid='$d_setpgid'
10140 d_setpgrp2='$d_setpgrp2'
10141 d_setpgrp='$d_setpgrp'
10142 d_setprior='$d_setprior'
10143 d_setregid='$d_setregid'
10144 d_setresgid='$d_setresgid'
10145 d_setresuid='$d_setresuid'
10146 d_setreuid='$d_setreuid'
10147 d_setrgid='$d_setrgid'
10148 d_setruid='$d_setruid'
10149 d_setsid='$d_setsid'
10153 d_shmatprototype='$d_shmatprototype'
10154 d_shmctl='$d_shmctl'
10156 d_shmget='$d_shmget'
10157 d_sigaction='$d_sigaction'
10158 d_sigsetjmp='$d_sigsetjmp'
10159 d_socket='$d_socket'
10160 d_sockpair='$d_sockpair'
10161 d_statblks='$d_statblks'
10162 d_stdio_cnt_lval='$d_stdio_cnt_lval'
10163 d_stdio_ptr_lval='$d_stdio_ptr_lval'
10164 d_stdiobase='$d_stdiobase'
10165 d_stdstdio='$d_stdstdio'
10166 d_strchr='$d_strchr'
10167 d_strcoll='$d_strcoll'
10168 d_strctcpy='$d_strctcpy'
10169 d_strerrm='$d_strerrm'
10170 d_strerror='$d_strerror'
10171 d_strtod='$d_strtod'
10172 d_strtol='$d_strtol'
10173 d_strtoul='$d_strtoul'
10174 d_strxfrm='$d_strxfrm'
10175 d_suidsafe='$d_suidsafe'
10176 d_symlink='$d_symlink'
10177 d_syscall='$d_syscall'
10178 d_sysconf='$d_sysconf'
10179 d_sysernlst='$d_sysernlst'
10180 d_syserrlst='$d_syserrlst'
10181 d_system='$d_system'
10182 d_tcgetpgrp='$d_tcgetpgrp'
10183 d_tcsetpgrp='$d_tcsetpgrp'
10184 d_telldir='$d_telldir'
10187 d_truncate='$d_truncate'
10188 d_tzname='$d_tzname'
10192 d_void_closedir='$d_void_closedir'
10193 d_voidsig='$d_voidsig'
10194 d_voidtty='$d_voidtty'
10195 d_volatile='$d_volatile'
10196 d_vprintf='$d_vprintf'
10198 d_waitpid='$d_waitpid'
10199 d_wcstombs='$d_wcstombs'
10200 d_wctomb='$d_wctomb'
10203 db_hashtype='$db_hashtype'
10204 db_prefixtype='$db_prefixtype'
10205 defvoidused='$defvoidused'
10206 direntrytype='$direntrytype'
10209 dynamic_ext='$dynamic_ext'
10214 eunicefix='$eunicefix'
10217 extensions='$extensions'
10219 firstmakefile='$firstmakefile'
10221 fpostype='$fpostype'
10222 freetype='$freetype'
10223 full_csh='$full_csh'
10224 full_sed='$full_sed'
10226 gccversion='$gccversion'
10230 groupcat='$groupcat'
10231 groupstype='$groupstype'
10234 h_sysfile='$h_sysfile'
10238 i_bsdioctl='$i_bsdioctl'
10241 i_dirent='$i_dirent'
10248 i_limits='$i_limits'
10249 i_locale='$i_locale'
10250 i_malloc='$i_malloc'
10252 i_memory='$i_memory'
10254 i_neterrno='$i_neterrno'
10257 i_rpcsvcdbm='$i_rpcsvcdbm'
10260 i_stdarg='$i_stdarg'
10261 i_stddef='$i_stddef'
10262 i_stdlib='$i_stdlib'
10263 i_string='$i_string'
10264 i_sysdir='$i_sysdir'
10265 i_sysfile='$i_sysfile'
10266 i_sysfilio='$i_sysfilio'
10268 i_sysioctl='$i_sysioctl'
10269 i_sysndir='$i_sysndir'
10270 i_sysparam='$i_sysparam'
10271 i_sysresrc='$i_sysresrc'
10272 i_sysselct='$i_sysselct'
10273 i_syssockio='$i_syssockio'
10274 i_sysstat='$i_sysstat'
10275 i_systime='$i_systime'
10276 i_systimek='$i_systimek'
10277 i_systimes='$i_systimes'
10278 i_systypes='$i_systypes'
10280 i_syswait='$i_syswait'
10281 i_termio='$i_termio'
10282 i_termios='$i_termios'
10284 i_unistd='$i_unistd'
10286 i_values='$i_values'
10287 i_varargs='$i_varargs'
10288 i_varhdr='$i_varhdr'
10292 installarchlib='$installarchlib'
10293 installbin='$installbin'
10294 installman1dir='$installman1dir'
10295 installman3dir='$installman3dir'
10296 installprivlib='$installprivlib'
10297 installscript='$installscript'
10298 installsitearch='$installsitearch'
10299 installsitelib='$installsitelib'
10301 known_extensions='$known_extensions'
10305 lddlflags='$lddlflags'
10313 libswanted='$libswanted'
10319 locincpth='$locincpth'
10320 loclibpth='$loclibpth'
10321 longsize='$longsize'
10325 lseektype='$lseektype'
10329 make_set_make='$make_set_make'
10330 mallocobj='$mallocobj'
10331 mallocsrc='$mallocsrc'
10332 malloctype='$malloctype'
10334 man1direxp='$man1direxp'
10337 man3direxp='$man3direxp'
10341 mips_type='$mips_type'
10344 modetype='$modetype'
10347 myarchname='$myarchname'
10348 mydomain='$mydomain'
10349 myhostname='$myhostname'
10353 nm_so_opt='$nm_so_opt'
10355 o_nonblock='$o_nonblock'
10357 oldarchlib='$oldarchlib'
10358 oldarchlibexp='$oldarchlibexp'
10359 optimize='$optimize'
10360 orderlib='$orderlib'
10366 patchlevel='$patchlevel'
10367 path_sep='$path_sep'
10369 perladmin='$perladmin'
10370 perlpath='$perlpath'
10372 phostname='$phostname'
10377 prefixexp='$prefixexp'
10379 privlibexp='$privlibexp'
10380 prototype='$prototype'
10381 randbits='$randbits'
10383 rd_nodata='$rd_nodata'
10387 scriptdir='$scriptdir'
10388 scriptdirexp='$scriptdirexp'
10390 selecttype='$selecttype'
10391 sendmail='$sendmail'
10394 sharpbang='$sharpbang'
10395 shmattype='$shmattype'
10396 shortsize='$shortsize'
10399 sig_name='$sig_name'
10401 signal_t='$signal_t'
10402 sitearch='$sitearch'
10403 sitearchexp='$sitearchexp'
10405 sitelibexp='$sitelibexp'
10406 sizetype='$sizetype'
10411 sockethdr='$sockethdr'
10412 socketlib='$socketlib'
10414 spackage='$spackage'
10415 spitshell='$spitshell'
10417 ssizetype='$ssizetype'
10418 startperl='$startperl'
10420 static_ext='$static_ext'
10422 stdio_base='$stdio_base'
10423 stdio_bufsiz='$stdio_bufsiz'
10424 stdio_cnt='$stdio_cnt'
10425 stdio_ptr='$stdio_ptr'
10428 subversion='$subversion'
10434 timeincl='$timeincl'
10435 timetype='$timetype'
10443 usemymalloc='$usemymalloc'
10445 useopcode='$useopcode'
10446 useperlio='$useperlio'
10447 useposix='$useposix'
10449 useshrplib='$useshrplib'
10450 usevfork='$usevfork'
10454 voidflags='$voidflags'
10460 : add special variables
10461 $test -f patchlevel.h && \
10462 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
10463 echo "CONFIG=true" >>config.sh
10465 : propagate old symbols
10466 if $test -f UU/config.sh; then
10467 <UU/config.sh sort | uniq >UU/oldconfig.sh
10468 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
10469 sort | uniq -u >UU/oldsyms
10470 set X `cat UU/oldsyms`
10476 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
10478 echo "# Variables propagated from previous config.sh file." >>config.sh
10479 for sym in `cat UU/oldsyms`; do
10480 echo " Propagating $hint variable "'$'"$sym..."
10481 eval 'tmp="$'"${sym}"'"'
10483 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
10489 : Finish up by extracting the .SH files
10503 If you'd like to make any changes to the config.sh file before I begin
10504 to configure things, do it as a shell escape now (e.g. !vi config.sh).
10507 rp="Press return or use a shell escape to edit config.sh:"
10512 *) : in case they cannot read
10513 sh 1>&4 -c "$ans";;
10518 : if this fails, just run all the .SH files by hand
10525 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
10532 Now you need to generate make dependencies by running "make depend".
10533 You might prefer to run it in background: "make depend > makedepend.out &"
10534 It can take a while, so you might not want to run it right now.
10539 rp="Run make depend now?"
10543 make depend && echo "Now you must run a make."
10546 echo "You must run 'make depend' then 'make'."
10549 elif test -f [Mm]akefile; then
10551 echo "Now you must run a make."
10556 $rm -f kit*isdone ark*isdone