3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc so you may fetch it yourself from your nearest
18 # archive site. Check with Archie if you don't know where that can be.)
21 # $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
23 # Generated on Thu Oct 10 15:08:34 EDT 1996 [metaconfig 3.0 PL60]
28 SCO csh still thinks true is false. Write to SCO today and tell them that next
29 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
32 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34 [End of diatribe. We now return you to your regularly scheduled programming...]
38 OOPS! You naughty creature! You didn't run Configure with sh!
39 I will attempt to remedy the situation by running sh for you...
42 true || cat /tmp/c1$$ /tmp/c2$$
43 true || exec sh $0 $argv:q
45 (exit $?0) || cat /tmp/c2$$
46 (exit $?0) || exec sh $0 $argv:q
47 rm -f /tmp/c1$$ /tmp/c2$$
49 : compute my invocation name
53 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
58 : Proper PATH separator
60 : On OS/2 this directory should exist if this is not floppy only system :-]
61 if test -d c:/. -a -n "$OS2_SHELL"; then
63 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
64 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
68 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
69 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
70 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
71 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
72 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
73 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
74 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
75 paths="$paths /sbin /usr/sbin /usr/libexec"
81 *) test -d $p && PATH=$PATH$p_$p ;;
90 echo "Say 'sh $me', not 'sh <$me'"
94 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
95 if test -f /hp-ux -a -f /bin/ksh; then
96 if (PATH=.; alias -x) >/dev/null 2>&1; then
97 : already under /bin/ksh
100 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
103 exec /bin/ksh $0 "$@"
106 : Warn them if they use ksh on other systems
107 (PATH=.; alias -x) >/dev/null 2>&1 && \
109 (I see you are using the Korn shell. Some ksh's blow up on $me,
110 especially on older exotic systems. If yours does, try the Bourne
115 : Configure runs within the UU subdirectory
116 test -d UU || mkdir UU
608 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
611 : We must find out about Eunice early
613 if test -f /etc/unixtovms; then
614 eunicefix=/etc/unixtovms
616 if test -f /etc/unixtovms.exe; then
617 eunicefix=/etc/unixtovms.exe
620 : list of known cpp symbols, sorted alphabetically
621 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
622 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
623 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
624 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
625 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
626 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
627 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
628 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
629 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
630 al="$al VMS Xenix286"
631 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
632 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
633 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
634 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
635 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
636 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
637 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
638 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
639 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
640 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
641 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
642 al="$al __SVR4_2__ __UMAXV__"
643 al="$al ____386BSD____ __alpha __alpha__ __amiga"
644 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
645 al="$al __host_mips__"
646 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
647 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
648 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
649 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
650 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
651 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
652 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
653 al="$al __mc88100 __mc88100__ __mips __mips__"
654 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
655 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
656 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
657 al="$al _host_mips _mips _unix"
658 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
659 al="$al apollo ardent att386 att3b"
660 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
661 al="$al cadmus clipper concurrent convex cray ctix"
662 al="$al dmert encore gcos gcx gimpel gould"
663 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
664 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
665 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
666 al="$al i186 i286 i386 i486 i8086"
667 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
668 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
669 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
670 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
671 al="$al mc88000 mc88100 merlin mert mips mvs n16"
672 al="$al ncl_el ncl_mr"
673 al="$al news1500 news1700 news1800 news1900 news3700"
674 al="$al news700 news800 news900 ns16000 ns32000"
675 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
676 al="$al parisc pc532 pdp11 plexus posix pyr"
677 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
678 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
679 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
680 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
681 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
682 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
687 : default library list
689 : set useposix=false in your hint file to disable the POSIX extension.
691 : set useopcode=false in your hint file to disable the Opcode extension.
693 : Define several unixisms. These can be used in hint files.
695 : Extra object files, if any, needed on this platform.
697 : Possible local include directories to search.
698 : Set locincpth to "" in a hint file to defeat local include searches.
699 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
700 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
702 : no include file wanted by default
705 : change the next line if compiling for Xenix/286 on Xenix/386
706 xlibpth='/usr/lib/386 /lib/386'
708 : Possible local library directories to search.
709 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
710 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
712 : general looking path for locating libraries
713 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
714 glibpth="$glibpth /lib /usr/lib $xlibpth"
715 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
716 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
718 : Private path used by Configure to find libraries. Its value
719 : is prepended to libpth. This variable takes care of special
720 : machines, like the mips. Usually, it should be empty.
723 : full support for void wanted by default
726 : List of libraries we want.
727 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
728 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
729 libswanted="$libswanted ucb bsd BSD PW x"
730 : We probably want to search /usr/shlib before most other libraries.
731 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
732 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
733 glibpth="/usr/shlib $glibpth"
734 : Do not use vfork unless overridden by a hint file.
737 : Find the basic shell for Bourne shell scripts
740 : SYSTYPE is for some older MIPS systems.
741 : I do not know if it is still needed.
743 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
746 if test -f "$xxx"; then
749 : Build up a list and do a single loop so we can 'break' out.
750 pth=`echo $PATH | sed -e "s/$p_/ /g"`
751 for xxx in sh bash ksh pdksh ash; do
753 try="$try ${p}/${xxx}"
757 if test -f "$xxx"; then
759 echo "Your Bourne shell appears to be in $sh."
761 elif test -f "$xxx.exe"; then
763 echo "Hmm. Your Bourne shell appears to be in $sh."
773 $me: Fatal Error: I can't find a Bourne Shell anywhere.
774 Usually it's in /bin/sh. How did you even get this far?
775 Please contact me (Andy Dougherty) at doughera@lafcol.lafayette.edu and
776 we'll try to straigten this all out.
782 : see if sh knows # comments
783 if `$sh -c '#' >/dev/null 2>&1`; then
788 test -f $xcat || xcat=/usr/bin/cat
793 if test -s today; then
796 echo "#! $xcat" > try
800 if test -s today; then
803 echo "Okay, let's see if #! works on this system..."
804 echo "It's just a comment."
809 echo "Your $sh doesn't grok # comments--I will strip them later on."
812 echo "exec grep -v '^[ ]*#'" >spitshell
815 spitshell=`pwd`/spitshell
817 echo "I presume that if # doesn't work, #! won't work either!"
822 : figure out how to guarantee sh startup
824 '') startsh=${sharpbang}${sh} ;;
836 : echo "Yup, it does."
838 echo "Hmm. '$startsh' didn't work."
839 echo "You may have to fix up the shell scripts to make sure sh runs them."
843 : script used to extract .SH files with variable substitutions
847 cat >>extract <<'EOS'
849 echo "Doing variable substitutions on .SH files..."
850 if test -f MANIFEST; then
851 shlist=`awk '!/^old_/ {print $1}' <MANIFEST | grep '\.SH$'`
852 : Pick up possible extension manifests.
853 for dir in ext/* ; do
854 if test -f $dir/MANIFEST; then
855 xxx=`awk '!/^old_/ {print $1}' < $dir/MANIFEST |
856 sed -n "/\.SH$/ s@^@$dir/@p"`
857 shlist="$shlist $xxx"
862 echo "(Looking for .SH files under the current directory.)"
863 set x `find . -name "*.SH" -print | grep -v '/old_'`
867 0) set x *.SH; shift;;
869 if test ! -f $1; then
875 dir=`expr X$file : 'X\(.*\)/'`
876 file=`expr X$file : 'X.*/\(.*\)'`
877 (cd $dir && . ./$file)
884 if test -f config_h.SH; then
885 if test ! -f config.h; then
886 : oops, they left it out of MANIFEST, probably, so do it anyway.
892 : produce awk script to parse command line options
893 cat >options.awk <<'EOF'
895 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
897 len = length(optstr);
898 for (i = 1; i <= len; i++) {
899 c = substr(optstr, i, 1);
900 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
911 if (substr(str, 1, 1) != "-") {
912 printf("'%s'\n", str);
916 for (i = 2; i <= len; i++) {
917 c = substr(str, i, 1);
919 printf("-%s\n", substr(str, i));
925 printf("'%s'\n", substr(str, i + 1));
938 : process the command line options
939 set X `for arg in "$@"; do echo "X$arg"; done |
940 sed -e s/X// | awk -f options.awk`
945 : set up default values
958 while test $# -gt 0; do
960 -d) shift; fastread=yes;;
961 -e) shift; alldone=cont;;
965 if test -r "$1"; then
968 echo "$me: cannot read config file $1." >&2
973 -h) shift; error=true;;
974 -r) shift; reuseval=true;;
975 -s) shift; silent=true;;
976 -E) shift; alldone=exit;;
977 -K) shift; knowitall=true;;
978 -O) shift; override=true;;
979 -S) shift; extractsh=true;;
984 echo "$me: use '-U symbol=', not '-D symbol='." >&2
985 echo "$me: ignoring -D $1" >&2
988 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
989 *) echo "$1='define'" >> optdef.sh;;
996 *=) echo "$1" >> optdef.sh;;
998 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
999 echo "$me: ignoring -U $1" >&2
1001 *) echo "$1='undef'" >> optdef.sh;;
1005 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1008 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1016 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1017 [-U symbol] [-U symbol=]
1018 -d : use defaults for all answers.
1019 -e : go on without questioning past the production of config.sh.
1020 -f : specify an alternate default configuration file.
1021 -h : print this help message and exit (with an error status).
1022 -r : reuse C symbols value if possible (skips costly nm extraction).
1023 -s : silent mode, only echoes questions and essential information.
1024 -D : define symbol to have some value:
1025 -D symbol symbol gets the value 'define'
1026 -D symbol=value symbol gets the value 'value'
1027 -E : stop at the end of questions, after having produced config.sh.
1028 -K : do not use unless you know what you are doing.
1029 -O : let -D and -U override definitions from loaded configuration file.
1030 -S : perform variable substitutions on all .SH files (can mix with -f)
1031 -U : undefine symbol:
1032 -U symbol symbol gets the value 'undef'
1033 -U symbol= symbol gets completely empty
1034 -V : print version number and exit (with a zero status).
1042 true) exec 1>/dev/null;;
1045 : run the defines and the undefines, if any, but leave the file out there...
1049 case "$extractsh" in
1051 case "$config_sh" in
1052 '') config_sh='config.sh'; config='./config.sh';;
1053 /*) config="$config_sh";;
1054 *) config="./$config_sh";;
1057 echo "Fetching answers from $config_sh..."
1060 test "$override" && . ./optdef.sh
1071 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1072 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1073 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1074 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1075 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1078 : Eunice requires " " instead of "", can you believe it
1081 echo "Beginning of configuration questions for $package."
1083 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1085 : Some greps do not return status, grrr.
1086 echo "grimblepritz" >grimble
1087 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1089 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1095 : the following should work in any shell
1099 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1100 cat >contains <<'EOSS'
1101 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1106 : first determine how to suppress newline on echo command
1108 echo "Checking echo to see how to suppress newlines..."
1109 (echo "hi there\c" ; echo " ") >.echotmp
1110 if $contains c .echotmp >/dev/null 2>&1 ; then
1121 echo $n "The star should be here-->$c"
1125 : Now test for existence of everything in MANIFEST
1127 if test -f ../MANIFEST; then
1128 echo "First let's make sure your kit is complete. Checking..." >&4
1129 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1131 for filelist in x??; do
1132 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1134 if test -s missing; then
1138 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1140 You have the option of continuing the configuration process, despite the
1141 distinct possibility that your kit is damaged, by typing 'y'es. If you
1142 do, don't blame me if something goes wrong. I advise you to type 'n'o
1143 and contact the author (doughera@lafcol.lafayette.edu).
1146 echo $n "Continue? [n] $c" >&4
1150 echo "Continuing..." >&4
1154 echo "ABORTING..." >&4
1159 echo "Looks good..." >&4
1162 echo "There is no MANIFEST file. I hope your kit is complete !"
1166 : compute the number of columns on the terminal for proper question formatting
1171 : set up the echo used in my read
1172 myecho="case \"\$xxxm\" in
1173 '') echo $n \"\$rp $c\" >&4;;
1175 '') echo $n \"[\$xxxm] $c\";;
1177 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1179 echo $n \"[\$xxxm] $c\" >&4
1181 echo $n \"\$rp [\$xxxm] $c\" >&4
1187 : now set up to do reads with possible shell escape and default assignment
1192 case "\$fastread" in
1193 yes) case "\$dflt" in
1196 case "\$silent-\$rp" in
1201 *) case "\$silent" in
1202 true) case "\$rp" in
1207 while expr "X\$ans" : "X!" >/dev/null; do
1211 aok=''; eval "ans=\"\$answ\"" && aok=y
1216 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1221 echo "(OK, I'll run with -d after this question.)" >&4
1224 echo "*** Sorry, \$1 not supported yet." >&4
1236 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1246 echo "*** Substitution done -- please confirm."
1248 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1253 echo "*** Error -- try again."
1260 case "\$ans\$xxxm\$nostick" in
1272 : create .config dir to save info across Configure sessions
1273 test -d ../.config || mkdir ../.config
1274 cat >../.config/README <<EOF
1275 This directory created by Configure to save information that should
1276 persist across sessions.
1278 You may safely delete it if you wish.
1281 : general instructions
1284 user=`(logname) 2>/dev/null`
1286 user=`whoami 2>&1` ;;
1288 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1291 rp='Would you like to see the instructions?'
1302 This installation shell script will examine your system and ask you questions
1303 to determine how the perl5 package should be installed. If you get
1304 stuck on a question, you may use a ! shell escape to start a subshell or
1305 execute a command. Many of the questions will have default answers in square
1306 brackets; typing carriage return will give you the default.
1308 On some of the questions which ask for file or directory names you are allowed
1309 to use the ~name construct to specify the login directory belonging to "name",
1310 even if you don't have a shell which knows about that. Questions where this is
1311 allowed will be marked "(~name ok)".
1315 dflt='Type carriage return to continue'
1319 The prompter used in this script allows you to use shell variables and
1320 backticks in your answers. You may use $1, $2, etc... to refer to the words
1321 in the default answer, as if the default line was a set of arguments given to a
1322 script shell. This means you may also use $* to repeat the whole default line,
1323 so you do not have to re-type everything to add something to the default.
1325 Everytime there is a substitution, you will have to confirm. If there is an
1326 error (e.g. an unmatched backtick), the default answer will remain unchanged
1327 and you will be prompted again.
1329 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1330 the questions and use the computed defaults (or the previous answers if there
1331 was already a config.sh file). Type 'Configure -h' for a list of options.
1332 You may also start interactively and then answer '& -d' at any prompt to turn
1333 on the non-interactive behaviour for the remaining of the execution.
1339 Much effort has been expended to ensure that this shell script will run on any
1340 Unix system. If despite that it blows up on yours, your best bet is to edit
1341 Configure and run it again. If you can't run Configure for some reason,
1342 you'll have to generate a config.sh file by hand. Whatever problems you
1343 have, let me (doughera@lafcol.lafayette.edu) know how I blew it.
1345 This installation script affects things in two ways:
1347 1) it may do direct variable substitutions on some of the files included
1349 2) it builds a config.h file for inclusion in C programs. You may edit
1350 any of these files as the need arises after running this script.
1352 If you make a mistake on a question, there is no easy way to back up to it
1353 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1354 files. Configure will offer to let you do this before it runs the SH files.
1357 dflt='Type carriage return to continue'
1359 case "$firsttime" in
1360 true) echo $user >>../.config/instruct;;
1364 : find out where common programs are
1366 echo "Locating common programs..." >&4
1379 if test -d \$dir/\$thing; then
1385 for thisthing in \$dir/\$thing; do
1386 : just loop through to pick last item
1388 if test -f \$thisthing; then
1391 elif test -f \$dir/\$thing.exe; then
1392 : on Eunice apparently
1442 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1443 pth="$pth /lib /usr/lib"
1444 for file in $loclist; do
1445 xxx=`./loc $file $file $pth`
1450 echo $file is in $xxx.
1453 echo $file is in $xxx.
1456 echo "I don't know where '$file' is, and my life depends on it." >&4
1457 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1463 echo "Don't worry if any of the following aren't found..."
1465 for file in $trylist; do
1466 xxx=`./loc $file $file $pth`
1471 echo $file is in $xxx.
1474 echo $file is in $xxx.
1477 echo "I don't see $file out there, $say."
1484 echo "Substituting grep for egrep."
1490 echo "Substituting cp for ln."
1496 echo "Hopefully test is built into your sh."
1499 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1500 echo "Using the test built into your sh."
1508 echo "Hopefully echo is built into your sh."
1513 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1514 $echo $n "hi there$c" >foo1
1515 echo $n "hi there$c" >foo2
1516 if cmp foo1 foo2 >/dev/null 2>&1; then
1517 echo "They are compatible. In fact, they may be identical."
1524 They are not compatible! You are probably running ksh on a non-USG system.
1525 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1526 have echo built in and we may have to run some Bourne shell scripts. That
1527 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1530 $echo $n "The star should be here-->$c"
1537 : determine whether symbolic links are supported
1540 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1541 echo "Symbolic links are supported." >&4
1544 echo "Symbolic links are NOT supported." >&4
1549 : see whether [:lower:] and [:upper:] are supported character classes
1553 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1555 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1560 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1563 : set up the translation script tr, must be called with ./tr of course
1567 '[A-Z][a-z]') exec $tr '$up' '$low';;
1568 '[a-z][A-Z]') exec $tr '$low' '$up';;
1575 : Try to determine whether config.sh was made on this system
1576 case "$config_sh" in
1578 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1579 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1580 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1581 newmyuname="$myuname"
1583 case "$knowitall" in
1585 if test -f ../config.sh; then
1586 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1587 eval "`grep myuname= ../config.sh`"
1589 if test "X$myuname" = "X$newmyuname"; then
1597 : Get old answers from old config file if Configure was run on the
1598 : same system, otherwise use the hints.
1601 if test -f config.sh; then
1603 rp="I see a config.sh file. Shall I use it to set the defaults?"
1606 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1607 *) echo "Fetching default answers from your old config.sh file..." >&4
1615 : Older versions did not always set $sh. Catch re-use of such
1624 if test ! -f config.sh; then
1627 First time through, eh? I have some defaults handy for the following systems:
1630 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1632 : Half the following guesses are probably wrong... If you have better
1633 : tests or hints, please send them to doughera@lafcol.lafayette.edu
1634 : The metaconfig authors would also appreciate a copy...
1635 $test -f /irix && osname=irix
1636 $test -f /xenix && osname=sco_xenix
1637 $test -f /dynix && osname=dynix
1638 $test -f /dnix && osname=dnix
1639 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1640 $test -f /bin/mips && /bin/mips && osname=mips
1641 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1642 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1643 $test -d /usr/apollo/bin && osname=apollo
1644 $test -f /etc/saf/_sactab && osname=svr4
1645 $test -d /usr/include/minix && osname=minix
1646 if $test -d /MachTen; then
1648 if $test -x /sbin/version; then
1649 osvers=`/sbin/version | $awk '{print $2}' |
1650 $sed -e 's/[A-Za-z]$//'`
1651 elif $test -x /usr/etc/version; then
1652 osvers=`/usr/etc/version | $awk '{print $2}' |
1653 $sed -e 's/[A-Za-z]$//'`
1658 if $test -f $uname; then
1666 umips) osname=umips ;;
1669 [23]100) osname=mips ;;
1670 next*) osname=next ;;
1671 news*) osname=news ;;
1673 if $test -f /etc/kconfig; then
1675 if test "$lns" = "ln -s"; then
1677 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1679 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1688 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1690 'not found') osvers="$4"."$3" ;;
1691 '<3240'|'<>3240') osvers=3.2.0 ;;
1692 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1693 '=3250'|'>3250') osvers=3.2.5 ;;
1700 domainos) osname=apollo
1706 dynixptx*) osname=dynixptx
1709 freebsd) osname=freebsd
1711 genix) osname=genix ;;
1716 *.10.*) osvers=10 ;;
1733 netbsd*) osname=netbsd
1736 bsd386) osname=bsd386
1739 next*) osname=next ;;
1740 solaris) osname=solaris
1742 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1749 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1753 titanos) osname=titanos
1762 ultrix) osname=ultrix
1768 osvers=`echo "$3" | sed 's/^[vt]//'`
1770 hp*) osname=hp_osf1 ;;
1771 mips) osname=mips_osf1 ;;
1780 $2) case "$osname" in
1784 : svr4.x or possibly later
1794 if test -f /stand/boot ; then
1795 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1796 if test -n "$INITPROG" -a -f "$INITPROG"; then
1797 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1798 if test -n "$isesix"; then
1806 *) if test -f /etc/systemid; then
1808 set `echo $3 | $sed 's/\./ /g'` $4
1809 if $test -f sco_$1_$2_$3.sh; then
1811 elif $test -f sco_$1_$2.sh; then
1813 elif $test -f sco_$1.sh; then
1818 '') : Still unknown. Probably a generic Sys V.
1827 *) case "$osname" in
1828 '') : Still unknown. Probably a generic BSD.
1836 if test -f /vmunix -a -f news_os.sh; then
1837 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1838 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1841 $rm -f ../UU/kernel.what
1842 elif test -d c:/.; then
1849 : Now look for a hint file osname_osvers, unless one has been
1850 : specified already.
1853 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1854 : Also try without trailing minor version numbers.
1855 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1856 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1857 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1858 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1861 *) case "$osvers" in
1864 *) if $test -f $file.sh ; then
1866 elif $test -f $xfile.sh ; then
1868 elif $test -f $xxfile.sh ; then
1870 elif $test -f $xxxfile.sh ; then
1872 elif $test -f $xxxxfile.sh ; then
1874 elif $test -f "${osname}.sh" ; then
1885 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1891 You may give one or more space-separated answers, or "none" if appropriate.
1892 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1895 rp="Which of these apply, if any?"
1898 for file in $tans; do
1899 if $test -f $file.sh; then
1901 $cat $file.sh >> ../UU/config.sh
1902 elif $test X$tans = X -o X$tans = Xnone ; then
1905 : Give one chance to correct a possible typo.
1906 echo "$file.sh does not exist"
1908 rp="hint to use instead?"
1910 for file in $ans; do
1911 if $test -f "$file.sh"; then
1913 $cat $file.sh >> ../UU/config.sh
1914 elif $test X$ans = X -o X$ans = Xnone ; then
1917 echo "$file.sh does not exist -- ignored."
1924 : Remember our hint file for later.
1925 if $test -f "$file.sh" ; then
1937 echo "Fetching default answers from $config_sh..." >&4
1941 cp $config_sh config.sh 2>/dev/null
1951 test "$override" && . ./optdef.sh
1952 myuname="$newmyuname"
1954 : Restore computed paths
1955 for file in $loclist $trylist; do
1956 eval $file="\$_$file"
1961 Configure uses the operating system name and version to set some defaults.
1962 The default value is probably right if the name rings a bell. Otherwise,
1963 since spelling matters for me, either accept the default or answer "none"
1970 ''|' '|none) dflt=none ;;
1971 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1974 *) dflt="$osname" ;;
1976 rp="Operating system name?"
1980 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1986 ''|' '|none) dflt=none ;;
1987 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
1988 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
1990 ''|' ') dflt=none ;;
1995 *) dflt="$osvers" ;;
1997 rp="Operating system version?"
2006 : who configured the system
2007 cf_time=`$date 2>&1`
2008 cf_by=`(logname) 2>/dev/null`
2009 case "$cf_by" in "")
2010 cf_by=`(whoami) 2>/dev/null`
2011 case "$cf_by" in "")
2016 : determine the architecture name
2018 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2019 tarch=`arch`"-$osname"
2020 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2021 if uname -m > tmparch 2>&1 ; then
2022 tarch=`$sed -e 's/ /_/g' -e 's/_*$//' -e 's/$/'"-$osname/" tmparch`
2030 case "$myarchname" in
2033 echo "(Your architecture name used to be $myarchname.)"
2039 *) dflt="$archname";;
2041 rp='What is your architecture name'
2049 $define|true) afs=true ;;
2050 $undef|false) afs=false ;;
2051 *) if test -d /afs; then
2059 echo "AFS may be running... I'll be extra cautious then..." >&4
2061 echo "AFS does not seem to be running..." >&4
2064 : decide how portable to be. Allow command line overrides.
2065 case "$d_portable" in
2067 *) d_portable="$define" ;;
2070 : set up shell script to do ~ expansion
2076 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2079 if $test -f /bin/csh; then
2080 /bin/csh -f -c "glob \$1"
2085 name=\`$expr x\$1 : '..\([^/]*\)'\`
2086 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2087 if $test ! -d "\$dir"; then
2089 echo "\$me: can't locate home directory for: \$name" >&2
2094 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2110 : now set up to get a file name
2111 cat <<'EOSC' >getfile
2124 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2125 fn=`echo $fn | sed 's/(.*)//'`
2131 loc_file=`expr $fn : '.*:\(.*\)'`
2132 fn=`expr $fn : '\(.*\):.*'`
2140 */*) fullpath=true;;
2149 *e*) exp_file=true;;
2152 *p*) nopath_ok=true;;
2157 *d*) type='Directory';;
2158 *l*) type='Locate';;
2163 Locate) what='File';;
2168 case "$d_portable" in
2176 while test "$type"; do
2181 true) rp="$rp (~name ok)";;
2184 if test -f UU/getfile.ok && \
2185 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2204 value=`UU/filexp $ans`
2207 if test "$ans" != "$value"; then
2208 echo "(That expands to $value on this system.)"
2222 /*) value="$ansexp" ;;
2227 echo "I shall only accept a full path name, as in /bin/ls." >&4
2228 echo "Use a ! shell escape if you wish to check pathnames." >&4
2231 echo "Please give a full path name, starting with slash." >&4
2234 echo "Note that using ~name is ok provided it expands well." >&4
2247 if test -f "$ansexp"; then
2249 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2251 echo "($value is not a plain file, but that's ok.)"
2256 if test -d "$ansexp"; then
2261 if test -d "$ansexp"; then
2262 echo "(Looking for $loc_file in directory $value.)"
2263 value="$value/$loc_file"
2264 ansexp="$ansexp/$loc_file"
2266 if test -f "$ansexp"; then
2269 case "$nopath_ok" in
2270 true) case "$value" in
2272 *) echo "Assuming $value will be in people's path."
2288 if test "$fastread" = yes; then
2293 rp="$what $value doesn't exist. Use that name anyway?"
2314 : determine root of directory hierarchy where package will be installed.
2317 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2325 By default, $package will be installed in $dflt/bin, manual
2326 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2327 all installation directories. Typically set to /usr/local, but you
2328 may choose /usr if you wish to install $package among your system
2329 binaries. If you wish to have binaries under /bin but manual pages
2330 under /usr/local/man, that's ok: you will be prompted separately
2331 for each of the installation directories, the prefix being only used
2332 to set the defaults.
2336 rp='Installation prefix to use?'
2344 *) oldprefix="$prefix";;
2351 : set the prefixit variable, to compute a suitable default value
2352 prefixit='case "$3" in
2354 case "$oldprefix" in
2355 "") eval "$1=\"\$$2\"";;
2362 ""|" ") eval "$1=\"\$$2\"";;
2368 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2370 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2371 /*-$oldprefix/*|\~*-$oldprefix/*)
2372 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2373 *) eval "$1=\"\$$2\"";;
2377 : determine where private library files go
2378 : Usual default is /usr/local/lib/perl5. Also allow things like
2379 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2381 *perl*) set dflt privlib lib ;;
2382 *) set dflt privlib lib/$package ;;
2387 There are some auxiliary files for $package that need to be put into a
2388 private library directory that is accessible by everyone.
2392 rp='Pathname where the private library files will reside?'
2394 if $test "X$privlibexp" != "X$ansexp"; then
2398 privlibexp="$ansexp"
2402 Since you are running AFS, I need to distinguish the directory in which
2403 private files reside from the directory in which they are installed (and from
2404 which they are presumably copied to the former directory by occult means).
2407 case "$installprivlib" in
2408 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2409 *) dflt="$installprivlib";;
2412 rp='Where will private files be installed?'
2414 installprivlib="$ans"
2416 installprivlib="$privlibexp"
2419 : set the base revision
2422 : get the patchlevel
2424 echo "Getting the current patchlevel..." >&4
2425 if $test -r ../patchlevel.h;then
2426 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2427 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2432 echo "(You have $package $baserev patchlevel $patchlevel subversion $subversion.)"
2434 : set the prefixup variable, to restore leading tilda escape
2435 prefixup='case "$prefixexp" in
2437 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2440 : determine where public architecture dependent libraries go
2446 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2450 *) version=`LC_ALL=C;export LC_ALL;\
2451 echo $baserev $patchlevel $subversion | \
2452 $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
2453 dflt="$privlib/$archname/$version"
2457 *) dflt="$archlib";;
2461 $spackage contains architecture-dependent library files. If you are
2462 sharing libraries in a heterogeneous environment, you might store
2463 these files in a separate location. Otherwise, you can just include
2464 them with the rest of the public library files.
2468 rp='Where do you want to put the public architecture-dependent libraries?'
2471 archlibexp="$ansexp"
2476 Since you are running AFS, I need to distinguish the directory in which
2477 private files reside from the directory in which they are installed (and from
2478 which they are presumably copied to the former directory by occult means).
2481 case "$installarchlib" in
2482 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2483 *) dflt="$installarchlib";;
2486 rp='Where will architecture-dependent library files be installed?'
2488 installarchlib="$ans"
2490 installarchlib="$archlibexp"
2492 if $test X"$archlib" = X"$privlib"; then
2498 : set up the script used to warn in case of inconsistency
2502 echo "*** WHOA THERE!!! ***" >&4
2503 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2504 rp=" Keep the $hint value?"
2507 y) td=$was; tu=$was;;
2511 : function used to set $1 to $val
2512 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2514 $define$undef) . ./whoa; eval "$var=\$td";;
2515 $undef$define) . ./whoa; eval "$var=\$tu";;
2516 *) eval "$var=$val";;
2519 : make some quick guesses about what we are up against
2521 $echo $n "Hmm... $c"
2531 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2532 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2534 echo "Looks kind of like an OSF/1 system, but we'll see..."
2536 elif test `echo abc | tr a-z A-Z` = Abc ; then
2537 xxx=`./loc addbib blurfl $pth`
2538 if $test -f $xxx; then
2539 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2543 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2544 echo "Looks kind of like an extended USG system, but we'll see..."
2546 echo "Looks kind of like a USG system, but we'll see..."
2550 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2551 echo "Looks kind of like a BSD system, but we'll see..."
2555 echo "Looks kind of like a Version 7 system, but we'll see..."
2558 case "$eunicefix" in
2561 There is, however, a strange, musty smell in the air that reminds me of
2562 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2566 : it so happens the Eunice I know will not run shell scripts in Unix format
2570 echo "Congratulations. You aren't running Eunice."
2574 : Detect OS2. The p_ variable is set above in the Head.U unit.
2579 I have the feeling something is not exactly right, however...don't tell me...
2580 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2585 if test -f /xenix; then
2586 echo "Actually, this looks more like a XENIX system..."
2591 echo "It's not Xenix..."
2596 if test -f /venix; then
2597 echo "Actually, this looks more like a VENIX system..."
2604 echo "Nor is it Venix..."
2607 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2608 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2611 : see if setuid scripts can be secure
2614 Some kernels have a bug that prevents setuid #! scripts from being
2615 secure. Some sites have disabled setuid #! scripts because of this.
2617 First let's decide if your kernel supports secure setuid #! scripts.
2618 (If setuid #! scripts would be secure but have been disabled anyway,
2619 don't say that they are secure if asked.)
2624 if $test -d /dev/fd; then
2625 echo "#!$ls" >reflect
2626 chmod +x,u+s reflect
2627 ./reflect >flect 2>&1
2628 if $contains "/dev/fd" flect >/dev/null; then
2629 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2633 If you are not sure if they are secure, I can check but I'll need a
2634 username and password different from the one you are using right now.
2635 If you don't have such a username or don't want me to test, simply
2639 rp='Other username to test security of setuid scripts with?'
2644 case "$d_suidsafe" in
2645 '') echo "I'll assume setuid scripts are *not* secure." >&4
2648 echo "Well, the $hint value is *not* secure." >&4
2650 *) echo "Well, the $hint value *is* secure." >&4
2655 $rm -f reflect flect
2656 echo "#!$ls" >reflect
2657 chmod +x,u+s reflect
2660 echo '"su" will (probably) prompt you for '"$ans's password."
2661 su $ans -c './reflect >flect'
2662 if $contains "/dev/fd" flect >/dev/null; then
2663 echo "Okay, it looks like setuid scripts are secure." >&4
2666 echo "I don't think setuid scripts are secure." >&4
2671 rp='Does your kernel have *secure* setuid scripts?'
2674 [yY]*) val="$define";;
2679 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2680 echo "(That's for file descriptors, not floppy disks.)"
2686 $rm -f reflect flect
2688 : now see if they want to do setuid emulation
2691 case "$d_suidsafe" in
2694 echo "No need to emulate SUID scripts since they are secure here." >& 4
2698 Some systems have disabled setuid scripts, especially systems where
2699 setuid scripts cannot be secure. On systems where setuid scripts have
2700 been disabled, the setuid/setgid bits on scripts are currently
2701 useless. It is possible for $package to detect those bits and emulate
2702 setuid/setgid in a secure fashion. This emulation will only work if
2703 setuid scripts have been disabled in your kernel.
2707 "$define") dflt=y ;;
2710 rp="Do you want to do setuid/setgid emulation?"
2713 [yY]*) val="$define";;
2721 : determine where site specific libraries go.
2725 '') dflt="$privlib/site_perl" ;;
2726 *) dflt="$sitelib" ;;
2730 The installation process will also create a directory for
2731 site-specific extensions and modules. Some users find it convenient
2732 to place all local files in this directory rather than in the main
2733 distribution directory.
2737 rp='Pathname for the site-specific library files?'
2739 if $test "X$sitelibexp" != "X$ansexp"; then
2743 sitelibexp="$ansexp"
2747 Since you are running AFS, I need to distinguish the directory in which
2748 private files reside from the directory in which they are installed (and from
2749 which they are presumably copied to the former directory by occult means).
2752 case "$installsitelib" in
2753 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2754 *) dflt="$installsitelib";;
2757 rp='Where will private files be installed?'
2759 installsitelib="$ans"
2761 installsitelib="$sitelibexp"
2764 : determine where site specific architecture-dependent libraries go.
2765 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2766 : xxx is usuually lib/site_perl/archname.
2767 set sitearch sitearch none
2770 '') dflt="$sitelib/$archname" ;;
2771 *) dflt="$sitearch" ;;
2775 The installation process will also create a directory for
2776 architecture-dependent site-specific extensions and modules.
2780 rp='Pathname for the site-specific architecture-dependent library files?'
2782 if $test "X$sitearchexp" != "X$ansexp"; then
2786 sitearchexp="$ansexp"
2790 Since you are running AFS, I need to distinguish the directory in which
2791 private files reside from the directory in which they are installed (and from
2792 which they are presumably copied to the former directory by occult means).
2795 case "$installsitearch" in
2796 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2797 *) dflt="$installsitearch";;
2800 rp='Where will private files be installed?'
2802 installsitearch="$ans"
2804 installsitearch="$sitearchexp"
2807 : determine where old public architecture dependent libraries might be
2808 case "$oldarchlib" in
2809 '') case "$privlib" in
2811 *) dflt="$privlib/$archname"
2815 *) dflt="$oldarchlib"
2818 if $test ! -d "$dflt/auto"; then
2823 In 5.001, Perl stored architecture-dependent library files in a directory
2824 with a name such as $privlib/$archname,
2825 and this directory contained files from the standard extensions and
2826 files from any additional extensions you might have added. Starting
2827 with version 5.002, all the architecture-dependent standard extensions
2828 will go into a version-specific directory such as
2830 while locally-added extensions will go into
2833 If you wish Perl to continue to search the old architecture-dependent
2834 library for your local extensions, give the path to that directory.
2835 If you do not wish to use your old architecture-dependent library
2836 files, answer 'none'.
2840 rp='Directory for your old 5.001 architecture-dependent libraries?'
2843 oldarchlibexp="$ansexp"
2844 case "$oldarchlib" in
2845 ''|' ') val="$undef" ;;
2851 : determine where public executables go
2856 rp='Pathname where the public executables will reside?'
2858 if $test "X$ansexp" != "X$binexp"; then
2866 Since you are running AFS, I need to distinguish the directory in which
2867 executables reside from the directory in which they are installed (and from
2868 which they are presumably copied to the former directory by occult means).
2871 case "$installbin" in
2872 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2873 *) dflt="$installbin";;
2876 rp='Where will public executables be installed?'
2880 installbin="$binexp"
2883 : determine where manual pages are on this system
2887 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2888 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2889 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2890 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2891 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2892 sysman=`./loc . /usr/man/man1 $syspath`
2895 if $test -d "$sysman"; then
2896 echo "System manual is in $sysman." >&4
2898 echo "Could not find manual pages in source form." >&4
2901 : see what memory models we can support
2904 $cat >pdp11.c <<'EOP'
2913 cc -o pdp11 pdp11.c >/dev/null 2>&1
2914 if ./pdp11 2>/dev/null; then
2915 dflt='unsplit split'
2917 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2920 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2925 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2928 if $test -d /lib/large || $test -d /usr/lib/large; then
2931 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2940 Some systems have different model sizes. On most systems they are called
2941 small, medium, large, and huge. On the PDP11 they are called unsplit and
2942 split. If your system doesn't support different memory models, say "none".
2943 If you wish to force everything to one memory model, say "none" here and
2944 put the appropriate flags later when it asks you for other cc and ld flags.
2945 Venix systems may wish to put "none" and let the compiler figure things out.
2946 (In the following question multiple model names should be space separated.)
2949 rp="Which memory models are supported?"
2964 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2965 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2972 rp="What flag indicates separate I and D space?"
2980 *large*|*small*|*medium*|*huge*)
2987 rp="What flag indicates large model?"
2997 *huge*) case "$huge" in
3001 rp="What flag indicates huge model?"
3011 *medium*) case "$medium" in
3015 rp="What flag indicates medium model?"
3022 *) medium="$large";;
3025 *small*) case "$small" in
3029 rp="What flag indicates small model?"
3040 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3044 : see if we need a special compiler
3052 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3053 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3066 On some systems the default C compiler will not resolve multiple global
3067 references that happen to have the same name. On some such systems the "Mcc"
3068 command may be used to force these to be resolved. On other systems a "cc -M"
3069 command is required. (Note that the -M flag on other systems indicates a
3070 memory model to use!) If you have the Gnu C compiler, you might wish to use
3074 rp="What command will force resolution on this system?"
3082 rp="Use which C compiler?"
3087 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3088 $cat >gccvers.c <<EOM
3093 printf("%s\n", __VERSION__);
3095 printf("%s\n", "1");
3101 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3102 gccversion=`./gccvers`
3103 case "$gccversion" in
3104 '') echo "You are not using GNU cc." ;;
3105 *) echo "You are using GNU cc $gccversion." ;;
3109 echo "*** WHOA THERE!!! ***" >&4
3110 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3111 case "$knowitall" in
3113 echo " You'd better start hunting for one and let me know about it." >&4
3119 case "$gccversion" in
3120 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3123 : What should the include directory be ?
3125 $echo $n "Hmm... $c"
3129 if $test -f /bin/mips && /bin/mips; then
3130 echo "Looks like a MIPS system..."
3131 $cat >usr.c <<'EOCP'
3132 #ifdef SYSTYPE_BSD43
3136 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3137 dflt='/bsd43/usr/include'
3141 mips_type='System V'
3143 $rm -f usr.c usr.out
3144 echo "and you're compiling with the $mips_type compiler and libraries."
3148 echo "Doesn't look like a MIPS system."
3159 case "$xxx_prompt" in
3161 rp='Where are the include files you want to use?'
3169 : Set private lib path
3172 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3177 '') dlist="$loclibpth $plibpth $glibpth";;
3178 *) dlist="$libpth";;
3181 : Now check and see which directories actually exist, avoiding duplicates
3185 if $test -d $xxx; then
3188 *) libpth="$libpth $xxx";;
3194 Some systems have incompatible or broken versions of libraries. Among
3195 the directories listed in the question below, please remove any you
3196 know not to be holding relevant libraries, and add any that are needed.
3197 Say "none" for none.
3208 rp="Directories to use for library searches?"
3215 : compute shared library extension
3218 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3228 On some systems, shared libraries may be available. Answer 'none' if
3229 you want to suppress searching of shared libraries for the remaining
3230 of this configuration.
3233 rp='What is the file extension used for shared libraries?'
3237 : If no lib_ext yet, assume '.a'.
3242 : Looking for optional libraries
3244 echo "Checking for optional libraries..." >&4
3249 case "$libswanted" in
3250 '') libswanted='c_s';;
3252 for thislib in $libswanted; do
3254 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3255 echo "Found -l$thislib (shared)."
3258 *) dflt="$dflt -l$thislib";;
3260 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3261 echo "Found -l$thislib (shared)."
3264 *) dflt="$dflt -l$thislib";;
3266 elif xxx=`./loc lib$thislib${lib_ext} X $libpth`; $test -f "$xxx"; then
3267 echo "Found -l$thislib."
3270 *) dflt="$dflt -l$thislib";;
3272 elif xxx=`./loc $thislib${lib_ext} X $libpth`; $test -f "$xxx"; then
3273 echo "Found -l$thislib."
3276 *) dflt="$dflt -l$thislib";;
3278 elif xxx=`./loc lib${thislib}_s${lib_ext} X $libpth`; $test -f "$xxx"; then
3279 echo "Found -l${thislib}_s."
3282 *) dflt="$dflt -l${thislib}_s";;
3284 elif xxx=`./loc Slib$thislib${lib_ext} X $xlibpth`; $test -f "$xxx"; then
3285 echo "Found -l$thislib."
3288 *) dflt="$dflt -l$thislib";;
3291 echo "No -l$thislib."
3302 ' '|'') dflt='none';;
3307 Some versions of Unix support shared libraries, which make executables smaller
3308 but make load time slightly longer.
3310 On some systems, mostly System V Release 3's, the shared library is included
3311 by putting the option "-lc_s" as the last thing on the cc command line when
3312 linking. Other systems use shared libraries by default. There may be other
3313 libraries needed to compile $package on your machine as well. If your system
3314 needs the "-lc_s" option, include it here. Include any other special libraries
3315 here as well. Say "none" for none.
3319 rp="Any additional libraries?"
3326 : see how we invoke the C preprocessor
3328 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3329 cat <<'EOT' >testcpp.c
3335 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3337 wrapper=`pwd`/cppstdin
3341 if $test "X$cppstdin" != "X" && \
3342 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3343 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3345 echo "You used to use $cppstdin $cppminus so we'll use that again."
3347 '') echo "But let's see if we can live without a wrapper..." ;;
3349 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3350 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3352 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3355 echo "(However, $cpprun $cpplast does not work, let's see...)"
3363 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3370 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3371 $cc -E <testcpp.c >testcpp.out 2>&1; \
3372 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3373 echo "Yup, it does."
3376 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3377 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3378 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3379 echo "Yup, it does."
3382 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3383 $cc -P <testcpp.c >testcpp.out 2>&1; \
3384 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3385 echo "Yipee, that works!"
3388 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3389 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3390 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3391 echo "At long last!"
3394 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3395 $cpp <testcpp.c >testcpp.out 2>&1; \
3396 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3400 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3401 $cpp - <testcpp.c >testcpp.out 2>&1; \
3402 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3403 echo "Hooray, it works! I was beginning to wonder."
3406 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3407 $wrapper <testcpp.c >testcpp.out 2>&1; \
3408 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3414 rp="No dice. I can't find a C preprocessor. Name one:"
3418 $x_cpp <testcpp.c >testcpp.out 2>&1
3419 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3420 echo "OK, that will do." >&4
3422 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3437 echo "Perhaps can we force $cc -E using a wrapper..."
3438 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3439 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3445 echo "Nope, we'll have to live without it..."
3460 *) $rm -f $wrapper;;
3462 $rm -f testcpp.c testcpp.out
3464 : determine optimize, if desired, or use for debug flag also
3468 *) dflt="$optimize";;
3472 Some C compilers have problems with their optimizers. By default, $package
3473 compiles with the -O flag to use the optimizer. Alternately, you might want
3474 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3475 systems). Either flag can be specified here. To use neither flag, specify
3479 rp="What optimizer/debugger flag should be used?"
3483 'none') optimize=" ";;
3487 : We will not override a previous value, but we might want to
3488 : augment a hint file
3491 case "$gccversion" in
3492 1*) dflt='-fpcc-struct-return' ;;
3495 *-g*) dflt="$dflt -DDEBUGGING";;
3497 case "$gccversion" in
3498 2*) if test -d /etc/conf/kconfig.d &&
3499 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3508 case "$mips_type" in
3509 *BSD*|'') inclwanted="$locincpth $usrinc";;
3510 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3512 for thisincl in $inclwanted; do
3513 if $test -d $thisincl; then
3514 if $test x$thisincl != x$usrinc; then
3517 *) dflt="$dflt -I$thisincl";;
3523 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3525 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3533 *) dflt="$dflt -D$2";;
3538 set signal.h __LANGUAGE_C__; eval $inctest
3540 set signal.h LANGUAGE_C; eval $inctest
3542 set signal.h NO_PROTOTYPE; eval $inctest
3543 set signal.h _NO_PROTO; eval $inctest
3546 none|recommended) dflt="$ccflags $dflt" ;;
3547 *) dflt="$ccflags";;
3555 Your C compiler may want other flags. For this question you should include
3556 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3557 but you should NOT include libraries or ld flags like -lwhatever. If you
3558 want $package to honor its debug switch, you should include -DDEBUGGING here.
3559 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3560 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3562 To use no flags, specify the word "none".
3568 rp="Any additional cc flags?"
3575 : the following weeds options from ccflags that are of no interest to cpp
3577 case "$gccversion" in
3578 1*) cppflags="$cppflags -D__GNUC__"
3580 case "$mips_type" in
3582 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3588 echo "Let me guess what the preprocessor flags are..." >&4
3602 *) ftry="$previous $flag";;
3604 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3605 >cpp1.out 2>/dev/null && \
3606 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3607 >cpp2.out 2>/dev/null && \
3608 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3609 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3611 cppflags="$cppflags $ftry"
3621 *-*) echo "They appear to be: $cppflags";;
3623 $rm -f cpp.c cpp?.out
3627 : flags used in final linking phase
3630 '') if ./venix; then
3636 *-posix*) dflt="$dflt -posix" ;;
3639 *) dflt="$ldflags";;
3642 : Try to guess additional flags to pick up local libraries.
3643 for thislibdir in $libpth; do
3644 case " $loclibpth " in
3647 *"-L$thislibdir "*) ;;
3648 *) dflt="$dflt -L$thislibdir" ;;
3660 Your C linker may need flags. For this question you should
3661 include -L/whatever and any other flags used by the C linker, but you
3662 should NOT include libraries like -lwhatever.
3664 Make sure you include the appropriate -L/path flags if your C linker
3665 does not normally search all of the directories you specified above,
3668 To use no flags, specify the word "none".
3672 rp="Any additional ld flags (NOT including libraries)?"
3678 rmlist="$rmlist pdp11"
3682 echo "Checking your choice of C compiler and flags for coherency..." >&4
3683 set X $cc $optimize $ccflags $ldflags try.c -o try
3686 I've tried to compile and run a simple program with:
3691 and I got the following output:
3694 $cat > try.c <<'EOF'
3699 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
3700 if sh -c './try' >>try.msg 2>&1; then
3703 echo "The program compiled OK, but exited with status $?." >>try.msg
3704 rp="You have a problem. Shall I abort Configure"
3708 echo "I can't compile the test program." >>try.msg
3709 rp="You have a BIG problem. Shall I abort Configure"
3715 case "$knowitall" in
3717 echo "(The supplied flags might be incorrect with this C compiler.)"
3725 *) echo "Ok. Stopping Configure." >&4
3730 n) echo "OK, that should do.";;
3732 $rm -f try try.* core
3735 echo "Checking for GNU C Library..." >&4
3736 cat >gnulibc.c <<EOM
3740 return __libc_main();
3743 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3744 ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3746 echo "You are using the GNU C Library"
3749 echo "You are not using the GNU C Library"
3755 : see if nm is to be used to determine whether a symbol is defined or not
3758 case "$d_gnulibc" in
3763 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3764 if $test $dflt -gt 20; then
3781 I can use 'nm' to extract the symbols from your C libraries. This is a time
3782 consuming task which may generate huge output on the disk (up to 3 megabytes)
3783 but that should make the symbols extraction faster. The alternative is to skip
3784 the 'nm' extraction part and to compile a small test program instead to
3785 determine whether each symbol is present. If you have a fast C compiler and/or
3786 if your 'nm' output cannot be parsed, this may be the best solution.
3787 You shouldn't let me use 'nm' if you have the GNU C Library.
3790 rp='Shall I use nm to extract C symbols from the libraries?'
3802 : nm options which may be necessary
3804 '') if $test -f /mach_boot; then
3806 elif $test -d /usr/ccs/lib; then
3808 elif $test -f /dgux; then
3815 : nm options which may be necessary for shared libraries but illegal
3816 : for archive libraries. Thank you, Linux.
3817 case "$nm_so_opt" in
3818 '') case "$myuname" in
3820 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3821 nm_so_opt='--dynamic'
3830 : get list of predefined functions in a handy place
3835 *-lc_s*) libc=`./loc libc_s${lib_ext} $libc $libpth`
3842 *) for thislib in $libs; do
3845 : Handle C library specially below.
3848 thislib=`echo $thislib | $sed -e 's/^-l//'`
3849 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3851 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3853 elif try=`./loc lib$thislib${lib_ext} X $libpth`; $test -f "$try"; then
3855 elif try=`./loc $thislib${lib_ext} X $libpth`; $test -f "$try"; then
3857 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3859 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3861 elif try=`./loc Slib$thislib${lib_ext} X $xlibpth`; $test -f "$try"; then
3866 libnames="$libnames $try"
3868 *) libnames="$libnames $thislib" ;;
3877 for xxx in $libpth; do
3878 $test -r $1 || set $xxx/libc.$so
3879 : The messy sed command sorts on library version numbers.
3881 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3882 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3884 s/[0-9][0-9]*/0000&/g
3885 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3888 sort | $sed -e 's/^.* //'`
3891 $test -r $1 || set /usr/ccs/lib/libc.$so
3892 $test -r $1 || set /lib/libsys_s.a
3898 if $test -r "$1"; then
3899 echo "Your (shared) C library seems to be in $1."
3901 elif $test -r /lib/libc && $test -r /lib/clib; then
3902 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3904 libc='/lib/clib /lib/libc'
3905 if $test -r /lib/syslib; then
3906 echo "(Your math library is in /lib/syslib.)"
3907 libc="$libc /lib/syslib"
3909 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3910 echo "Your C library seems to be in $libc, as you said before."
3911 elif $test -r $incpath/usr/lib/libc${lib_ext}; then
3912 libc=$incpath/usr/lib/libc${lib_ext};
3913 echo "Your C library seems to be in $libc. That's fine."
3914 elif $test -r /lib/libc${lib_ext}; then
3915 libc=/lib/libc${lib_ext};
3916 echo "Your C library seems to be in $libc. You're normal."
3918 if tans=`./loc libc${lib_ext} blurfl/dyick $libpth`; $test -r "$tans"; then
3920 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3921 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3922 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3924 elif tans=`./loc Slibc${lib_ext} blurfl/dyick $xlibpth`; $test -r "$tans"; then
3926 elif tans=`./loc Mlibc${lib_ext} blurfl/dyick $xlibpth`; $test -r "$tans"; then
3929 tans=`./loc Llibc${lib_ext} blurfl/dyick $xlibpth`
3931 if $test -r "$tans"; then
3932 echo "Your C library seems to be in $tans, of all places."
3938 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3942 If the guess above is wrong (which it might be if you're using a strange
3943 compiler, or your machine supports multiple models), you can override it here.
3948 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
3950 I can't seem to find your C library. I've looked in the following places:
3953 $sed 's/^/ /' libpath
3956 None of these seems to contain your C library. I need to get its name...
3961 rp='Where is your C library?'
3966 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
3967 set X `cat libnames`
3970 case $# in 1) xxx=file; esac
3971 echo "Extracting names from the following $xxx for later perusal:" >&4
3973 $sed 's/^/ /' libnames >&4
3975 $echo $n "This may take a while...$c" >&4
3977 : Linux may need the special Dynamic option to nm for shared libraries.
3978 : In general, this is stored in the nm_so_opt variable.
3979 : Unfortunately, that option may be fatal on non-shared libraries.
3980 for nm_libs_ext in $*; do
3981 case $nm_libs_ext in
3982 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
3983 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
3988 $grep fprintf libc.tmp > libc.ptf
3989 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
3990 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
3992 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
3994 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3996 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
3998 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4000 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4002 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4004 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4006 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4008 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4010 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4012 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4014 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4016 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4017 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4019 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4021 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4023 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4025 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4027 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4029 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4031 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4033 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4035 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4038 nm -p $* 2>/dev/null >libc.tmp
4039 $grep fprintf libc.tmp > libc.ptf
4040 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4041 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4047 echo "nm didn't seem to work right. Trying ar instead..." >&4
4049 if ar t $libc > libc.tmp; then
4050 for thisname in $libnames; do
4051 ar t $thisname >>libc.tmp
4053 $sed -e 's/\.o$//' < libc.tmp > libc.list
4056 echo "ar didn't seem to work right." >&4
4057 echo "Maybe this is a Cray...trying bld instead..." >&4
4058 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4060 for thisname in $libnames; do
4062 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4063 ar t $thisname >>libc.tmp
4067 echo "That didn't work either. Giving up." >&4
4074 if $test -f /lib/syscalls.exp; then
4076 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4077 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4081 $rm -f libnames libpath
4083 : Define several unixisms. Hints files or command line options
4084 : can be used to override them.
4094 : Which makefile gets called first. This is used by make depend.
4095 case "$firstmakefile" in
4096 '') firstmakefile='makefile';;
4099 : determine filename position in cpp output
4101 echo "Computing filename position in cpp output for #include directives..." >&4
4102 echo '#include <stdio.h>' > foo.c
4105 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4106 $grep '^[ ]*#.*stdio\.h' | \
4107 while read cline; do
4110 while $test \$# -gt 0; do
4111 if $test -r \`echo \$1 | $tr -d '"'\`; then
4116 pos=\`expr \$pos + 1\`
4128 *) pos="${fieldn}th";;
4130 echo "Your cpp writes the filename in the $pos field of the line."
4132 : locate header file
4137 if test -f $usrinc/\$wanted; then
4138 echo "$usrinc/\$wanted"
4141 awkprg='{ print \$$fieldn }'
4142 echo "#include <\$wanted>" > foo\$\$.c
4143 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4144 $grep "^[ ]*#.*\$wanted" | \
4145 while read cline; do
4146 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4148 */\$wanted) echo "\$name"; exit 0;;
4159 : define an alternate in-header-list? function
4160 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4161 cont=true; xxf="echo \"<\$1> found.\" >&4";
4162 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4163 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4165 case $# in 4) instead=instead;; *) instead="at last";; esac;
4166 while $test "$cont"; do
4168 var=$2; eval "was=\$$2";
4169 if $test "$xxx" && $test -r "$xxx";
4171 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4174 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4175 set $yyy; shift; shift; yyy=$@;
4176 case $# in 0) cont="";;
4177 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4178 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4179 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4180 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4184 do set $yyy; var=$2; eval "was=\$$2";
4185 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4186 set $yyy; shift; shift; yyy=$@;
4189 : see if dld is available
4193 : is a C symbol defined?
4196 -v) tf=libc.tmp; tc=""; tdc="";;
4197 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4198 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4201 case "$reuseval-$4" in
4203 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4209 if $contains $tlook $tf >/dev/null 2>&1;
4214 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4215 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4223 $define) tval=true;;
4229 : define an is-in-libc? function
4230 inlibc='echo " "; td=$define; tu=$undef;
4231 sym=$1; var=$2; eval "was=\$$2";
4233 case "$reuseval$was" in
4243 echo "$sym() found." >&4;
4244 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4246 echo "$sym() NOT found." >&4;
4247 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4251 $define) echo "$sym() found." >&4;;
4252 *) echo "$sym() NOT found." >&4;;
4256 : see if dlopen exists
4263 : determine which dynamic loading, if any, to compile in
4265 dldir="ext/DynaLoader"
4278 $define) dflt='y' ;;
4281 $define) dflt='y' ;;
4283 : Does a dl_xxx.xs file exist for this operating system
4284 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4287 rp="Do you wish to use dynamic loading?"
4294 if $test -f ../$dldir/dl_${osname}.xs ; then
4295 dflt="$dldir/dl_${osname}.xs"
4296 elif $test "$d_dlopen" = "$define" ; then
4297 dflt="$dldir/dl_dlopen.xs"
4298 elif $test "$i_dld" = "$define" ; then
4299 dflt="$dldir/dl_dld.xs"
4304 *) dflt="$dldir/$dlsrc"
4307 echo "The following dynamic loading files are available:"
4308 : Can not go over to $dldir because getfile has path hard-coded in.
4309 cd ..; ls -C $dldir/dl*.xs; cd UU
4310 rp="Source file to use for dynamic loading"
4315 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4319 Some systems may require passing special flags to $cc -c to
4320 compile modules that will be used to create a shared library.
4321 To use no flags, say "none".
4324 case "$cccdlflags" in
4325 '') case "$gccversion" in
4326 '') case "$osname" in
4328 next) dflt='none' ;;
4329 solaris|svr4*|esix*) dflt='-Kpic' ;;
4330 irix*) dflt='-KPIC' ;;
4331 sunos) dflt='-pic' ;;
4336 *) dflt="$cccdlflags" ;;
4338 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4341 none) cccdlflags=' ' ;;
4342 *) cccdlflags="$ans" ;;
4347 Some systems use ld to create libraries that can be dynamically loaded,
4348 while other systems (such as those using ELF) use $cc.
4352 '') $cat >try.c <<'EOM'
4353 /* Test for whether ELF binaries are produced */
4358 int i = open("a.out",O_RDONLY);
4361 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4362 exit(0); /* succeed (yes, it's ELF) */
4367 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4369 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4373 echo "I'll use ld to build dynamic libraries."
4382 rp="What command should be used to create dynamic libraries?"
4388 Some systems may require passing special flags to $ld to create a
4389 library that can be dynamically loaded. If your ld flags include
4390 -L/other/path options to locate libraries outside your loader's normal
4391 search path, you may need to specify those -L options here as well. To
4392 use no flags, say "none".
4395 case "$lddlflags" in
4396 '') case "$osname" in
4398 linux|irix*) dflt='-shared' ;;
4399 next) dflt='none' ;;
4400 solaris) dflt='-G' ;;
4401 sunos) dflt='-assert nodefinitions' ;;
4402 svr4*|esix*) dflt="-G $ldflags" ;;
4406 *) dflt="$lddlflags" ;;
4409 : Try to guess additional flags to pick up local libraries.
4410 for thisflag in $ldflags; do
4415 *) dflt="$dflt $thisflag" ;;
4425 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4428 none) lddlflags=' ' ;;
4429 *) lddlflags="$ans" ;;
4434 Some systems may require passing special flags to $cc to indicate that
4435 the resulting executable will use dynamic linking. To use no flags,
4439 case "$ccdlflags" in
4440 '') case "$osname" in
4441 hpux) dflt='-Wl,-E' ;;
4442 linux) dflt='-rdynamic' ;;
4443 next) dflt='none' ;;
4444 sunos) dflt='none' ;;
4447 *) dflt="$ccdlflags" ;;
4449 rp="Any special flags to pass to $cc to use dynamic loading?"
4452 none) ccdlflags=' ' ;;
4453 *) ccdlflags="$ans" ;;
4467 # No dynamic loading being used, so don't bother even to prompt.
4470 *) case "$useshrplib" in
4471 '') case "$osname" in
4472 svr4|dgux|dynixptx|esix|powerux)
4474 also='Building a shared libperl is required for dynamic loading to work on your system.'
4479 also='Building a shared libperl is needed for MAB support.'
4487 also='Building a shared libperl will definitely not work on SunOS 4.'
4501 The perl executable is normally obtained by linking perlmain.c with
4502 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4503 any other libraries needed on this system (such as -lm, etc.). Since
4504 your system supports dynamic loading, it is probably possible to build
4505 a shared libperl.$so. If you will have more than one executable linked
4506 to libperl.$so, this will significantly reduce the size of each
4507 executable, but it may have a noticeable affect on performance. The
4508 default is probably sensible for your system.
4512 rp="Build a shared libperl.$so (y/n)"
4517 # Why does next4 have to be so different?
4518 case "${osname}${osvers}" in
4519 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4520 *) xxx='LD_LIBRARY_PATH' ;;
4524 To build perl, you must add the current working directory to your
4525 $xxx environtment variable before running make. You can do
4527 $xxx=\`pwd\`; export $xxx
4528 for Bourne-style shells, or
4530 for Csh-style shells. You *MUST* do this before running make.
4534 *) useshrplib='false' ;;
4539 case "$useshrplib" in
4543 # Figure out a good name for libperl.so. Since it gets stored in
4544 # a version-specific architecture-dependent library, the version
4545 # number isn't really that important, except for making cc/ld happy.
4547 # A name such as libperl.so.3.1
4548 majmin="libperl.$so.$patchlevel.$subversion"
4549 # A name such as libperl.so.301
4550 majonly=`echo $patchlevel $subversion |
4551 $awk '{printf "%d%02d", $1, $2}'`
4552 majonly=libperl.$so.$majonly
4553 # I'd prefer to keep the os-specific stuff here to a minimum, and
4554 # rely on figuring it out from the naming of libc.
4555 case "${osname}${osvers}" in
4558 # XXX How handle the --version stuff for MAB?
4560 linux*) # ld won't link with a bare -lperl otherwise.
4563 *) # Try to guess based on whether libc has major.minor.
4565 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4566 *libc.$so.[0-9]*) dflt=$majonly ;;
4567 *) dflt=libperl.$so ;;
4577 I need to select a good name for the shared libperl. If your system uses
4578 library names with major and minor numbers, then you might want something
4579 like $majmin. Alternatively, if your system uses a single version
4580 number for shared libraries, then you might want to use $majonly.
4581 Or, your system might be quite happy with a simple libperl.$so.
4583 Since the shared libperl will get installed into a version-specific
4584 architecture-dependent directory, the version number of the shared perl
4585 library probably isn't important, so the default should be o.k.
4588 rp='What name do you want to give to the shared libperl?'
4591 echo "Ok, I'll use $libperl"
4594 libperl="libperl${lib_ext}"
4598 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4602 WARNING: Use of the shrpdir variable for the installation location of
4603 the shared $libperl is not supported. It was never documented and
4604 will not work in this version. Let me (doughera@lafcol.lafayette.edu)
4605 know of any problems this may cause.
4611 But your current setting of $shrpdir is
4612 the default anyway, so it's harmless.
4617 Further, your current attempted setting of $shrpdir
4618 conflicts with the value of $archlibexp/CORE
4619 that installperl will use.
4626 # How will the perl executable find the installed shared $libperl?
4627 # Add $xxx to ccdlflags.
4628 # If we can't figure out a command-line option, use $shrpenv to
4629 # set env LD_RUN_PATH. The main perl makefile uses this.
4630 shrpdir=$archlibexp/CORE
4633 if "$useshrplib"; then
4639 xxx="-Wl,-rpath,$shrpdir"
4642 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
4647 *) ccdlflags="$ccdlflags $xxx"
4650 Adding $xxx to the flags
4651 passed to $ld so that the perl executable will find the
4652 installed shared $libperl.
4658 # Respect a hint or command-line value.
4660 '') shrpenv="$tmp_shrpenv" ;;
4663 : determine where manual pages go
4664 set man1dir man1dir none
4668 $spackage has manual pages available in source form.
4672 echo "However, you don't have nroff, so they're probably useless to you."
4674 '') man1dir="none";;
4677 echo "If you don't want the manual sources installed, answer 'none'."
4682 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
4683 lookpath="$lookpath $prefixexp/man/p_man/man1"
4684 lookpath="$lookpath $prefixexp/man/u_man/man1"
4685 lookpath="$lookpath $prefixexp/man/man.1"
4686 : If prefix contains 'perl' then we want to keep the man pages
4687 : under the prefix directory. Otherwise, look in a variety of
4688 : other possible places. This is debatable, but probably a
4689 : good compromise. Well, apparently not.
4690 : Experience has shown people expect man1dir to be under prefix,
4691 : so we now always put it there. Users who want other behavior
4692 : can answer interactively or use a command line option.
4693 : Does user have System V-style man paths.
4695 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
4696 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
4706 rp="Where do the main $spackage manual pages (source) go?"
4708 if $test "X$man1direxp" != "X$ansexp"; then
4712 man1direxp="$ansexp"
4720 Since you are running AFS, I need to distinguish the directory in which
4721 manual pages reside from the directory in which they are installed (and from
4722 which they are presumably copied to the former directory by occult means).
4725 case "$installman1dir" in
4726 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
4727 *) dflt="$installman1dir";;
4730 rp='Where will man pages be installed?'
4732 installman1dir="$ans"
4734 installman1dir="$man1direxp"
4737 : What suffix to use on installed man pages
4744 rp="What suffix should be used for the main $spackage man pages?"
4746 '') case "$man1dir" in
4760 *) dflt="$man1ext";;
4767 : see if we can have long filenames
4769 rmlist="$rmlist /tmp/cf$$"
4770 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
4771 first=123456789abcdef
4772 second=/tmp/cf$$/$first
4773 $rm -f $first $second
4774 if (echo hi >$first) 2>/dev/null; then
4775 if $test -f 123456789abcde; then
4776 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
4779 if (echo hi >$second) 2>/dev/null; then
4780 if $test -f /tmp/cf$$/123456789abcde; then
4782 That's peculiar... You can have filenames longer than 14 characters, but only
4783 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
4784 I shall consider your system cannot support long filenames at all.
4788 echo 'You can have filenames longer than 14 characters.' >&4
4793 How confusing! Some of your filesystems are sane enough to allow filenames
4794 longer than 14 characters but some others like /tmp can't even think about them.
4795 So, for now on, I shall assume your kernel does not allow them at all.
4802 You can't have filenames longer than 14 chars. You can't even think about them!
4808 $rm -rf /tmp/cf$$ 123456789abcde*
4810 : determine where library module manual pages go
4811 set man3dir man3dir none
4815 $spackage has manual pages for many of the library modules.
4821 However, you don't have nroff, so they're probably useless to you.
4822 You can use the supplied perldoc script instead.
4825 '') man3dir="none";;
4829 case "$d_flexfnam" in
4832 However, your system can't handle the long file names like File::Basename.3.
4833 You can use the supplied perldoc script instead.
4836 '') man3dir="none";;
4840 echo "If you don't want the manual sources installed, answer 'none'."
4841 : We dont use /usr/local/man/man3 because some man programs will
4842 : only show the /usr/local/man/man3 contents, and not the system ones,
4843 : thus man less will show the perl module less.pm, but not the system
4844 : less command. We might also conflict with TCL man pages.
4845 : However, something like /opt/perl/man/man3 is fine.
4847 '') case "$prefix" in
4848 *perl*) dflt=`echo $man1dir |
4849 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
4850 *) dflt="$privlib/man/man3" ;;
4854 *) dflt="$man3dir" ;;
4859 rp="Where do the $spackage library man pages (source) go?"
4861 if test "X$man3direxp" != "X$ansexp"; then
4866 man3direxp="$ansexp"
4874 Since you are running AFS, I need to distinguish the directory in which
4875 manual pages reside from the directory in which they are installed (and from
4876 which they are presumably copied to the former directory by occult means).
4879 case "$installman3dir" in
4880 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
4881 *) dflt="$installman3dir";;
4884 rp='Where will man pages be installed?'
4886 installman3dir="$ans"
4888 installman3dir="$man3direxp"
4891 : What suffix to use on installed man pages
4898 rp="What suffix should be used for the $spackage library man pages?"
4900 '') case "$man3dir" in
4914 *) dflt="$man3ext";;
4921 : see if we have to deal with yellow pages, now NIS.
4922 if $test -d /usr/etc/yp || $test -d /etc/yp; then
4923 if $test -f /usr/etc/nibindd; then
4925 echo "I'm fairly confident you're on a NeXT."
4927 rp='Do you get the hosts file via NetInfo?'
4936 y*) hostcat='nidump hosts .';;
4937 *) case "$hostcat" in
4938 nidump*) hostcat='';;
4948 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
4956 rp='Are you getting the hosts file via yellow pages?'
4959 y*) hostcat='ypcat hosts';;
4960 *) hostcat='cat /etc/hosts';;
4966 : now get the host name
4968 echo "Figuring out host name..." >&4
4969 case "$myhostname" in
4971 echo 'Maybe "hostname" will work...'
4972 if tans=`sh -c hostname 2>&1` ; then
4980 if $test "$cont"; then
4982 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
4983 if tans=`cat /etc/systemid 2>&1` ; then
4985 phostname='cat /etc/systemid'
4986 echo "Whadyaknow. Xenix always was a bit strange..."
4989 elif $test -r /etc/systemid; then
4990 echo "(What is a non-Xenix system doing with /etc/systemid?)"
4993 if $test "$cont"; then
4994 echo 'No, maybe "uuname -l" will work...'
4995 if tans=`sh -c 'uuname -l' 2>&1` ; then
4997 phostname='uuname -l'
4999 echo 'Strange. Maybe "uname -n" will work...'
5000 if tans=`sh -c 'uname -n' 2>&1` ; then
5002 phostname='uname -n'
5004 echo 'Oh well, maybe I can mine it out of whoami.h...'
5005 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5006 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5007 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5009 case "$myhostname" in
5010 '') echo "Does this machine have an identity crisis or something?"
5013 echo "Well, you said $myhostname before..."
5014 phostname='echo $myhostname';;
5020 : you do not want to know about this
5025 if $test "$myhostname" ; then
5027 rp='Your host name appears to be "'$myhostname'".'" Right?"
5035 : bad guess or no guess
5036 while $test "X$myhostname" = X ; do
5038 rp="Please type the (one word) name of your host:"
5043 : translate upper to lower if necessary
5044 case "$myhostname" in
5046 echo "(Normalizing case in your host name)"
5047 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5051 case "$myhostname" in
5053 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5054 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5055 echo "(Trimming domain name from host name--host name is now $myhostname)"
5057 *) case "$mydomain" in
5060 : If we use NIS, try ypmatch.
5061 : Is there some reason why this was not done before?
5062 test "X$hostcat" = "Xypcat hosts" &&
5063 ypmatch "$myhostname" hosts 2>/dev/null |\
5064 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5067 : Extract only the relevant hosts, reducing file size,
5068 : remove comments, insert trailing space for later use.
5069 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5070 /[ ]$myhostname[ . ]/p" > hosts
5073 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5074 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5075 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5076 hosts | $sort | $uniq | \
5077 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5078 case `$echo X$dflt` in
5079 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5082 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5087 tans=`./loc resolv.conf X /etc /usr/etc`
5088 if $test -f "$tans"; then
5089 echo "(Attempting domain name extraction from $tans)"
5090 : Why was there an Egrep here, when Sed works?
5091 : Look for either a search or a domain directive.
5092 dflt=.`$sed -n -e 's/^search[ ]*\(.*\)/\1/p' $tans \
5093 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5095 .) dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \
5096 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5103 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5104 dflt=.`sh -c domainname 2>/dev/null`
5107 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5112 .) echo "(Lost all hope -- silly guess then)"
5118 *) dflt="$mydomain";;
5122 rp="What is your domain name?"
5132 : translate upper to lower if necessary
5135 echo "(Normalizing case in your domain name)"
5136 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5140 : a little sanity check here
5141 case "$phostname" in
5144 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5145 $myhostname$mydomain|$myhostname) ;;
5147 case "$phostname" in
5149 echo "(That doesn't agree with your whoami.h file, by the way.)"
5152 echo "(That doesn't agree with your $phostname command, by the way.)"
5162 I need to get your e-mail address in Internet format if possible, i.e.
5163 something like user@host.domain. Please answer accurately since I have
5164 no easy means to double check it. The default value provided below
5165 is most probably close to the reality but may not be valid from outside
5166 your organization...
5170 while test "$cont"; do
5172 '') dflt="$cf_by@$myhostname$mydomain";;
5173 *) dflt="$cf_email";;
5175 rp='What is your e-mail address?'
5181 rp='Address does not look like an Internet one. Use it anyway?'
5197 If you or somebody else will be maintaining perl at your site, please
5198 fill in the correct e-mail address here so that they may be contacted
5199 if necessary. Currently, the "perlbug" program included with perl
5200 will send mail to this address in addition to perlbug@perl.com. You may
5201 enter "none" for no administrator.
5204 case "$perladmin" in
5205 '') dflt="$cf_email";;
5206 *) dflt="$perladmin";;
5208 rp='Perl administrator e-mail address'
5212 : determine where public executable scripts go
5213 set scriptdir scriptdir
5215 case "$scriptdir" in
5218 : guess some guesses
5219 $test -d /usr/share/scripts && dflt=/usr/share/scripts
5220 $test -d /usr/share/bin && dflt=/usr/share/bin
5221 $test -d /usr/local/script && dflt=/usr/local/script
5222 $test -d $prefixexp/script && dflt=$prefixexp/script
5226 *) dflt="$scriptdir"
5231 Some installations have a separate directory just for executable scripts so
5232 that they can mount it across multiple architectures but keep the scripts in
5233 one spot. You might, for example, have a subdirectory of /usr/share for this.
5234 Or you might just lump your scripts in with all your other executables.
5238 rp='Where do you keep publicly executable scripts?'
5240 if $test "X$ansexp" != "X$scriptdirexp"; then
5244 scriptdirexp="$ansexp"
5248 Since you are running AFS, I need to distinguish the directory in which
5249 scripts reside from the directory in which they are installed (and from
5250 which they are presumably copied to the former directory by occult means).
5253 case "$installscript" in
5254 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
5255 *) dflt="$installscript";;
5258 rp='Where will public scripts be installed?'
5260 installscript="$ans"
5262 installscript="$scriptdirexp"
5265 : determine perl absolute location
5267 '') perlpath=$binexp/perl ;;
5270 : figure out how to guarantee perl startup
5271 case "$startperl" in
5273 case "$sharpbang" in
5277 I can use the #! construct to start perl on your system. This will
5278 make startup of perl scripts faster, but may cause problems if you
5279 want to share those scripts and perl is not in a standard place
5280 ($perlpath) on all your platforms. The alternative is to force
5281 a shell by starting the script with a single ':' character.
5285 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5288 none) startperl=": # use perl";;
5289 *) startperl="#!$ans";;
5292 *) startperl=": # use perl"
5297 echo "I'll use $startperl to start perl scripts."
5301 Previous version of $package used the standard IO mechanisms as defined in
5302 <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
5303 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
5304 the default and is the only supported mechanism. This abstraction
5305 layer can use AT&T's sfio (if you already have sfio installed) or
5306 fall back on standard IO. This PerlIO abstraction layer is
5307 experimental and may cause problems with some extension modules.
5309 If this doesn't make any sense to you, just accept the default 'n'.
5311 case "$useperlio" in
5312 $define|true|[yY]*) dflt='y';;
5315 rp='Use the experimental PerlIO abstraction layer?'
5322 echo "Ok, doing things the stdio way"
5329 : Check how to convert floats to strings.
5331 echo "Checking for an efficient way to convert floats to strings."
5334 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
5335 char *myname = "gconvert";
5338 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
5339 char *myname = "gcvt";
5342 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
5343 char *myname = "sprintf";
5349 checkit(expect, got)
5353 if (strcmp(expect, got)) {
5354 printf("%s oddity: Expected %s, got %s\n",
5355 myname, expect, got);
5366 /* This must be 1st test on (which?) platform */
5367 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
5368 Gconvert(0.1, 8, 0, buf);
5369 checkit("0.1", buf);
5371 Gconvert(1.0, 8, 0, buf);
5374 Gconvert(0.0, 8, 0, buf);
5377 Gconvert(-1.0, 8, 0, buf);
5380 /* Some Linux gcvt's give 1.e+5 here. */
5381 Gconvert(100000.0, 8, 0, buf);
5382 checkit("100000", buf);
5384 /* Some Linux gcvt's give -1.e+5 here. */
5385 Gconvert(-100000.0, 8, 0, buf);
5386 checkit("-100000", buf);
5391 case "$d_Gconvert" in
5392 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
5393 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
5394 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
5395 *) xxx_list='gconvert gcvt sprintf' ;;
5398 for xxx_convert in $xxx_list; do
5399 echo "Trying $xxx_convert"
5401 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
5402 try.c $libs > /dev/null 2>&1 ; then
5403 echo "$xxx_convert" found. >&4
5405 echo "I'll use $xxx_convert to convert floats into a string." >&4
5408 echo "...But $xxx_convert didn't work as I expected."
5411 echo "$xxx_convert NOT found." >&4
5415 case "$xxx_convert" in
5416 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
5417 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
5418 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
5421 : Initialize h_fcntl
5424 : Initialize h_sysfile
5427 : access call always available on UNIX
5431 : locate the flags for 'access()'
5435 $cat >access.c <<'EOCP'
5436 #include <sys/types.h>
5441 #include <sys/file.h>
5450 : check sys/file.h first, no particular reason here
5451 if $test `./findhdr sys/file.h` && \
5452 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
5454 echo "<sys/file.h> defines the *_OK access constants." >&4
5455 elif $test `./findhdr fcntl.h` && \
5456 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
5458 echo "<fcntl.h> defines the *_OK access constants." >&4
5459 elif $test `./findhdr unistd.h` && \
5460 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
5461 echo "<unistd.h> defines the *_OK access constants." >&4
5463 echo "I can't find the four *_OK access constants--I'll use mine." >&4
5469 : see if alarm exists
5473 : Look for GNU-cc style attribute checking
5475 echo "Checking whether your compiler can handle __attribute__ ..." >&4
5476 $cat >attrib.c <<'EOCP'
5478 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
5480 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
5481 if $contains 'warning' attrib.out >/dev/null 2>&1; then
5482 echo "Your C compiler doesn't fully support __attribute__."
5485 echo "Your C compiler supports __attribute__."
5489 echo "Your C compiler doesn't seem to understand __attribute__ at all."
5496 : see if bcmp exists
5500 : see if bcopy exists
5504 : see if this is a unistd.h system
5505 set unistd.h i_unistd
5508 : see if getpgrp exists
5509 set getpgrp d_getpgrp
5512 echo "Checking to see which flavor of getpgrp is in use . . . "
5513 case "$d_getpgrp" in
5518 #include <sys/types.h>
5520 # include <unistd.h>
5524 if (getuid() == 0) {
5525 printf("(I see you are running Configure as super-user...)\n");
5529 if (getpgrp(1) == 0)
5538 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5539 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
5541 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5542 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
5545 echo "I can't seem to compile and run the test program."
5547 xxx="a USG one, i.e. you use getpgrp()."
5549 # SVR4 systems can appear rather BSD-ish.
5552 xxx="a BSD one, i.e. you use getpgrp(pid)."
5556 xxx="probably a USG one, i.e. you use getpgrp()."
5561 echo "Assuming your getpgrp is $xxx" >&4
5570 : see if setpgrp exists
5571 set setpgrp d_setpgrp
5574 echo "Checking to see which flavor of setpgrp is in use . . . "
5575 case "$d_setpgrp" in
5580 #include <sys/types.h>
5582 # include <unistd.h>
5586 if (getuid() == 0) {
5587 printf("(I see you are running Configure as super-user...)\n");
5591 if (-1 == setpgrp(1, 1))
5594 if (setpgrp() != -1)
5600 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5601 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
5603 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5604 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
5607 echo "I can't seem to compile and run the test program."
5609 xxx="a USG one, i.e. you use setpgrp()."
5611 # SVR4 systems can appear rather BSD-ish.
5614 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
5618 xxx="probably a USG one, i.e. you use setpgrp()."
5623 echo "Assuming your setpgrp is $xxx" >&4
5630 d_bsdpgrp=$d_bsdsetpgrp
5632 : see if bzero exists
5636 : check for length of integer
5640 echo "Checking to see how big your integers are..." >&4
5641 $cat >try.c <<'EOCP'
5645 printf("%d\n", sizeof(int));
5649 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
5651 echo "Your integers are $intsize bytes long."
5654 echo "(I can't seem to compile the test program. Guessing...)"
5655 rp="What is the size of an integer (in bytes)?"
5663 : see if signal is declared as pointer to function returning int or void
5665 xxx=`./findhdr signal.h`
5666 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
5667 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5668 echo "You have int (*signal())() instead of void." >&4
5670 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5671 echo "You have void (*signal())() instead of int." >&4
5673 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
5674 echo "You have int (*signal())() instead of void." >&4
5677 case "$d_voidsig" in
5679 echo "I can't determine whether signal handler returns void or int..." >&4
5681 rp="What type does your signal handler return?"
5688 echo "As you already told me, signal handler returns void." >&4;;
5690 echo "As you already told me, signal handler returns int." >&4;;
5695 case "$d_voidsig" in
5696 "$define") signal_t="void";;
5701 : check for ability to cast large floats to 32-bit ints.
5703 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
5704 if $test "$intsize" -eq 4; then
5710 #include <sys/types.h>
5712 $signal_t blech() { exit(3); }
5718 signal(SIGFPE, blech);
5720 f = (double) 0x7fffffff;
5724 if (i32 != ($xxx) f)
5729 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5733 echo "(I can't seem to compile the test program--assuming it can't)"
5741 echo "Nope, it can't."
5748 : check for ability to cast negative floats to unsigned
5750 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
5752 #include <sys/types.h>
5754 $signal_t blech() { exit(7); }
5755 $signal_t blech_in_list() { exit(4); }
5756 unsigned long dummy_long(p) unsigned long p; { return p; }
5757 unsigned int dummy_int(p) unsigned int p; { return p; }
5758 unsigned short dummy_short(p) unsigned short p; { return p; }
5762 unsigned long along;
5764 unsigned short ashort;
5767 signal(SIGFPE, blech);
5768 along = (unsigned long)f;
5769 aint = (unsigned int)f;
5770 ashort = (unsigned short)f;
5771 if (along != (unsigned long)-123)
5773 if (aint != (unsigned int)-123)
5775 if (ashort != (unsigned short)-123)
5777 f = (double)0x40000000;
5780 along = (unsigned long)f;
5781 if (along != 0x80000000)
5785 along = (unsigned long)f;
5786 if (along != 0x7fffffff)
5790 along = (unsigned long)f;
5791 if (along != 0x80000001)
5795 signal(SIGFPE, blech_in_list);
5797 along = dummy_long((unsigned long)f);
5798 aint = dummy_int((unsigned int)f);
5799 ashort = dummy_short((unsigned short)f);
5800 if (along != (unsigned long)123)
5802 if (aint != (unsigned int)123)
5804 if (ashort != (unsigned short)123)
5810 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5814 echo "(I can't seem to compile the test program--assuming it can't)"
5817 case "$castflags" in
5822 echo "Nope, it can't."
5829 : see if vprintf exists
5831 if set vprintf val -f d_vprintf; eval $csym; $val; then
5832 echo 'vprintf() found.' >&4
5834 $cat >vprintf.c <<'EOF'
5835 #include <varargs.h>
5837 main() { xxx("foo"); }
5846 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
5849 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
5850 echo "Your vsprintf() returns (int)." >&4
5853 echo "Your vsprintf() returns (char*)." >&4
5857 echo 'vprintf() NOT found.' >&4
5867 : see if chown exists
5871 : see if chroot exists
5875 : see if chsize exists
5879 : check for const keyword
5881 echo 'Checking to see if your C compiler knows about "const"...' >&4
5882 $cat >const.c <<'EOCP'
5883 typedef struct spug { int drokk; } spug;
5890 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
5892 echo "Yup, it does."
5895 echo "Nope, it doesn't."
5900 : see if crypt exists
5902 if set crypt val -f d_crypt; eval $csym; $val; then
5903 echo 'crypt() found.' >&4
5907 cryptlib=`./loc Slibcrypt${lib_ext} "" $xlibpth`
5908 if $test -z "$cryptlib"; then
5909 cryptlib=`./loc Mlibcrypt${lib_ext} "" $xlibpth`
5913 if $test -z "$cryptlib"; then
5914 cryptlib=`./loc Llibcrypt${lib_ext} "" $xlibpth`
5918 if $test -z "$cryptlib"; then
5919 cryptlib=`./loc libcrypt${lib_ext} "" $libpth`
5923 if $test -z "$cryptlib"; then
5924 echo 'crypt() NOT found.' >&4
5933 : get csh whereabouts
5935 'csh') val="$undef" ;;
5942 : see if cuserid exists
5943 set cuserid d_cuserid
5946 : see if this is a limits.h system
5947 set limits.h i_limits
5950 : see if this is a float.h system
5954 : See if number of significant digits in a double precision number is known
5956 $cat >dbl_dig.c <<EOM
5966 printf("Contains DBL_DIG");
5969 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
5970 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
5971 echo "DBL_DIG found." >&4
5974 echo "DBL_DIG NOT found." >&4
5981 : see if difftime exists
5982 set difftime d_difftime
5985 : see if this is a dirent system
5987 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
5989 echo "<dirent.h> found." >&4
5992 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
5993 echo "<sys/dir.h> found." >&4
5996 xinc=`./findhdr sys/ndir.h`
5998 echo "<dirent.h> NOT found." >&4
6003 : Look for type of directory structure.
6005 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6007 case "$direntrytype" in
6010 $define) guess1='struct dirent' ;;
6011 *) guess1='struct direct' ;;
6014 *) guess1="$direntrytype"
6019 'struct dirent') guess2='struct direct' ;;
6020 *) guess2='struct dirent' ;;
6023 if $contains "$guess1" try.c >/dev/null 2>&1; then
6024 direntrytype="$guess1"
6025 echo "Your directory entries are $direntrytype." >&4
6026 elif $contains "$guess2" try.c >/dev/null 2>&1; then
6027 direntrytype="$guess2"
6028 echo "Your directory entries seem to be $direntrytype." >&4
6030 echo "I don't recognize your system's directory entries." >&4
6031 rp="What type is used for directory entries on this system?"
6039 : see if the directory entry stores field length
6041 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6042 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
6043 echo "Good, your directory entry keeps length information in d_namlen." >&4
6046 echo "Your directory entry does not know about the d_namlen field." >&4
6053 : see if dlerror exists
6056 set dlerror d_dlerror
6060 : see if dlfcn is available
6068 On a few systems, the dynamically loaded modules that perl generates and uses
6069 will need a different extension then shared libs. The default will probably
6077 rp='What is the extension of dynamically loaded modules'
6086 : Check if dlsym need a leading underscore
6092 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
6093 $cat >dyna.c <<'EOM'
6102 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
6104 #include <sys/types.h>
6118 int mode = RTLD_LAZY ;
6120 handle = dlopen("./dyna.$dlext", mode) ;
6121 if (handle == NULL) {
6125 symbol = dlsym(handle, "fred") ;
6126 if (symbol == NULL) {
6127 /* try putting a leading underscore */
6128 symbol = dlsym(handle, "_fred") ;
6129 if (symbol == NULL) {
6140 : Call the object file tmp-dyna.o in case dlext=o.
6141 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
6142 mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6143 $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6144 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
6147 1) echo "Test program failed using dlopen." >&4
6148 echo "Perhaps you should not use dynamic loading." >&4;;
6149 2) echo "Test program failed using dlsym." >&4
6150 echo "Perhaps you should not use dynamic loading." >&4;;
6151 3) echo "dlsym needs a leading underscore" >&4
6153 4) echo "dlsym doesn't need a leading underscore." >&4;;
6156 echo "I can't compile and run the test program." >&4
6161 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
6166 : see if dup2 exists
6170 : Locate the flags for 'open()'
6172 $cat >open3.c <<'EOCP'
6173 #include <sys/types.h>
6178 #include <sys/file.h>
6189 : check sys/file.h first to get FREAD on Sun
6190 if $test `./findhdr sys/file.h` && \
6191 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
6193 echo "<sys/file.h> defines the O_* constants..." >&4
6195 echo "and you have the 3 argument form of open()." >&4
6198 echo "but not the 3 argument form of open(). Oh, well." >&4
6201 elif $test `./findhdr fcntl.h` && \
6202 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
6204 echo "<fcntl.h> defines the O_* constants..." >&4
6206 echo "and you have the 3 argument form of open()." >&4
6209 echo "but not the 3 argument form of open(). Oh, well." >&4
6214 echo "I can't find the O_* constant definitions! You got problems." >&4
6220 : check for non-blocking I/O stuff
6221 case "$h_sysfile" in
6222 true) echo "#include <sys/file.h>" > head.c;;
6225 true) echo "#include <fcntl.h>" > head.c;;
6226 *) echo "#include <sys/fcntl.h>" > head.c;;
6231 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
6232 case "$o_nonblock" in
6235 $cat >>try.c <<'EOCP'
6238 printf("O_NONBLOCK\n");
6242 printf("O_NDELAY\n");
6246 printf("FNDELAY\n");
6252 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6254 case "$o_nonblock" in
6255 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
6256 *) echo "Seems like we can use $o_nonblock.";;
6259 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
6262 *) echo "Using $hint value $o_nonblock.";;
6264 $rm -f try try.* .out core
6267 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
6273 #include <sys/types.h>
6275 #define MY_O_NONBLOCK $o_nonblock
6277 $signal_t blech(x) int x; { exit(3); }
6279 $cat >> try.c <<'EOCP'
6287 pipe(pd); /* Down: child -> parent */
6288 pipe(pu); /* Up: parent -> child */
6291 close(pd[1]); /* Parent reads from pd[0] */
6292 close(pu[0]); /* Parent writes (blocking) to pu[1] */
6293 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
6295 signal(SIGALRM, blech);
6297 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
6299 sprintf(string, "%d\n", ret);
6300 write(2, string, strlen(string));
6303 if (errno == EAGAIN) {
6309 if (errno == EWOULDBLOCK)
6310 printf("EWOULDBLOCK\n");
6313 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
6314 sleep(2); /* Give it time to close our pipe */
6316 ret = read(pd[0], buf, 1); /* Should read EOF */
6318 sprintf(string, "%d\n", ret);
6319 write(3, string, strlen(string));
6323 close(pd[0]); /* We write to pd[1] */
6324 close(pu[1]); /* We read from pu[0] */
6325 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
6326 close(pd[1]); /* Pipe pd is now fully closed! */
6327 exit(0); /* Bye bye, thank you for playing! */
6330 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6331 echo "$startsh" >mtry
6332 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
6334 ./mtry >/dev/null 2>&1
6336 0) eagain=`$cat try.out`;;
6337 1) echo "Could not perform non-blocking setting!";;
6338 2) echo "I did a successful read() for something that was not there!";;
6339 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
6340 *) echo "Something terribly wrong happened during testing.";;
6342 rd_nodata=`$cat try.ret`
6343 echo "A read() system call with no data present returns $rd_nodata."
6344 case "$rd_nodata" in
6347 echo "(That's peculiar, fixing that to be -1.)"
6353 echo "Forcing errno EAGAIN on read() with no data available."
6357 echo "Your read() sets errno to $eagain when no data is available."
6360 status=`$cat try.err`
6362 0) echo "And it correctly returns 0 to signal EOF.";;
6363 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
6364 *) echo "However, your read() returns '$status' on EOF??";;
6367 if test "$status" -eq "$rd_nodata"; then
6368 echo "WARNING: you can't distinguish between EOF and no data!"
6372 echo "I can't compile the test program--assuming errno EAGAIN will do."
6379 echo "Using $hint value $eagain."
6380 echo "Your read() returns $rd_nodata when no data is present."
6381 case "$d_eofnblk" in
6382 "$define") echo "And you can see EOF because read() returns 0.";;
6383 "$undef") echo "But you can't see EOF status from read() returned value.";;
6385 echo "(Assuming you can't see EOF status from read anyway.)"
6391 $rm -f try try.* .out core head.c mtry
6393 : see if fchmod exists
6397 : see if fchown exists
6401 : see if this is an fcntl system
6405 : see if fgetpos exists
6406 set fgetpos d_fgetpos
6409 : see if flock exists
6413 : see if fork exists
6417 : see if pathconf exists
6418 set pathconf d_pathconf
6421 : see if fpathconf exists
6422 set fpathconf d_fpathconf
6425 : see if fsetpos exists
6426 set fsetpos d_fsetpos
6429 : see if gethostent exists
6430 set gethostent d_gethent
6433 : see if getlogin exists
6434 set getlogin d_getlogin
6437 : see if getpgid exists
6438 set getpgid d_getpgid
6441 : see if getpgrp2 exists
6442 set getpgrp2 d_getpgrp2
6445 : see if getppid exists
6446 set getppid d_getppid
6449 : see if getpriority exists
6450 set getpriority d_getprior
6453 : see if this is a netinet/in.h or sys/in.h system
6454 set netinet/in.h i_niin sys/in.h i_sysin
6457 : see if htonl --and friends-- exists
6462 : Maybe they are macros.
6467 #include <sys/types.h>
6468 #$i_niin I_NETINET_IN
6471 #include <netinet/in.h>
6477 printf("Defined as a macro.");
6480 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
6481 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
6483 echo "But it seems to be defined as a macro." >&4
6491 : see which of string.h or strings.h is needed
6493 strings=`./findhdr string.h`
6494 if $test "$strings" && $test -r "$strings"; then
6495 echo "Using <string.h> instead of <strings.h>." >&4
6499 strings=`./findhdr strings.h`
6500 if $test "$strings" && $test -r "$strings"; then
6501 echo "Using <strings.h> instead of <string.h>." >&4
6503 echo "No string header found -- You'll surely have problems." >&4
6509 "$undef") strings=`./findhdr strings.h`;;
6510 *) strings=`./findhdr string.h`;;
6515 if set index val -f; eval $csym; $val; then
6516 if set strchr val -f d_strchr; eval $csym; $val; then
6517 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6520 echo "strchr() found." >&4
6524 echo "index() found." >&4
6529 echo "index() found." >&4
6532 if set strchr val -f d_strchr; eval $csym; $val; then
6535 echo "strchr() found." >&4
6537 echo "No index() or strchr() found!" >&4
6542 set d_strchr; eval $setvar
6544 set d_index; eval $setvar
6548 $cat >isascii.c <<'EOCP'
6559 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6560 echo "isascii() found." >&4
6563 echo "isascii() NOT found." >&4
6570 : see if killpg exists
6574 : see if link exists
6578 : see if localeconv exists
6579 set localeconv d_locconv
6582 : see if lockf exists
6586 : see if lstat exists
6590 : see if mblen exists
6594 : see if mbstowcs exists
6595 set mbstowcs d_mbstowcs
6598 : see if mbtowc exists
6602 : see if memcmp exists
6606 : see if memcpy exists
6610 : see if memmove exists
6611 set memmove d_memmove
6614 : see if memset exists
6618 : see if mkdir exists
6622 : see if mkfifo exists
6626 : see if mktime exists
6630 : see if msgctl exists
6634 : see if msgget exists
6638 : see if msgsnd exists
6642 : see if msgrcv exists
6646 : see how much of the 'msg*(2)' library is present.
6649 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6650 *"$undef"*) h_msg=false;;
6652 : we could also check for sys/ipc.h ...
6653 if $h_msg && $test `./findhdr sys/msg.h`; then
6654 echo "You have the full msg*(2) library." >&4
6657 echo "You don't have the full msg*(2) library." >&4
6663 : see if this is a malloc.h system
6664 set malloc.h i_malloc
6667 : see if stdlib is available
6668 set stdlib.h i_stdlib
6671 : determine which malloc to compile in
6673 case "$usemymalloc" in
6674 ''|y*|true) dflt='y' ;;
6675 n*|false) dflt='n' ;;
6676 *) dflt="$usemymalloc" ;;
6678 rp="Do you wish to attempt to use the malloc that comes with $package?"
6684 mallocsrc='malloc.c'
6685 mallocobj='malloc.o'
6686 d_mymalloc="$define"
6689 : Remove malloc from list of libraries to use
6690 echo "Removing unneeded -lmalloc from library list" >&4
6691 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6694 echo "libs = $libs" >&4
6706 : compute the return types of malloc and free
6708 $cat >malloc.c <<END
6712 #include <sys/types.h>
6726 case "$malloctype" in
6728 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6735 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6739 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6746 echo "Your system uses $freetype free(), it would seem." >&4
6748 : see if nice exists
6752 : see if pause exists
6756 : see if pipe exists
6760 : see if poll exists
6764 : see if this is a pwd.h system
6770 xxx=`./findhdr pwd.h`
6771 $cppstdin $cppflags $cppminus < $xxx >$$.h
6773 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6781 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
6789 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
6797 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
6805 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
6813 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
6825 set d_pwquota; eval $setvar
6826 set d_pwage; eval $setvar
6827 set d_pwchange; eval $setvar
6828 set d_pwclass; eval $setvar
6829 set d_pwexpire; eval $setvar
6830 set d_pwcomment; eval $setvar
6834 : see if readdir and friends exist
6835 set readdir d_readdir
6837 set seekdir d_seekdir
6839 set telldir d_telldir
6841 set rewinddir d_rewinddir
6844 : see if readlink exists
6845 set readlink d_readlink
6848 : see if rename exists
6852 : see if rmdir exists
6856 : see if memory.h is available.
6861 : See if it conflicts with string.h
6867 $cppstdin $cppflags $cppminus < $strings > mem.h
6868 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
6870 echo "We won't be including <memory.h>."
6880 : can bcopy handle overlapping blocks?
6885 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
6892 $cat >>foo.c <<'EOCP'
6896 # include <memory.h>
6899 # include <stdlib.h>
6902 # include <string.h>
6904 # include <strings.h>
6907 # include <unistd.h> /* Needed for NetBSD */
6911 char buf[128], abc[128];
6917 /* Copy "abcde..." string to char abc[] so that gcc doesn't
6918 try to store the string in read-only memory. */
6919 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
6921 for (align = 7; align >= 0; align--) {
6922 for (len = 36; len; len--) {
6925 for (off = 1; off <= len; off++) {
6926 bcopy(b, b+off, len);
6927 bcopy(b+off, b, len);
6928 if (bcmp(b, abc, len))
6936 if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
6937 if ./safebcpy 2>/dev/null; then
6941 echo "It can't, sorry."
6942 case "$d_memmove" in
6943 "$define") echo "But that's Ok since you have memmove()." ;;
6947 echo "(I can't compile the test program, so we'll assume not...)"
6948 case "$d_memmove" in
6949 "$define") echo "But that's Ok since you have memmove()." ;;
6954 $rm -f foo.* safebcpy core
6958 : can memcpy handle overlapping blocks?
6963 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
6970 $cat >>foo.c <<'EOCP'
6974 # include <memory.h>
6977 # include <stdlib.h>
6980 # include <string.h>
6982 # include <strings.h>
6985 # include <unistd.h> /* Needed for NetBSD */
6989 char buf[128], abc[128];
6995 /* Copy "abcde..." string to char abc[] so that gcc doesn't
6996 try to store the string in read-only memory. */
6997 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
6999 for (align = 7; align >= 0; align--) {
7000 for (len = 36; len; len--) {
7002 memcpy(b, abc, len);
7003 for (off = 1; off <= len; off++) {
7004 memcpy(b+off, b, len);
7005 memcpy(b, b+off, len);
7006 if (memcmp(b, abc, len))
7014 if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
7015 if ./safemcpy 2>/dev/null; then
7019 echo "It can't, sorry."
7020 case "$d_memmove" in
7021 "$define") echo "But that's Ok since you have memmove()." ;;
7025 echo "(I can't compile the test program, so we'll assume not...)"
7026 case "$d_memmove" in
7027 "$define") echo "But that's Ok since you have memmove()." ;;
7032 $rm -f foo.* safemcpy core
7036 : see if select exists
7040 : see if semctl exists
7044 : see if semget exists
7048 : see if semop exists
7052 : see how much of the 'sem*(2)' library is present.
7055 case "$d_semctl$d_semget$d_semop" in
7056 *"$undef"*) h_sem=false;;
7058 : we could also check for sys/ipc.h ...
7059 if $h_sem && $test `./findhdr sys/sem.h`; then
7060 echo "You have the full sem*(2) library." >&4
7063 echo "You don't have the full sem*(2) library." >&4
7069 : see if setegid exists
7070 set setegid d_setegid
7073 : see if seteuid exists
7074 set seteuid d_seteuid
7077 : see if setlinebuf exists
7078 set setlinebuf d_setlinebuf
7081 : see if setlocale exists
7082 set setlocale d_setlocale
7085 : see if setpgid exists
7086 set setpgid d_setpgid
7089 : see if setpgrp2 exists
7090 set setpgrp2 d_setpgrp2
7093 : see if setpriority exists
7094 set setpriority d_setprior
7097 : see if setregid exists
7098 set setregid d_setregid
7100 set setresgid d_setresgid
7103 : see if setreuid exists
7104 set setreuid d_setreuid
7106 set setresuid d_setresuid
7109 : see if setrgid exists
7110 set setrgid d_setrgid
7113 : see if setruid exists
7114 set setruid d_setruid
7117 : see if setsid exists
7121 : see if sfio.h is available
7126 : see if sfio library is available
7137 : Ok, but do we want to use it.
7141 true|$define|[yY]*) dflt='y';;
7144 echo "$package can use the sfio library, but it is experimental."
7145 rp="You seem to have sfio available, do you want to try using it?"
7149 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
7154 *) case "$usesfio" in
7156 echo "Sorry, cannot find sfio on this machine" >&4
7157 echo "Ignoring your setting of usesfio=$usesfio" >&4
7165 $define) usesfio='true';;
7166 *) usesfio='false';;
7169 : see if shmctl exists
7173 : see if shmget exists
7177 : see if shmat exists
7180 : see what shmat returns
7183 $cat >shmat.c <<'END'
7184 #include <sys/shm.h>
7187 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
7192 echo "and it returns ($shmattype)." >&4
7193 : see if a prototype for shmat is available
7194 xxx=`./findhdr sys/shm.h`
7195 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
7196 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
7207 set d_shmatprototype
7210 : see if shmdt exists
7214 : see how much of the 'shm*(2)' library is present.
7217 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
7218 *"$undef"*) h_shm=false;;
7220 : we could also check for sys/ipc.h ...
7221 if $h_shm && $test `./findhdr sys/shm.h`; then
7222 echo "You have the full shm*(2) library." >&4
7225 echo "You don't have the full shm*(2) library." >&4
7232 : see if we have sigaction
7233 if set sigaction val -f d_sigaction; eval $csym; $val; then
7234 echo 'sigaction() found.' >&4
7237 echo 'sigaction NOT found.' >&4
7241 $cat > set.c <<'EOP'
7242 /* Solaris 2.5_x86 with SunWorks Pro C 3.0.1 doesn't have a complete
7243 sigaction structure if compiled with cc -Xc. This compile test
7244 will fail then. <doughera@lafcol.lafayette.edu>
7247 #include <sys/types.h>
7251 struct sigaction act, oact;
7255 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
7258 echo "But you don't seem to have a useable struct sigaction." >&4
7261 set d_sigaction; eval $setvar
7262 $rm -f set set.o set.c
7264 : see if sigsetjmp exists
7266 case "$d_sigsetjmp" in
7274 if (sigsetjmp(env,1))
7281 if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then
7282 if ./set >/dev/null 2>&1; then
7283 echo "POSIX sigsetjmp found." >&4
7287 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
7293 echo "sigsetjmp not found." >&4
7297 *) val="$d_sigsetjmp"
7298 case "$d_sigsetjmp" in
7299 $define) echo "POSIX sigsetjmp found." >&4;;
7300 $undef) echo "sigsetjmp not found." >&4;;
7310 : see whether socket exists
7312 $echo $n "Hmm... $c" >&4
7313 if set socket val -f d_socket; eval $csym; $val; then
7314 echo "Looks like you have Berkeley networking support." >&4
7316 if set setsockopt val -f; eval $csym; $val; then
7319 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
7323 if $contains socklib libc.list >/dev/null 2>&1; then
7324 echo "Looks like you have Berkeley networking support." >&4
7326 : we will have to assume that it supports the 4.2 BSD interface
7329 echo "You don't have Berkeley networking in libc${lib_ext}..." >&4
7330 if test -f /usr/lib/libnet${lib_ext}; then
7331 ( (nm $nm_opt /usr/lib/libnet${lib_ext} | eval $nm_extract) || \
7332 ar t /usr/lib/libnet${lib_ext}) 2>/dev/null >> libc.list
7333 if $contains socket libc.list >/dev/null 2>&1; then
7334 echo "...but the Wollongong group seems to have hacked it in." >&4
7336 sockethdr="-I/usr/netinclude"
7338 if $contains setsockopt libc.list >/dev/null 2>&1; then
7341 echo "...using the old 4.1c interface, rather than 4.2" >&4
7345 echo "or even in libnet${lib_ext}, which is peculiar." >&4
7350 echo "or anywhere else I see." >&4
7357 : see if socketpair exists
7358 set socketpair d_sockpair
7361 : see if stat knows about block sizes
7363 xxx=`./findhdr sys/stat.h`
7364 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
7365 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
7366 echo "Your stat() knows about block sizes." >&4
7369 echo "Your stat() doesn't know about block sizes." >&4
7373 echo "Your stat() doesn't know about block sizes." >&4
7379 : see if _ptr and _cnt from stdio act std
7381 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7382 echo "(Looks like you have stdio.h from Linux.)"
7383 case "$stdio_ptr" in
7384 '') stdio_ptr='((fp)->_IO_read_ptr)'
7387 *) ptr_lval=$d_stdio_ptr_lval;;
7389 case "$stdio_cnt" in
7390 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
7393 *) cnt_lval=$d_stdio_cnt_lval;;
7395 case "$stdio_base" in
7396 '') stdio_base='((fp)->_IO_read_base)';;
7398 case "$stdio_bufsiz" in
7399 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
7402 case "$stdio_ptr" in
7403 '') stdio_ptr='((fp)->_ptr)'
7406 *) ptr_lval=$d_stdio_ptr_lval;;
7408 case "$stdio_cnt" in
7409 '') stdio_cnt='((fp)->_cnt)'
7412 *) cnt_lval=$d_stdio_cnt_lval;;
7414 case "$stdio_base" in
7415 '') stdio_base='((fp)->_base)';;
7417 case "$stdio_bufsiz" in
7418 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
7421 : test whether _ptr and _cnt really work
7422 echo "Checking how std your stdio is..." >&4
7425 #define FILE_ptr(fp) $stdio_ptr
7426 #define FILE_cnt(fp) $stdio_cnt
7428 FILE *fp = fopen("try.c", "r");
7431 18 <= FILE_cnt(fp) &&
7432 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
7439 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
7441 echo "Your stdio acts pretty std."
7444 echo "Your stdio isn't very std."
7447 echo "Your stdio doesn't appear very std."
7453 : Can _ptr be used as an lvalue?
7454 case "$d_stdstdio$ptr_lval" in
7455 $define$define) val=$define ;;
7458 set d_stdio_ptr_lval
7461 : Can _cnt be used as an lvalue?
7462 case "$d_stdstdio$cnt_lval" in
7463 $define$define) val=$define ;;
7466 set d_stdio_cnt_lval
7469 : How to access the stdio _filbuf or __filbuf function.
7470 : If this fails, check how the getc macro in stdio.h works.
7471 case "${d_stdio_ptr_lval}${d_stdio_cnt_lval}" in
7473 : Try $hint value, if any, then _filbuf, __filbuf, _fill, then punt.
7474 : _fill is for os/2.
7476 for filbuf in $stdio_filbuf '_filbuf(fp)' '__filbuf(fp) ' '_fill(fp)' ; do
7479 #define FILE_ptr(fp) $stdio_ptr
7480 #define FILE_cnt(fp) $stdio_cnt
7481 #define FILE_filbuf(fp) $filbuf
7483 FILE *fp = fopen("try.c", "r");
7486 c = FILE_filbuf(fp); /* Just looking for linker errors.*/
7490 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 && ./try; then
7491 echo "Your stdio appears to use $filbuf"
7492 stdio_filbuf="$filbuf"
7496 echo "Hmm. $filbuf doesn't seem to work."
7501 notok) echo "I can't figure out how to access _filbuf"
7502 echo "I'll just have to work around it."
7503 d_stdio_ptr_lval="$undef"
7504 d_stdio_cnt_lval="$undef"
7511 : see if _base is also standard
7513 case "$d_stdstdio" in
7517 #define FILE_base(fp) $stdio_base
7518 #define FILE_bufsiz(fp) $stdio_bufsiz
7520 FILE *fp = fopen("try.c", "r");
7523 19 <= FILE_bufsiz(fp) &&
7524 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
7530 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
7532 echo "And its _base field acts std."
7535 echo "But its _base field isn't std."
7538 echo "However, it seems to be lacking the _base field."
7546 : see if strcoll exists
7547 set strcoll d_strcoll
7550 : check for structure copying
7552 echo "Checking to see if your C compiler can copy structs..." >&4
7553 $cat >try.c <<'EOCP'
7563 if $cc -c try.c >/dev/null 2>&1 ; then
7568 echo "Nope, it can't."
7574 : see if strerror and/or sys_errlist[] exist
7576 if set strerror val -f d_strerror; eval $csym; $val; then
7577 echo 'strerror() found.' >&4
7578 d_strerror="$define"
7579 d_strerrm='strerror(e)'
7580 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7581 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
7582 d_syserrlst="$define"
7584 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
7585 d_syserrlst="$undef"
7587 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
7588 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
7589 echo 'strerror() found in string header.' >&4
7590 d_strerror="$define"
7591 d_strerrm='strerror(e)'
7592 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7593 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
7594 d_syserrlst="$define"
7596 echo "(You don't appear to have any sys_errlist[], how can this be?)"
7597 d_syserrlst="$undef"
7599 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7600 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
7602 d_syserrlst="$define"
7603 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
7605 echo 'strerror() and sys_errlist[] NOT found.' >&4
7607 d_syserrlst="$undef"
7608 d_strerrm='"unknown"'
7611 : see if strtod exists
7615 : see if strtol exists
7619 : see if strtoul exists
7620 set strtoul d_strtoul
7623 : see if strxfrm exists
7624 set strxfrm d_strxfrm
7627 : see if symlink exists
7628 set symlink d_symlink
7631 : see if syscall exists
7632 set syscall d_syscall
7635 : see if sysconf exists
7636 set sysconf d_sysconf
7639 : see if system exists
7643 : see if tcgetpgrp exists
7644 set tcgetpgrp d_tcgetpgrp
7647 : see if tcsetpgrp exists
7648 set tcsetpgrp d_tcsetpgrp
7651 : define an is-a-typedef? function
7652 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
7654 "") inclist="sys/types.h";;
7656 eval "varval=\$$var";
7660 for inc in $inclist; do
7661 echo "#include <$inc>" >>temp.c;
7663 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
7664 if $contains $type temp.E >/dev/null 2>&1; then
7670 *) eval "$var=\$varval";;
7673 : see if this is a sys/times.h system
7674 set sys/times.h i_systimes
7677 : see if times exists
7679 if set times val -f d_times; eval $csym; $val; then
7680 echo 'times() found.' >&4
7683 case "$i_systimes" in
7684 "$define") inc='sys/times.h';;
7686 set clock_t clocktype long stdio.h sys/types.h $inc
7690 rp="What type is returned by times() on this system?"
7694 echo 'times() NOT found, hope that will do.' >&4
7699 : see if truncate exists
7700 set truncate d_truncate
7703 : see if tzname[] exists
7705 if set tzname val -a d_tzname; eval $csym; $val; then
7707 echo 'tzname[] found.' >&4
7710 echo 'tzname[] NOT found.' >&4
7715 : see if umask exists
7719 : see how we will look up host name
7722 : dummy stub to allow use of elif
7723 elif set uname val -f d_uname; eval $csym; $val; then
7726 uname() was found, but you're running xenix, and older versions of xenix
7727 have a broken uname(). If you don't really know whether your xenix is old
7728 enough to have a broken system call, use the default answer.
7735 rp='Is your uname() broken?'
7738 n*) d_uname="$define"; call=uname;;
7741 echo 'uname() found.' >&4
7746 case "$d_gethname" in
7747 '') d_gethname="$undef";;
7750 '') d_uname="$undef";;
7752 case "$d_phostname" in
7753 '') d_phostname="$undef";;
7756 : backward compatibility for d_hvfork
7757 if test X$d_hvfork != X; then
7761 : see if there is a vfork
7766 : Ok, but do we want to use it. vfork is reportedly unreliable in
7767 : perl on Solaris 2.x, and probably elsewhere.
7775 rp="Some systems have problems with vfork(). Do you want to use it?"
7780 echo "Ok, we won't use vfork()."
7789 $define) usevfork='true';;
7790 *) usevfork='false';;
7793 : see if this is an sysdir system
7794 set sys/dir.h i_sysdir
7797 : see if this is an sysndir system
7798 set sys/ndir.h i_sysndir
7801 : see if closedir exists
7802 set closedir d_closedir
7805 case "$d_closedir" in
7808 echo "Checking whether closedir() returns a status..." >&4
7809 cat > closedir.c <<EOM
7810 #$i_dirent I_DIRENT /**/
7811 #$i_sysdir I_SYS_DIR /**/
7812 #$i_sysndir I_SYS_NDIR /**/
7814 #if defined(I_DIRENT)
7816 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
7817 #include <sys/dir.h>
7821 #include <sys/ndir.h>
7825 #include <ndir.h> /* may be wrong in the future */
7827 #include <sys/dir.h>
7832 int main() { return closedir(opendir(".")); }
7834 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
7835 if ./closedir > /dev/null 2>&1 ; then
7836 echo "Yes, it does."
7839 echo "No, it doesn't."
7843 echo "(I can't seem to compile the test program--assuming it doesn't)"
7854 : check for volatile keyword
7856 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
7857 $cat >try.c <<'EOCP'
7860 typedef struct _goo_struct goo_struct;
7861 goo_struct * volatile goo = ((goo_struct *)0);
7862 struct _goo_struct {
7867 typedef unsigned short foo_t;
7870 volatile foo_t blech;
7874 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
7876 echo "Yup, it does."
7879 echo "Nope, it doesn't."
7885 : see if there is a wait4
7889 : see if waitpid exists
7890 set waitpid d_waitpid
7893 : see if wcstombs exists
7894 set wcstombs d_wcstombs
7897 : see if wctomb exists
7901 : preserve RCS keywords in files with variable substitution, grrr
7906 Revision='$Revision'
7908 : check for alignment requirements
7910 case "$alignbytes" in
7911 '') echo "Checking alignment constraints..." >&4
7912 $cat >try.c <<'EOCP'
7919 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
7922 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
7926 echo"(I can't seem to compile the test program...)"
7929 *) dflt="$alignbytes"
7932 rp="Doubles must be aligned on a how-many-byte boundary?"
7937 : check for ordering of bytes in a long
7938 case "$byteorder" in
7942 In the following, larger digits indicate more significance. A big-endian
7943 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
7944 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
7945 machines may have weird orders like 3412. A Cray will report 87654321. If
7946 the test program works the default is probably right.
7947 I'm now running the test program...
7949 $cat >try.c <<'EOCP'
7956 char c[sizeof(long)];
7959 if (sizeof(long) > 4)
7960 u.l = (0x08070605L << 32) | 0x04030201L;
7963 for (i = 0; i < sizeof(long); i++)
7964 printf("%c", u.c[i]+'0');
7970 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
7973 [1-4][1-4][1-4][1-4]|12345678|87654321)
7974 echo "(The test program ran ok.)"
7975 echo "byteorder=$dflt"
7978 ????|????????) echo "(The test program ran ok.)" ;;
7979 *) echo "(The test program didn't run right for some reason.)" ;;
7984 (I can't seem to compile the test program. Guessing big-endian...)
7987 case "$xxx_prompt" in
7989 rp="What is the order of bytes in a long?"
8000 : how do we catenate cpp tokens here?
8002 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
8003 $cat >cpp_stuff.c <<'EOCP'
8004 #define RCAT(a,b)a/**/b
8005 #define ACAT(a,b)a ## b
8009 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
8010 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
8011 echo "Oh! Smells like ANSI's been here."
8012 echo "We can catify or stringify, separately or together!"
8014 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
8015 echo "Ah, yes! The good old days!"
8016 echo "However, in the good old days we don't know how to stringify and"
8017 echo "catify at the same time."
8021 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
8022 to have to edit the values of CAT[2-5] in config.h...
8024 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
8028 : see if this is a db.h system
8034 : Check the return type needed for hash
8036 echo "Checking return type needed for hash for Berkeley DB ..." >&4
8042 #include <sys/types.h>
8044 u_int32_t hash_cb (ptr, size)
8052 info.hash = hash_cb;
8055 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8056 if $contains warning try.out >>/dev/null 2>&1 ; then
8059 db_hashtype='u_int32_t'
8062 echo "I can't seem to compile the test program." >&4
8066 echo "Your version of Berkeley DB uses $db_hashtype for hash."
8074 : Check the return type needed for prefix
8076 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
8082 #include <sys/types.h>
8084 size_t prefix_cb (key1, key2)
8092 info.prefix = prefix_cb;
8095 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8096 if $contains warning try.out >>/dev/null 2>&1 ; then
8099 db_prefixtype='size_t'
8102 echo "I can't seem to compile the test program." >&4
8106 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
8108 *) db_prefixtype='int'
8112 : check for void type
8114 echo "Checking to see how well your C compiler groks the void type..." >&4
8117 Support flag bits are:
8118 1: basic void declarations.
8119 2: arrays of pointers to functions returning void.
8120 4: operations between pointers to and addresses of void functions.
8121 8: generic void pointers.
8124 case "$voidflags" in
8126 $cat >try.c <<'EOCP'
8132 extern void moo(); /* function returning void */
8133 void (*goo)(); /* ptr to func returning void */
8135 void *hue; /* generic ptr */
8150 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
8151 voidflags=$defvoidused
8152 echo "It appears to support void to the level $package wants ($defvoidused)."
8153 if $contains warning .out >/dev/null 2>&1; then
8154 echo "However, you might get some warnings that look like this:"
8158 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
8159 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
8160 echo "It supports 1..."
8161 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
8162 echo "It also supports 2..."
8163 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
8165 echo "And it supports 4 but not 8 definitely."
8167 echo "It doesn't support 4..."
8168 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
8170 echo "But it supports 8."
8173 echo "Neither does it support 8."
8177 echo "It does not support 2..."
8178 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
8180 echo "But it supports 4 and 8."
8182 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
8184 echo "And it supports 4 but has not heard about 8."
8186 echo "However it supports 8 but not 4."
8191 echo "There is no support at all for void."
8196 : Only prompt user if support does not match the level we want
8197 case "$voidflags" in
8201 rp="Your void support flags add up to what?"
8208 : see what type file positions are declared as in the library
8209 set fpos_t fpostype long stdio.h sys/types.h
8213 rp="What is the type for file position used by fsetpos()?"
8217 : Store the full pathname to the sed program for use in the C program
8220 : see what type gids are declared as in the kernel
8221 set gid_t gidtype xxx stdio.h sys/types.h
8225 xxx=`./findhdr sys/user.h`
8226 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
8228 unsigned) dflt="$1 $2" ;;
8232 *) dflt="$gidtype";;
8235 rp="What is the type for group ids returned by getgid()?"
8239 : see if getgroups exists
8240 set getgroups d_getgrps
8243 : Find type of 2nd arg to getgroups
8245 case "$d_getgrps" in
8247 case "$groupstype" in
8248 '') dflt="$gidtype" ;;
8249 *) dflt="$groupstype" ;;
8252 What is the type of the second argument to getgroups()? Usually this
8253 is the same as group ids, $gidtype, but not always.
8256 rp='What type is the second argument to getgroups()?'
8260 *) groupstype="$gidtype";;
8263 : see what type lseek is declared as in the kernel
8264 set off_t lseektype long stdio.h sys/types.h
8268 rp="What type is lseek's offset on this system declared as?"
8275 make=`./loc make make $pth`
8277 /*) echo make is in $make. ;;
8278 ?:[\\/]*) echo make is in $make. ;;
8279 *) echo "I don't know where 'make' is, and my life depends on it." >&4
8280 echo "Go find a make program or fix your PATH setting!" >&4
8285 *) echo make is in $make. ;;
8288 $echo $n "Checking if your $make program sets \$(MAKE)... $c" >&4
8289 case "$make_set_make" in
8291 $sed 's/^X //' > testmake.mak << 'EOF'
8293 X @echo 'ac_maketemp="$(MAKE)"'
8295 : GNU make sometimes prints "make[1]: Entering...", which would confuse us.
8296 case "`$make -f testmake.mak 2>/dev/null`" in
8297 *ac_maketemp=*) make_set_make='#' ;;
8298 *) make_set_make="MAKE=$make" ;;
8303 case "$make_set_make" in
8304 '#') echo "Yup, it does." >&4 ;;
8305 *) echo "Nope, it doesn't." >&4 ;;
8308 : see what type is used for mode_t
8309 set mode_t modetype int stdio.h sys/types.h
8313 rp="What type is used for file modes?"
8317 : locate the preferred pager for this system
8331 '') dflt=/usr/ucb/more;;
8338 rp='What pager is used on your system?'
8342 : Cruising for prototypes
8344 echo "Checking out function prototypes..." >&4
8345 $cat >prototype.c <<'EOCP'
8346 main(int argc, char *argv[]) {
8349 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
8350 echo "Your C compiler appears to support function prototypes."
8353 echo "Your C compiler doesn't seem to understand function prototypes."
8360 : check for size of random number generator
8364 echo "Checking to see how many bits your rand function produces..." >&4
8370 # include <unistd.h>
8373 # include <stdlib.h>
8376 $cat >>try.c <<'EOCP'
8380 register unsigned long tmp;
8381 register unsigned long max = 0L;
8383 for (i = 1000; i; i--) {
8384 tmp = (unsigned long)rand();
8385 if (tmp > max) max = tmp;
8387 for (i = 0; max; i++)
8392 if $cc try.c -o try >/dev/null 2>&1 ; then
8396 echo "(I can't seem to compile the test program...)"
8403 rp='How many bits does your rand() function produce?'
8408 : see if ar generates random libraries by itself
8410 echo "Checking how to generate random libraries on your machine..." >&4
8411 echo 'int bar1() { return bar2(); }' > bar1.c
8412 echo 'int bar2() { return 2; }' > bar2.c
8413 $cat > foo.c <<'EOP'
8414 main() { printf("%d\n", bar1()); exit(0); }
8416 $cc $ccflags -c bar1.c >/dev/null 2>&1
8417 $cc $ccflags -c bar2.c >/dev/null 2>&1
8418 $cc $ccflags -c foo.c >/dev/null 2>&1
8419 ar rc bar${lib_ext} bar2.o bar1.o >/dev/null 2>&1
8420 if $cc $ccflags $ldflags -o foobar foo.o bar${lib_ext} $libs > /dev/null 2>&1 &&
8421 ./foobar >/dev/null 2>&1; then
8422 echo "ar appears to generate random libraries itself."
8425 elif ar ts bar${lib_ext} >/dev/null 2>&1 &&
8426 $cc $ccflags $ldflags -o foobar foo.o bar${lib_ext} $libs > /dev/null 2>&1 &&
8427 ./foobar >/dev/null 2>&1; then
8428 echo "a table of contents needs to be added with 'ar ts'."
8435 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
8436 $test -f $ranlib || ranlib=''
8439 if $test -n "$ranlib"; then
8440 echo "your system has '$ranlib'; we'll use that."
8443 echo "your system doesn't seem to support random libraries"
8444 echo "so we'll use lorder and tsort to order the libraries."
8451 : see if sys/select.h has to be included
8452 set sys/select.h i_sysselct
8455 : see if we should include time.h, sys/time.h, or both
8457 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8458 $echo $n "I'm now running the test program...$c"
8459 $cat >try.c <<'EOCP'
8460 #include <sys/types.h>
8465 #ifdef SYSTIMEKERNEL
8468 #include <sys/time.h>
8471 #include <sys/select.h>
8480 struct timezone tzp;
8482 if (foo.tm_sec == foo.tm_sec)
8485 if (bar.tv_sec == bar.tv_sec)
8492 for s_timezone in '-DS_TIMEZONE' ''; do
8494 for s_timeval in '-DS_TIMEVAL' ''; do
8495 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8496 for i_time in '' '-DI_TIME'; do
8497 for i_systime in '-DI_SYSTIME' ''; do
8501 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
8502 try.c -o try >/dev/null 2>&1 ; then
8503 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8507 $echo $n "Succeeded with $flags$c"
8519 *SYSTIMEKERNEL*) i_systimek="$define"
8520 timeincl=`./findhdr sys/time.h`
8521 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8522 *) i_systimek="$undef";;
8525 *I_TIME*) i_time="$define"
8526 timeincl=`./findhdr time.h`" $timeincl"
8527 echo "We'll include <time.h>." >&4;;
8528 *) i_time="$undef";;
8531 *I_SYSTIME*) i_systime="$define"
8532 timeincl=`./findhdr sys/time.h`" $timeincl"
8533 echo "We'll include <sys/time.h>." >&4;;
8534 *) i_systime="$undef";;
8538 : check for fd_set items
8541 Checking to see how well your C compiler handles fd_set and friends ...
8543 $cat >fd_set.c <<EOCP
8544 #$i_systime I_SYS_TIME
8545 #$i_sysselct I_SYS_SELECT
8546 #$d_socket HAS_SOCKET
8547 #include <sys/types.h>
8549 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8552 #include <sys/time.h>
8555 #include <sys/select.h>
8564 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8571 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8572 d_fds_bits="$define"
8574 echo "Well, your system knows about the normal fd_set typedef..." >&4
8576 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8577 d_fd_macros="$define"
8580 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8582 d_fd_macros="$undef"
8586 Hmm, your compiler has some difficulty with fd_set. Checking further...
8588 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8591 echo "Well, your system has some sort of fd_set available..." >&4
8593 echo "and you have the normal fd_set macros." >&4
8594 d_fd_macros="$define"
8597 but not the normal fd_set macros! Gross! More work for me...
8599 d_fd_macros="$undef"
8602 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8605 d_fd_macros="$undef"
8611 : check for type of arguments to select. This will only really
8612 : work if the system supports prototypes and provides one for
8616 : Make initial guess
8617 case "$selecttype" in
8620 $define) xxx='fd_set *' ;;
8624 *) xxx="$selecttype"
8629 'fd_set *') yyy='int *' ;;
8630 'int *') yyy='fd_set *' ;;
8635 Checking to see what type of arguments are expected by select().
8638 #$i_systime I_SYS_TIME
8639 #$i_sysselct I_SYS_SELECT
8640 #$d_socket HAS_SOCKET
8641 #include <sys/types.h>
8643 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8646 #include <sys/time.h>
8649 #include <sys/select.h>
8654 Select_fd_set_t readfds;
8655 Select_fd_set_t writefds;
8656 Select_fd_set_t exceptfds;
8657 struct timeval timeout;
8658 select(width, readfds, writefds, exceptfds, &timeout);
8662 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
8664 echo "Your system uses $xxx for the arguments to select." >&4
8665 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
8667 echo "Your system uses $yyy for the arguments to select." >&4
8669 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
8676 *) selecttype='int *'
8680 : Trace out the files included by signal.h, then look for SIGxxx names.
8681 : Remove SIGARRAYSIZE used by HPUX.
8682 : Remove SIGTYP void lines used by OS2.
8683 xxx=`echo '#include <signal.h>' |
8684 $cppstdin $cppminus $cppflags 2>/dev/null |
8685 $grep '^[ ]*#.*include' |
8686 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
8687 : Check this list of files to be sure we have parsed the cpp output ok.
8688 : This will also avoid potentially non-existent files, such
8691 for xx in $xxx /dev/null ; do
8692 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
8694 : If we have found no files, at least try signal.h
8696 '') xxxfiles=`./findhdr signal.h` ;;
8699 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
8700 print substr($2, 4, 20)
8702 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8703 print substr($3, 4, 20)
8705 : Append some common names just in case the awk scan failed.
8706 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
8707 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
8708 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
8709 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
8710 : generate a few handy files for later
8711 $cat > signal.c <<'EOP'
8712 #include <sys/types.h>
8716 /* Strange style to avoid deeply-nested #if/#else/#endif */
8719 # define NSIG (_NSIG)
8725 # define NSIG (SIGMAX+1)
8731 # define NSIG (SIG_MAX+1)
8737 # define NSIG (MAXSIG+1)
8743 # define NSIG (MAX_SIG+1)
8748 # ifdef SIGARRAYSIZE
8749 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
8755 # define NSIG (_sys_nsig) /* Solaris 2.5 */
8759 /* Default to some arbitrary number that's big enough to get most
8760 of the common signals.
8766 printf("NSIG %d\n", NSIG);
8769 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
8771 printf "#ifdef SIG"; printf $1; printf "\n"
8772 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
8773 printf $1; printf ");\n"
8780 $cat >signal.awk <<'EOP'
8782 $1 ~ /^NSIG$/ { nsig = $2 }
8783 ($1 !~ /^NSIG$/) && (NF == 2) {
8784 if ($2 > maxsig) { maxsig = $2 }
8786 dup_name[ndups] = $1
8797 if (nsig == 0) { nsig = maxsig + 1 }
8798 for (n = 1; n < nsig; n++) {
8800 printf("%s %d\n", sig_name[n], sig_num[n])
8803 printf("NUM%d %d\n", n, n)
8806 for (n = 0; n < ndups; n++) {
8807 printf("%s %d\n", dup_name[n], dup_num[n])
8811 $cat >signal_cmd <<EOS
8813 $test -s signal.lst && exit 0
8814 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
8815 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8817 echo "(I can't seem be able to compile the test program -- Guessing)"
8818 echo 'kill -l' >signal
8819 set X \`csh -f <signal\`
8823 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
8825 echo \$@ | $tr ' ' '\012' | \
8826 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
8828 $rm -f signal.c signal signal.o
8830 chmod a+x signal_cmd
8831 $eunicefix signal_cmd
8833 : generate list of signal names
8843 echo "Generating a list of signal names and numbers..." >&4
8845 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
8846 sig_name="ZERO $sig_name"
8847 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
8848 sig_num="0 $sig_num"
8851 echo "The following signals are available:"
8853 echo $sig_name | $awk \
8854 'BEGIN { linelen = 0 }
8856 for (i = 1; i <= NF; i++) {
8858 linelen = linelen + length(name)
8861 linelen = length(name)
8867 $rm -f signal signal.c signal.awk signal.lst signal_cmd
8869 : see what type is used for size_t
8870 set size_t sizetype 'unsigned int' stdio.h sys/types.h
8874 rp="What type is used for the length parameter for string functions?"
8878 : see what type is used for signed size_t
8879 set ssize_t ssizetype int stdio.h sys/types.h
8882 $cat > ssize.c <<EOM
8884 #include <sys/types.h>
8885 #define Size_t $sizetype
8886 #define SSize_t $dflt
8889 if (sizeof(Size_t) == sizeof(SSize_t))
8891 else if (sizeof(Size_t) == sizeof(int))
8899 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 &&
8900 ./ssize > /dev/null 2>&1 ; then
8902 echo "I'll be using $ssizetype for functions returning a byte count." >&4
8904 echo "(I can't compile and run the test program--please enlighten me!)"
8907 I need a type that is the same size as $sizetype, but is guaranteed to
8908 be signed. Common values are int and long.
8911 rp="What signed type is the same size as $sizetype?"
8915 $rm -f ssize ssize.[co]
8917 : see what type of char stdio uses.
8919 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
8920 echo "Your stdio uses unsigned chars." >&4
8921 stdchar="unsigned char"
8923 echo "Your stdio uses signed chars." >&4
8927 : see if time exists
8929 if set time val -f d_time; eval $csym; $val; then
8930 echo 'time() found.' >&4
8932 set time_t timetype long stdio.h sys/types.h
8936 rp="What type is returned by time() on this system?"
8940 echo 'time() not found, hope that will do.' >&4
8947 : see what type uids are declared as in the kernel
8948 set uid_t uidtype xxx stdio.h sys/types.h
8952 xxx=`./findhdr sys/user.h`
8953 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
8955 unsigned) dflt="$1 $2" ;;
8959 *) dflt="$uidtype";;
8962 rp="What is the type for user ids returned by getuid()?"
8966 : see if dbm.h is available
8967 : see if dbmclose exists
8968 set dbmclose d_dbmclose
8971 case "$d_dbmclose" in
8981 *) set rpcsvc/dbm.h i_rpcsvcdbm
8986 *) echo "We won't be including <dbm.h>"
8996 : see if this is a sys/file.h system
9001 : do we need to include sys/file.h ?
9007 echo "We'll be including <sys/file.h>." >&4
9010 echo "We won't be including <sys/file.h>." >&4
9020 : see if fcntl.h is there
9025 : see if we can include fcntl.h
9031 echo "We'll be including <fcntl.h>." >&4
9035 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
9037 echo "We won't be including <fcntl.h>." >&4
9049 : see if this is an grp system
9053 : see if locale.h is available
9054 set locale.h i_locale
9057 : see if this is a math.h system
9061 : see if ndbm.h is available
9066 : see if dbm_open exists
9067 set dbm_open d_dbm_open
9069 case "$d_dbm_open" in
9072 echo "We won't be including <ndbm.h>"
9081 : see if net/errno.h is available
9086 : Unfortunately, it causes problems on some systems. Arrgh.
9092 #include <net/errno.h>
9098 if $cc $ccflags -c try.c >/dev/null 2>&1; then
9099 echo "We'll be including <net/errno.h>." >&4
9101 echo "We won't be including <net/errno.h>." >&4
9110 : get C preprocessor symbols handy
9112 $echo $n "Hmm... $c"
9113 echo $al | $tr ' ' '\012' >Cppsym.know
9125 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
9127 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
9130 unknown="\$unknown \$sym"
9140 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
9142 exit 0; _ _ _ _\1\\ \1\\
9145 echo "exit 1; _ _ _" >>Cppsym\$\$
9146 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
9148 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
9154 $rm -f Cppsym\$\$ Cppsym2\$\$
9159 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
9161 : now check the C compiler for additional symbols
9167 for i in \`$cc -v -c tmp.c 2>&1\`
9170 -D*) echo "\$i" | $sed 's/^-D//';;
9171 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
9178 ./ccsym | $sort | $uniq >ccsym.raw
9179 $awk '/\=/ { print $0; next }
9180 { print $0"=1" }' ccsym.raw >ccsym.list
9181 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
9182 $comm -13 ccsym.true ccsym.list >ccsym.own
9183 $comm -12 ccsym.true ccsym.list >ccsym.com
9184 $comm -23 ccsym.true ccsym.list >ccsym.cpp
9187 if $test -z ccsym.raw; then
9188 echo "Your C compiler doesn't seem to define any symbol!" >&4
9190 echo "However, your C preprocessor defines the following ones:"
9193 if $test -s ccsym.com; then
9194 echo "Your C compiler and pre-processor define these symbols:"
9195 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
9198 $test "$silent" || sleep 1
9200 if $test -s ccsym.cpp; then
9201 $test "$also" && echo " "
9202 echo "Your C pre-processor ${also}defines the following $symbols:"
9203 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
9205 $test "$silent" || sleep 1
9207 if $test -s ccsym.own; then
9208 $test "$also" && echo " "
9209 echo "Your C compiler ${also}defines the following cpp variables:"
9210 $sed -e 's/\(.*\)=1/\1/' ccsym.own
9211 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
9212 $test "$silent" || sleep 1
9217 : see if this is a termio system
9221 if $test `./findhdr termios.h`; then
9222 set tcsetattr i_termios
9228 "$define") echo "You have POSIX termios.h... good!" >&4;;
9229 *) if ./Cppsym pyr; then
9230 case "`/bin/universe`" in
9231 ucb) if $test `./findhdr sgtty.h`; then
9233 echo "<sgtty.h> found." >&4
9235 echo "System is pyramid with BSD universe."
9236 echo "<sgtty.h> not found--you could have problems." >&4
9238 *) if $test `./findhdr termio.h`; then
9240 echo "<termio.h> found." >&4
9242 echo "System is pyramid with USG universe."
9243 echo "<termio.h> not found--you could have problems." >&4
9247 if $test `./findhdr termio.h`; then
9248 echo "<termio.h> found." >&4
9250 elif $test `./findhdr sgtty.h`; then
9251 echo "<sgtty.h> found." >&4
9254 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
9257 if $test `./findhdr sgtty.h`; then
9258 echo "<sgtty.h> found." >&4
9260 elif $test `./findhdr termio.h`; then
9261 echo "<termio.h> found." >&4
9264 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
9268 set i_termio; eval $setvar
9269 val=$val2; set i_sgtty; eval $setvar
9270 val=$val3; set i_termios; eval $setvar
9272 : see if stdarg is available
9274 if $test `./findhdr stdarg.h`; then
9275 echo "<stdarg.h> found." >&4
9278 echo "<stdarg.h> NOT found." >&4
9282 : see if varags is available
9284 if $test `./findhdr varargs.h`; then
9285 echo "<varargs.h> found." >&4
9287 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
9290 : set up the varargs testing programs
9291 $cat > varargs.c <<EOP
9296 #include <varargs.h>
9314 p = va_arg(ap, char *);
9319 $cat > varargs <<EOP
9321 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
9330 : now check which varargs header should be included
9335 if `./varargs I_STDARG`; then
9337 elif `./varargs I_VARARGS`; then
9342 if `./varargs I_VARARGS`; then
9349 echo "I could not find the definition for va_dcl... You have problems..." >&4
9350 val="$undef"; set i_stdarg; eval $setvar
9351 val="$undef"; set i_varargs; eval $setvar
9358 val="$define"; set i_stdarg; eval $setvar
9359 val="$undef"; set i_varargs; eval $setvar
9362 val="$undef"; set i_stdarg; eval $setvar
9363 val="$define"; set i_varargs; eval $setvar
9366 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
9370 : see if stddef is available
9371 set stddef.h i_stddef
9374 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
9375 set sys/filio.h i_sysfilio
9378 if $test `./findhdr sys/ioctl.h`; then
9380 echo '<sys/ioctl.h> found.' >&4
9383 if $test $i_sysfilio = "$define"; then
9384 echo '<sys/ioctl.h> NOT found.' >&4
9386 $test $i_sgtty = "$define" && xxx="sgtty.h"
9387 $test $i_termio = "$define" && xxx="termio.h"
9388 $test $i_termios = "$define" && xxx="termios.h"
9389 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
9395 : see if this is a sys/param system
9396 set sys/param.h i_sysparam
9399 : see if sys/resource.h has to be included
9400 set sys/resource.h i_sysresrc
9403 : see if sys/stat.h is available
9404 set sys/stat.h i_sysstat
9407 : see if sys/types.h has to be included
9408 set sys/types.h i_systypes
9411 : see if this is a sys/un.h system
9412 set sys/un.h i_sysun
9415 : see if this is a syswait system
9416 set sys/wait.h i_syswait
9419 : see if this is an utime system
9423 : see if this is a values.h system
9424 set values.h i_values
9427 : see if this is a vfork system
9438 : see if gdbm.h is available
9443 : see if gdbm_open exists
9444 set gdbm_open d_gdbm_open
9446 case "$d_gdbm_open" in
9449 echo "We won't be including <gdbm.h>"
9459 echo "Looking for extensions..." >&4
9461 : If we are using the old config.sh, known_extensions may contain
9462 : old or inaccurate or duplicate values.
9464 : We do not use find because it might not be available.
9465 : We do not just use MANIFEST because the user may have dropped
9466 : some additional extensions into the source tree and expect them
9472 if $test -f $xxx/$xxx.xs; then
9473 known_extensions="$known_extensions $xxx"
9475 if $test -d $xxx; then
9478 if $test -f $yyy/$yyy.xs; then
9479 known_extensions="$known_extensions $xxx/$yyy"
9487 set X $known_extensions
9489 known_extensions="$*"
9492 : Now see which are supported on this system.
9494 for xxx in $known_extensions ; do
9496 DB_File) case "$i_db" in
9497 $define) avail_ext="$avail_ext $xxx" ;;
9500 GDBM_File) case "$i_gdbm" in
9501 $define) avail_ext="$avail_ext $xxx" ;;
9504 NDBM_File) case "$i_ndbm" in
9505 $define) avail_ext="$avail_ext $xxx" ;;
9508 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
9509 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
9512 POSIX) case "$useposix" in
9513 true|define|y) avail_ext="$avail_ext $xxx" ;;
9516 Opcode) case "$useopcode" in
9517 true|define|y) avail_ext="$avail_ext $xxx" ;;
9520 Socket) case "$d_socket" in
9521 $define) avail_ext="$avail_ext $xxx" ;;
9524 *) avail_ext="$avail_ext $xxx"
9536 A number of extensions are supplied with $package. You may choose to
9537 compile these extensions for dynamic loading (the default), compile
9538 them into the $package executable (static loading), or not include
9539 them at all. Answer "none" to include no extensions.
9542 case "$dynamic_ext" in
9543 '') dflt="$avail_ext" ;;
9544 *) dflt="$dynamic_ext" ;;
9549 rp="What extensions do you wish to load dynamically?"
9552 none) dynamic_ext=' ' ;;
9553 *) dynamic_ext="$ans" ;;
9556 case "$static_ext" in
9558 : Exclude those already listed in dynamic linking
9560 for xxx in $avail_ext; do
9561 case " $dynamic_ext " in
9563 *) dflt="$dflt $xxx" ;;
9570 *) dflt="$static_ext"
9577 rp="What extensions do you wish to load statically?"
9580 none) static_ext=' ' ;;
9581 *) static_ext="$ans" ;;
9586 A number of extensions are supplied with $package. Answer "none"
9587 to include no extensions.
9590 case "$static_ext" in
9591 '') dflt="$avail_ext" ;;
9592 *) dflt="$static_ext" ;;
9598 rp="What extensions do you wish to include?"
9601 none) static_ext=' ' ;;
9602 *) static_ext="$ans" ;;
9607 set X $dynamic_ext $static_ext
9611 : Remove build directory name from cppstdin so it can be used from
9612 : either the present location or the final installed location.
9614 : Get out of the UU directory to get correct path name.
9618 echo "Stripping down cppstdin path name"
9624 : end of configuration questions
9626 echo "End of configuration questions."
9629 : back to where it started
9630 if test -d ../UU; then
9634 : configuration may be patched via a 'config.over' file
9635 if $test -f config.over; then
9638 rp='I see a config.over file. Do you wish to load it?'
9641 n*) echo "OK, I'll ignore it.";;
9643 echo "Configuration override changes have been loaded."
9648 : in case they want portability, strip down executable paths
9649 case "$d_portable" in
9652 echo "Stripping down executable paths..." >&4
9653 for file in $loclist $trylist; do
9659 : create config.sh file
9661 echo "Creating config.sh..." >&4
9662 $spitshell <<EOT >config.sh
9665 # This file was produced by running the Configure script. It holds all the
9666 # definitions figured out by Configure. Should you modify one of these values,
9667 # do not forget to propagate your changes by running "Configure -der". You may
9668 # instead choose to run each of the .SH files by yourself, or "Configure -S".
9671 # Configuration time: $cf_time
9672 # Configured by: $cf_by
9673 # Target system: $myuname
9683 Revision='$Revision'
9687 alignbytes='$alignbytes'
9688 aphostname='$aphostname'
9691 archlibexp='$archlibexp'
9692 archname='$archname'
9693 archobjs='$archobjs'
9701 byteorder='$byteorder'
9703 castflags='$castflags'
9706 cccdlflags='$cccdlflags'
9707 ccdlflags='$ccdlflags'
9710 cf_email='$cf_email'
9715 clocktype='$clocktype'
9717 compress='$compress'
9718 contains='$contains'
9722 cpp_stuff='$cpp_stuff'
9723 cppflags='$cppflags'
9725 cppminus='$cppminus'
9727 cppstdin='$cppstdin'
9728 cryptlib='$cryptlib'
9730 d_Gconvert='$d_Gconvert'
9731 d_access='$d_access'
9733 d_archlib='$d_archlib'
9734 d_attribut='$d_attribut'
9738 d_bsdgetpgrp='$d_bsdgetpgrp'
9739 d_bsdpgrp='$d_bsdpgrp'
9740 d_bsdsetpgrp='$d_bsdsetpgrp'
9742 d_casti32='$d_casti32'
9743 d_castneg='$d_castneg'
9744 d_charvspr='$d_charvspr'
9746 d_chroot='$d_chroot'
9747 d_chsize='$d_chsize'
9748 d_closedir='$d_closedir'
9752 d_cuserid='$d_cuserid'
9753 d_dbl_dig='$d_dbl_dig'
9754 d_difftime='$d_difftime'
9755 d_dirnamlen='$d_dirnamlen'
9756 d_dlerror='$d_dlerror'
9757 d_dlopen='$d_dlopen'
9758 d_dlsymun='$d_dlsymun'
9759 d_dosuid='$d_dosuid'
9761 d_eofnblk='$d_eofnblk'
9762 d_eunice='$d_eunice'
9763 d_fchmod='$d_fchmod'
9764 d_fchown='$d_fchown'
9766 d_fd_macros='$d_fd_macros'
9767 d_fd_set='$d_fd_set'
9768 d_fds_bits='$d_fds_bits'
9769 d_fgetpos='$d_fgetpos'
9770 d_flexfnam='$d_flexfnam'
9773 d_fpathconf='$d_fpathconf'
9774 d_fsetpos='$d_fsetpos'
9775 d_getgrps='$d_getgrps'
9776 d_gethent='$d_gethent'
9777 d_gethname='$d_gethname'
9778 d_getlogin='$d_getlogin'
9779 d_getpgid='$d_getpgid'
9780 d_getpgrp2='$d_getpgrp2'
9781 d_getpgrp='$d_getpgrp'
9782 d_getppid='$d_getppid'
9783 d_getprior='$d_getprior'
9784 d_gnulibc='$d_gnulibc'
9787 d_isascii='$d_isascii'
9788 d_killpg='$d_killpg'
9790 d_locconv='$d_locconv'
9794 d_mbstowcs='$d_mbstowcs'
9795 d_mbtowc='$d_mbtowc'
9796 d_memcmp='$d_memcmp'
9797 d_memcpy='$d_memcpy'
9798 d_memmove='$d_memmove'
9799 d_memset='$d_memset'
9801 d_mkfifo='$d_mkfifo'
9802 d_mktime='$d_mktime'
9804 d_msgctl='$d_msgctl'
9805 d_msgget='$d_msgget'
9806 d_msgrcv='$d_msgrcv'
9807 d_msgsnd='$d_msgsnd'
9808 d_mymalloc='$d_mymalloc'
9810 d_oldarchlib='$d_oldarchlib'
9811 d_oldsock='$d_oldsock'
9813 d_pathconf='$d_pathconf'
9815 d_phostname='$d_phostname'
9818 d_portable='$d_portable'
9820 d_pwchange='$d_pwchange'
9821 d_pwclass='$d_pwclass'
9822 d_pwcomment='$d_pwcomment'
9823 d_pwexpire='$d_pwexpire'
9824 d_pwquota='$d_pwquota'
9825 d_readdir='$d_readdir'
9826 d_readlink='$d_readlink'
9827 d_rename='$d_rename'
9828 d_rewinddir='$d_rewinddir'
9830 d_safebcpy='$d_safebcpy'
9831 d_safemcpy='$d_safemcpy'
9832 d_seekdir='$d_seekdir'
9833 d_select='$d_select'
9835 d_semctl='$d_semctl'
9836 d_semget='$d_semget'
9838 d_setegid='$d_setegid'
9839 d_seteuid='$d_seteuid'
9840 d_setlinebuf='$d_setlinebuf'
9841 d_setlocale='$d_setlocale'
9842 d_setpgid='$d_setpgid'
9843 d_setpgrp2='$d_setpgrp2'
9844 d_setpgrp='$d_setpgrp'
9845 d_setprior='$d_setprior'
9846 d_setregid='$d_setregid'
9847 d_setresgid='$d_setresgid'
9848 d_setresuid='$d_setresuid'
9849 d_setreuid='$d_setreuid'
9850 d_setrgid='$d_setrgid'
9851 d_setruid='$d_setruid'
9852 d_setsid='$d_setsid'
9856 d_shmatprototype='$d_shmatprototype'
9857 d_shmctl='$d_shmctl'
9859 d_shmget='$d_shmget'
9860 d_sigaction='$d_sigaction'
9861 d_sigsetjmp='$d_sigsetjmp'
9862 d_socket='$d_socket'
9863 d_sockpair='$d_sockpair'
9864 d_statblks='$d_statblks'
9865 d_stdio_cnt_lval='$d_stdio_cnt_lval'
9866 d_stdio_ptr_lval='$d_stdio_ptr_lval'
9867 d_stdiobase='$d_stdiobase'
9868 d_stdstdio='$d_stdstdio'
9869 d_strchr='$d_strchr'
9870 d_strcoll='$d_strcoll'
9871 d_strctcpy='$d_strctcpy'
9872 d_strerrm='$d_strerrm'
9873 d_strerror='$d_strerror'
9874 d_strtod='$d_strtod'
9875 d_strtol='$d_strtol'
9876 d_strtoul='$d_strtoul'
9877 d_strxfrm='$d_strxfrm'
9878 d_suidsafe='$d_suidsafe'
9879 d_symlink='$d_symlink'
9880 d_syscall='$d_syscall'
9881 d_sysconf='$d_sysconf'
9882 d_sysernlst='$d_sysernlst'
9883 d_syserrlst='$d_syserrlst'
9884 d_system='$d_system'
9885 d_tcgetpgrp='$d_tcgetpgrp'
9886 d_tcsetpgrp='$d_tcsetpgrp'
9887 d_telldir='$d_telldir'
9890 d_truncate='$d_truncate'
9891 d_tzname='$d_tzname'
9895 d_void_closedir='$d_void_closedir'
9896 d_voidsig='$d_voidsig'
9897 d_voidtty='$d_voidtty'
9898 d_volatile='$d_volatile'
9899 d_vprintf='$d_vprintf'
9901 d_waitpid='$d_waitpid'
9902 d_wcstombs='$d_wcstombs'
9903 d_wctomb='$d_wctomb'
9906 db_hashtype='$db_hashtype'
9907 db_prefixtype='$db_prefixtype'
9908 defvoidused='$defvoidused'
9909 direntrytype='$direntrytype'
9912 dynamic_ext='$dynamic_ext'
9917 eunicefix='$eunicefix'
9920 extensions='$extensions'
9922 firstmakefile='$firstmakefile'
9924 fpostype='$fpostype'
9925 freetype='$freetype'
9926 full_csh='$full_csh'
9927 full_sed='$full_sed'
9929 gccversion='$gccversion'
9933 groupcat='$groupcat'
9934 groupstype='$groupstype'
9937 h_sysfile='$h_sysfile'
9941 i_bsdioctl='$i_bsdioctl'
9944 i_dirent='$i_dirent'
9951 i_limits='$i_limits'
9952 i_locale='$i_locale'
9953 i_malloc='$i_malloc'
9955 i_memory='$i_memory'
9957 i_neterrno='$i_neterrno'
9960 i_rpcsvcdbm='$i_rpcsvcdbm'
9963 i_stdarg='$i_stdarg'
9964 i_stddef='$i_stddef'
9965 i_stdlib='$i_stdlib'
9966 i_string='$i_string'
9967 i_sysdir='$i_sysdir'
9968 i_sysfile='$i_sysfile'
9969 i_sysfilio='$i_sysfilio'
9971 i_sysioctl='$i_sysioctl'
9972 i_sysndir='$i_sysndir'
9973 i_sysparam='$i_sysparam'
9974 i_sysresrc='$i_sysresrc'
9975 i_sysselct='$i_sysselct'
9976 i_syssockio='$i_syssockio'
9977 i_sysstat='$i_sysstat'
9978 i_systime='$i_systime'
9979 i_systimek='$i_systimek'
9980 i_systimes='$i_systimes'
9981 i_systypes='$i_systypes'
9983 i_syswait='$i_syswait'
9984 i_termio='$i_termio'
9985 i_termios='$i_termios'
9987 i_unistd='$i_unistd'
9989 i_values='$i_values'
9990 i_varargs='$i_varargs'
9991 i_varhdr='$i_varhdr'
9995 installarchlib='$installarchlib'
9996 installbin='$installbin'
9997 installman1dir='$installman1dir'
9998 installman3dir='$installman3dir'
9999 installprivlib='$installprivlib'
10000 installscript='$installscript'
10001 installsitearch='$installsitearch'
10002 installsitelib='$installsitelib'
10004 known_extensions='$known_extensions'
10008 lddlflags='$lddlflags'
10016 libswanted='$libswanted'
10022 locincpth='$locincpth'
10023 loclibpth='$loclibpth'
10027 lseektype='$lseektype'
10031 make_set_make='$make_set_make'
10032 mallocobj='$mallocobj'
10033 mallocsrc='$mallocsrc'
10034 malloctype='$malloctype'
10036 man1direxp='$man1direxp'
10039 man3direxp='$man3direxp'
10043 mips_type='$mips_type'
10046 modetype='$modetype'
10049 myarchname='$myarchname'
10050 mydomain='$mydomain'
10051 myhostname='$myhostname'
10055 nm_so_opt='$nm_so_opt'
10057 o_nonblock='$o_nonblock'
10059 oldarchlib='$oldarchlib'
10060 oldarchlibexp='$oldarchlibexp'
10061 optimize='$optimize'
10062 orderlib='$orderlib'
10068 patchlevel='$patchlevel'
10069 path_sep='$path_sep'
10071 perladmin='$perladmin'
10072 perlpath='$perlpath'
10074 phostname='$phostname'
10079 prefixexp='$prefixexp'
10081 privlibexp='$privlibexp'
10082 prototype='$prototype'
10083 randbits='$randbits'
10085 rd_nodata='$rd_nodata'
10089 scriptdir='$scriptdir'
10090 scriptdirexp='$scriptdirexp'
10092 selecttype='$selecttype'
10093 sendmail='$sendmail'
10096 sharpbang='$sharpbang'
10097 shmattype='$shmattype'
10100 sig_name='$sig_name'
10102 signal_t='$signal_t'
10103 sitearch='$sitearch'
10104 sitearchexp='$sitearchexp'
10106 sitelibexp='$sitelibexp'
10107 sizetype='$sizetype'
10112 sockethdr='$sockethdr'
10113 socketlib='$socketlib'
10115 spackage='$spackage'
10116 spitshell='$spitshell'
10118 ssizetype='$ssizetype'
10119 startperl='$startperl'
10121 static_ext='$static_ext'
10123 stdio_base='$stdio_base'
10124 stdio_bufsiz='$stdio_bufsiz'
10125 stdio_cnt='$stdio_cnt'
10126 stdio_filbuf='$stdio_filbuf'
10127 stdio_ptr='$stdio_ptr'
10130 subversion='$subversion'
10136 timeincl='$timeincl'
10137 timetype='$timetype'
10145 usemymalloc='$usemymalloc'
10147 useopcode='$useopcode'
10148 useperlio='$useperlio'
10149 useposix='$useposix'
10151 useshrplib='$useshrplib'
10152 usevfork='$usevfork'
10156 voidflags='$voidflags'
10162 : add special variables
10163 $test -f patchlevel.h && \
10164 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
10165 echo "CONFIG=true" >>config.sh
10167 : propagate old symbols
10168 if $test -f UU/config.sh; then
10169 <UU/config.sh sort | uniq >UU/oldconfig.sh
10170 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
10171 sort | uniq -u >UU/oldsyms
10172 set X `cat UU/oldsyms`
10178 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
10180 echo "# Variables propagated from previous config.sh file." >>config.sh
10181 for sym in `cat UU/oldsyms`; do
10182 echo " Propagating $hint variable "'$'"$sym..."
10183 eval 'tmp="$'"${sym}"'"'
10185 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
10191 : Finish up by extracting the .SH files
10205 If you'd like to make any changes to the config.sh file before I begin
10206 to configure things, do it as a shell escape now (e.g. !vi config.sh).
10209 rp="Press return or use a shell escape to edit config.sh:"
10214 *) : in case they cannot read
10215 sh 1>&4 -c "$ans";;
10220 : if this fails, just run all the .SH files by hand
10227 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
10234 Now you need to generate make dependencies by running "make depend".
10235 You might prefer to run it in background: "make depend > makedepend.out &"
10236 It can take a while, so you might not want to run it right now.
10241 rp="Run make depend now?"
10245 make depend && echo "Now you must run a make."
10248 echo "You must run 'make depend' then 'make'."
10251 elif test -f [Mm]akefile; then
10253 echo "Now you must run a make."
10258 $rm -f kit*isdone ark*isdone