3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc so you may fetch it yourself from your nearest
18 # archive site. Check with Archie if you don't know where that can be.)
21 # $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
23 # Generated on Sat Dec 2 15:29:39 EST 1995 [metaconfig 3.0 PL58]
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 :-]
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 exotic machines. If yours does, try the Bourne shell instead.)
114 : Configure runs within the UU subdirectory
115 test -d UU || mkdir UU
582 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
585 : We must find out about Eunice early
587 if test -f /etc/unixtovms; then
588 eunicefix=/etc/unixtovms
590 if test -f /etc/unixtovms.exe; then
591 eunicefix=/etc/unixtovms.exe
594 : list of known cpp symbols, sorted alphabetically
595 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
596 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
597 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
598 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
599 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
600 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
601 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
602 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
603 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
604 al="$al VMS Xenix286"
605 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
606 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
607 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
608 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
609 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
610 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
611 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
612 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
613 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
614 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
615 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
616 al="$al __SVR4_2__ __UMAXV__"
617 al="$al ____386BSD____ __alpha __alpha__ __amiga"
618 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
619 al="$al __host_mips__"
620 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
621 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
622 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
623 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
624 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
625 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
626 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
627 al="$al __mc88100 __mc88100__ __mips __mips__"
628 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
629 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
630 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
631 al="$al _host_mips _mips _unix"
632 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
633 al="$al apollo ardent att386 att3b"
634 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
635 al="$al cadmus clipper concurrent convex cray ctix"
636 al="$al dmert encore gcos gcx gimpel gould"
637 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
638 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
639 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
640 al="$al i186 i286 i386 i486 i8086"
641 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
642 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
643 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
644 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
645 al="$al mc88000 mc88100 merlin mert mips mvs n16"
646 al="$al ncl_el ncl_mr"
647 al="$al news1500 news1700 news1800 news1900 news3700"
648 al="$al news700 news800 news900 ns16000 ns32000"
649 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
650 al="$al parisc pc532 pdp11 plexus posix pyr"
651 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
652 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
653 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
654 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
655 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
656 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
661 : default library list
663 : set useposix=false in your hint file to disable the POSIX extension.
665 : Define several unixisms. These can be overridden in hint files.
667 : Extra object files, if any, needed on this platform.
669 : Possible local include directories to search.
670 : Set locincpth to "" in a hint file to defeat local include searches.
671 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
672 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
674 : no include file wanted by default
677 : change the next line if compiling for Xenix/286 on Xenix/386
678 xlibpth='/usr/lib/386 /lib/386'
680 : Possible local library directories to search.
681 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
682 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
684 : general looking path for locating libraries
685 glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib"
686 glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small"
687 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib"
689 : Private path used by Configure to find libraries. Its value
690 : is prepended to libpth. This variable takes care of special
691 : machines, like the mips. Usually, it should be empty.
694 : full support for void wanted by default
697 : List of libraries we want.
698 libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
699 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
700 libswanted="$libswanted ucb bsd BSD PW x"
701 : We probably want to search /usr/shlib before most other libraries.
702 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
703 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
704 glibpth="/usr/shlib $glibpth"
705 : Do not use vfork unless overridden by a hint file.
708 : script used to extract .SH files with variable substitutions
711 echo "Doing variable substitutions on .SH files..."
712 if test -f MANIFEST; then
713 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
714 : Pick up possible extension manifests.
715 for dir in ext/* ; do
716 if test -f $dir/MANIFEST; then
717 xxx=`awk '{print $1}' < $dir/MANIFEST |
718 sed -n "/\.SH$/ s@^@$dir/@p"`
719 shlist="$shlist $xxx"
724 echo "(Looking for .SH files under the current directory.)"
725 set x `find . -name "*.SH" -print`
729 0) set x *.SH; shift;;
731 if test ! -f $1; then
737 dir=`expr X$file : 'X\(.*\)/'`
738 file=`expr X$file : 'X.*/\(.*\)'`
739 (cd $dir && . ./$file)
746 if test -f config_h.SH; then
747 if test ! -f config.h; then
748 : oops, they left it out of MANIFEST, probably, so do it anyway.
754 : produce awk script to parse command line options
755 cat >options.awk <<'EOF'
757 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
759 len = length(optstr);
760 for (i = 1; i <= len; i++) {
761 c = substr(optstr, i, 1);
762 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
773 if (substr(str, 1, 1) != "-") {
774 printf("'%s'\n", str);
778 for (i = 2; i <= len; i++) {
779 c = substr(str, i, 1);
781 printf("-%s\n", substr(str, i));
787 printf("'%s'\n", substr(str, i + 1));
800 : process the command line options
801 set X `for arg in "$@"; do echo "X$arg"; done |
802 sed -e s/X// | awk -f options.awk`
807 : set up default values
820 while test $# -gt 0; do
822 -d) shift; fastread=yes;;
823 -e) shift; alldone=cont;;
827 if test -r "$1"; then
830 echo "$me: cannot read config file $1." >&2
835 -h) shift; error=true;;
836 -r) shift; reuseval=true;;
837 -s) shift; silent=true;;
838 -E) shift; alldone=exit;;
839 -K) shift; knowitall=true;;
840 -O) shift; override=true;;
841 -S) shift; extractsh=true;;
846 echo "$me: use '-U symbol=', not '-D symbol='." >&2
847 echo "$me: ignoring -D $1" >&2
850 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
851 *) echo "$1='define'" >> optdef.sh;;
858 *=) echo "$1" >> optdef.sh;;
860 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
861 echo "$me: ignoring -U $1" >&2
863 *) echo "$1='undef'" >> optdef.sh;;
867 -V) echo "$me generated by metaconfig 3.0 PL58." >&2
870 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
878 Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
879 [-U symbol] [-U symbol=]
880 -d : use defaults for all answers.
881 -e : go on without questioning past the production of config.sh.
882 -f : specify an alternate default configuration file.
883 -h : print this help message and exit (with an error status).
884 -r : reuse C symbols value if possible (skips costly nm extraction).
885 -s : silent mode, only echoes questions and essential information.
886 -D : define symbol to have some value:
887 -D symbol symbol gets the value 'define'
888 -D symbol=value symbol gets the value 'value'
889 -E : stop at the end of questions, after having produced config.sh.
890 -K : do not use unless you know what you are doing.
891 -O : let -D and -U override definitions from loaded configuration file.
892 -S : perform variable substitutions on all .SH files (can mix with -f)
893 -U : undefine symbol:
894 -U symbol symbol gets the value 'undef'
895 -U symbol= symbol gets completely empty
896 -V : print version number and exit (with a zero status).
904 true) exec 1>/dev/null;;
907 : run the defines and the undefines, if any, but leave the file out there...
914 '') config_sh='config.sh'; config='./config.sh';;
915 /*) config="$config_sh";;
916 *) config="./$config_sh";;
919 echo "Fetching answers from $config_sh..."
922 test "$override" && . ./optdef.sh
933 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
934 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
935 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
936 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
937 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
940 : Eunice requires " " instead of "", can you believe it
943 echo "Beginning of configuration questions for $package."
945 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
947 : Some greps do not return status, grrr.
948 echo "grimblepritz" >grimble
949 if grep blurfldyick grimble >/dev/null 2>&1 ; then
951 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
957 : the following should work in any shell
961 echo "AGH! Grep doesn't return a status. Attempting remedial action."
962 cat >contains <<'EOSS'
963 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
968 : first determine how to suppress newline on echo command
970 echo "Checking echo to see how to suppress newlines..."
971 (echo "hi there\c" ; echo " ") >.echotmp
972 if $contains c .echotmp >/dev/null 2>&1 ; then
983 echo $n "The star should be here-->$c"
987 : Now test for existence of everything in MANIFEST
989 if test -f ../MANIFEST; then
990 echo "First let's make sure your kit is complete. Checking..." >&4
991 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
993 for filelist in x??; do
994 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
996 if test -s missing; then
1000 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1002 You have the option of continuing the configuration process, despite the
1003 distinct possibility that your kit is damaged, by typing 'y'es. If you
1004 do, don't blame me if something goes wrong. I advise you to type 'n'o
1005 and contact the author (lwall@netlabs.com).
1008 echo $n "Continue? [n] $c" >&4
1012 echo "Continuing..." >&4
1016 echo "ABORTING..." >&4
1021 echo "Looks good..." >&4
1024 echo "There is no MANIFEST file. I hope your kit is complete !"
1028 : compute the number of columns on the terminal for proper question formatting
1033 : set up the echo used in my read
1034 myecho="case \"\$xxxm\" in
1035 '') echo $n \"\$rp $c\" >&4;;
1037 '') echo $n \"[\$xxxm] $c\";;
1039 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1041 echo $n \"[\$xxxm] $c\" >&4
1043 echo $n \"\$rp [\$xxxm] $c\" >&4
1049 : now set up to do reads with possible shell escape and default assignment
1054 case "\$fastread" in
1055 yes) case "\$dflt" in
1058 case "\$silent-\$rp" in
1063 *) case "\$silent" in
1064 true) case "\$rp" in
1069 while expr "X\$ans" : "X!" >/dev/null; do
1073 aok=''; eval "ans=\"\$answ\"" && aok=y
1078 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1083 echo "(OK, I'll run with -d after this question.)"
1086 echo "*** Sorry, \$1 not supported yet."
1098 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1108 echo "*** Substitution done -- please confirm."
1110 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1115 echo "*** Error -- try again."
1122 case "\$ans\$xxxm\$nostick" in
1134 : create .config dir to save info across Configure sessions
1135 test -d ../.config || mkdir ../.config
1136 cat >../.config/README <<EOF
1137 This directory created by Configure to save information that should
1138 persist across sessions.
1140 You may safely delete it if you wish.
1143 : general instructions
1146 user=`( (logname) 2>/dev/null || whoami) 2>&1`
1147 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1150 rp='Would you like to see the instructions?'
1161 This installation shell script will examine your system and ask you questions
1162 to determine how the perl5 package should be installed. If you get
1163 stuck on a question, you may use a ! shell escape to start a subshell or
1164 execute a command. Many of the questions will have default answers in square
1165 brackets; typing carriage return will give you the default.
1167 On some of the questions which ask for file or directory names you are allowed
1168 to use the ~name construct to specify the login directory belonging to "name",
1169 even if you don't have a shell which knows about that. Questions where this is
1170 allowed will be marked "(~name ok)".
1174 dflt='Type carriage return to continue'
1178 The prompter used in this script allows you to use shell variables and
1179 backticks in your answers. You may use $1, $2, etc... to refer to the words
1180 in the default answer, as if the default line was a set of arguments given to a
1181 script shell. This means you may also use $* to repeat the whole default line,
1182 so you do not have to re-type everything to add something to the default.
1184 Everytime there is a substitution, you will have to confirm. If there is an
1185 error (e.g. an unmatched backtick), the default answer will remain unchanged
1186 and you will be prompted again.
1188 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1189 the questions and use the computed defaults (or the previous answers if there
1190 was already a config.sh file). Type 'Configure -h' for a list of options.
1191 You may also start interactively and then answer '& -d' at any prompt to turn
1192 on the non-interactive behaviour for the remaining of the execution.
1198 Much effort has been expended to ensure that this shell script will run on any
1199 Unix system. If despite that it blows up on yours, your best bet is to edit
1200 Configure and run it again. If you can't run Configure for some reason,
1201 you'll have to generate a config.sh file by hand. Whatever problems you
1202 have, let me (lwall@netlabs.com) know how I blew it.
1204 This installation script affects things in two ways:
1206 1) it may do direct variable substitutions on some of the files included
1208 2) it builds a config.h file for inclusion in C programs. You may edit
1209 any of these files as the need arises after running this script.
1211 If you make a mistake on a question, there is no easy way to back up to it
1212 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1213 files. Configure will offer to let you do this before it runs the SH files.
1216 dflt='Type carriage return to continue'
1218 case "$firsttime" in
1219 true) echo $user >>../.config/instruct;;
1223 : see if sh knows # comments
1225 echo "Checking your sh to see if it knows about # comments..." >&4
1226 if `sh -c '#' >/dev/null 2>&1`; then
1227 echo "Your sh handles # comments correctly."
1231 echo "Okay, let's see if #! works on this system..."
1233 test -f $xcat || xcat=/usr/bin/cat
1238 if test -s today; then
1242 echo "#! $xcat" > try
1246 if test -s today; then
1250 echo "It's just a comment."
1255 echo "Your sh doesn't grok # comments--I will strip them later on."
1258 echo "exec grep -v '^[ ]*#'" >spitshell
1260 $eunicefix spitshell
1261 spitshell=`pwd`/spitshell
1263 echo "I presume that if # doesn't work, #! won't work either!"
1268 : figure out how to guarantee sh startup
1270 echo "Checking out how to guarantee sh startup..." >&4
1272 *bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
1273 *) startsh=$sharpbang'/bin/sh';;
1275 echo "Let's see if '$startsh' works..."
1285 echo "Yup, it does."
1287 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
1291 : find out where common programs are
1293 echo "Locating common programs..." >&4
1306 if test -d \$dir/\$thing; then
1312 for thisthing in \$dir/\$thing; do
1313 : just loop through to pick last item
1315 if test -f \$thisthing; then
1318 elif test -f \$dir/\$thing.exe; then
1319 : on Eunice apparently
1364 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1365 pth="$pth /lib /usr/lib"
1366 for file in $loclist; do
1367 xxx=`./loc $file $file $pth`
1372 echo $file is in $xxx.
1375 echo $file is in $xxx.
1378 echo "I don't know where '$file' is, and my life depends on it." >&4
1379 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1385 echo "Don't worry if any of the following aren't found..."
1387 for file in $trylist; do
1388 xxx=`./loc $file $file $pth`
1393 echo $file is in $xxx.
1396 echo $file is in $xxx.
1399 echo "I don't see $file out there, $say."
1406 echo "Substituting grep for egrep."
1412 echo "Hopefully test is built into your sh."
1415 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1416 echo "Using the test built into your sh."
1424 echo "Hopefully echo is built into your sh."
1429 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1430 $echo $n "hi there$c" >foo1
1431 echo $n "hi there$c" >foo2
1432 if cmp foo1 foo2 >/dev/null 2>&1; then
1433 echo "They are compatible. In fact, they may be identical."
1440 They are not compatible! You are probably running ksh on a non-USG system.
1441 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1442 have echo built in and we may have to run some Bourne shell scripts. That
1443 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1446 $echo $n "The star should be here-->$c"
1453 : determine whether symbolic links are supported
1456 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1457 echo "Symbolic links are supported." >&4
1460 echo "Symbolic links are NOT supported." >&4
1465 : see whether [:lower:] and [:upper:] are supported character classes
1469 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1471 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1476 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1479 : set up the translation script tr, must be called with ./tr of course
1483 '[A-Z][a-z]') exec $tr '$up' '$low';;
1484 '[a-z][A-Z]') exec $tr '$low' '$up';;
1491 : Try to determine whether config.sh was made on this system
1492 case "$config_sh" in
1494 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1495 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1496 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1497 newmyuname="$myuname"
1499 case "$knowitall" in
1501 if test -f ../config.sh; then
1502 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1503 eval "`grep myuname= ../config.sh`"
1505 if test "X$myuname" = "X$newmyuname"; then
1513 : Get old answers from old config file if Configure was run on the
1514 : same system, otherwise use the hints.
1517 if test -f config.sh; then
1519 rp="I see a config.sh file. Shall I use it to set the defaults?"
1522 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1523 *) echo "Fetching default answers from your old config.sh file..." >&4
1534 if test ! -f config.sh; then
1537 First time through, eh? I have some defaults handy for the following systems:
1540 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1542 : Half the following guesses are probably wrong... If you have better
1543 : tests or hints, please send them to lwall@netlabs.com
1544 : The metaconfig authors would also appreciate a copy...
1545 $test -f /irix && osname=irix
1546 $test -f /xenix && osname=sco_xenix
1547 $test -f /dynix && osname=dynix
1548 $test -f /dnix && osname=dnix
1549 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1550 $test -f /bin/mips && /bin/mips && osname=mips
1551 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1552 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1553 $test -d /usr/apollo/bin && osname=apollo
1554 $test -f /etc/saf/_sactab && osname=svr4
1555 $test -d /usr/include/minix && osname=minix
1556 if $test -d /MachTen; then
1558 if $test -x /sbin/version; then
1559 osvers=`/sbin/version | $awk '{print $2}' |
1560 $sed -e 's/[A-Za-z]$//'`
1561 elif $test -x /usr/etc/version; then
1562 osvers=`/usr/etc/version | $awk '{print $2}' |
1563 $sed -e 's/[A-Za-z]$//'`
1568 if $test -f $uname; then
1576 umips) osname=umips ;;
1579 [23]100) osname=mips ;;
1580 next*) osname=next ;;
1581 news*) osname=news ;;
1583 if $test -f /etc/kconfig; then
1585 if test "$lns" = "ln -s"; then
1587 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1589 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1598 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1600 'not found') osvers="$4"."$3" ;;
1601 '<3240'|'<>3240') osvers=3.2.0 ;;
1602 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1603 '=3250'|'>3250') osvers=3.2.5 ;;
1610 domainos) osname=apollo
1616 freebsd) osname=freebsd
1618 genix) osname=genix ;;
1623 *.10.*) osvers=10 ;;
1640 netbsd*) osname=netbsd
1643 bsd386) osname=bsd386
1646 next*) osname=next ;;
1647 solaris) osname=solaris
1649 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1656 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1660 titanos) osname=titanos
1669 ultrix) osname=ultrix
1675 osvers=`echo "$3" | sed 's/^[vt]//'`
1677 hp*) osname=hp_osf1 ;;
1678 mips) osname=mips_osf1 ;;
1684 $2) case "$osname" in
1688 : svr4.x or possibly later
1698 if test -f /stand/boot ; then
1699 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1700 if test -n "$INITPROG" -a -f "$INITPROG"; then
1701 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1702 if test -n "$isesix"; then
1710 *) if test -f /etc/systemid; then
1712 set `echo $3 | $sed 's/\./ /g'` $4
1713 if $test -f sco_$1_$2_$3.sh; then
1715 elif $test -f sco_$1_$2.sh; then
1717 elif $test -f sco_$1.sh; then
1722 '') : Still unknown. Probably a generic Sys V.
1731 *) case "$osname" in
1732 '') : Still unknown. Probably a generic BSD.
1740 if test -f /vmunix -a -f news_os.sh; then
1741 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1742 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1745 $rm -f ../UU/kernel.what
1746 elif test -d c:/.; then
1753 : Now look for a hint file osname_osvers, unless one has been
1754 : specified already.
1757 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1758 : Also try without trailing minor version numbers.
1759 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1760 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1761 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1762 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1765 *) case "$osvers" in
1768 *) if $test -f $file.sh ; then
1770 elif $test -f $xfile.sh ; then
1772 elif $test -f $xxfile.sh ; then
1774 elif $test -f $xxxfile.sh ; then
1776 elif $test -f $xxxxfile.sh ; then
1778 elif $test -f "${osname}.sh" ; then
1789 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1795 You may give one or more space-separated answers, or "none" if appropriate.
1796 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1799 rp="Which of these apply, if any?"
1802 for file in $tans; do
1803 if $test -f $file.sh; then
1805 $cat $file.sh >> ../UU/config.sh
1806 elif $test X$tans = X -o X$tans = Xnone ; then
1809 : Give one chance to correct a possible typo.
1810 echo "$file.sh does not exist"
1812 rp="hint to use instead?"
1814 for file in $ans; do
1815 if $test -f "$file.sh"; then
1817 $cat $file.sh >> ../UU/config.sh
1818 elif $test X$ans = X -o X$ans = Xnone ; then
1821 echo "$file.sh does not exist -- ignored."
1828 : Remember our hint file for later.
1829 if $test -f "$file.sh" ; then
1841 echo "Fetching default answers from $config_sh..." >&4
1845 cp $config_sh config.sh 2>/dev/null
1854 test "$override" && . ./optdef.sh
1855 myuname="$newmyuname"
1857 : Restore computed paths
1858 for file in $loclist $trylist; do
1859 eval $file="\$_$file"
1864 Configure uses the operating system name and version to set some defaults.
1865 The default value is probably right if the name rings a bell. Otherwise,
1866 since spelling matters for me, either accept the default or answer "none"
1873 ''|' '|none) dflt=none ;;
1874 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1877 *) dflt="$osname" ;;
1879 rp="Operating system name?"
1883 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1885 : who configured the system
1886 cf_time=`$date 2>&1`
1887 (logname > .temp) >/dev/null 2>&1
1888 $test -s .temp || (whoami > .temp) >/dev/null 2>&1
1889 $test -s .temp || echo unknown > .temp
1893 : determine the architecture name
1895 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
1896 tarch=`arch`"-$osname"
1897 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
1898 if uname -m > tmparch 2>&1 ; then
1899 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
1907 case "$myarchname" in
1910 echo "(Your architecture name used to be $myarchname.)"
1916 *) dflt="$archname";;
1918 rp='What is your architecture name'
1925 if test -d /afs; then
1926 echo "AFS may be running... I'll be extra cautious then..." >&4
1929 echo "AFS does not seem to be running..." >&4
1933 : decide how portable to be. Allow command line overrides.
1934 case "$d_portable" in
1936 *) d_portable="$define" ;;
1939 : set up shell script to do ~ expansion
1945 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
1948 if $test -f /bin/csh; then
1949 /bin/csh -f -c "glob \$1"
1954 name=\`$expr x\$1 : '..\([^/]*\)'\`
1955 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
1956 if $test ! -d "\$dir"; then
1958 echo "\$me: can't locate home directory for: \$name" >&2
1963 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
1979 : now set up to get a file name
1980 cat <<'EOSC' >getfile
1993 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
1994 fn=`echo $fn | sed 's/(.*)//'`
2000 loc_file=`expr $fn : '.*:\(.*\)'`
2001 fn=`expr $fn : '\(.*\):.*'`
2009 */*) fullpath=true;;
2018 *e*) exp_file=true;;
2021 *p*) nopath_ok=true;;
2026 *d*) type='Directory';;
2027 *l*) type='Locate';;
2032 Locate) what='File';;
2037 case "$d_portable" in
2045 while test "$type"; do
2050 true) rp="$rp (~name ok)";;
2053 if test -f UU/getfile.ok && \
2054 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2073 value=`UU/filexp $ans`
2076 if test "$ans" != "$value"; then
2077 echo "(That expands to $value on this system.)"
2091 /*) value="$ansexp" ;;
2096 echo "I shall only accept a full path name, as in /bin/ls." >&4
2097 echo "Use a ! shell escape if you wish to check pathnames." >&4
2100 echo "Please give a full path name, starting with slash." >&4
2103 echo "Note that using ~name is ok provided it expands well." >&4
2116 if test -f "$ansexp"; then
2118 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2120 echo "($value is not a plain file, but that's ok.)"
2125 if test -d "$ansexp"; then
2130 if test -d "$ansexp"; then
2131 echo "(Looking for $loc_file in directory $value.)"
2132 value="$value/$loc_file"
2133 ansexp="$ansexp/$loc_file"
2135 if test -f "$ansexp"; then
2138 case "$nopath_ok" in
2139 true) case "$value" in
2141 *) echo "Assuming $value will be in people's path."
2157 if test "$fastread" = yes; then
2162 rp="$what $value doesn't exist. Use that name anyway?"
2183 : determine root of directory hierarchy where package will be installed.
2186 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2194 By default, $package will be installed in $dflt/bin, manual
2195 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2196 all installation directories. Typically set to /usr/local, but you
2197 may choose /usr if you wish to install $package among your system
2198 binaries. If you wish to have binaries under /bin but manual pages
2199 under /usr/local/man, that's ok: you will be prompted separately
2200 for each of the installation directories, the prefix being only used
2201 to set the defaults.
2205 rp='Installation prefix to use?'
2213 *) oldprefix="$prefix";;
2220 : set the prefixit variable, to compute a suitable default value
2221 prefixit='case "$3" in
2223 case "$oldprefix" in
2224 "") eval "$1=\"\$$2\"";;
2231 ""|" ") eval "$1=\"\$$2\"";;
2237 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2239 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2240 /*-$oldprefix/*|\~*-$oldprefix/*)
2241 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2242 *) eval "$1=\"\$$2\"";;
2246 : determine where private library files go
2247 : Usual default is /usr/local/lib/perl5. Also allow things like
2248 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2250 *perl*) set dflt privlib lib ;;
2251 *) set dflt privlib lib/$package ;;
2256 There are some auxiliary files for $package that need to be put into a
2257 private library directory that is accessible by everyone.
2261 rp='Pathname where the private library files will reside?'
2263 if $test "X$privlibexp" != "X$ansexp"; then
2267 privlibexp="$ansexp"
2271 Since you are running AFS, I need to distinguish the directory in which
2272 private files reside from the directory in which they are installed (and from
2273 which they are presumably copied to the former directory by occult means).
2276 case "$installprivlib" in
2277 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2278 *) dflt="$installprivlib";;
2281 rp='Where will private files be installed?'
2283 installprivlib="$ans"
2285 installprivlib="$privlibexp"
2288 : set the base revision
2291 : get the patchlevel
2293 echo "Getting the current patchlevel..." >&4
2294 if $test -r ../patchlevel.h;then
2295 patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
2299 echo "(You have $package $baserev PL$patchlevel.)"
2301 : set the prefixup variable, to restore leading tilda escape
2302 prefixup='case "$prefixexp" in
2304 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2307 : determine where public architecture dependent libraries go
2314 dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2318 *) version=`echo $baserev $patchlevel | $awk '{print $1 + $2/1000.0}'`
2319 dflt="$privlib/$archname/$version"
2323 *) dflt="$archlib";;
2327 $spackage contains architecture-dependent library files. If you are
2328 sharing libraries in a heterogeneous environment, you might store
2329 these files in a separate location. Otherwise, you can just include
2330 them with the rest of the public library files.
2334 rp='Where do you want to put the public architecture-dependent libraries?'
2337 archlibexp="$ansexp"
2342 Since you are running AFS, I need to distinguish the directory in which
2343 private files reside from the directory in which they are installed (and from
2344 which they are presumably copied to the former directory by occult means).
2347 case "$installarchlib" in
2348 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2349 *) dflt="$installarchlib";;
2352 rp='Where will architecture-dependent library files be installed?'
2354 installarchlib="$ans"
2356 installarchlib="$archlibexp"
2358 if $test X"$archlib" = X"$privlib"; then
2364 : determine where site specific architecture-dependent libraries go.
2366 set dflt sitearch lib/site_perl/$archname
2370 The installation process will also create a directory for
2371 architecture-dependent site-specific extensions and modules.
2375 rp='Pathname for the site-specific architecture-dependent library files?'
2377 if $test "X$sitearchexp" != "X$ansexp"; then
2381 sitearchexp="$ansexp"
2385 Since you are running AFS, I need to distinguish the directory in which
2386 private files reside from the directory in which they are installed (and from
2387 which they are presumably copied to the former directory by occult means).
2390 case "$installsitearch" in
2391 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2392 *) dflt="$installsitearch";;
2395 rp='Where will private files be installed?'
2397 installsitearch="$ans"
2399 installsitearch="$sitearchexp"
2402 : set up the script used to warn in case of inconsistency
2406 echo "*** WHOA THERE!!! ***" >&4
2407 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2408 rp=" Keep the $hint value?"
2411 y) td=$was; tu=$was;;
2415 : function used to set $1 to $val
2416 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2418 $define$undef) . ./whoa; eval "$var=\$td";;
2419 $undef$define) . ./whoa; eval "$var=\$tu";;
2420 *) eval "$var=$val";;
2423 : determine where old public architecture dependent libraries might be
2424 case "$oldarchlib" in
2425 '') case "$privlib" in
2427 *) dflt="$privlib/$archname"
2431 *) dflt="$oldarchlib"
2434 if $test ! -d "$dflt/auto"; then
2439 In 5.001, Perl stored architecutre-dependent library files in a library
2440 with a name such as $privlib/$archname,
2441 and this directory contained files from the standard extensions and
2442 files from any additional extensions you might have added. Starting
2443 with version 5.002, all the architecture-dependent standard extensions
2444 will go into $archlib,
2445 while locally-added extensions will go into
2448 If you wish Perl to continue to search the old architecture-dependent
2449 library for your local extensions, give the path to that directory.
2450 If you do not wish to use your old architecture-dependent library
2451 files, answer 'none'.
2455 rp='Directory for your old 5.001 architecture-dependent libraries?'
2458 oldarchlibexp="$ansexp"
2459 case "$oldarchlib" in
2460 ''|' ') val="$undef" ;;
2466 : determine where public executables go
2471 rp='Pathname where the public executables will reside?'
2473 if $test "X$ansexp" != "X$binexp"; then
2481 Since you are running AFS, I need to distinguish the directory in which
2482 executables reside from the directory in which they are installed (and from
2483 which they are presumably copied to the former directory by occult means).
2486 case "$installbin" in
2487 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2488 *) dflt="$installbin";;
2491 rp='Where will public executables be installed?'
2495 installbin="$binexp"
2498 : determine where manual pages go
2499 set man1dir man1dir none
2503 $spackage has manual pages available in source form.
2507 echo "However, you don't have nroff, so they're probably useless to you."
2509 '') man1dir="none";;
2512 echo "If you don't want the manual sources installed, answer 'none'."
2515 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
2516 lookpath="$lookpath $prefixexp/man/p_man/man1"
2517 lookpath="$lookpath $prefixexp/man/u_man/man1"
2518 : If prefix contains 'perl' then we want to keep the man pages
2519 : under the prefix directory. Otherwise, look in a variety of
2520 : other possible places. This is debatable, but probably a
2524 *) lookpath="$lookpath /usr/local/man/man1"
2525 lookpath="$lookpath /opt/local/man/man1"
2526 lookpath="$lookpath /usr/local/man/man.1"
2527 lookpath="$lookpath /opt/local/man/man.1"
2528 lookpath="$lookpath /usr/man/local/man1"
2529 lookpath="$lookpath /usr/man/l_man/man1"
2530 lookpath="$lookpath /usr/man/p_man/man1"
2531 lookpath="$lookpath /usr/man/u_man/man1"
2532 lookpath="$lookpath /usr/man/man.L"
2533 lookpath="$lookpath /usr/man/man.l"
2536 dflt=`./loc . $prefixexp/man/man1 $lookpath`
2546 rp="Where do the main $spackage manual pages (source) go?"
2548 if $test "X$man1direxp" != "X$ansexp"; then
2552 man1direxp="$ansexp"
2560 Since you are running AFS, I need to distinguish the directory in which
2561 manual pages reside from the directory in which they are installed (and from
2562 which they are presumably copied to the former directory by occult means).
2565 case "$installman1dir" in
2566 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
2567 *) dflt="$installman1dir";;
2570 rp='Where will man pages be installed?'
2572 installman1dir="$ans"
2574 installman1dir="$man1direxp"
2577 : What suffix to use on installed man pages
2584 rp="What suffix should be used for the main $spackage man pages?"
2603 : see if we can have long filenames
2605 rmlist="$rmlist /tmp/cf$$"
2606 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
2607 first=123456789abcdef
2608 second=/tmp/cf$$/$first
2609 $rm -f $first $second
2610 if (echo hi >$first) 2>/dev/null; then
2611 if $test -f 123456789abcde; then
2612 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
2615 if (echo hi >$second) 2>/dev/null; then
2616 if $test -f /tmp/cf$$/123456789abcde; then
2618 That's peculiar... You can have filenames longer than 14 characters, but only
2619 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
2620 I shall consider your system cannot support long filenames at all.
2624 echo 'You can have filenames longer than 14 characters.' >&4
2629 How confusing! Some of your filesystems are sane enough to allow filenames
2630 longer than 14 characters but some others like /tmp can't even think about them.
2631 So, for now on, I shall assume your kernel does not allow them at all.
2638 You can't have filenames longer than 14 chars. You can't even think about them!
2644 $rm -rf /tmp/cf$$ 123456789abcde*
2646 : determine where library module manual pages go
2647 set man3dir man3dir none
2651 $spackage has manual pages for many of the library modules.
2657 However, you don't have nroff, so they're probably useless to you.
2658 You can use the supplied perldoc script instead.
2661 '') man3dir="none";;
2665 case "$d_flexfnam" in
2668 However, your system can't handle the long file names like File::Basename.3.
2669 You can use the supplied perldoc script instead.
2672 '') man3dir="none";;
2676 echo "If you don't want the manual sources installed, answer 'none'."
2677 : We dont use /usr/local/man/man3 because some man programs will
2678 : only show the /usr/local/man/man3 contents, and not the system ones,
2679 : thus man less will show the perl module less.pm, but not the system
2680 : less command. We might also conflict with TCL man pages.
2681 : However, something like /opt/perl/man/man3 is fine.
2683 '') case "$prefix" in
2684 *perl*) dflt=`echo $man1dir | $sed 's/man1/man3/g'` ;;
2685 *) dflt="$privlib/man/man3" ;;
2689 *) dflt="$man3dir" ;;
2694 rp="Where do the $spackage library man pages (source) go?"
2696 if test "X$man3direxp" != "X$ansexp"; then
2701 man3direxp="$ansexp"
2709 Since you are running AFS, I need to distinguish the directory in which
2710 manual pages reside from the directory in which they are installed (and from
2711 which they are presumably copied to the former directory by occult means).
2714 case "$installman3dir" in
2715 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
2716 *) dflt="$installman3dir";;
2719 rp='Where will man pages be installed?'
2721 installman3dir="$ans"
2723 installman3dir="$man3direxp"
2726 : What suffix to use on installed man pages
2733 rp="What suffix should be used for the $spackage library man pages?"
2752 : determine where public executable scripts go
2753 set scriptdir scriptdir
2755 case "$scriptdir" in
2758 : guess some guesses
2759 $test -d /usr/share/scripts && dflt=/usr/share/scripts
2760 $test -d /usr/share/bin && dflt=/usr/share/bin
2761 $test -d /usr/local/script && dflt=/usr/local/script
2762 $test -d $prefixexp/script && dflt=$prefixexp/script
2766 *) dflt="$scriptdir"
2771 Some installations have a separate directory just for executable scripts so
2772 that they can mount it across multiple architectures but keep the scripts in
2773 one spot. You might, for example, have a subdirectory of /usr/share for this.
2774 Or you might just lump your scripts in with all your other executables.
2778 rp='Where do you keep publicly executable scripts?'
2780 if $test "X$ansexp" != "X$scriptdirexp"; then
2784 scriptdirexp="$ansexp"
2788 Since you are running AFS, I need to distinguish the directory in which
2789 scripts reside from the directory in which they are installed (and from
2790 which they are presumably copied to the former directory by occult means).
2793 case "$installscript" in
2794 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
2795 *) dflt="$installscript";;
2798 rp='Where will public scripts be installed?'
2800 installscript="$ans"
2802 installscript="$scriptdirexp"
2805 : determine where site specific libraries go.
2806 set dflt sitelib lib/site_perl
2810 The installation process will also create a directory for
2811 site-specific extensions and modules. Some users find it convenient
2812 to place all local files in this directory rather than in the main
2813 distribution directory.
2817 rp='Pathname for the site-specific library files?'
2819 if $test "X$sitelibexp" != "X$ansexp"; then
2823 sitelibexp="$ansexp"
2827 Since you are running AFS, I need to distinguish the directory in which
2828 private files reside from the directory in which they are installed (and from
2829 which they are presumably copied to the former directory by occult means).
2832 case "$installsitelib" in
2833 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2834 *) dflt="$installsitelib";;
2837 rp='Where will private files be installed?'
2839 installsitelib="$ans"
2841 installsitelib="$sitelibexp"
2844 : determine perl absolute location
2846 '') perlpath=$binexp/perl ;;
2849 : figure out how to guarantee perl startup
2850 case "$startperl" in
2852 case "$sharpbang" in
2856 I can use the #! construct to start perl on your system. This will
2857 make startup of perl scripts faster, but may cause problems if you
2858 want to share those scripts and perl is not in a standard place
2859 ($perlpath) on all your platforms. The alternative is to force
2860 a shell by starting the script with a single ':' character.
2864 rp='Shall I use #! to start up perl?'
2867 y*|Y*) startperl="#!$perlpath";;
2868 *) startperl=": # use perl";;
2871 *) startperl=": # use perl"
2876 echo "I'll use $startperl to start perl scripts."
2878 : determine where manual pages are on this system
2882 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2883 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2884 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2885 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2886 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2887 sysman=`./loc . /usr/man/man1 $syspath`
2890 if $test -d "$sysman"; then
2891 echo "System manual is in $sysman." >&4
2893 echo "Could not find manual pages in source form." >&4
2896 : see what memory models we can support
2899 $cat >pdp11.c <<'EOP'
2908 cc -o pdp11 pdp11.c >/dev/null 2>&1
2909 if ./pdp11 2>/dev/null; then
2910 dflt='unsplit split'
2912 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2915 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2920 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2923 if $test -d /lib/large || $test -d /usr/lib/large; then
2926 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2935 Some systems have different model sizes. On most systems they are called
2936 small, medium, large, and huge. On the PDP11 they are called unsplit and
2937 split. If your system doesn't support different memory models, say "none".
2938 If you wish to force everything to one memory model, say "none" here and
2939 put the appropriate flags later when it asks you for other cc and ld flags.
2940 Venix systems may wish to put "none" and let the compiler figure things out.
2941 (In the following question multiple model names should be space separated.)
2944 rp="Which memory models are supported?"
2959 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2960 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2967 rp="What flag indicates separate I and D space?"
2975 *large*|*small*|*medium*|*huge*)
2982 rp="What flag indicates large model?"
2992 *huge*) case "$huge" in
2996 rp="What flag indicates huge model?"
3006 *medium*) case "$medium" in
3010 rp="What flag indicates medium model?"
3017 *) medium="$large";;
3020 *small*) case "$small" in
3024 rp="What flag indicates small model?"
3035 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3039 : make some quick guesses about what we are up against
3041 $echo $n "Hmm... $c"
3050 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3051 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3053 echo "Looks kind of like an OSF/1 system, but we'll see..."
3055 elif test `echo abc | tr a-z A-Z` = Abc ; then
3056 xxx=`./loc addbib blurfl $pth`
3057 if $test -f $xxx; then
3058 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3062 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3063 echo "Looks kind of like an extended USG system, but we'll see..."
3065 echo "Looks kind of like a USG system, but we'll see..."
3069 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3070 echo "Looks kind of like a BSD system, but we'll see..."
3074 echo "Looks kind of like a Version 7 system, but we'll see..."
3077 case "$eunicefix" in
3080 There is, however, a strange, musty smell in the air that reminds me of
3081 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3085 : it so happens the Eunice I know will not run shell scripts in Unix format
3089 echo "Congratulations. You aren't running Eunice."
3093 if test -f /xenix; then
3094 echo "Actually, this looks more like a XENIX system..."
3099 echo "It's not Xenix..."
3104 if test -f /venix; then
3105 echo "Actually, this looks more like a VENIX system..."
3112 echo "Nor is it Venix..."
3115 chmod +x bsd usg v7 osf1 eunice xenix venix
3116 $eunicefix bsd usg v7 osf1 eunice xenix venix
3119 : see if we need a special compiler
3127 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3128 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3141 On some systems the default C compiler will not resolve multiple global
3142 references that happen to have the same name. On some such systems the "Mcc"
3143 command may be used to force these to be resolved. On other systems a "cc -M"
3144 command is required. (Note that the -M flag on other systems indicates a
3145 memory model to use!) If you have the Gnu C compiler, you might wish to use
3149 rp="What command will force resolution on this system?"
3157 rp="Use which C compiler?"
3162 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3163 $cat >gccvers.c <<EOM
3168 printf("%s\n", __VERSION__);
3170 printf("%s\n", "1");
3176 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3177 gccversion=`./gccvers`
3178 case "$gccversion" in
3179 '') echo "You are not using GNU cc." ;;
3180 *) echo "You are using GNU cc $gccversion." ;;
3184 echo "*** WHOA THERE!!! ***" >&4
3185 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3186 case "$knowitall" in
3188 echo " You'd better start hunting for one and let me know about it." >&4
3194 case "$gccversion" in
3195 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3198 : What should the include directory be ?
3200 $echo $n "Hmm... $c"
3204 if $test -f /bin/mips && /bin/mips; then
3205 echo "Looks like a MIPS system..."
3206 $cat >usr.c <<'EOCP'
3207 #ifdef SYSTYPE_BSD43
3211 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3212 dflt='/bsd43/usr/include'
3216 mips_type='System V'
3218 $rm -f usr.c usr.out
3219 echo "and you're compiling with the $mips_type compiler and libraries."
3223 echo "Doesn't look like a MIPS system."
3234 case "$xxx_prompt" in
3236 rp='Where are the include files you want to use?'
3244 : see how we invoke the C preprocessor
3246 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3247 cat <<'EOT' >testcpp.c
3253 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3255 wrapper=`pwd`/cppstdin
3259 if $test "X$cppstdin" != "X" && \
3260 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3261 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3263 echo "You used to use $cppstdin $cppminus so we'll use that again."
3265 '') echo "But let's see if we can live without a wrapper..." ;;
3267 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3268 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3270 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3273 echo "(However, $cpprun $cpplast does not work, let's see...)"
3281 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3288 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3289 $cc -E <testcpp.c >testcpp.out 2>&1; \
3290 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3291 echo "Yup, it does."
3294 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3295 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3296 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3297 echo "Yup, it does."
3300 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3301 $cc -P <testcpp.c >testcpp.out 2>&1; \
3302 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3303 echo "Yipee, that works!"
3306 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3307 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3308 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3309 echo "At long last!"
3312 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3313 $cpp <testcpp.c >testcpp.out 2>&1; \
3314 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3318 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3319 $cpp - <testcpp.c >testcpp.out 2>&1; \
3320 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3321 echo "Hooray, it works! I was beginning to wonder."
3324 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3325 $wrapper <testcpp.c >testcpp.out 2>&1; \
3326 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3332 rp="No dice. I can't find a C preprocessor. Name one:"
3336 $x_cpp <testcpp.c >testcpp.out 2>&1
3337 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3338 echo "OK, that will do." >&4
3340 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3355 echo "Perhaps can we force $cc -E using a wrapper..."
3356 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3357 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3363 echo "Nope, we'll have to live without it..."
3378 *) $rm -f $wrapper;;
3380 $rm -f testcpp.c testcpp.out
3382 : Set private lib path
3385 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3390 '') dlist="$loclibpth $plibpth $glibpth";;
3391 *) dlist="$libpth";;
3394 : Now check and see which directories actually exist, avoiding duplicates
3398 if $test -d $xxx; then
3401 *) libpth="$libpth $xxx";;
3407 Some systems have incompatible or broken versions of libraries. Among
3408 the directories listed in the question below, please remove any you
3409 know not to be holding relevant libraries, and add any that are needed.
3410 Say "none" for none.
3421 rp="Directories to use for library searches?"
3428 : determine optimize, if desired, or use for debug flag also
3432 *) dflt="$optimize";;
3436 Some C compilers have problems with their optimizers, by default, $package
3437 compiles with the -O flag to use the optimizer. Alternately, you might want
3438 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3439 systems). Either flag can be specified here. To use neither flag, specify
3443 rp="What optimizer/debugger flag should be used?"
3447 'none') optimize=" ";;
3451 : We will not override a previous value, but we might want to
3452 : augment a hint file
3455 case "$gccversion" in
3456 1*) dflt='-fpcc-struct-return' ;;
3459 *-g*) dflt="$dflt -DDEBUGGING";;
3461 case "$gccversion" in
3462 2*) if test -d /etc/conf/kconfig.d &&
3463 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3472 case "$mips_type" in
3473 *BSD*|'') inclwanted="$locincpth $usrinc";;
3474 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3476 for thisincl in $inclwanted; do
3477 if $test -d $thisincl; then
3478 if $test x$thisincl != x$usrinc; then
3481 *) dflt="$dflt -I$thisincl";;
3487 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3489 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3497 *) dflt="$dflt -D$2";;
3502 set signal.h __LANGUAGE_C__; eval $inctest
3504 set signal.h LANGUAGE_C; eval $inctest
3506 set signal.h NO_PROTOTYPE; eval $inctest
3507 set signal.h _NO_PROTO; eval $inctest
3510 none|recommended) dflt="$ccflags $dflt" ;;
3511 *) dflt="$ccflags";;
3519 Your C compiler may want other flags. For this question you should include
3520 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3521 but you should NOT include libraries or ld flags like -lwhatever. If you
3522 want $package to honor its debug switch, you should include -DDEBUGGING here.
3523 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3524 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3526 To use no flags, specify the word "none".
3532 rp="Any additional cc flags?"
3539 : the following weeds options from ccflags that are of no interest to cpp
3541 case "$gccversion" in
3542 1*) cppflags="$cppflags -D__GNUC__"
3544 case "$mips_type" in
3546 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3552 echo "Let me guess what the preprocessor flags are..." >&4
3566 *) ftry="$previous $flag";;
3568 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3569 >cpp1.out 2>/dev/null && \
3570 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3571 >cpp2.out 2>/dev/null && \
3572 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3573 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3575 cppflags="$cppflags $ftry"
3585 *-*) echo "They appear to be: $cppflags";;
3587 $rm -f cpp.c cpp?.out
3591 : flags used in final linking phase
3594 '') if ./venix; then
3600 *-posix*) dflt="$dflt -posix" ;;
3603 *) dflt="$ldflags";;
3606 : Try to guess additional flags to pick up local libraries.
3607 for thislibdir in $libpth; do
3608 case " $loclibpth " in
3611 *"-L$thislibdir "*) ;;
3612 *) dflt="$dflt -L$thislibdir" ;;
3624 Your C linker may need flags. For this question you should
3625 include -L/whatever and any other flags used by the C linker, but you
3626 should NOT include libraries like -lwhatever.
3628 Make sure you include the appropriate -L/path flags if your C linker
3629 does not normally search all of the directories you specified above,
3632 To use no flags, specify the word "none".
3636 rp="Any additional ld flags (NOT including libraries)?"
3642 rmlist="$rmlist pdp11"
3646 echo "Checking your choice of C compiler and flags for coherency..." >&4
3647 set X $cc $optimize $ccflags $ldflags try.c -o try
3650 I've tried to compile and run a simple program with:
3655 and I got the following output:
3658 $cat > try.c <<'EOF'
3663 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
3664 if sh -c './try' >>try.msg 2>&1; then
3667 echo "The program compiled OK, but exited with status $?." >>try.msg
3668 rp="You have a problem. Shall I abort Configure"
3672 echo "I can't compile the test program." >>try.msg
3673 rp="You have a BIG problem. Shall I abort Configure"
3679 case "$knowitall" in
3681 echo "(The supplied flags might be incorrect with this C compiler.)"
3689 *) echo "Ok. Stopping Configure." >&4
3694 n) echo "OK, that should do.";;
3696 $rm -f try try.* core
3698 : compute shared library extension
3701 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3711 On some systems, shared libraries may be available. Answer 'none' if
3712 you want to suppress searching of shared libraries for the remaining
3713 of this configuration.
3716 rp='What is the file extension used for shared libraries?'
3720 : Looking for optional libraries
3722 echo "Checking for optional libraries..." >&4
3727 case "$libswanted" in
3728 '') libswanted='c_s';;
3730 for thislib in $libswanted; do
3732 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3733 echo "Found -l$thislib (shared)."
3736 *) dflt="$dflt -l$thislib";;
3738 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3739 echo "Found -l$thislib (shared)."
3742 *) dflt="$dflt -l$thislib";;
3744 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
3745 echo "Found -l$thislib."
3748 *) dflt="$dflt -l$thislib";;
3750 elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
3751 echo "Found -l$thislib."
3754 *) dflt="$dflt -l$thislib";;
3756 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
3757 echo "Found -l${thislib}_s."
3760 *) dflt="$dflt -l${thislib}_s";;
3762 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
3763 echo "Found -l$thislib."
3766 *) dflt="$dflt -l$thislib";;
3769 echo "No -l$thislib."
3780 ' '|'') dflt='none';;
3785 Some versions of Unix support shared libraries, which make executables smaller
3786 but make load time slightly longer.
3788 On some systems, mostly newer Unix System V's, the shared library is included
3789 by putting the option "-lc_s" as the last thing on the cc command line when
3790 linking. Other systems use shared libraries by default. There may be other
3791 libraries needed to compile $package on your machine as well. If your system
3792 needs the "-lc_s" option, include it here. Include any other special libraries
3793 here as well. Say "none" for none.
3797 rp="Any additional libraries?"
3804 : see if nm is to be used to determine whether a symbol is defined or not
3807 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3808 if $test $dflt -gt 20; then
3823 I can use 'nm' to extract the symbols from your C libraries. This is a time
3824 consuming task which may generate huge output on the disk (up to 3 megabytes)
3825 but that should make the symbols extraction faster. The alternative is to skip
3826 the 'nm' extraction part and to compile a small test program instead to
3827 determine whether each symbol is present. If you have a fast C compiler and/or
3828 if your 'nm' output cannot be parsed, this may be the best solution.
3831 rp='Shall I use nm to extract C symbols from the libraries?'
3843 : nm options which may be necessary
3845 '') if $test -f /mach_boot; then
3847 elif $test -d /usr/ccs/lib; then
3849 elif $test -f /dgux; then
3858 : get list of predefined functions in a handy place
3863 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
3870 *) for thislib in $libs; do
3873 : Handle C library specially below.
3876 thislib=`echo $thislib | $sed -e 's/^-l//'`
3877 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3879 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3881 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
3883 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3885 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3887 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
3892 libnames="$libnames $try"
3894 *) libnames="$libnames $thislib" ;;
3902 set /usr/ccs/lib/libc.$so
3903 $test -r $1 || set /usr/lib/libc.$so
3904 $test -r $1 || set /usr/shlib/libc.$so
3906 set `echo blurfl; echo /usr/lib/libc.$so.[0-9]* | \
3907 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3909 s/[0-9][0-9]*/0000&/g
3910 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3913 sort | $sed -e 's/^.* //'`
3915 $test -r $1 || set /lib/libc.$so
3916 $test -r $1 || set /lib/libsys_s.a
3922 if $test -r "$1"; then
3923 echo "Your (shared) C library seems to be in $1."
3925 elif $test -r /lib/libc && $test -r /lib/clib; then
3926 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3928 libc='/lib/clib /lib/libc'
3929 if $test -r /lib/syslib; then
3930 echo "(Your math library is in /lib/syslib.)"
3931 libc="$libc /lib/syslib"
3933 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3934 echo "Your C library seems to be in $libc, as you said before."
3935 elif $test -r $incpath/usr/lib/libc.a; then
3936 libc=$incpath/usr/lib/libc.a;
3937 echo "Your C library seems to be in $libc. That's fine."
3938 elif $test -r /lib/libc.a; then
3940 echo "Your C library seems to be in $libc. You're normal."
3942 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
3944 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3945 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3946 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3948 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3950 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3953 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
3955 if $test -r "$tans"; then
3956 echo "Your C library seems to be in $tans, of all places."
3962 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3966 If the guess above is wrong (which it might be if you're using a strange
3967 compiler, or your machine supports multiple models), you can override it here.
3972 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
3974 I can't seem to find your C library. I've looked in the following places:
3977 $sed 's/^/ /' libpath
3980 None of these seems to contain your C library. I need to get its name...
3985 rp='Where is your C library?'
3990 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
3991 set X `cat libnames`
3994 case $# in 1) xxx=file; esac
3995 echo "Extracting names from the following $xxx for later perusal:" >&4
3997 $sed 's/^/ /' libnames >&4
3999 $echo $n "This may take a while...$c" >&4
4001 nm $nm_opt $* 2>/dev/null >libc.tmp
4003 $grep fprintf libc.tmp > libc.ptf
4004 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4005 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4007 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx //p'";\
4009 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4011 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4013 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4015 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4017 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4019 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4021 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4023 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4025 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4027 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4029 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4031 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4032 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4034 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4036 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4038 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4040 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4042 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4044 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4046 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4048 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4050 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4053 nm -p $* 2>/dev/null >libc.tmp
4054 $grep fprintf libc.tmp > libc.ptf
4055 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4056 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4062 echo "nm didn't seem to work right. Trying ar instead..." >&4
4064 if ar t $libc > libc.tmp; then
4065 for thisname in $libnames; do
4066 ar t $thisname >>libc.tmp
4068 $sed -e 's/\.o$//' < libc.tmp > libc.list
4071 echo "ar didn't seem to work right." >&4
4072 echo "Maybe this is a Cray...trying bld instead..." >&4
4073 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4075 for thisname in $libnames; do
4077 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4078 ar t $thisname >>libc.tmp
4082 echo "That didn't work either. Giving up." >&4
4089 if $test -f /lib/syscalls.exp; then
4091 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4092 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4096 $rm -f libnames libpath
4098 : is a C symbol defined?
4101 -v) tf=libc.tmp; tc=""; tdc="";;
4102 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4103 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4106 case "$reuseval-$4" in
4108 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4114 if $contains $tlook $tf >/dev/null 2>&1;
4119 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4120 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4128 $define) tval=true;;
4134 : define an is-in-libc? function
4135 inlibc='echo " "; td=$define; tu=$undef;
4136 sym=$1; var=$2; eval "was=\$$2";
4138 case "$reuseval$was" in
4148 echo "$sym() found." >&4;
4149 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4151 echo "$sym() NOT found." >&4;
4152 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4156 $define) echo "$sym() found." >&4;;
4157 *) echo "$sym() NOT found." >&4;;
4161 : Check how to convert floats to strings.
4163 echo "Checking for an efficient way to convert floats to strings."
4166 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
4169 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
4172 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
4176 Gconvert(1.0, 8, 0, buf);
4177 if (buf[0] != '1' || buf[1] != '\0')
4179 Gconvert(0.0, 8, 0, buf);
4180 if (buf[0] != '0' || buf[1] != '\0')
4182 Gconvert(-1.0, 8, 0, buf);
4183 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
4188 case "$d_Gconvert" in
4189 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
4190 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
4191 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
4192 *) xxx_list='gconvert gcvt sprintf' ;;
4195 for xxx_convert in $xxx_list; do
4196 echo "Trying $xxx_convert"
4198 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
4199 try.c $libs > /dev/null 2>&1 ; then
4200 echo "$xxx_convert" found. >&4
4202 echo "Good, $xxx_convert drops a trailing decimal point."
4203 echo "I'll use $xxx_convert to convert floats into a string." >&4
4206 echo "But $xxx_convert keeps a trailing decimal point".
4209 echo "$xxx_convert NOT found." >&4
4213 case "$xxx_convert" in
4214 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
4215 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
4216 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
4219 : Initialize h_fcntl
4222 : Initialize h_sysfile
4225 : determine filename position in cpp output
4227 echo "Computing filename position in cpp output for #include directives..." >&4
4228 echo '#include <stdio.h>' > foo.c
4231 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4232 $grep '^[ ]*#.*stdio\.h' | \
4233 while read cline; do
4236 while $test \$# -gt 0; do
4237 if $test -r \`echo \$1 | $tr -d '"'\`; then
4242 pos=\`expr \$pos + 1\`
4254 *) pos="${fieldn}th";;
4256 echo "Your cpp writes the filename in the $pos field of the line."
4258 : locate header file
4263 if test -f $usrinc/\$wanted; then
4264 echo "$usrinc/\$wanted"
4267 awkprg='{ print \$$fieldn }'
4268 echo "#include <\$wanted>" > foo\$\$.c
4269 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4270 $grep "^[ ]*#.*\$wanted" | \
4271 while read cline; do
4272 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4274 */\$wanted) echo "\$name"; exit 0;;
4285 : access call always available on UNIX
4289 : locate the flags for 'access()'
4293 $cat >access.c <<'EOCP'
4294 #include <sys/types.h>
4299 #include <sys/file.h>
4308 : check sys/file.h first, no particular reason here
4309 if $test `./findhdr sys/file.h` && \
4310 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
4312 echo "<sys/file.h> defines the *_OK access constants." >&4
4313 elif $test `./findhdr fcntl.h` && \
4314 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
4316 echo "<fcntl.h> defines the *_OK access constants." >&4
4317 elif $test `./findhdr unistd.h` && \
4318 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
4319 echo "<unistd.h> defines the *_OK access constants." >&4
4321 echo "I can't find the four *_OK access constants--I'll use mine." >&4
4327 : see if alarm exists
4331 : Look for GNU-cc style attribute checking
4333 echo "Checking whether your compiler can handle __attribute__ ..." >&4
4334 $cat >attrib.c <<'EOCP'
4336 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
4338 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
4339 if $contains 'warning' attrib.out >/dev/null 2>&1; then
4340 echo "Your C compiler doesn't fully support __attribute__."
4343 echo "Your C compiler supports __attribute__."
4347 echo "Your C compiler doesn't seem to understand __attribute__ at all."
4354 : see if bcmp exists
4358 : see if bcopy exists
4362 : see if setpgrp exists
4363 set setpgrp d_setpgrp
4366 : see which flavor of setpgrp is in use
4367 case "$d_setpgrp" in
4373 if (getuid() == 0) {
4374 printf("(I see you are running Configure as super-user...)\n");
4377 if (-1 == setpgrp(1, 1))
4382 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
4385 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
4387 *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
4392 xxx="USG one, i.e. you use setpgrp()."
4395 xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
4398 echo "Assuming your setpgrp is a $xxx" >&4
4407 : see if bzero exists
4411 : check for length of integer
4415 echo "Checking to see how big your integers are..." >&4
4416 $cat >try.c <<'EOCP'
4420 printf("%d\n", sizeof(int));
4424 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
4426 echo "Your integers are $intsize bytes long."
4429 echo "(I can't seem to compile the test program. Guessing...)"
4430 rp="What is the size of an integer (in bytes)?"
4438 : see if signal is declared as pointer to function returning int or void
4440 xxx=`./findhdr signal.h`
4441 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
4442 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4443 echo "You have int (*signal())() instead of void." >&4
4445 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4446 echo "You have void (*signal())() instead of int." >&4
4448 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
4449 echo "You have int (*signal())() instead of void." >&4
4452 case "$d_voidsig" in
4454 echo "I can't determine whether signal handler returns void or int..." >&4
4456 rp="What type does your signal handler return?"
4463 echo "As you already told me, signal handler returns void." >&4;;
4465 echo "As you already told me, signal handler returns int." >&4;;
4470 case "$d_voidsig" in
4471 "$define") signal_t="void";;
4476 : check for ability to cast large floats to 32-bit ints.
4478 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
4479 if $test "$intsize" -eq 4; then
4485 #include <sys/types.h>
4487 $signal_t blech() { exit(3); }
4493 signal(SIGFPE, blech);
4495 f = (double) 0x7fffffff;
4499 if (i32 != ($xxx) f)
4504 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
4508 echo "(I can't seem to compile the test program--assuming it can't)"
4516 echo "Nope, it can't."
4523 : check for ability to cast negative floats to unsigned
4525 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
4527 #include <sys/types.h>
4529 $signal_t blech() { exit(7); }
4530 $signal_t blech_in_list() { exit(4); }
4531 unsigned long dummy_long(p) unsigned long p; { return p; }
4532 unsigned int dummy_int(p) unsigned int p; { return p; }
4533 unsigned short dummy_short(p) unsigned short p; { return p; }
4537 unsigned long along;
4539 unsigned short ashort;
4542 signal(SIGFPE, blech);
4543 along = (unsigned long)f;
4544 aint = (unsigned int)f;
4545 ashort = (unsigned short)f;
4546 if (along != (unsigned long)-123)
4548 if (aint != (unsigned int)-123)
4550 if (ashort != (unsigned short)-123)
4552 f = (double)0x40000000;
4555 along = (unsigned long)f;
4556 if (along != 0x80000000)
4560 along = (unsigned long)f;
4561 if (along != 0x7fffffff)
4565 along = (unsigned long)f;
4566 if (along != 0x80000001)
4570 signal(SIGFPE, blech_in_list);
4572 along = dummy_long((unsigned long)f);
4573 aint = dummy_int((unsigned int)f);
4574 ashort = dummy_short((unsigned short)f);
4575 if (along != (unsigned long)123)
4577 if (aint != (unsigned int)123)
4579 if (ashort != (unsigned short)123)
4585 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
4589 echo "(I can't seem to compile the test program--assuming it can't)"
4592 case "$castflags" in
4597 echo "Nope, it can't."
4604 : see if vprintf exists
4606 if set vprintf val -f d_vprintf; eval $csym; $val; then
4607 echo 'vprintf() found.' >&4
4609 $cat >vprintf.c <<'EOF'
4610 #include <varargs.h>
4612 main() { xxx("foo"); }
4621 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
4624 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
4625 echo "Your vsprintf() returns (int)." >&4
4628 echo "Your vsprintf() returns (char*)." >&4
4632 echo 'vprintf() NOT found.' >&4
4642 : see if chown exists
4646 : see if chroot exists
4650 : see if chsize exists
4654 : check for const keyword
4656 echo 'Checking to see if your C compiler knows about "const"...' >&4
4657 $cat >const.c <<'EOCP'
4658 typedef struct spug { int drokk; } spug;
4665 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
4667 echo "Yup, it does."
4670 echo "Nope, it doesn't."
4675 : see if crypt exists
4677 if set crypt val -f d_crypt; eval $csym; $val; then
4678 echo 'crypt() found.' >&4
4682 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
4683 if $test -z "$cryptlib"; then
4684 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
4688 if $test -z "$cryptlib"; then
4689 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
4693 if $test -z "$cryptlib"; then
4694 cryptlib=`./loc libcrypt.a "" $libpth`
4698 if $test -z "$cryptlib"; then
4699 echo 'crypt() NOT found.' >&4
4708 : get csh whereabouts
4710 'csh') val="$undef" ;;
4717 : see if cuserid exists
4718 set cuserid d_cuserid
4721 : define an alternate in-header-list? function
4722 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4723 cont=true; xxf="echo \"<\$1> found.\" >&4";
4724 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4725 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4727 case $# in 4) instead=instead;; *) instead="at last";; esac;
4728 while $test "$cont"; do
4730 var=$2; eval "was=\$$2";
4731 if $test "$xxx" && $test -r "$xxx";
4733 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4736 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4737 set $yyy; shift; shift; yyy=$@;
4738 case $# in 0) cont="";;
4739 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4740 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4741 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4742 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4746 do set $yyy; var=$2; eval "was=\$$2";
4747 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4748 set $yyy; shift; shift; yyy=$@;
4751 : see if this is a limits.h system
4752 set limits.h i_limits
4755 : see if this is a float.h system
4759 : See if number of significant digits in a double precision number is known
4761 $cat >dbl_dig.c <<EOM
4771 printf("Contains DBL_DIG");
4774 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
4775 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
4776 echo "DBL_DIG found." >&4
4779 echo "DBL_DIG NOT found." >&4
4786 : see if difftime exists
4787 set difftime d_difftime
4790 : see if this is a dirent system
4792 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
4794 echo "<dirent.h> found." >&4
4797 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
4798 echo "<sys/dir.h> found." >&4
4801 xinc=`./findhdr sys/ndir.h`
4803 echo "<dirent.h> NOT found." >&4
4808 : Look for type of directory structure.
4810 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4812 case "$direntrytype" in
4815 $define) guess1='struct dirent' ;;
4816 *) guess1='struct direct' ;;
4819 *) guess1="$direntrytype"
4824 'struct dirent') guess2='struct direct' ;;
4825 *) guess2='struct dirent' ;;
4828 if $contains "$guess1" try.c >/dev/null 2>&1; then
4829 direntrytype="$guess1"
4830 echo "Your directory entries are $direntrytype." >&4
4831 elif $contains "$guess2" try.c >/dev/null 2>&1; then
4832 direntrytype="$guess2"
4833 echo "Your directory entries seem to be $direntrytype." >&4
4835 echo "I don't recognize your system's directory entries." >&4
4836 rp="What type is used for directory entries on this system?"
4844 : see if the directory entry stores field length
4846 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4847 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
4848 echo "Good, your directory entry keeps length information in d_namlen." >&4
4851 echo "Your directory entry does not know about the d_namlen field." >&4
4858 : see if dlerror exists
4861 set dlerror d_dlerror
4865 : see if dld is available
4869 : see if dlopen exists
4876 : determine which dynamic loading, if any, to compile in
4878 dldir="ext/DynaLoader"
4891 $define) dflt='y' ;;
4894 $define) dflt='y' ;;
4896 : Does a dl_xxx.xs file exist for this operating system
4897 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4900 rp="Do you wish to use dynamic loading?"
4907 if $test -f ../$dldir/dl_${osname}.xs ; then
4908 dflt="$dldir/dl_${osname}.xs"
4909 elif $test "$d_dlopen" = "$define" ; then
4910 dflt="$dldir/dl_dlopen.xs"
4911 elif $test "$i_dld" = "$define" ; then
4912 dflt="$dldir/dl_dld.xs"
4917 *) dflt="$dldir/$dlsrc"
4920 echo "The following dynamic loading files are available:"
4921 : Can not go over to $dldir because getfile has path hard-coded in.
4922 cd ..; ls -C $dldir/dl*.xs; cd UU
4923 rp="Source file to use for dynamic loading"
4928 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4932 Some systems may require passing special flags to $cc -c to
4933 compile modules that will be used to create a shared library.
4934 To use no flags, say "none".
4937 case "$cccdlflags" in
4938 '') case "$gccversion" in
4939 '') case "$osname" in
4941 next) dflt='none' ;;
4942 solaris|svr4*|esix*) dflt='-Kpic' ;;
4943 sunos) dflt='-pic' ;;
4948 *) dflt="$cccdlflags" ;;
4950 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4953 none) cccdlflags=' ' ;;
4954 *) cccdlflags="$ans" ;;
4959 Some systems use ld to create libraries that can be dynamically loaded,
4960 while other systems (such as those using ELF) use $cc.
4964 '') $cat >try.c <<'EOM'
4965 /* Test for whether ELF binaries are produced */
4970 int i = open("a.out",O_RDONLY);
4973 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4974 exit(0); /* succeed (yes, it's ELF) */
4979 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4981 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4985 echo "I'll use ld to build dynamic libraries."
4994 rp="What command should be used to create dynamic libraries?"
5000 Some systems may require passing special flags to $ld to create a
5001 library that can be dynamically loaded. If your ld flags include
5002 -L/other/path options to locate libraries outside your loader's normal
5003 search path, you may need to specify those -L options here as well. To
5004 use no flags, say "none".
5007 case "$lddlflags" in
5008 '') case "$osname" in
5010 linux) dflt='-shared' ;;
5011 next) dflt='none' ;;
5012 solaris) dflt='-G' ;;
5013 sunos) dflt='-assert nodefinitions' ;;
5014 svr4*|esix*) dflt="-G $ldflags" ;;
5018 *) dflt="$lddlflags" ;;
5021 : Try to guess additional flags to pick up local libraries.
5022 for thisflag in $ldflags; do
5027 *) dflt="$dflt $thisflag" ;;
5037 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5040 none) lddlflags=' ' ;;
5041 *) lddlflags="$ans" ;;
5046 Some systems may require passing special flags to $cc to indicate that
5047 the resulting executable will use dynamic linking. To use no flags,
5051 case "$ccdlflags" in
5052 '') case "$osname" in
5053 hpux) dflt='-Wl,-E' ;;
5054 linux) dflt='-rdynamic' ;;
5055 next) dflt='none' ;;
5056 sunos) dflt='none' ;;
5059 *) dflt="$ccdlflags" ;;
5061 rp="Any special flags to pass to $cc to use dynamic loading?"
5064 none) ccdlflags=' ' ;;
5065 *) ccdlflags="$ans" ;;
5083 System V Release 4 systems can support dynamic loading
5084 only if libperl is created as a shared library.
5091 set d_shrplib; eval $setvar
5092 case "$d_shrplib" in
5096 Be sure to add the perl source directory to the LD_LIBRARY_PATH
5097 environment variable before running make:
5098 LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH
5100 setenv LD_LIBRARY_PATH `cd ..;pwd`
5105 case "$d_shrplib" in
5108 "") dflt="$archlib/CORE";;
5109 *) dflt="$shrpdir";;
5111 rp="What directory should we install the shared libperl into?"
5120 : see if dlfcn is available
5128 On a few systems, the dynamically loaded modules that perl generates and uses
5129 will need a different extension then shared libs. The default will probably
5137 rp='What is the extension of dynamically loaded modules'
5146 : Check if dlsym need a leading underscore
5152 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
5153 $cat >dyna.c <<'EOM'
5162 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
5164 #include <sys/types.h>
5178 int mode = RTLD_LAZY ;
5180 handle = dlopen("./dyna.$dlext", mode) ;
5181 if (handle == NULL) {
5185 symbol = dlsym(handle, "fred") ;
5186 if (symbol == NULL) {
5187 /* try putting a leading underscore */
5188 symbol = dlsym(handle, "_fred") ;
5189 if (symbol == NULL) {
5200 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
5201 $ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 &&
5202 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
5205 1) echo "Test program failed using dlopen." >&4
5206 echo "Perhaps you should not use dynamic loading." >&4;;
5207 2) echo "Test program failed using dlsym." >&4
5208 echo "Perhaps you should not use dynamic loading." >&4;;
5209 3) echo "dlsym needs a leading underscore" >&4
5211 4) echo "dlsym doesn't need a leading underscore." >&4;;
5214 echo "I can't compile and run the test program." >&4
5219 $rm -f fred fred.? dyna.$dlext dyna.?
5224 : see if setuid scripts can be secure
5227 Some kernels have a bug that prevents setuid #! scripts from being
5228 secure. Some sites have disabled setuid #! scripts because of this.
5230 First let's decide if your kernel supports secure setuid #! scripts.
5231 (If setuid #! scripts would be secure but have been disabled anyway,
5232 don't say that they are secure if asked.)
5237 if $test -d /dev/fd; then
5238 echo "#!$ls" >reflect
5239 chmod +x,u+s reflect
5240 ./reflect >flect 2>&1
5241 if $contains "/dev/fd" flect >/dev/null; then
5242 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5246 If you are not sure if they are secure, I can check but I'll need a
5247 username and password different from the one you are using right now.
5248 If you don't have such a username or don't want me to test, simply
5252 rp='Other username to test security of setuid scripts with?'
5257 case "$d_suidsafe" in
5258 '') echo "I'll assume setuid scripts are *not* secure." >&4
5261 echo "Well, the $hint value is *not* secure." >&4
5263 *) echo "Well, the $hint value *is* secure." >&4
5268 $rm -f reflect flect
5269 echo "#!$ls" >reflect
5270 chmod +x,u+s reflect
5273 echo '"su" will (probably) prompt you for '"$ans's password."
5274 su $ans -c './reflect >flect'
5275 if $contains "/dev/fd" flect >/dev/null; then
5276 echo "Okay, it looks like setuid scripts are secure." >&4
5279 echo "I don't think setuid scripts are secure." >&4
5284 rp='Does your kernel have *secure* setuid scripts?'
5287 [yY]*) val="$define";;
5292 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5298 $rm -f reflect flect
5300 : now see if they want to do setuid emulation
5303 case "$d_suidsafe" in
5306 echo "No need to emulate SUID scripts since they are secure here." >& 4
5310 Some systems have disabled setuid scripts, especially systems where
5311 setuid scripts cannot be secure. On systems where setuid scripts have
5312 been disabled, the setuid/setgid bits on scripts are currently
5313 useless. It is possible for $package to detect those bits and emulate
5314 setuid/setgid in a secure fashion. This emulation will only work if
5315 setuid scripts have been disabled in your kernel.
5319 "$define") dflt=y ;;
5322 rp="Do you want to do setuid/setgid emulation?"
5325 [yY]*) val="$define";;
5333 : see if dup2 exists
5337 : Locate the flags for 'open()'
5339 $cat >open3.c <<'EOCP'
5340 #include <sys/types.h>
5345 #include <sys/file.h>
5356 : check sys/file.h first to get FREAD on Sun
5357 if $test `./findhdr sys/file.h` && \
5358 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
5360 echo "<sys/file.h> defines the O_* constants..." >&4
5362 echo "and you have the 3 argument form of open()." >&4
5365 echo "but not the 3 argument form of open(). Oh, well." >&4
5368 elif $test `./findhdr fcntl.h` && \
5369 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
5371 echo "<fcntl.h> defines the O_* constants..." >&4
5373 echo "and you have the 3 argument form of open()." >&4
5376 echo "but not the 3 argument form of open(). Oh, well." >&4
5381 echo "I can't find the O_* constant definitions! You got problems." >&4
5387 : check for non-blocking I/O stuff
5388 case "$h_sysfile" in
5389 true) echo "#include <sys/file.h>" > head.c;;
5392 true) echo "#include <fcntl.h>" > head.c;;
5393 *) echo "#include <sys/fcntl.h>" > head.c;;
5398 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
5399 case "$o_nonblock" in
5402 $cat >>try.c <<'EOCP'
5405 printf("O_NONBLOCK\n");
5409 printf("O_NDELAY\n");
5413 printf("FNDELAY\n");
5419 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5421 case "$o_nonblock" in
5422 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
5423 *) echo "Seems like we can use $o_nonblock.";;
5426 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
5429 *) echo "Using $hint value $o_nonblock.";;
5431 $rm -f try try.* .out core
5434 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
5440 #include <sys/types.h>
5442 #define MY_O_NONBLOCK $o_nonblock
5444 $signal_t blech(x) int x; { exit(3); }
5446 $cat >> try.c <<'EOCP'
5454 pipe(pd); /* Down: child -> parent */
5455 pipe(pu); /* Up: parent -> child */
5458 close(pd[1]); /* Parent reads from pd[0] */
5459 close(pu[0]); /* Parent writes (blocking) to pu[1] */
5460 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
5462 signal(SIGALRM, blech);
5464 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
5466 sprintf(string, "%d\n", ret);
5467 write(2, string, strlen(string));
5470 if (errno == EAGAIN) {
5476 if (errno == EWOULDBLOCK)
5477 printf("EWOULDBLOCK\n");
5480 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
5481 sleep(2); /* Give it time to close our pipe */
5483 ret = read(pd[0], buf, 1); /* Should read EOF */
5485 sprintf(string, "%d\n", ret);
5486 write(3, string, strlen(string));
5490 close(pd[0]); /* We write to pd[1] */
5491 close(pu[1]); /* We read from pu[0] */
5492 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
5493 close(pd[1]); /* Pipe pd is now fully closed! */
5494 exit(0); /* Bye bye, thank you for playing! */
5497 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5498 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >mtry
5500 ./mtry >/dev/null 2>&1
5502 0) eagain=`$cat try.out`;;
5503 1) echo "Could not perform non-blocking setting!";;
5504 2) echo "I did a successful read() for something that was not there!";;
5505 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
5506 *) echo "Something terribly wrong happened during testing.";;
5508 rd_nodata=`$cat try.ret`
5509 echo "A read() system call with no data present returns $rd_nodata."
5510 case "$rd_nodata" in
5513 echo "(That's peculiar, fixing that to be -1.)"
5519 echo "Forcing errno EAGAIN on read() with no data available."
5523 echo "Your read() sets errno to $eagain when no data is available."
5526 status=`$cat try.err`
5528 0) echo "And it correctly returns 0 to signal EOF.";;
5529 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
5530 *) echo "However, your read() returns '$status' on EOF??";;
5533 if test "$status" -eq "$rd_nodata"; then
5534 echo "WARNING: you can't distinguish between EOF and no data!"
5538 echo "I can't compile the test program--assuming errno EAGAIN will do."
5545 echo "Using $hint value $eagain."
5546 echo "Your read() returns $rd_nodata when no data is present."
5547 case "$d_eofnblk" in
5548 "$define") echo "And you can see EOF because read() returns 0.";;
5549 "$undef") echo "But you can't see EOF status from read() returned value.";;
5551 echo "(Assuming you can't see EOF status from read anyway.)"
5557 $rm -f try try.* .out core head.c mtry
5559 : see if fchmod exists
5563 : see if fchown exists
5567 : see if this is an fcntl system
5571 : see if fgetpos exists
5572 set fgetpos d_fgetpos
5575 : see if flock exists
5579 : see if fork exists
5583 : see if pathconf exists
5584 set pathconf d_pathconf
5587 : see if fpathconf exists
5588 set fpathconf d_fpathconf
5591 : see if fsetpos exists
5592 set fsetpos d_fsetpos
5595 : see if gethostent exists
5596 set gethostent d_gethent
5599 : see if getlogin exists
5600 set getlogin d_getlogin
5603 : see if getpgrp exists
5604 set getpgrp d_getpgrp
5607 : see if getpgrp2 exists
5608 set getpgrp2 d_getpgrp2
5611 : see if getppid exists
5612 set getppid d_getppid
5615 : see if getpriority exists
5616 set getpriority d_getprior
5619 : see if this is a netinet/in.h or sys/in.h system
5620 set netinet/in.h i_niin sys/in.h i_sysin
5623 : see if htonl --and friends-- exists
5628 : Maybe they are macros.
5633 #include <sys/types.h>
5634 #$i_niin I_NETINET_IN
5637 #include <netinet/in.h>
5643 printf("Defined as a macro.");
5646 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
5647 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
5649 echo "But it seems to be defined as a macro." >&4
5657 : see which of string.h or strings.h is needed
5659 strings=`./findhdr string.h`
5660 if $test "$strings" && $test -r "$strings"; then
5661 echo "Using <string.h> instead of <strings.h>." >&4
5665 strings=`./findhdr strings.h`
5666 if $test "$strings" && $test -r "$strings"; then
5667 echo "Using <strings.h> instead of <string.h>." >&4
5669 echo "No string header found -- You'll surely have problems." >&4
5675 "$undef") strings=`./findhdr strings.h`;;
5676 *) strings=`./findhdr string.h`;;
5681 if set index val -f; eval $csym; $val; then
5682 if set strchr val -f d_strchr; eval $csym; $val; then
5683 if $contains strchr "$strings" >/dev/null 2>&1 ; then
5686 echo "strchr() found." >&4
5690 echo "index() found." >&4
5695 echo "index() found." >&4
5698 if set strchr val -f d_strchr; eval $csym; $val; then
5701 echo "strchr() found." >&4
5703 echo "No index() or strchr() found!" >&4
5708 set d_strchr; eval $setvar
5710 set d_index; eval $setvar
5714 $cat >isascii.c <<'EOCP'
5725 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
5726 echo "isascii() found." >&4
5729 echo "isascii() NOT found." >&4
5736 : see if killpg exists
5740 : see if link exists
5744 : see if localeconv exists
5745 set localeconv d_locconv
5748 : see if lockf exists
5752 : see if lstat exists
5756 : see if mblen exists
5760 : see if mbstowcs exists
5761 set mbstowcs d_mbstowcs
5764 : see if mbtowc exists
5768 : see if memcmp exists
5772 : see if memcpy exists
5776 : see if memmove exists
5777 set memmove d_memmove
5780 : see if memset exists
5784 : see if mkdir exists
5788 : see if mkfifo exists
5792 : see if mktime exists
5796 : see if msgctl exists
5800 : see if msgget exists
5804 : see if msgsnd exists
5808 : see if msgrcv exists
5812 : see how much of the 'msg*(2)' library is present.
5815 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
5816 *"$undef"*) h_msg=false;;
5818 : we could also check for sys/ipc.h ...
5819 if $h_msg && $test `./findhdr sys/msg.h`; then
5820 echo "You have the full msg*(2) library." >&4
5823 echo "You don't have the full msg*(2) library." >&4
5829 : see if this is a malloc.h system
5830 set malloc.h i_malloc
5833 : see if stdlib is available
5834 set stdlib.h i_stdlib
5837 : determine which malloc to compile in
5839 case "$usemymalloc" in
5840 ''|y*|true) dflt='y' ;;
5841 n*|false) dflt='n' ;;
5842 *) dflt="$usemymalloc" ;;
5844 rp="Do you wish to attempt to use the malloc that comes with $package?"
5850 mallocsrc='malloc.c'
5851 mallocobj='malloc.o'
5852 d_mymalloc="$define"
5855 : Remove malloc from list of libraries to use
5856 echo "Removing unneeded -lmalloc from library list" >&4
5857 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5860 echo "libs = $libs" >&4
5872 : compute the return types of malloc and free
5874 $cat >malloc.c <<END
5878 #include <sys/types.h>
5892 case "$malloctype" in
5894 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5901 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5905 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5912 echo "Your system uses $freetype free(), it would seem." >&4
5914 : see if nice exists
5918 : see if pause exists
5922 : see if pipe exists
5926 : see if poll exists
5930 : see if this is a pwd.h system
5936 xxx=`./findhdr pwd.h`
5937 $cppstdin $cppflags $cppminus < $xxx >$$.h
5939 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
5947 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
5955 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
5963 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
5971 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
5979 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
5991 set d_pwquota; eval $setvar
5992 set d_pwage; eval $setvar
5993 set d_pwchange; eval $setvar
5994 set d_pwclass; eval $setvar
5995 set d_pwexpire; eval $setvar
5996 set d_pwcomment; eval $setvar
6000 : see if readdir and friends exist
6001 set readdir d_readdir
6003 set seekdir d_seekdir
6005 set telldir d_telldir
6007 set rewinddir d_rewinddir
6010 : see if readlink exists
6011 set readlink d_readlink
6014 : see if rename exists
6018 : see if rmdir exists
6022 : can bcopy handle overlapping blocks?
6027 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
6028 $cat >foo.c <<'EOCP'
6031 char buf[128], abc[128];
6037 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
6039 for (align = 7; align >= 0; align--) {
6040 for (len = 36; len; len--) {
6043 for (off = 1; off <= len; off++) {
6044 bcopy(b, b+off, len);
6045 bcopy(b+off, b, len);
6046 if (bcmp(b, abc, len))
6054 if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
6055 if ./safebcpy 2>/dev/null; then
6059 echo "It can't, sorry."
6062 echo "(I can't compile the test program, so we'll assume not...)"
6066 $rm -f foo.* safebcpy core
6070 : can memcpy handle overlapping blocks?
6075 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
6076 $cat >foo.c <<'EOCP'
6079 char buf[128], abc[128];
6085 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
6087 for (align = 7; align >= 0; align--) {
6088 for (len = 36; len; len--) {
6090 memcpy(b, abc, len);
6091 for (off = 1; off <= len; off++) {
6092 memcpy(b+off, b, len);
6093 memcpy(b, b+off, len);
6094 if (memcmp(b, abc, len))
6102 if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
6103 if ./safemcpy 2>/dev/null; then
6107 echo "It can't, sorry."
6110 echo "(I can't compile the test program, so we'll assume not...)"
6114 $rm -f foo.* safemcpy core
6118 : see if select exists
6122 : see if semctl exists
6126 : see if semget exists
6130 : see if semop exists
6134 : see how much of the 'sem*(2)' library is present.
6137 case "$d_semctl$d_semget$d_semop" in
6138 *"$undef"*) h_sem=false;;
6140 : we could also check for sys/ipc.h ...
6141 if $h_sem && $test `./findhdr sys/sem.h`; then
6142 echo "You have the full sem*(2) library." >&4
6145 echo "You don't have the full sem*(2) library." >&4
6151 : see if setegid exists
6152 set setegid d_setegid
6155 : see if seteuid exists
6156 set seteuid d_seteuid
6159 : see if setlinebuf exists
6160 set setlinebuf d_setlinebuf
6163 : see if setlocale exists
6164 set setlocale d_setlocale
6167 : see if setpgid exists
6168 set setpgid d_setpgid
6171 : see if setpgrp2 exists
6172 set setpgrp2 d_setpgrp2
6175 : see if setpriority exists
6176 set setpriority d_setprior
6179 : see if setregid exists
6180 set setregid d_setregid
6182 set setresgid d_setresgid
6185 : see if setreuid exists
6186 set setreuid d_setreuid
6188 set setresuid d_setresuid
6191 : see if setrgid exists
6192 set setrgid d_setrgid
6195 : see if setruid exists
6196 set setruid d_setruid
6199 : see if setsid exists
6203 : see if shmctl exists
6207 : see if shmget exists
6211 : see if shmat exists
6214 : see what shmat returns
6217 $cat >shmat.c <<'END'
6218 #include <sys/shm.h>
6221 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
6226 echo "and it returns ($shmattype)." >&4
6227 : see if a prototype for shmat is available
6228 xxx=`./findhdr sys/shm.h`
6229 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
6230 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
6241 set d_shmatprototype
6244 : see if shmdt exists
6248 : see how much of the 'shm*(2)' library is present.
6251 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
6252 *"$undef"*) h_shm=false;;
6254 : we could also check for sys/ipc.h ...
6255 if $h_shm && $test `./findhdr sys/shm.h`; then
6256 echo "You have the full shm*(2) library." >&4
6259 echo "You don't have the full shm*(2) library." >&4
6267 : see whether socket exists
6269 $echo $n "Hmm... $c" >&4
6270 if set socket val -f d_socket; eval $csym; $val; then
6271 echo "Looks like you have Berkeley networking support." >&4
6273 if set setsockopt val -f; eval $csym; $val; then
6276 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
6280 if $contains socklib libc.list >/dev/null 2>&1; then
6281 echo "Looks like you have Berkeley networking support." >&4
6283 : we will have to assume that it supports the 4.2 BSD interface
6286 echo "You don't have Berkeley networking in libc.a..." >&4
6287 if test -f /usr/lib/libnet.a; then
6288 ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \
6289 ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list
6290 if $contains socket libc.list >/dev/null 2>&1; then
6291 echo "...but the Wollongong group seems to have hacked it in." >&4
6293 sockethdr="-I/usr/netinclude"
6295 if $contains setsockopt libc.list >/dev/null 2>&1; then
6298 echo "...using the old 4.1c interface, rather than 4.2" >&4
6302 echo "or even in libnet.a, which is peculiar." >&4
6307 echo "or anywhere else I see." >&4
6314 : see if socketpair exists
6315 set socketpair d_sockpair
6318 : see if stat knows about block sizes
6320 xxx=`./findhdr sys/stat.h`
6321 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
6322 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
6323 echo "Your stat() knows about block sizes." >&4
6326 echo "Your stat() doesn't know about block sizes." >&4
6330 echo "Your stat() doesn't know about block sizes." >&4
6336 : see if _ptr and _cnt from stdio act std
6338 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
6339 echo "(Looks like you have stdio.h from Linux.)"
6340 case "$stdio_ptr" in
6341 '') stdio_ptr='((fp)->_IO_read_ptr)'
6344 *) ptr_lval=$d_stdio_ptr_lval;;
6346 case "$stdio_cnt" in
6347 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
6350 *) cnt_lval=$d_stdio_cnt_lval;;
6352 case "$stdio_base" in
6353 '') stdio_base='((fp)->_IO_read_base)';;
6355 case "$stdio_bufsiz" in
6356 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
6359 case "$stdio_ptr" in
6360 '') stdio_ptr='((fp)->_ptr)'
6363 *) ptr_lval=$d_stdio_ptr_lval;;
6365 case "$stdio_cnt" in
6366 '') stdio_cnt='((fp)->_cnt)'
6369 *) cnt_lval=$d_stdio_cnt_lval;;
6371 case "$stdio_base" in
6372 '') stdio_base='((fp)->_base)';;
6374 case "$stdio_bufsiz" in
6375 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
6378 : test whether _ptr and _cnt really work
6379 echo "Checking how std your stdio is..." >&4
6382 #define FILE_ptr(fp) $stdio_ptr
6383 #define FILE_cnt(fp) $stdio_cnt
6385 FILE *fp = fopen("try.c", "r");
6388 18 <= FILE_cnt(fp) &&
6389 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
6396 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
6398 echo "Your stdio acts pretty std."
6401 echo "Your stdio isn't very std."
6404 echo "Your stdio doesn't appear very std."
6410 : Can _ptr be used as an lvalue?
6411 case "$d_stdstdio$ptr_lval" in
6412 $define$define) val=$define ;;
6415 set d_stdio_ptr_lval
6418 : Can _cnt be used as an lvalue?
6419 case "$d_stdstdio$cnt_lval" in
6420 $define$define) val=$define ;;
6423 set d_stdio_cnt_lval
6426 : see if _base is also standard
6428 case "$d_stdstdio" in
6432 #define FILE_base(fp) $stdio_base
6433 #define FILE_bufsiz(fp) $stdio_bufsiz
6435 FILE *fp = fopen("try.c", "r");
6438 19 <= FILE_bufsiz(fp) &&
6439 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
6445 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
6447 echo "Even its _base field acts std."
6450 echo "But its _base field isn't std."
6453 echo "However, it seems to be lacking the _base field."
6461 : see if strcoll exists
6462 set strcoll d_strcoll
6465 : check for structure copying
6467 echo "Checking to see if your C compiler can copy structs..." >&4
6468 $cat >try.c <<'EOCP'
6478 if $cc -c try.c >/dev/null 2>&1 ; then
6483 echo "Nope, it can't."
6489 : see if strerror and/or sys_errlist[] exist
6491 if set strerror val -f d_strerror; eval $csym; $val; then
6492 echo 'strerror() found.' >&4
6493 d_strerror="$define"
6494 d_strerrm='strerror(e)'
6495 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6496 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
6497 d_syserrlst="$define"
6499 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
6500 d_syserrlst="$undef"
6502 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
6503 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
6504 echo 'strerror() found in string header.' >&4
6505 d_strerror="$define"
6506 d_strerrm='strerror(e)'
6507 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6508 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
6509 d_syserrlst="$define"
6511 echo "(You don't appear to have any sys_errlist[], how can this be?)"
6512 d_syserrlst="$undef"
6514 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6515 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
6517 d_syserrlst="$define"
6518 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
6520 echo 'strerror() and sys_errlist[] NOT found.' >&4
6522 d_syserrlst="$undef"
6523 d_strerrm='"unknown"'
6526 : see if strxfrm exists
6527 set strxfrm d_strxfrm
6530 : see if symlink exists
6531 set symlink d_symlink
6534 : see if syscall exists
6535 set syscall d_syscall
6538 : see if sysconf exists
6539 set sysconf d_sysconf
6542 : see if system exists
6546 : see if tcgetpgrp exists
6547 set tcgetpgrp d_tcgetpgrp
6550 : see if tcsetpgrp exists
6551 set tcsetpgrp d_tcsetpgrp
6554 : define an is-a-typedef? function
6555 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
6557 "") inclist="sys/types.h";;
6559 eval "varval=\$$var";
6563 for inc in $inclist; do
6564 echo "#include <$inc>" >>temp.c;
6566 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
6567 if $contains $type temp.E >/dev/null 2>&1; then
6573 *) eval "$var=\$varval";;
6576 : see if this is a sys/times.h system
6577 set sys/times.h i_systimes
6580 : see if times exists
6582 if set times val -f d_times; eval $csym; $val; then
6583 echo 'times() found.' >&4
6586 case "$i_systimes" in
6587 "$define") inc='sys/times.h';;
6589 set clock_t clocktype long stdio.h sys/types.h $inc
6593 rp="What type is returned by times() on this system?"
6597 echo 'times() NOT found, hope that will do.' >&4
6602 : see if truncate exists
6603 set truncate d_truncate
6606 : see if tzname[] exists
6608 if set tzname val -a d_tzname; eval $csym; $val; then
6610 echo 'tzname[] found.' >&4
6613 echo 'tzname[] NOT found.' >&4
6618 : see if umask exists
6622 : see if we have to deal with yellow pages, now NIS.
6623 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6624 if $test -f /usr/etc/nibindd; then
6626 echo "I'm fairly confident you're on a NeXT."
6628 rp='Do you get the hosts file via NetInfo?'
6637 y*) hostcat='nidump hosts .';;
6638 *) case "$hostcat" in
6639 nidump*) hostcat='';;
6649 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6657 rp='Are you getting the hosts file via yellow pages?'
6660 y*) hostcat='ypcat hosts';;
6661 *) hostcat='cat /etc/hosts';;
6667 : now get the host name
6669 echo "Figuring out host name..." >&4
6670 case "$myhostname" in
6672 echo 'Maybe "hostname" will work...'
6673 if tans=`sh -c hostname 2>&1` ; then
6681 if $test "$cont"; then
6683 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6684 if tans=`cat /etc/systemid 2>&1` ; then
6686 phostname='cat /etc/systemid'
6687 echo "Whadyaknow. Xenix always was a bit strange..."
6690 elif $test -r /etc/systemid; then
6691 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6694 if $test "$cont"; then
6695 echo 'No, maybe "uuname -l" will work...'
6696 if tans=`sh -c 'uuname -l' 2>&1` ; then
6698 phostname='uuname -l'
6700 echo 'Strange. Maybe "uname -n" will work...'
6701 if tans=`sh -c 'uname -n' 2>&1` ; then
6703 phostname='uname -n'
6705 echo 'Oh well, maybe I can mine it out of whoami.h...'
6706 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6707 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6708 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6710 case "$myhostname" in
6711 '') echo "Does this machine have an identity crisis or something?"
6714 echo "Well, you said $myhostname before..."
6715 phostname='echo $myhostname';;
6721 : you do not want to know about this
6726 if $test "$myhostname" ; then
6728 rp='Your host name appears to be "'$myhostname'".'" Right?"
6736 : bad guess or no guess
6737 while $test "X$myhostname" = X ; do
6739 rp="Please type the (one word) name of your host:"
6744 : translate upper to lower if necessary
6745 case "$myhostname" in
6747 echo "(Normalizing case in your host name)"
6748 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6752 case "$myhostname" in
6754 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6755 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6756 echo "(Trimming domain name from host name--host name is now $myhostname)"
6758 *) case "$mydomain" in
6761 : If we use NIS, try ypmatch.
6762 : Is there some reason why this was not done before?
6763 test "X$hostcat" = "Xypcat hosts" &&
6764 ypmatch "$myhostname" hosts 2>/dev/null |\
6765 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6768 : Extract only the relevant hosts, reducing file size,
6769 : remove comments, insert trailing space for later use.
6770 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6771 /[ ]$myhostname[ . ]/p" > hosts
6774 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6775 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6776 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6777 hosts | $sort | $uniq | \
6778 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6779 case `$echo X$dflt` in
6780 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6783 .) echo "(You do not have fully-qualified names in /etc/hosts)"
6788 tans=`./loc resolv.conf X /etc /usr/etc`
6789 if $test -f "$tans"; then
6790 echo "(Attempting domain name extraction from $tans)"
6791 : Why was there an Egrep here, when Sed works?
6792 dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \
6793 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6798 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6799 dflt=.`sh -c domainname 2>/dev/null`
6802 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6807 .) echo "(Lost all hope -- silly guess then)"
6813 *) dflt="$mydomain";;
6817 rp="What is your domain name?"
6827 : translate upper to lower if necessary
6830 echo "(Normalizing case in your domain name)"
6831 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6835 : a little sanity check here
6836 case "$phostname" in
6839 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6840 $myhostname$mydomain|$myhostname) ;;
6842 case "$phostname" in
6844 echo "(That doesn't agree with your whoami.h file, by the way.)"
6847 echo "(That doesn't agree with your $phostname command, by the way.)"
6855 : see how we will look up host name
6858 : dummy stub to allow use of elif
6859 elif set uname val -f d_uname; eval $csym; $val; then
6862 uname() was found, but you're running xenix, and older versions of xenix
6863 have a broken uname(). If you don't really know whether your xenix is old
6864 enough to have a broken system call, use the default answer.
6871 rp='Is your uname() broken?'
6874 n*) d_uname="$define"; call=uname;;
6877 echo 'uname() found.' >&4
6882 case "$d_gethname" in
6883 '') d_gethname="$undef";;
6886 '') d_uname="$undef";;
6888 case "$d_phostname" in
6889 '') d_phostname="$undef";;
6892 : backward compatibility for d_hvfork
6893 if test X$d_hvfork != X; then
6897 : see if there is a vfork
6902 : Ok, but do we want to use it. vfork is reportedly unreliable in
6903 : perl on Solaris 2.x, and probably elsewhere.
6911 rp="Some systems have problems with vfork(). Do you want to use it?"
6916 echo "Ok, we won't use vfork()."
6925 $define) usevfork='true';;
6926 *) usevfork='false';;
6929 : see if this is an sysdir system
6930 set sys/dir.h i_sysdir
6933 : see if this is an sysndir system
6934 set sys/ndir.h i_sysndir
6937 : see if closedir exists
6938 set closedir d_closedir
6941 case "$d_closedir" in
6944 echo "Checking whether closedir() returns a status..." >&4
6945 cat > closedir.c <<EOM
6946 #$i_dirent I_DIRENT /**/
6947 #$i_sysdir I_SYS_DIR /**/
6948 #$i_sysndir I_SYS_NDIR /**/
6950 #if defined(I_DIRENT)
6952 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
6953 #include <sys/dir.h>
6957 #include <sys/ndir.h>
6961 #include <ndir.h> /* may be wrong in the future */
6963 #include <sys/dir.h>
6968 int main() { return closedir(opendir(".")); }
6970 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
6971 if ./closedir > /dev/null 2>&1 ; then
6972 echo "Yes, it does."
6975 echo "No, it doesn't."
6979 echo "(I can't seem to compile the test program--assuming it doesn't)"
6990 : check for volatile keyword
6992 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
6993 $cat >try.c <<'EOCP'
6996 typedef struct _goo_struct goo_struct;
6997 goo_struct * volatile goo = ((goo_struct *)0);
6998 struct _goo_struct {
7003 typedef unsigned short foo_t;
7006 volatile foo_t blech;
7010 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
7012 echo "Yup, it does."
7015 echo "Nope, it doesn't."
7021 : see if there is a wait4
7025 : see if waitpid exists
7026 set waitpid d_waitpid
7029 : see if wcstombs exists
7030 set wcstombs d_wcstombs
7033 : see if wctomb exists
7037 : preserve RCS keywords in files with variable substitution, grrr
7042 Revision='$Revision'
7044 : check for alignment requirements
7046 case "$alignbytes" in
7047 '') echo "Checking alignment constraints..." >&4
7048 $cat >try.c <<'EOCP'
7055 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
7058 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
7062 echo"(I can't seem to compile the test program...)"
7065 *) dflt="$alignbytes"
7068 rp="Doubles must be aligned on a how-many-byte boundary?"
7085 : Which makefile gets called first. This is used by make depend.
7086 case "$firstmakefile" in
7087 '') firstmakefile='makefile';;
7090 : check for ordering of bytes in a long
7091 case "$byteorder" in
7095 In the following, larger digits indicate more significance. A big-endian
7096 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
7097 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
7098 machines may have weird orders like 3412. A Cray will report 87654321. If
7099 the test program works the default is probably right.
7100 I'm now running the test program...
7102 $cat >try.c <<'EOCP'
7109 char c[sizeof(long)];
7112 if (sizeof(long) > 4)
7113 u.l = (0x08070605L << 32) | 0x04030201L;
7116 for (i = 0; i < sizeof(long); i++)
7117 printf("%c", u.c[i]+'0');
7123 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
7126 [1-4][1-4][1-4][1-4]|12345678|87654321)
7127 echo "(The test program ran ok.)"
7128 echo "byteorder=$dflt"
7131 ????|????????) echo "(The test program ran ok.)" ;;
7132 *) echo "(The test program didn't run right for some reason.)" ;;
7137 (I can't seem to compile the test program. Guessing big-endian...)
7140 case "$xxx_prompt" in
7142 rp="What is the order of bytes in a long?"
7153 : how do we catenate cpp tokens here?
7155 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
7156 $cat >cpp_stuff.c <<'EOCP'
7157 #define RCAT(a,b)a/**/b
7158 #define ACAT(a,b)a ## b
7162 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
7163 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
7164 echo "Oh! Smells like ANSI's been here."
7165 echo "We can catify or stringify, separately or together!"
7167 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
7168 echo "Ah, yes! The good old days!"
7169 echo "However, in the good old days we don't know how to stringify and"
7170 echo "catify at the same time."
7174 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
7175 to have to edit the values of CAT[2-5] in config.h...
7177 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
7181 : see if this is a db.h system
7187 : Check the return type needed for hash
7189 echo "Checking return type needed for hash for Berkeley DB ..." >&4
7195 #include <sys/types.h>
7197 u_int32_t hash_cb (ptr, size)
7205 info.hash = hash_cb;
7208 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7209 if $contains warning try.out >>/dev/null 2>&1 ; then
7212 db_hashtype='u_int32_t'
7215 echo "I can't seem to compile the test program." >&4
7219 echo "Your version of Berkeley DB uses $db_hashtype for hash."
7227 : Check the return type needed for prefix
7229 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
7235 #include <sys/types.h>
7237 size_t prefix_cb (key1, key2)
7245 info.prefix = prefix_cb;
7248 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7249 if $contains warning try.out >>/dev/null 2>&1 ; then
7252 db_prefixtype='size_t'
7255 echo "I can't seem to compile the test program." >&4
7259 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
7261 *) db_prefixtype='int'
7265 : check for void type
7267 echo "Checking to see how well your C compiler groks the void type..." >&4
7270 Support flag bits are:
7271 1: basic void declarations.
7272 2: arrays of pointers to functions returning void.
7273 4: operations between pointers to and addresses of void functions.
7274 8: generic void pointers.
7277 case "$voidflags" in
7279 $cat >try.c <<'EOCP'
7285 extern void moo(); /* function returning void */
7286 void (*goo)(); /* ptr to func returning void */
7288 void *hue; /* generic ptr */
7302 if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
7303 voidflags=$defvoidused
7304 echo "It appears to support void to the level $package wants ($defvoidused)."
7305 if $contains warning .out >/dev/null 2>&1; then
7306 echo "However, you might get some warnings that look like this:"
7310 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
7311 if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then
7312 echo "It supports 1..."
7313 if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then
7314 echo "It also supports 2..."
7315 if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then
7317 echo "And it supports 4 but not 8 definitely."
7319 echo "It doesn't support 4..."
7320 if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then
7322 echo "But it supports 8."
7325 echo "Neither does it support 8."
7329 echo "It does not support 2..."
7330 if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then
7332 echo "But it supports 4 and 8."
7334 if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then
7336 echo "And it supports 4 but has not heard about 8."
7338 echo "However it supports 8 but not 4."
7343 echo "There is no support at all for void."
7348 : Only prompt user if voidflags is not 15. If voidflags is 15, then
7349 : we presume all is well.
7350 case "$voidflags" in
7352 *) dflt="$voidflags";
7353 rp="Your void support flags add up to what?"
7360 : see what type file positions are declared as in the library
7361 set fpos_t fpostype long stdio.h sys/types.h
7365 rp="What is the type for file position used by fsetpos()?"
7369 : Store the full pathname to the sed program for use in the C program
7372 : see what type gids are declared as in the kernel
7373 set gid_t gidtype xxx stdio.h sys/types.h
7377 xxx=`./findhdr sys/user.h`
7378 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
7380 unsigned) dflt="$1 $2" ;;
7384 *) dflt="$gidtype";;
7387 rp="What is the type for group ids returned by getgid()?"
7391 : see if getgroups exists
7392 set getgroups d_getgrps
7395 : Find type of 2nd arg to getgroups
7397 case "$d_getgrps" in
7399 case "$groupstype" in
7400 '') dflt="$gidtype" ;;
7401 *) dflt="$groupstype" ;;
7404 What is the type of the second argument to getgroups()? Usually this
7405 is the same as group ids, $gidtype, but not always.
7408 rp='What type is the second argument to getgroups()?'
7412 *) groupstype="$gidtype";;
7415 : see what type lseek is declared as in the kernel
7416 set off_t lseektype long stdio.h sys/types.h
7420 rp="What type is lseek's offset on this system declared as?"
7424 : see what type is used for mode_t
7425 set mode_t modetype int stdio.h sys/types.h
7429 rp="What type is used for file modes?"
7433 : Cruising for prototypes
7435 echo "Checking out function prototypes..." >&4
7436 $cat >prototype.c <<'EOCP'
7437 main(int argc, char *argv[]) {
7440 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7441 echo "Your C compiler appears to support function prototypes."
7444 echo "Your C compiler doesn't seem to understand function prototypes."
7451 : check for size of random number generator
7455 echo "Checking to see how many bits your rand function produces..." >&4
7456 $cat >try.c <<'EOCP'
7461 register unsigned long tmp;
7462 register unsigned long max = 0L;
7464 for (i = 1000; i; i--) {
7465 tmp = (unsigned long)rand();
7466 if (tmp > max) max = tmp;
7468 for (i = 0; max; i++)
7473 if $cc try.c -o try >/dev/null 2>&1 ; then
7477 echo "(I can't seem to compile the test program...)"
7484 rp='How many bits does your rand() function produce?'
7489 : see if ar generates random libraries by itself
7491 echo "Checking how to generate random libraries on your machine..." >&4
7492 echo 'int bar1() { return bar2(); }' > bar1.c
7493 echo 'int bar2() { return 2; }' > bar2.c
7494 $cat > foo.c <<'EOP'
7495 main() { printf("%d\n", bar1()); exit(0); }
7497 $cc $ccflags -c bar1.c >/dev/null 2>&1
7498 $cc $ccflags -c bar2.c >/dev/null 2>&1
7499 $cc $ccflags -c foo.c >/dev/null 2>&1
7500 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
7501 if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7502 ./foobar >/dev/null 2>&1; then
7503 echo "ar appears to generate random libraries itself."
7506 elif ar ts bar.a >/dev/null 2>&1 &&
7507 $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7508 ./foobar >/dev/null 2>&1; then
7509 echo "a table of contents needs to be added with 'ar ts'."
7516 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
7517 $test -f $ranlib || ranlib=''
7520 if $test -n "$ranlib"; then
7521 echo "your system has '$ranlib'; we'll use that."
7524 echo "your system doesn't seem to support random libraries"
7525 echo "so we'll use lorder and tsort to order the libraries."
7532 : see if sys/select.h has to be included
7533 set sys/select.h i_sysselct
7536 : see if we should include time.h, sys/time.h, or both
7538 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7539 $echo $n "I'm now running the test program...$c"
7540 $cat >try.c <<'EOCP'
7541 #include <sys/types.h>
7546 #ifdef SYSTIMEKERNEL
7549 #include <sys/time.h>
7552 #include <sys/select.h>
7561 struct timezone tzp;
7563 if (foo.tm_sec == foo.tm_sec)
7566 if (bar.tv_sec == bar.tv_sec)
7575 for s_timeval in '-DS_TIMEVAL' ''; do
7576 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7577 for i_time in '' '-DI_TIME'; do
7578 for i_systime in '-DI_SYSTIME' ''; do
7582 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
7583 try.c -o try >/dev/null 2>&1 ; then
7584 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7588 $echo $n "Succeeded with $flags$c"
7599 *SYSTIMEKERNEL*) i_systimek="$define"
7600 timeincl=`./findhdr sys/time.h`
7601 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7602 *) i_systimek="$undef";;
7605 *I_TIME*) i_time="$define"
7606 timeincl=`./findhdr time.h`" $timeincl"
7607 echo "We'll include <time.h>." >&4;;
7608 *) i_time="$undef";;
7611 *I_SYSTIME*) i_systime="$define"
7612 timeincl=`./findhdr sys/time.h`" $timeincl"
7613 echo "We'll include <sys/time.h>." >&4;;
7614 *) i_systime="$undef";;
7618 : check for fd_set items
7621 Checking to see how well your C compiler handles fd_set and friends ...
7623 $cat >fd_set.c <<EOCP
7624 #$i_systime I_SYS_TIME
7625 #$i_sysselct I_SYS_SELECT
7626 #$d_socket HAS_SOCKET
7627 #include <sys/types.h>
7629 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7632 #include <sys/time.h>
7635 #include <sys/select.h>
7645 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7652 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7653 d_fds_bits="$define"
7655 echo "Well, your system knows about the normal fd_set typedef..." >&4
7657 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7658 d_fd_macros="$define"
7661 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7663 d_fd_macros="$undef"
7667 Hmm, your compiler has some difficulty with fd_set. Checking further...
7669 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7672 echo "Well, your system has some sort of fd_set available..." >&4
7674 echo "and you have the normal fd_set macros." >&4
7675 d_fd_macros="$define"
7678 but not the normal fd_set macros! Gross! More work for me...
7680 d_fd_macros="$undef"
7683 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7686 d_fd_macros="$undef"
7692 : check for type of arguments to select. This will only really
7693 : work if the system supports prototypes and provides one for
7697 : Make initial guess
7698 case "$selecttype" in
7701 $define) xxx='fd_set *' ;;
7705 *) xxx="$selecttype"
7710 'fd_set *') yyy='int *' ;;
7711 'int *') yyy='fd_set *' ;;
7716 Checking to see what type of arguments are expected by select().
7719 #$i_systime I_SYS_TIME
7720 #$i_sysselct I_SYS_SELECT
7721 #$d_socket HAS_SOCKET
7722 #include <sys/types.h>
7724 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7727 #include <sys/time.h>
7730 #include <sys/select.h>
7736 Select_fd_set_t readfds;
7737 Select_fd_set_t writefds;
7738 Select_fd_set_t exceptfds;
7739 struct timeval timeout;
7740 select(width, readfds, writefds, exceptfds, &timeout);
7744 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
7746 echo "Your system uses $xxx for the arguments to select." >&4
7747 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
7749 echo "Your system uses $yyy for the arguments to select." >&4
7751 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
7758 *) selecttype='int *'
7762 : Trace out the files included by signal.h, then look for SIGxxx names.
7763 : Remove SIGARRAYSIZE used by HPUX.
7764 : Remove SIGTYP void lines used by OS2.
7765 xxx=`echo '#include <signal.h>' |
7766 $cppstdin $cppminus $cppflags 2>/dev/null |
7767 $grep '^[ ]*#.*include' |
7768 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
7769 : Check this list of files to be sure we have parsed the cpp output ok.
7770 : This will also avoid potentially non-existent files, such
7773 for xx in $xxx /dev/null ; do
7774 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
7776 : If we have found no files, at least try signal.h
7778 '') xxxfiles=`./findhdr signal.h` ;;
7781 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
7782 print substr($2, 4, 20)
7784 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
7785 print substr($3, 4, 20)
7787 : Append some common names just in case the awk scan failed.
7788 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
7789 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
7790 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
7791 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
7792 : generate a few handy files for later
7793 $cat > signal.c <<'EOP'
7794 #include <sys/types.h>
7798 printf("NSIG %d\n", NSIG);
7801 printf("NSIG %d\n", _NSIG);
7805 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
7807 printf "#ifdef SIG"; printf $1; printf "\n"
7808 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
7809 printf $1; printf ");\n"
7816 $cat >signal.awk <<'EOP'
7818 $1 ~ /^NSIG$/ { nsig = $2 }
7819 ($1 !~ /^NSIG$/) && (NF == 2) {
7820 if ($2 > maxsig) { maxsig = $2 }
7822 dup_name[ndups] = $1
7833 if (nsig == 0) { nsig = maxsig + 1 }
7834 for (n = 1; n < nsig; n++) {
7836 printf("%s %d\n", sig_name[n], sig_num[n])
7839 printf("NUM%d %d\n", n, n)
7842 for (n = 0; n < ndups; n++) {
7843 printf("%s %d\n", dup_name[n], dup_num[n])
7847 $cat >signal_cmd <<EOS
7849 $test -s signal.lst && exit 0
7850 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
7851 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
7853 echo "(I can't seem be able to compile the test program -- Guessing)"
7854 echo 'kill -l' >signal
7855 set X \`csh -f <signal\`
7859 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
7861 echo \$@ | $tr ' ' '\012' | \
7862 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
7864 $rm -f signal.c signal signal.o
7866 chmod a+x signal_cmd
7867 $eunicefix signal_cmd
7869 : generate list of signal names
7879 echo "Generating a list of signal names and numbers..." >&4
7881 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
7882 sig_name="ZERO $sig_name"
7883 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
7884 sig_num="0 $sig_num"
7887 echo "The following signals are available:"
7889 echo $sig_name | $awk \
7890 'BEGIN { linelen = 0 }
7892 for (i = 1; i <= NF; i++) {
7894 linelen = linelen + length(name)
7897 linelen = length(name)
7903 $rm -f signal signal.c signal.awk signal.lst signal_cmd
7905 : see what type is used for size_t
7906 set size_t sizetype 'unsigned int' stdio.h sys/types.h
7910 rp="What type is used for the length parameter for string functions?"
7914 : see what type is used for signed size_t
7915 set ssize_t ssizetype int stdio.h sys/types.h
7918 $cat > ssize.c <<EOM
7920 #include <sys/types.h>
7921 #define Size_t $sizetype
7922 #define SSize_t $dflt
7925 if (sizeof(Size_t) == sizeof(SSize_t))
7927 else if (sizeof(Size_t) == sizeof(int))
7934 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then
7936 echo "I'll be using $ssizetype for functions returning a byte count." >&4
7938 echo "(I can't compile the test program--please enlighten me!)"
7941 I need a type that is the same size as $sizetype, but is guaranteed to
7942 be signed. Common values are int and long.
7945 rp="What signed type is the same size as $sizetype?"
7949 $rm -f ssize ssize.[co]
7951 : see what type of char stdio uses.
7953 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7954 echo "Your stdio uses unsigned chars." >&4
7955 stdchar="unsigned char"
7957 echo "Your stdio uses signed chars." >&4
7961 : see if time exists
7963 if set time val -f d_time; eval $csym; $val; then
7964 echo 'time() found.' >&4
7966 set time_t timetype long stdio.h sys/types.h
7970 rp="What type is returned by time() on this system?"
7974 echo 'time() not found, hope that will do.' >&4
7981 : see what type uids are declared as in the kernel
7982 set uid_t uidtype xxx stdio.h sys/types.h
7986 xxx=`./findhdr sys/user.h`
7987 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
7989 unsigned) dflt="$1 $2" ;;
7993 *) dflt="$uidtype";;
7996 rp="What is the type for user ids returned by getuid()?"
8000 : see if dbm.h is available
8001 : see if dbmclose exists
8002 set dbmclose d_dbmclose
8005 case "$d_dbmclose" in
8015 *) set rpcsvc/dbm.h i_rpcsvcdbm
8020 *) echo "We won't be including <dbm.h>"
8030 : see if this is a sys/file.h system
8035 : do we need to include sys/file.h ?
8041 echo "We'll be including <sys/file.h>." >&4
8044 echo "We won't be including <sys/file.h>." >&4
8054 : see if fcntl.h is there
8059 : see if we can include fcntl.h
8065 echo "We'll be including <fcntl.h>." >&4
8069 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
8071 echo "We won't be including <fcntl.h>." >&4
8083 : see if this is an grp system
8087 : see if locale.h is available
8088 set locale.h i_locale
8091 : see if this is a math.h system
8095 : see if memory.h is available.
8100 : See if it conflicts with string.h
8106 $cppstdin $cppflags $cppminus < $strings > mem.h
8107 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8109 echo "We won't be including <memory.h>."
8119 : see if ndbm.h is available
8124 : see if dbm_open exists
8125 set dbm_open d_dbm_open
8127 case "$d_dbm_open" in
8130 echo "We won't be including <ndbm.h>"
8139 : see if net/errno.h is available
8144 : Unfortunately, it causes problems on some systems. Arrgh.
8150 #include <net/errno.h>
8156 if $cc $ccflags -c try.c >/dev/null 2>&1; then
8157 echo "We'll be including <net/errno.h>." >&4
8159 echo "We won't be including <net/errno.h>." >&4
8168 : get C preprocessor symbols handy
8170 $echo $n "Hmm... $c"
8171 echo $al | $tr ' ' '\012' >Cppsym.know
8183 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
8185 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
8188 unknown="\$unknown \$sym"
8198 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
8200 exit 0; _ _ _ _\1\\ \1\\
8203 echo "exit 1; _ _ _" >>Cppsym\$\$
8204 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
8206 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
8212 $rm -f Cppsym\$\$ Cppsym2\$\$
8217 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
8219 : now check the C compiler for additional symbols
8225 for i in \`$cc -v -c tmp.c 2>&1\`
8228 -D*) echo "\$i" | $sed 's/^-D//';;
8229 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
8236 ./ccsym | $sort | $uniq >ccsym.raw
8237 $awk '/\=/ { print $0; next }
8238 { print $0"=1" }' ccsym.raw >ccsym.list
8239 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
8240 $comm -13 ccsym.true ccsym.list >ccsym.own
8241 $comm -12 ccsym.true ccsym.list >ccsym.com
8242 $comm -23 ccsym.true ccsym.list >ccsym.cpp
8245 if $test -z ccsym.raw; then
8246 echo "Your C compiler doesn't seem to define any symbol!" >&4
8248 echo "However, your C preprocessor defines the following ones:"
8251 if $test -s ccsym.com; then
8252 echo "Your C compiler and pre-processor define these symbols:"
8253 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
8256 $test "$silent" || sleep 1
8258 if $test -s ccsym.cpp; then
8259 $test "$also" && echo " "
8260 echo "Your C pre-processor ${also}defines the following $symbols:"
8261 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
8263 $test "$silent" || sleep 1
8265 if $test -s ccsym.own; then
8266 $test "$also" && echo " "
8267 echo "Your C compiler ${also}defines the following cpp variables:"
8268 $sed -e 's/\(.*\)=1/\1/' ccsym.own
8269 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
8270 $test "$silent" || sleep 1
8275 : see if this is a termio system
8279 if $test `./findhdr termios.h`; then
8280 set tcsetattr i_termios
8286 "$define") echo "You have POSIX termios.h... good!" >&4;;
8287 *) if ./Cppsym pyr; then
8288 case "`/bin/universe`" in
8289 ucb) if $test `./findhdr sgtty.h`; then
8291 echo "<sgtty.h> found." >&4
8293 echo "System is pyramid with BSD universe."
8294 echo "<sgtty.h> not found--you could have problems." >&4
8296 *) if $test `./findhdr termio.h`; then
8298 echo "<termio.h> found." >&4
8300 echo "System is pyramid with USG universe."
8301 echo "<termio.h> not found--you could have problems." >&4
8305 if $test `./findhdr termio.h`; then
8306 echo "<termio.h> found." >&4
8308 elif $test `./findhdr sgtty.h`; then
8309 echo "<sgtty.h> found." >&4
8312 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
8315 if $test `./findhdr sgtty.h`; then
8316 echo "<sgtty.h> found." >&4
8318 elif $test `./findhdr termio.h`; then
8319 echo "<termio.h> found." >&4
8322 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
8326 set i_termio; eval $setvar
8327 val=$val2; set i_sgtty; eval $setvar
8328 val=$val3; set i_termios; eval $setvar
8330 : see if stdarg is available
8332 if $test `./findhdr stdarg.h`; then
8333 echo "<stdarg.h> found." >&4
8336 echo "<stdarg.h> NOT found." >&4
8340 : see if varags is available
8342 if $test `./findhdr varargs.h`; then
8343 echo "<varargs.h> found." >&4
8345 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
8348 : set up the varargs testing programs
8349 $cat > varargs.c <<EOP
8354 #include <varargs.h>
8372 p = va_arg(ap, char *);
8377 $cat > varargs <<EOP
8378 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
8387 : now check which varargs header should be included
8392 if `./varargs I_STDARG`; then
8394 elif `./varargs I_VARARGS`; then
8399 if `./varargs I_VARARGS`; then
8406 echo "I could not find the definition for va_dcl... You have problems..." >&4
8407 val="$undef"; set i_stdarg; eval $setvar
8408 val="$undef"; set i_varargs; eval $setvar
8415 val="$define"; set i_stdarg; eval $setvar
8416 val="$undef"; set i_varargs; eval $setvar
8419 val="$undef"; set i_stdarg; eval $setvar
8420 val="$define"; set i_varargs; eval $setvar
8423 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
8427 : see if stddef is available
8428 set stddef.h i_stddef
8431 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
8432 set sys/filio.h i_sysfilio
8435 if $test `./findhdr sys/ioctl.h`; then
8437 echo '<sys/ioctl.h> found.' >&4
8440 if $test $i_sysfilio = "$define"; then
8441 echo '<sys/ioctl.h> NOT found.' >&4
8443 $test $i_sgtty = "$define" && xxx="sgtty.h"
8444 $test $i_termio = "$define" && xxx="termio.h"
8445 $test $i_termios = "$define" && xxx="termios.h"
8446 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
8452 : see if this is a sys/param system
8453 set sys/param.h i_sysparam
8456 : see if sys/stat.h is available
8457 set sys/stat.h i_sysstat
8460 : see if sys/types.h has to be included
8461 set sys/types.h i_systypes
8464 : see if this is a sys/un.h system
8465 set sys/un.h i_sysun
8468 : see if this is a unistd.h system
8469 set unistd.h i_unistd
8472 : see if this is an utime system
8476 : see if this is a vfork system
8487 : see if gdbm.h is available
8492 : see if gdbm_open exists
8493 set gdbm_open d_gdbm_open
8495 case "$d_gdbm_open" in
8498 echo "We won't be including <gdbm.h>"
8508 echo "Looking for extensions..." >&4
8510 : If we are using the old config.sh, known_extensions may contain
8511 : old or inaccurate or duplicate values.
8513 : We do not use find because it might not be available.
8514 : We do not just use MANIFEST because the user may have dropped
8515 : some additional extensions into the source tree and expect them
8518 if $test -f $xxx/$xxx.xs; then
8519 known_extensions="$known_extensions $xxx"
8521 if $test -d $xxx; then
8524 if $test -f $yyy/$yyy.xs; then
8525 known_extensions="$known_extensions $xxx/$yyy"
8532 set X $known_extensions
8534 known_extensions="$*"
8537 : Now see which are supported on this system.
8539 for xxx in $known_extensions ; do
8541 DB_File) case "$i_db" in
8542 $define) avail_ext="$avail_ext $xxx" ;;
8545 GDBM_File) case "$i_gdbm" in
8546 $define) avail_ext="$avail_ext $xxx" ;;
8549 NDBM_File) case "$i_ndbm" in
8550 $define) avail_ext="$avail_ext $xxx" ;;
8553 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
8554 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
8557 POSIX) case "$useposix" in
8558 true|define|y) avail_ext="$avail_ext $xxx" ;;
8561 Socket) case "$d_socket" in
8562 $define) avail_ext="$avail_ext $xxx" ;;
8565 *) avail_ext="$avail_ext $xxx"
8577 A number of extensions are supplied with $package. You may choose to
8578 compile these extensions for dynamic loading (the default), compile
8579 them into the $package executable (static loading), or not include
8580 them at all. Answer "none" to include no extensions.
8583 case "$dynamic_ext" in
8584 '') dflt="$avail_ext" ;;
8585 *) dflt="$dynamic_ext" ;;
8590 rp="What extensions do you wish to load dynamically?"
8593 none) dynamic_ext=' ' ;;
8594 *) dynamic_ext="$ans" ;;
8597 case "$static_ext" in
8599 : Exclude those already listed in dynamic linking
8601 for xxx in $avail_ext; do
8602 case " $dynamic_ext " in
8604 *) dflt="$dflt $xxx" ;;
8611 *) dflt="$static_ext"
8618 rp="What extensions do you wish to load statically?"
8621 none) static_ext=' ' ;;
8622 *) static_ext="$ans" ;;
8627 A number of extensions are supplied with $package. Answer "none"
8628 to include no extensions.
8631 case "$static_ext" in
8632 '') dflt="$avail_ext" ;;
8633 *) dflt="$static_ext" ;;
8639 rp="What extensions do you wish to include?"
8642 none) static_ext=' ' ;;
8643 *) static_ext="$ans" ;;
8648 set X $dynamic_ext $static_ext
8654 I need to get your e-mail address in Internet format if possible, i.e.
8655 something like user@host.domain. Please answer accurately since I have
8656 no easy means to double check it. The default value provided below
8657 is most probably close to the reality but may not be valid from outside
8658 your organization...
8662 while test "$cont"; do
8664 '') dflt="$cf_by@$myhostname$mydomain";;
8665 *) dflt="$cf_email";;
8667 rp='What is your e-mail address?'
8673 rp='Address does not look like an Internet one. Use it anyway?'
8689 If you or somebody else will be maintaining perl at your site, please
8690 fill in the correct e-mail address here so that they may be contacted
8691 if necessary. Currently, the "perlbug" program included with perl
8692 will send mail to this address in addition to perlbug@perl.com. You may
8693 enter "none" for no administrator.
8696 case "$perladmin" in
8697 '') dflt="$cf_email";;
8698 *) dflt="$perladmin";;
8700 rp='Perl administrator e-mail address'
8704 : Remove build directory name from cppstdin so it can be used from
8705 : either the present location or the final installed location.
8707 : Get out of the UU directory to get correct path name.
8711 echo "Stripping down cppstdin path name"
8717 : end of configuration questions
8719 echo "End of configuration questions."
8722 : back to where it started
8723 if test -d ../UU; then
8727 : configuration may be patched via a 'config.over' file
8728 if $test -f config.over; then
8731 rp='I see a config.over file. Do you wish to load it?'
8734 n*) echo "OK, I'll ignore it.";;
8736 echo "Configuration override changes have been loaded."
8741 : in case they want portability, strip down executable paths
8742 case "$d_portable" in
8745 echo "Stripping down executable paths..." >&4
8746 for file in $loclist $trylist; do
8752 : create config.sh file
8754 echo "Creating config.sh..." >&4
8755 $spitshell <<EOT >config.sh
8758 # This file was produced by running the Configure script. It holds all the
8759 # definitions figured out by Configure. Should you modify one of these values,
8760 # do not forget to propagate your changes by running "Configure -der". You may
8761 # instead choose to run each of the .SH files by yourself, or "Configure -S".
8764 # Configuration time: $cf_time
8765 # Configured by: $cf_by
8766 # Target system: $myuname
8776 Revision='$Revision'
8780 alignbytes='$alignbytes'
8781 aphostname='$aphostname'
8784 archlibexp='$archlibexp'
8785 archname='$archname'
8786 archobjs='$archobjs'
8794 byteorder='$byteorder'
8796 castflags='$castflags'
8799 cccdlflags='$cccdlflags'
8800 ccdlflags='$ccdlflags'
8803 cf_email='$cf_email'
8808 clocktype='$clocktype'
8810 compress='$compress'
8811 contains='$contains'
8815 cpp_stuff='$cpp_stuff'
8816 cppflags='$cppflags'
8818 cppminus='$cppminus'
8820 cppstdin='$cppstdin'
8821 cryptlib='$cryptlib'
8823 d_Gconvert='$d_Gconvert'
8824 d_access='$d_access'
8826 d_archlib='$d_archlib'
8827 d_attribut='$d_attribut'
8831 d_bsdpgrp='$d_bsdpgrp'
8833 d_casti32='$d_casti32'
8834 d_castneg='$d_castneg'
8835 d_charvspr='$d_charvspr'
8837 d_chroot='$d_chroot'
8838 d_chsize='$d_chsize'
8839 d_closedir='$d_closedir'
8843 d_cuserid='$d_cuserid'
8844 d_dbl_dig='$d_dbl_dig'
8845 d_difftime='$d_difftime'
8846 d_dirnamlen='$d_dirnamlen'
8847 d_dlerror='$d_dlerror'
8848 d_dlopen='$d_dlopen'
8849 d_dlsymun='$d_dlsymun'
8850 d_dosuid='$d_dosuid'
8852 d_eofnblk='$d_eofnblk'
8853 d_eunice='$d_eunice'
8854 d_fchmod='$d_fchmod'
8855 d_fchown='$d_fchown'
8857 d_fd_macros='$d_fd_macros'
8858 d_fd_set='$d_fd_set'
8859 d_fds_bits='$d_fds_bits'
8860 d_fgetpos='$d_fgetpos'
8861 d_flexfnam='$d_flexfnam'
8864 d_fpathconf='$d_fpathconf'
8865 d_fsetpos='$d_fsetpos'
8866 d_getgrps='$d_getgrps'
8867 d_gethent='$d_gethent'
8868 d_gethname='$d_gethname'
8869 d_getlogin='$d_getlogin'
8870 d_getpgrp2='$d_getpgrp2'
8871 d_getpgrp='$d_getpgrp'
8872 d_getppid='$d_getppid'
8873 d_getprior='$d_getprior'
8876 d_isascii='$d_isascii'
8877 d_killpg='$d_killpg'
8879 d_locconv='$d_locconv'
8883 d_mbstowcs='$d_mbstowcs'
8884 d_mbtowc='$d_mbtowc'
8885 d_memcmp='$d_memcmp'
8886 d_memcpy='$d_memcpy'
8887 d_memmove='$d_memmove'
8888 d_memset='$d_memset'
8890 d_mkfifo='$d_mkfifo'
8891 d_mktime='$d_mktime'
8893 d_msgctl='$d_msgctl'
8894 d_msgget='$d_msgget'
8895 d_msgrcv='$d_msgrcv'
8896 d_msgsnd='$d_msgsnd'
8897 d_mymalloc='$d_mymalloc'
8899 d_oldarchlib='$d_oldarchlib'
8900 d_oldsock='$d_oldsock'
8902 d_pathconf='$d_pathconf'
8904 d_phostname='$d_phostname'
8907 d_portable='$d_portable'
8909 d_pwchange='$d_pwchange'
8910 d_pwclass='$d_pwclass'
8911 d_pwcomment='$d_pwcomment'
8912 d_pwexpire='$d_pwexpire'
8913 d_pwquota='$d_pwquota'
8914 d_readdir='$d_readdir'
8915 d_readlink='$d_readlink'
8916 d_rename='$d_rename'
8917 d_rewinddir='$d_rewinddir'
8919 d_safebcpy='$d_safebcpy'
8920 d_safemcpy='$d_safemcpy'
8921 d_seekdir='$d_seekdir'
8922 d_select='$d_select'
8924 d_semctl='$d_semctl'
8925 d_semget='$d_semget'
8927 d_setegid='$d_setegid'
8928 d_seteuid='$d_seteuid'
8929 d_setlinebuf='$d_setlinebuf'
8930 d_setlocale='$d_setlocale'
8931 d_setpgid='$d_setpgid'
8932 d_setpgrp2='$d_setpgrp2'
8933 d_setpgrp='$d_setpgrp'
8934 d_setprior='$d_setprior'
8935 d_setregid='$d_setregid'
8936 d_setresgid='$d_setresgid'
8937 d_setresuid='$d_setresuid'
8938 d_setreuid='$d_setreuid'
8939 d_setrgid='$d_setrgid'
8940 d_setruid='$d_setruid'
8941 d_setsid='$d_setsid'
8944 d_shmatprototype='$d_shmatprototype'
8945 d_shmctl='$d_shmctl'
8947 d_shmget='$d_shmget'
8948 d_shrplib='$d_shrplib'
8949 d_socket='$d_socket'
8950 d_sockpair='$d_sockpair'
8951 d_statblks='$d_statblks'
8952 d_stdio_cnt_lval='$d_stdio_cnt_lval'
8953 d_stdio_ptr_lval='$d_stdio_ptr_lval'
8954 d_stdiobase='$d_stdiobase'
8955 d_stdstdio='$d_stdstdio'
8956 d_strchr='$d_strchr'
8957 d_strcoll='$d_strcoll'
8958 d_strctcpy='$d_strctcpy'
8959 d_strerrm='$d_strerrm'
8960 d_strerror='$d_strerror'
8961 d_strxfrm='$d_strxfrm'
8962 d_suidsafe='$d_suidsafe'
8963 d_symlink='$d_symlink'
8964 d_syscall='$d_syscall'
8965 d_sysconf='$d_sysconf'
8966 d_sysernlst='$d_sysernlst'
8967 d_syserrlst='$d_syserrlst'
8968 d_system='$d_system'
8969 d_tcgetpgrp='$d_tcgetpgrp'
8970 d_tcsetpgrp='$d_tcsetpgrp'
8971 d_telldir='$d_telldir'
8974 d_truncate='$d_truncate'
8975 d_tzname='$d_tzname'
8979 d_void_closedir='$d_void_closedir'
8980 d_voidsig='$d_voidsig'
8981 d_voidtty='$d_voidtty'
8982 d_volatile='$d_volatile'
8983 d_vprintf='$d_vprintf'
8985 d_waitpid='$d_waitpid'
8986 d_wcstombs='$d_wcstombs'
8987 d_wctomb='$d_wctomb'
8990 db_hashtype='$db_hashtype'
8991 db_prefixtype='$db_prefixtype'
8992 defvoidused='$defvoidused'
8993 direntrytype='$direntrytype'
8996 dynamic_ext='$dynamic_ext'
9001 eunicefix='$eunicefix'
9004 extensions='$extensions'
9006 firstmakefile='$firstmakefile'
9008 fpostype='$fpostype'
9009 freetype='$freetype'
9010 full_csh='$full_csh'
9011 full_sed='$full_sed'
9013 gccversion='$gccversion'
9017 groupcat='$groupcat'
9018 groupstype='$groupstype'
9020 h_sysfile='$h_sysfile'
9024 i_bsdioctl='$i_bsdioctl'
9027 i_dirent='$i_dirent'
9034 i_limits='$i_limits'
9035 i_locale='$i_locale'
9036 i_malloc='$i_malloc'
9038 i_memory='$i_memory'
9040 i_neterrno='$i_neterrno'
9043 i_rpcsvcdbm='$i_rpcsvcdbm'
9045 i_stdarg='$i_stdarg'
9046 i_stddef='$i_stddef'
9047 i_stdlib='$i_stdlib'
9048 i_string='$i_string'
9049 i_sysdir='$i_sysdir'
9050 i_sysfile='$i_sysfile'
9051 i_sysfilio='$i_sysfilio'
9053 i_sysioctl='$i_sysioctl'
9054 i_sysndir='$i_sysndir'
9055 i_sysparam='$i_sysparam'
9056 i_sysselct='$i_sysselct'
9057 i_syssockio='$i_syssockio'
9058 i_sysstat='$i_sysstat'
9059 i_systime='$i_systime'
9060 i_systimek='$i_systimek'
9061 i_systimes='$i_systimes'
9062 i_systypes='$i_systypes'
9064 i_termio='$i_termio'
9065 i_termios='$i_termios'
9067 i_unistd='$i_unistd'
9069 i_varargs='$i_varargs'
9070 i_varhdr='$i_varhdr'
9074 installarchlib='$installarchlib'
9075 installbin='$installbin'
9076 installman1dir='$installman1dir'
9077 installman3dir='$installman3dir'
9078 installprivlib='$installprivlib'
9079 installscript='$installscript'
9080 installsitearch='$installsitearch'
9081 installsitelib='$installsitelib'
9083 known_extensions='$known_extensions'
9087 lddlflags='$lddlflags'
9094 libswanted='$libswanted'
9100 locincpth='$locincpth'
9101 loclibpth='$loclibpth'
9105 lseektype='$lseektype'
9109 mallocobj='$mallocobj'
9110 mallocsrc='$mallocsrc'
9111 malloctype='$malloctype'
9113 man1direxp='$man1direxp'
9116 man3direxp='$man3direxp'
9120 mips_type='$mips_type'
9123 modetype='$modetype'
9126 myarchname='$myarchname'
9127 mydomain='$mydomain'
9128 myhostname='$myhostname'
9133 o_nonblock='$o_nonblock'
9135 oldarchlib='$oldarchlib'
9136 oldarchlibexp='$oldarchlibexp'
9137 optimize='$optimize'
9138 orderlib='$orderlib'
9143 patchlevel='$patchlevel'
9144 path_sep='$path_sep'
9146 perladmin='$perladmin'
9147 perlpath='$perlpath'
9149 phostname='$phostname'
9154 prefixexp='$prefixexp'
9156 privlibexp='$privlibexp'
9157 prototype='$prototype'
9158 randbits='$randbits'
9160 rd_nodata='$rd_nodata'
9164 scriptdir='$scriptdir'
9165 scriptdirexp='$scriptdirexp'
9167 selecttype='$selecttype'
9168 sendmail='$sendmail'
9171 sharpbang='$sharpbang'
9172 shmattype='$shmattype'
9175 sig_name='$sig_name'
9177 signal_t='$signal_t'
9178 sitearch='$sitearch'
9179 sitearchexp='$sitearchexp'
9181 sitelibexp='$sitelibexp'
9182 sizetype='$sizetype'
9187 sockethdr='$sockethdr'
9188 socketlib='$socketlib'
9190 spackage='$spackage'
9191 spitshell='$spitshell'
9193 ssizetype='$ssizetype'
9194 startperl='$startperl'
9196 static_ext='$static_ext'
9198 stdio_base='$stdio_base'
9199 stdio_bufsiz='$stdio_bufsiz'
9200 stdio_cnt='$stdio_cnt'
9201 stdio_ptr='$stdio_ptr'
9209 timeincl='$timeincl'
9210 timetype='$timetype'
9218 usemymalloc='$usemymalloc'
9220 useposix='$useposix'
9221 usevfork='$usevfork'
9225 voidflags='$voidflags'
9230 : add special variables
9231 $test -f patchlevel.h && \
9232 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
9233 echo "CONFIG=true" >>config.sh
9235 : propagate old symbols
9236 if $test -f UU/config.sh; then
9237 <UU/config.sh sort | uniq >UU/oldconfig.sh
9238 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
9239 sort | uniq -u >UU/oldsyms
9240 set X `cat UU/oldsyms`
9246 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
9248 echo "# Variables propagated from previous config.sh file." >>config.sh
9249 for sym in `cat UU/oldsyms`; do
9250 echo " Propagating $hint variable "'$'"$sym..."
9251 eval 'tmp="$'"${sym}"'"'
9253 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
9259 : Finish up by extracting the .SH files
9273 If you'd like to make any changes to the config.sh file before I begin
9274 to configure things, do it as a shell escape now (e.g. !vi config.sh).
9277 rp="Press return or use a shell escape to edit config.sh:"
9282 *) : in case they cannot read
9288 : if this fails, just run all the .SH files by hand
9295 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
9302 Now you need to generate make dependencies by running "make depend".
9303 You might prefer to run it in background: "make depend > makedepend.out &"
9304 It can take a while, so you might not want to run it right now.
9309 rp="Run make depend now?"
9313 make depend && echo "Now you must run a make."
9316 echo "You must run 'make depend' then 'make'."
9319 elif test -f [Mm]akefile; then
9321 echo "Now you must run a make."
9326 $rm -f kit*isdone ark*isdone