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 Wed Feb 21 14:26:18 EST 1996 [metaconfig 3.0 PL60]
28 SCO csh still thinks true is false. Write to SCO today and tell them that next
29 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
32 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34 [End of diatribe. We now return you to your regularly scheduled programming...]
38 OOPS! You naughty creature! You didn't run Configure with sh!
39 I will attempt to remedy the situation by running sh for you...
42 true || cat /tmp/c1$$ /tmp/c2$$
43 true || exec sh $0 $argv:q
45 (exit $?0) || cat /tmp/c2$$
46 (exit $?0) || exec sh $0 $argv:q
47 rm -f /tmp/c1$$ /tmp/c2$$
49 : compute my invocation name
53 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
58 : Proper PATH separator
60 : On OS/2 this directory should exist if this is not floppy only system :-]
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
591 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
594 : We must find out about Eunice early
596 if test -f /etc/unixtovms; then
597 eunicefix=/etc/unixtovms
599 if test -f /etc/unixtovms.exe; then
600 eunicefix=/etc/unixtovms.exe
603 : list of known cpp symbols, sorted alphabetically
604 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
605 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
606 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
607 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
608 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
609 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
610 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
611 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
612 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
613 al="$al VMS Xenix286"
614 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
615 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
616 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
617 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
618 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
619 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
620 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
621 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
622 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
623 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
624 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
625 al="$al __SVR4_2__ __UMAXV__"
626 al="$al ____386BSD____ __alpha __alpha__ __amiga"
627 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
628 al="$al __host_mips__"
629 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
630 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
631 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
632 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
633 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
634 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
635 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
636 al="$al __mc88100 __mc88100__ __mips __mips__"
637 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
638 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
639 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
640 al="$al _host_mips _mips _unix"
641 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
642 al="$al apollo ardent att386 att3b"
643 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
644 al="$al cadmus clipper concurrent convex cray ctix"
645 al="$al dmert encore gcos gcx gimpel gould"
646 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
647 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
648 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
649 al="$al i186 i286 i386 i486 i8086"
650 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
651 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
652 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
653 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
654 al="$al mc88000 mc88100 merlin mert mips mvs n16"
655 al="$al ncl_el ncl_mr"
656 al="$al news1500 news1700 news1800 news1900 news3700"
657 al="$al news700 news800 news900 ns16000 ns32000"
658 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
659 al="$al parisc pc532 pdp11 plexus posix pyr"
660 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
661 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
662 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
663 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
664 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
665 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
670 : default library list
672 : set useposix=false in your hint file to disable the POSIX extension.
674 : set usesafe=false in your hint if you want to skip the Safe extension.
676 : Define several unixisms. These can be used in hint files.
678 : Extra object files, if any, needed on this platform.
680 : Possible local include directories to search.
681 : Set locincpth to "" in a hint file to defeat local include searches.
682 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
683 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
685 : no include file wanted by default
688 : change the next line if compiling for Xenix/286 on Xenix/386
689 xlibpth='/usr/lib/386 /lib/386'
691 : Possible local library directories to search.
692 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
693 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
695 : general looking path for locating libraries
696 glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib"
697 glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small"
698 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib"
700 : Private path used by Configure to find libraries. Its value
701 : is prepended to libpth. This variable takes care of special
702 : machines, like the mips. Usually, it should be empty.
705 : full support for void wanted by default
708 : List of libraries we want.
709 libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
710 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
711 libswanted="$libswanted ucb bsd BSD PW x"
712 : We probably want to search /usr/shlib before most other libraries.
713 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
714 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
715 glibpth="/usr/shlib $glibpth"
716 : Do not use vfork unless overridden by a hint file.
719 : script used to extract .SH files with variable substitutions
722 echo "Doing variable substitutions on .SH files..."
723 if test -f MANIFEST; then
724 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
725 : Pick up possible extension manifests.
726 for dir in ext/* ; do
727 if test -f $dir/MANIFEST; then
728 xxx=`awk '{print $1}' < $dir/MANIFEST |
729 sed -n "/\.SH$/ s@^@$dir/@p"`
730 shlist="$shlist $xxx"
735 echo "(Looking for .SH files under the current directory.)"
736 set x `find . -name "*.SH" -print`
740 0) set x *.SH; shift;;
742 if test ! -f $1; then
748 dir=`expr X$file : 'X\(.*\)/'`
749 file=`expr X$file : 'X.*/\(.*\)'`
750 (cd $dir && . ./$file)
757 if test -f config_h.SH; then
758 if test ! -f config.h; then
759 : oops, they left it out of MANIFEST, probably, so do it anyway.
765 : produce awk script to parse command line options
766 cat >options.awk <<'EOF'
768 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
770 len = length(optstr);
771 for (i = 1; i <= len; i++) {
772 c = substr(optstr, i, 1);
773 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
784 if (substr(str, 1, 1) != "-") {
785 printf("'%s'\n", str);
789 for (i = 2; i <= len; i++) {
790 c = substr(str, i, 1);
792 printf("-%s\n", substr(str, i));
798 printf("'%s'\n", substr(str, i + 1));
811 : process the command line options
812 set X `for arg in "$@"; do echo "X$arg"; done |
813 sed -e s/X// | awk -f options.awk`
818 : set up default values
831 while test $# -gt 0; do
833 -d) shift; fastread=yes;;
834 -e) shift; alldone=cont;;
838 if test -r "$1"; then
841 echo "$me: cannot read config file $1." >&2
846 -h) shift; error=true;;
847 -r) shift; reuseval=true;;
848 -s) shift; silent=true;;
849 -E) shift; alldone=exit;;
850 -K) shift; knowitall=true;;
851 -O) shift; override=true;;
852 -S) shift; extractsh=true;;
857 echo "$me: use '-U symbol=', not '-D symbol='." >&2
858 echo "$me: ignoring -D $1" >&2
861 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
862 *) echo "$1='define'" >> optdef.sh;;
869 *=) echo "$1" >> optdef.sh;;
871 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
872 echo "$me: ignoring -U $1" >&2
874 *) echo "$1='undef'" >> optdef.sh;;
878 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
881 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
889 Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
890 [-U symbol] [-U symbol=]
891 -d : use defaults for all answers.
892 -e : go on without questioning past the production of config.sh.
893 -f : specify an alternate default configuration file.
894 -h : print this help message and exit (with an error status).
895 -r : reuse C symbols value if possible (skips costly nm extraction).
896 -s : silent mode, only echoes questions and essential information.
897 -D : define symbol to have some value:
898 -D symbol symbol gets the value 'define'
899 -D symbol=value symbol gets the value 'value'
900 -E : stop at the end of questions, after having produced config.sh.
901 -K : do not use unless you know what you are doing.
902 -O : let -D and -U override definitions from loaded configuration file.
903 -S : perform variable substitutions on all .SH files (can mix with -f)
904 -U : undefine symbol:
905 -U symbol symbol gets the value 'undef'
906 -U symbol= symbol gets completely empty
907 -V : print version number and exit (with a zero status).
915 true) exec 1>/dev/null;;
918 : run the defines and the undefines, if any, but leave the file out there...
925 '') config_sh='config.sh'; config='./config.sh';;
926 /*) config="$config_sh";;
927 *) config="./$config_sh";;
930 echo "Fetching answers from $config_sh..."
933 test "$override" && . ./optdef.sh
944 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
945 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
946 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
947 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
948 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
951 : Eunice requires " " instead of "", can you believe it
954 echo "Beginning of configuration questions for $package."
956 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
958 : Some greps do not return status, grrr.
959 echo "grimblepritz" >grimble
960 if grep blurfldyick grimble >/dev/null 2>&1 ; then
962 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
968 : the following should work in any shell
972 echo "AGH! Grep doesn't return a status. Attempting remedial action."
973 cat >contains <<'EOSS'
974 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
979 : first determine how to suppress newline on echo command
981 echo "Checking echo to see how to suppress newlines..."
982 (echo "hi there\c" ; echo " ") >.echotmp
983 if $contains c .echotmp >/dev/null 2>&1 ; then
994 echo $n "The star should be here-->$c"
998 : Now test for existence of everything in MANIFEST
1000 if test -f ../MANIFEST; then
1001 echo "First let's make sure your kit is complete. Checking..." >&4
1002 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1004 for filelist in x??; do
1005 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1007 if test -s missing; then
1011 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1013 You have the option of continuing the configuration process, despite the
1014 distinct possibility that your kit is damaged, by typing 'y'es. If you
1015 do, don't blame me if something goes wrong. I advise you to type 'n'o
1016 and contact the author (doughera@lafcol.lafayette.edu).
1019 echo $n "Continue? [n] $c" >&4
1023 echo "Continuing..." >&4
1027 echo "ABORTING..." >&4
1032 echo "Looks good..." >&4
1035 echo "There is no MANIFEST file. I hope your kit is complete !"
1039 : compute the number of columns on the terminal for proper question formatting
1044 : set up the echo used in my read
1045 myecho="case \"\$xxxm\" in
1046 '') echo $n \"\$rp $c\" >&4;;
1048 '') echo $n \"[\$xxxm] $c\";;
1050 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1052 echo $n \"[\$xxxm] $c\" >&4
1054 echo $n \"\$rp [\$xxxm] $c\" >&4
1060 : now set up to do reads with possible shell escape and default assignment
1065 case "\$fastread" in
1066 yes) case "\$dflt" in
1069 case "\$silent-\$rp" in
1074 *) case "\$silent" in
1075 true) case "\$rp" in
1080 while expr "X\$ans" : "X!" >/dev/null; do
1084 aok=''; eval "ans=\"\$answ\"" && aok=y
1089 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1094 echo "(OK, I'll run with -d after this question.)" >&4
1097 echo "*** Sorry, \$1 not supported yet." >&4
1109 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1119 echo "*** Substitution done -- please confirm."
1121 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1126 echo "*** Error -- try again."
1133 case "\$ans\$xxxm\$nostick" in
1145 : create .config dir to save info across Configure sessions
1146 test -d ../.config || mkdir ../.config
1147 cat >../.config/README <<EOF
1148 This directory created by Configure to save information that should
1149 persist across sessions.
1151 You may safely delete it if you wish.
1154 : general instructions
1157 user=`( (logname) 2>/dev/null || whoami) 2>&1`
1158 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1161 rp='Would you like to see the instructions?'
1172 This installation shell script will examine your system and ask you questions
1173 to determine how the perl5 package should be installed. If you get
1174 stuck on a question, you may use a ! shell escape to start a subshell or
1175 execute a command. Many of the questions will have default answers in square
1176 brackets; typing carriage return will give you the default.
1178 On some of the questions which ask for file or directory names you are allowed
1179 to use the ~name construct to specify the login directory belonging to "name",
1180 even if you don't have a shell which knows about that. Questions where this is
1181 allowed will be marked "(~name ok)".
1185 dflt='Type carriage return to continue'
1189 The prompter used in this script allows you to use shell variables and
1190 backticks in your answers. You may use $1, $2, etc... to refer to the words
1191 in the default answer, as if the default line was a set of arguments given to a
1192 script shell. This means you may also use $* to repeat the whole default line,
1193 so you do not have to re-type everything to add something to the default.
1195 Everytime there is a substitution, you will have to confirm. If there is an
1196 error (e.g. an unmatched backtick), the default answer will remain unchanged
1197 and you will be prompted again.
1199 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1200 the questions and use the computed defaults (or the previous answers if there
1201 was already a config.sh file). Type 'Configure -h' for a list of options.
1202 You may also start interactively and then answer '& -d' at any prompt to turn
1203 on the non-interactive behaviour for the remaining of the execution.
1209 Much effort has been expended to ensure that this shell script will run on any
1210 Unix system. If despite that it blows up on yours, your best bet is to edit
1211 Configure and run it again. If you can't run Configure for some reason,
1212 you'll have to generate a config.sh file by hand. Whatever problems you
1213 have, let me (doughera@lafcol.lafayette.edu) know how I blew it.
1215 This installation script affects things in two ways:
1217 1) it may do direct variable substitutions on some of the files included
1219 2) it builds a config.h file for inclusion in C programs. You may edit
1220 any of these files as the need arises after running this script.
1222 If you make a mistake on a question, there is no easy way to back up to it
1223 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1224 files. Configure will offer to let you do this before it runs the SH files.
1227 dflt='Type carriage return to continue'
1229 case "$firsttime" in
1230 true) echo $user >>../.config/instruct;;
1234 : see if sh knows # comments
1236 echo "Checking your sh to see if it knows about # comments..." >&4
1237 if `sh -c '#' >/dev/null 2>&1`; then
1238 echo "Your sh handles # comments correctly."
1242 echo "Okay, let's see if #! works on this system..."
1244 test -f $xcat || xcat=/usr/bin/cat
1249 if test -s today; then
1253 echo "#! $xcat" > try
1257 if test -s today; then
1261 echo "It's just a comment."
1266 echo "Your sh doesn't grok # comments--I will strip them later on."
1269 echo "exec grep -v '^[ ]*#'" >spitshell
1271 $eunicefix spitshell
1272 spitshell=`pwd`/spitshell
1274 echo "I presume that if # doesn't work, #! won't work either!"
1279 : figure out how to guarantee sh startup
1281 echo "Checking out how to guarantee sh startup..." >&4
1283 *bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
1284 *) startsh=$sharpbang'/bin/sh';;
1286 echo "Let's see if '$startsh' works..."
1296 echo "Yup, it does."
1298 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
1302 : find out where common programs are
1304 echo "Locating common programs..." >&4
1317 if test -d \$dir/\$thing; then
1323 for thisthing in \$dir/\$thing; do
1324 : just loop through to pick last item
1326 if test -f \$thisthing; then
1329 elif test -f \$dir/\$thing.exe; then
1330 : on Eunice apparently
1378 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1379 pth="$pth /lib /usr/lib"
1380 for file in $loclist; do
1381 xxx=`./loc $file $file $pth`
1386 echo $file is in $xxx.
1389 echo $file is in $xxx.
1392 echo "I don't know where '$file' is, and my life depends on it." >&4
1393 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1399 echo "Don't worry if any of the following aren't found..."
1401 for file in $trylist; do
1402 xxx=`./loc $file $file $pth`
1407 echo $file is in $xxx.
1410 echo $file is in $xxx.
1413 echo "I don't see $file out there, $say."
1420 echo "Substituting grep for egrep."
1426 echo "Hopefully test is built into your sh."
1429 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1430 echo "Using the test built into your sh."
1438 echo "Hopefully echo is built into your sh."
1443 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1444 $echo $n "hi there$c" >foo1
1445 echo $n "hi there$c" >foo2
1446 if cmp foo1 foo2 >/dev/null 2>&1; then
1447 echo "They are compatible. In fact, they may be identical."
1454 They are not compatible! You are probably running ksh on a non-USG system.
1455 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1456 have echo built in and we may have to run some Bourne shell scripts. That
1457 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1460 $echo $n "The star should be here-->$c"
1467 : determine whether symbolic links are supported
1470 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1471 echo "Symbolic links are supported." >&4
1474 echo "Symbolic links are NOT supported." >&4
1479 : see whether [:lower:] and [:upper:] are supported character classes
1483 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1485 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1490 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1493 : set up the translation script tr, must be called with ./tr of course
1497 '[A-Z][a-z]') exec $tr '$up' '$low';;
1498 '[a-z][A-Z]') exec $tr '$low' '$up';;
1505 : Try to determine whether config.sh was made on this system
1506 case "$config_sh" in
1508 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1509 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1510 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1511 newmyuname="$myuname"
1513 case "$knowitall" in
1515 if test -f ../config.sh; then
1516 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1517 eval "`grep myuname= ../config.sh`"
1519 if test "X$myuname" = "X$newmyuname"; then
1527 : Get old answers from old config file if Configure was run on the
1528 : same system, otherwise use the hints.
1531 if test -f config.sh; then
1533 rp="I see a config.sh file. Shall I use it to set the defaults?"
1536 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1537 *) echo "Fetching default answers from your old config.sh file..." >&4
1548 if test ! -f config.sh; then
1551 First time through, eh? I have some defaults handy for the following systems:
1554 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1556 : Half the following guesses are probably wrong... If you have better
1557 : tests or hints, please send them to doughera@lafcol.lafayette.edu
1558 : The metaconfig authors would also appreciate a copy...
1559 $test -f /irix && osname=irix
1560 $test -f /xenix && osname=sco_xenix
1561 $test -f /dynix && osname=dynix
1562 $test -f /dnix && osname=dnix
1563 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1564 $test -f /bin/mips && /bin/mips && osname=mips
1565 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1566 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1567 $test -d /usr/apollo/bin && osname=apollo
1568 $test -f /etc/saf/_sactab && osname=svr4
1569 $test -d /usr/include/minix && osname=minix
1570 if $test -d /MachTen; then
1572 if $test -x /sbin/version; then
1573 osvers=`/sbin/version | $awk '{print $2}' |
1574 $sed -e 's/[A-Za-z]$//'`
1575 elif $test -x /usr/etc/version; then
1576 osvers=`/usr/etc/version | $awk '{print $2}' |
1577 $sed -e 's/[A-Za-z]$//'`
1582 if $test -f $uname; then
1590 umips) osname=umips ;;
1593 [23]100) osname=mips ;;
1594 next*) osname=next ;;
1595 news*) osname=news ;;
1597 if $test -f /etc/kconfig; then
1599 if test "$lns" = "ln -s"; then
1601 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1603 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1612 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1614 'not found') osvers="$4"."$3" ;;
1615 '<3240'|'<>3240') osvers=3.2.0 ;;
1616 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1617 '=3250'|'>3250') osvers=3.2.5 ;;
1624 domainos) osname=apollo
1630 freebsd) osname=freebsd
1632 genix) osname=genix ;;
1637 *.10.*) osvers=10 ;;
1654 netbsd*) osname=netbsd
1657 bsd386) osname=bsd386
1660 next*) osname=next ;;
1661 solaris) osname=solaris
1663 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1670 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1674 titanos) osname=titanos
1683 ultrix) osname=ultrix
1689 osvers=`echo "$3" | sed 's/^[vt]//'`
1691 hp*) osname=hp_osf1 ;;
1692 mips) osname=mips_osf1 ;;
1698 $2) case "$osname" in
1702 : svr4.x or possibly later
1712 if test -f /stand/boot ; then
1713 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1714 if test -n "$INITPROG" -a -f "$INITPROG"; then
1715 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1716 if test -n "$isesix"; then
1724 *) if test -f /etc/systemid; then
1726 set `echo $3 | $sed 's/\./ /g'` $4
1727 if $test -f sco_$1_$2_$3.sh; then
1729 elif $test -f sco_$1_$2.sh; then
1731 elif $test -f sco_$1.sh; then
1736 '') : Still unknown. Probably a generic Sys V.
1745 *) case "$osname" in
1746 '') : Still unknown. Probably a generic BSD.
1754 if test -f /vmunix -a -f news_os.sh; then
1755 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1756 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1759 $rm -f ../UU/kernel.what
1760 elif test -d c:/.; then
1767 : Now look for a hint file osname_osvers, unless one has been
1768 : specified already.
1771 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1772 : Also try without trailing minor version numbers.
1773 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1774 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1775 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1776 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1779 *) case "$osvers" in
1782 *) if $test -f $file.sh ; then
1784 elif $test -f $xfile.sh ; then
1786 elif $test -f $xxfile.sh ; then
1788 elif $test -f $xxxfile.sh ; then
1790 elif $test -f $xxxxfile.sh ; then
1792 elif $test -f "${osname}.sh" ; then
1803 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1809 You may give one or more space-separated answers, or "none" if appropriate.
1810 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1813 rp="Which of these apply, if any?"
1816 for file in $tans; do
1817 if $test -f $file.sh; then
1819 $cat $file.sh >> ../UU/config.sh
1820 elif $test X$tans = X -o X$tans = Xnone ; then
1823 : Give one chance to correct a possible typo.
1824 echo "$file.sh does not exist"
1826 rp="hint to use instead?"
1828 for file in $ans; do
1829 if $test -f "$file.sh"; then
1831 $cat $file.sh >> ../UU/config.sh
1832 elif $test X$ans = X -o X$ans = Xnone ; then
1835 echo "$file.sh does not exist -- ignored."
1842 : Remember our hint file for later.
1843 if $test -f "$file.sh" ; then
1855 echo "Fetching default answers from $config_sh..." >&4
1859 cp $config_sh config.sh 2>/dev/null
1868 test "$override" && . ./optdef.sh
1869 myuname="$newmyuname"
1871 : Restore computed paths
1872 for file in $loclist $trylist; do
1873 eval $file="\$_$file"
1878 Configure uses the operating system name and version to set some defaults.
1879 The default value is probably right if the name rings a bell. Otherwise,
1880 since spelling matters for me, either accept the default or answer "none"
1887 ''|' '|none) dflt=none ;;
1888 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1891 *) dflt="$osname" ;;
1893 rp="Operating system name?"
1897 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1899 : who configured the system
1900 cf_time=`$date 2>&1`
1901 (logname > .temp) >/dev/null 2>&1
1902 $test -s .temp || (whoami > .temp) >/dev/null 2>&1
1903 $test -s .temp || echo unknown > .temp
1907 : determine the architecture name
1909 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
1910 tarch=`arch`"-$osname"
1911 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
1912 if uname -m > tmparch 2>&1 ; then
1913 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
1921 case "$myarchname" in
1924 echo "(Your architecture name used to be $myarchname.)"
1930 *) dflt="$archname";;
1932 rp='What is your architecture name'
1939 if test -d /afs; then
1940 echo "AFS may be running... I'll be extra cautious then..." >&4
1943 echo "AFS does not seem to be running..." >&4
1947 : decide how portable to be. Allow command line overrides.
1948 case "$d_portable" in
1950 *) d_portable="$define" ;;
1953 : set up shell script to do ~ expansion
1959 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
1962 if $test -f /bin/csh; then
1963 /bin/csh -f -c "glob \$1"
1968 name=\`$expr x\$1 : '..\([^/]*\)'\`
1969 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
1970 if $test ! -d "\$dir"; then
1972 echo "\$me: can't locate home directory for: \$name" >&2
1977 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
1993 : now set up to get a file name
1994 cat <<'EOSC' >getfile
2007 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2008 fn=`echo $fn | sed 's/(.*)//'`
2014 loc_file=`expr $fn : '.*:\(.*\)'`
2015 fn=`expr $fn : '\(.*\):.*'`
2023 */*) fullpath=true;;
2032 *e*) exp_file=true;;
2035 *p*) nopath_ok=true;;
2040 *d*) type='Directory';;
2041 *l*) type='Locate';;
2046 Locate) what='File';;
2051 case "$d_portable" in
2059 while test "$type"; do
2064 true) rp="$rp (~name ok)";;
2067 if test -f UU/getfile.ok && \
2068 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2087 value=`UU/filexp $ans`
2090 if test "$ans" != "$value"; then
2091 echo "(That expands to $value on this system.)"
2105 /*) value="$ansexp" ;;
2110 echo "I shall only accept a full path name, as in /bin/ls." >&4
2111 echo "Use a ! shell escape if you wish to check pathnames." >&4
2114 echo "Please give a full path name, starting with slash." >&4
2117 echo "Note that using ~name is ok provided it expands well." >&4
2130 if test -f "$ansexp"; then
2132 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2134 echo "($value is not a plain file, but that's ok.)"
2139 if test -d "$ansexp"; then
2144 if test -d "$ansexp"; then
2145 echo "(Looking for $loc_file in directory $value.)"
2146 value="$value/$loc_file"
2147 ansexp="$ansexp/$loc_file"
2149 if test -f "$ansexp"; then
2152 case "$nopath_ok" in
2153 true) case "$value" in
2155 *) echo "Assuming $value will be in people's path."
2171 if test "$fastread" = yes; then
2176 rp="$what $value doesn't exist. Use that name anyway?"
2197 : determine root of directory hierarchy where package will be installed.
2200 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2208 By default, $package will be installed in $dflt/bin, manual
2209 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2210 all installation directories. Typically set to /usr/local, but you
2211 may choose /usr if you wish to install $package among your system
2212 binaries. If you wish to have binaries under /bin but manual pages
2213 under /usr/local/man, that's ok: you will be prompted separately
2214 for each of the installation directories, the prefix being only used
2215 to set the defaults.
2219 rp='Installation prefix to use?'
2227 *) oldprefix="$prefix";;
2234 : set the prefixit variable, to compute a suitable default value
2235 prefixit='case "$3" in
2237 case "$oldprefix" in
2238 "") eval "$1=\"\$$2\"";;
2245 ""|" ") eval "$1=\"\$$2\"";;
2251 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2253 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2254 /*-$oldprefix/*|\~*-$oldprefix/*)
2255 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2256 *) eval "$1=\"\$$2\"";;
2260 : determine where private library files go
2261 : Usual default is /usr/local/lib/perl5. Also allow things like
2262 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2264 *perl*) set dflt privlib lib ;;
2265 *) set dflt privlib lib/$package ;;
2270 There are some auxiliary files for $package that need to be put into a
2271 private library directory that is accessible by everyone.
2275 rp='Pathname where the private library files will reside?'
2277 if $test "X$privlibexp" != "X$ansexp"; then
2281 privlibexp="$ansexp"
2285 Since you are running AFS, I need to distinguish the directory in which
2286 private files reside from the directory in which they are installed (and from
2287 which they are presumably copied to the former directory by occult means).
2290 case "$installprivlib" in
2291 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2292 *) dflt="$installprivlib";;
2295 rp='Where will private files be installed?'
2297 installprivlib="$ans"
2299 installprivlib="$privlibexp"
2302 : set the base revision
2305 : get the patchlevel
2307 echo "Getting the current patchlevel..." >&4
2308 if $test -r ../patchlevel.h;then
2309 patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
2310 subversion=`awk '/SUBVERSION/ {print $3}' < ../patchlevel.h`
2315 echo "(You have $package $baserev PL$patchlevel sub$subversion.)"
2317 : set the prefixup variable, to restore leading tilda escape
2318 prefixup='case "$prefixexp" in
2320 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2323 : determine where public architecture dependent libraries go
2330 dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2334 *) version=`echo $baserev $patchlevel $subversion | \
2335 $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
2336 dflt="$privlib/$archname/$version"
2340 *) dflt="$archlib";;
2344 $spackage contains architecture-dependent library files. If you are
2345 sharing libraries in a heterogeneous environment, you might store
2346 these files in a separate location. Otherwise, you can just include
2347 them with the rest of the public library files.
2351 rp='Where do you want to put the public architecture-dependent libraries?'
2354 archlibexp="$ansexp"
2359 Since you are running AFS, I need to distinguish the directory in which
2360 private files reside from the directory in which they are installed (and from
2361 which they are presumably copied to the former directory by occult means).
2364 case "$installarchlib" in
2365 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2366 *) dflt="$installarchlib";;
2369 rp='Where will architecture-dependent library files be installed?'
2371 installarchlib="$ans"
2373 installarchlib="$archlibexp"
2375 if $test X"$archlib" = X"$privlib"; then
2381 : set up the script used to warn in case of inconsistency
2385 echo "*** WHOA THERE!!! ***" >&4
2386 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2387 rp=" Keep the $hint value?"
2390 y) td=$was; tu=$was;;
2394 : function used to set $1 to $val
2395 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2397 $define$undef) . ./whoa; eval "$var=\$td";;
2398 $undef$define) . ./whoa; eval "$var=\$tu";;
2399 *) eval "$var=$val";;
2402 : make some quick guesses about what we are up against
2404 $echo $n "Hmm... $c"
2413 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2414 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2416 echo "Looks kind of like an OSF/1 system, but we'll see..."
2418 elif test `echo abc | tr a-z A-Z` = Abc ; then
2419 xxx=`./loc addbib blurfl $pth`
2420 if $test -f $xxx; then
2421 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2425 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2426 echo "Looks kind of like an extended USG system, but we'll see..."
2428 echo "Looks kind of like a USG system, but we'll see..."
2432 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2433 echo "Looks kind of like a BSD system, but we'll see..."
2437 echo "Looks kind of like a Version 7 system, but we'll see..."
2440 case "$eunicefix" in
2443 There is, however, a strange, musty smell in the air that reminds me of
2444 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2448 : it so happens the Eunice I know will not run shell scripts in Unix format
2452 echo "Congratulations. You aren't running Eunice."
2456 if test -f /xenix; then
2457 echo "Actually, this looks more like a XENIX system..."
2462 echo "It's not Xenix..."
2467 if test -f /venix; then
2468 echo "Actually, this looks more like a VENIX system..."
2475 echo "Nor is it Venix..."
2478 chmod +x bsd usg v7 osf1 eunice xenix venix
2479 $eunicefix bsd usg v7 osf1 eunice xenix venix
2482 : see if setuid scripts can be secure
2485 Some kernels have a bug that prevents setuid #! scripts from being
2486 secure. Some sites have disabled setuid #! scripts because of this.
2488 First let's decide if your kernel supports secure setuid #! scripts.
2489 (If setuid #! scripts would be secure but have been disabled anyway,
2490 don't say that they are secure if asked.)
2495 if $test -d /dev/fd; then
2496 echo "#!$ls" >reflect
2497 chmod +x,u+s reflect
2498 ./reflect >flect 2>&1
2499 if $contains "/dev/fd" flect >/dev/null; then
2500 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2504 If you are not sure if they are secure, I can check but I'll need a
2505 username and password different from the one you are using right now.
2506 If you don't have such a username or don't want me to test, simply
2510 rp='Other username to test security of setuid scripts with?'
2515 case "$d_suidsafe" in
2516 '') echo "I'll assume setuid scripts are *not* secure." >&4
2519 echo "Well, the $hint value is *not* secure." >&4
2521 *) echo "Well, the $hint value *is* secure." >&4
2526 $rm -f reflect flect
2527 echo "#!$ls" >reflect
2528 chmod +x,u+s reflect
2531 echo '"su" will (probably) prompt you for '"$ans's password."
2532 su $ans -c './reflect >flect'
2533 if $contains "/dev/fd" flect >/dev/null; then
2534 echo "Okay, it looks like setuid scripts are secure." >&4
2537 echo "I don't think setuid scripts are secure." >&4
2542 rp='Does your kernel have *secure* setuid scripts?'
2545 [yY]*) val="$define";;
2550 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2556 $rm -f reflect flect
2558 : now see if they want to do setuid emulation
2561 case "$d_suidsafe" in
2564 echo "No need to emulate SUID scripts since they are secure here." >& 4
2568 Some systems have disabled setuid scripts, especially systems where
2569 setuid scripts cannot be secure. On systems where setuid scripts have
2570 been disabled, the setuid/setgid bits on scripts are currently
2571 useless. It is possible for $package to detect those bits and emulate
2572 setuid/setgid in a secure fashion. This emulation will only work if
2573 setuid scripts have been disabled in your kernel.
2577 "$define") dflt=y ;;
2580 rp="Do you want to do setuid/setgid emulation?"
2583 [yY]*) val="$define";;
2591 : determine where site specific libraries go.
2595 '') dflt="$privlib/site_perl" ;;
2596 *) dflt="$sitelib" ;;
2600 The installation process will also create a directory for
2601 site-specific extensions and modules. Some users find it convenient
2602 to place all local files in this directory rather than in the main
2603 distribution directory.
2607 rp='Pathname for the site-specific library files?'
2609 if $test "X$sitelibexp" != "X$ansexp"; then
2613 sitelibexp="$ansexp"
2617 Since you are running AFS, I need to distinguish the directory in which
2618 private files reside from the directory in which they are installed (and from
2619 which they are presumably copied to the former directory by occult means).
2622 case "$installsitelib" in
2623 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2624 *) dflt="$installsitelib";;
2627 rp='Where will private files be installed?'
2629 installsitelib="$ans"
2631 installsitelib="$sitelibexp"
2634 : determine where site specific architecture-dependent libraries go.
2635 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2636 : xxx is usuually lib/site_perl/archname.
2637 set sitearch sitearch none
2640 '') dflt="$sitelib/$archname" ;;
2641 *) dflt="$sitearch" ;;
2645 The installation process will also create a directory for
2646 architecture-dependent site-specific extensions and modules.
2650 rp='Pathname for the site-specific architecture-dependent library files?'
2652 if $test "X$sitearchexp" != "X$ansexp"; then
2656 sitearchexp="$ansexp"
2660 Since you are running AFS, I need to distinguish the directory in which
2661 private files reside from the directory in which they are installed (and from
2662 which they are presumably copied to the former directory by occult means).
2665 case "$installsitearch" in
2666 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2667 *) dflt="$installsitearch";;
2670 rp='Where will private files be installed?'
2672 installsitearch="$ans"
2674 installsitearch="$sitearchexp"
2677 : determine where old public architecture dependent libraries might be
2678 case "$oldarchlib" in
2679 '') case "$privlib" in
2681 *) dflt="$privlib/$archname"
2685 *) dflt="$oldarchlib"
2688 if $test ! -d "$dflt/auto"; then
2693 In 5.001, Perl stored architecture-dependent library files in a library
2694 with a name such as $privlib/$archname,
2695 and this directory contained files from the standard extensions and
2696 files from any additional extensions you might have added. Starting
2697 with version 5.002, all the architecture-dependent standard extensions
2698 will go into $archlib,
2699 while locally-added extensions will go into
2702 If you wish Perl to continue to search the old architecture-dependent
2703 library for your local extensions, give the path to that directory.
2704 If you do not wish to use your old architecture-dependent library
2705 files, answer 'none'.
2709 rp='Directory for your old 5.001 architecture-dependent libraries?'
2712 oldarchlibexp="$ansexp"
2713 case "$oldarchlib" in
2714 ''|' ') val="$undef" ;;
2720 : determine where public executables go
2725 rp='Pathname where the public executables will reside?'
2727 if $test "X$ansexp" != "X$binexp"; then
2735 Since you are running AFS, I need to distinguish the directory in which
2736 executables reside from the directory in which they are installed (and from
2737 which they are presumably copied to the former directory by occult means).
2740 case "$installbin" in
2741 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2742 *) dflt="$installbin";;
2745 rp='Where will public executables be installed?'
2749 installbin="$binexp"
2752 : determine where manual pages are on this system
2756 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2757 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2758 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2759 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2760 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2761 sysman=`./loc . /usr/man/man1 $syspath`
2764 if $test -d "$sysman"; then
2765 echo "System manual is in $sysman." >&4
2767 echo "Could not find manual pages in source form." >&4
2770 : determine where manual pages go
2771 set man1dir man1dir none
2775 $spackage has manual pages available in source form.
2779 echo "However, you don't have nroff, so they're probably useless to you."
2781 '') man1dir="none";;
2784 echo "If you don't want the manual sources installed, answer 'none'."
2789 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
2790 lookpath="$lookpath $prefixexp/man/p_man/man1"
2791 lookpath="$lookpath $prefixexp/man/u_man/man1"
2792 lookpath="$lookpath $prefixexp/man/man.1"
2793 : If prefix contains 'perl' then we want to keep the man pages
2794 : under the prefix directory. Otherwise, look in a variety of
2795 : other possible places. This is debatable, but probably a
2796 : good compromise. Well, apparently not.
2797 : Experience has shown people expect man1dir to be under prefix,
2798 : so we now always put it there. Users who want other behavior
2799 : can answer interactively or use a command line option.
2800 : Does user have System V-style man paths.
2802 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
2803 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
2813 rp="Where do the main $spackage manual pages (source) go?"
2815 if $test "X$man1direxp" != "X$ansexp"; then
2819 man1direxp="$ansexp"
2827 Since you are running AFS, I need to distinguish the directory in which
2828 manual pages 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 "$installman1dir" in
2833 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
2834 *) dflt="$installman1dir";;
2837 rp='Where will man pages be installed?'
2839 installman1dir="$ans"
2841 installman1dir="$man1direxp"
2844 : What suffix to use on installed man pages
2851 rp="What suffix should be used for the main $spackage man pages?"
2853 '') case "$man1dir" in
2867 *) dflt="$man1ext";;
2874 : see if we can have long filenames
2876 rmlist="$rmlist /tmp/cf$$"
2877 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
2878 first=123456789abcdef
2879 second=/tmp/cf$$/$first
2880 $rm -f $first $second
2881 if (echo hi >$first) 2>/dev/null; then
2882 if $test -f 123456789abcde; then
2883 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
2886 if (echo hi >$second) 2>/dev/null; then
2887 if $test -f /tmp/cf$$/123456789abcde; then
2889 That's peculiar... You can have filenames longer than 14 characters, but only
2890 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
2891 I shall consider your system cannot support long filenames at all.
2895 echo 'You can have filenames longer than 14 characters.' >&4
2900 How confusing! Some of your filesystems are sane enough to allow filenames
2901 longer than 14 characters but some others like /tmp can't even think about them.
2902 So, for now on, I shall assume your kernel does not allow them at all.
2909 You can't have filenames longer than 14 chars. You can't even think about them!
2915 $rm -rf /tmp/cf$$ 123456789abcde*
2917 : determine where library module manual pages go
2918 set man3dir man3dir none
2922 $spackage has manual pages for many of the library modules.
2928 However, you don't have nroff, so they're probably useless to you.
2929 You can use the supplied perldoc script instead.
2932 '') man3dir="none";;
2936 case "$d_flexfnam" in
2939 However, your system can't handle the long file names like File::Basename.3.
2940 You can use the supplied perldoc script instead.
2943 '') man3dir="none";;
2947 echo "If you don't want the manual sources installed, answer 'none'."
2948 : We dont use /usr/local/man/man3 because some man programs will
2949 : only show the /usr/local/man/man3 contents, and not the system ones,
2950 : thus man less will show the perl module less.pm, but not the system
2951 : less command. We might also conflict with TCL man pages.
2952 : However, something like /opt/perl/man/man3 is fine.
2954 '') case "$prefix" in
2955 *perl*) dflt=`echo $man1dir |
2956 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
2957 *) dflt="$privlib/man/man3" ;;
2961 *) dflt="$man3dir" ;;
2966 rp="Where do the $spackage library man pages (source) go?"
2968 if test "X$man3direxp" != "X$ansexp"; then
2973 man3direxp="$ansexp"
2981 Since you are running AFS, I need to distinguish the directory in which
2982 manual pages reside from the directory in which they are installed (and from
2983 which they are presumably copied to the former directory by occult means).
2986 case "$installman3dir" in
2987 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
2988 *) dflt="$installman3dir";;
2991 rp='Where will man pages be installed?'
2993 installman3dir="$ans"
2995 installman3dir="$man3direxp"
2998 : What suffix to use on installed man pages
3005 rp="What suffix should be used for the $spackage library man pages?"
3007 '') case "$man3dir" in
3021 *) dflt="$man3ext";;
3028 : see what memory models we can support
3031 $cat >pdp11.c <<'EOP'
3040 cc -o pdp11 pdp11.c >/dev/null 2>&1
3041 if ./pdp11 2>/dev/null; then
3042 dflt='unsplit split'
3044 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3047 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3052 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3055 if $test -d /lib/large || $test -d /usr/lib/large; then
3058 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3067 Some systems have different model sizes. On most systems they are called
3068 small, medium, large, and huge. On the PDP11 they are called unsplit and
3069 split. If your system doesn't support different memory models, say "none".
3070 If you wish to force everything to one memory model, say "none" here and
3071 put the appropriate flags later when it asks you for other cc and ld flags.
3072 Venix systems may wish to put "none" and let the compiler figure things out.
3073 (In the following question multiple model names should be space separated.)
3076 rp="Which memory models are supported?"
3091 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3092 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3099 rp="What flag indicates separate I and D space?"
3107 *large*|*small*|*medium*|*huge*)
3114 rp="What flag indicates large model?"
3124 *huge*) case "$huge" in
3128 rp="What flag indicates huge model?"
3138 *medium*) case "$medium" in
3142 rp="What flag indicates medium model?"
3149 *) medium="$large";;
3152 *small*) case "$small" in
3156 rp="What flag indicates small model?"
3167 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3171 : see if we need a special compiler
3179 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3180 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3193 On some systems the default C compiler will not resolve multiple global
3194 references that happen to have the same name. On some such systems the "Mcc"
3195 command may be used to force these to be resolved. On other systems a "cc -M"
3196 command is required. (Note that the -M flag on other systems indicates a
3197 memory model to use!) If you have the Gnu C compiler, you might wish to use
3201 rp="What command will force resolution on this system?"
3209 rp="Use which C compiler?"
3214 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3215 $cat >gccvers.c <<EOM
3220 printf("%s\n", __VERSION__);
3222 printf("%s\n", "1");
3228 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3229 gccversion=`./gccvers`
3230 case "$gccversion" in
3231 '') echo "You are not using GNU cc." ;;
3232 *) echo "You are using GNU cc $gccversion." ;;
3236 echo "*** WHOA THERE!!! ***" >&4
3237 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3238 case "$knowitall" in
3240 echo " You'd better start hunting for one and let me know about it." >&4
3246 case "$gccversion" in
3247 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3250 : What should the include directory be ?
3252 $echo $n "Hmm... $c"
3256 if $test -f /bin/mips && /bin/mips; then
3257 echo "Looks like a MIPS system..."
3258 $cat >usr.c <<'EOCP'
3259 #ifdef SYSTYPE_BSD43
3263 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3264 dflt='/bsd43/usr/include'
3268 mips_type='System V'
3270 $rm -f usr.c usr.out
3271 echo "and you're compiling with the $mips_type compiler and libraries."
3275 echo "Doesn't look like a MIPS system."
3286 case "$xxx_prompt" in
3288 rp='Where are the include files you want to use?'
3296 : see if we have to deal with yellow pages, now NIS.
3297 if $test -d /usr/etc/yp || $test -d /etc/yp; then
3298 if $test -f /usr/etc/nibindd; then
3300 echo "I'm fairly confident you're on a NeXT."
3302 rp='Do you get the hosts file via NetInfo?'
3311 y*) hostcat='nidump hosts .';;
3312 *) case "$hostcat" in
3313 nidump*) hostcat='';;
3323 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
3331 rp='Are you getting the hosts file via yellow pages?'
3334 y*) hostcat='ypcat hosts';;
3335 *) hostcat='cat /etc/hosts';;
3341 : now get the host name
3343 echo "Figuring out host name..." >&4
3344 case "$myhostname" in
3346 echo 'Maybe "hostname" will work...'
3347 if tans=`sh -c hostname 2>&1` ; then
3355 if $test "$cont"; then
3357 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
3358 if tans=`cat /etc/systemid 2>&1` ; then
3360 phostname='cat /etc/systemid'
3361 echo "Whadyaknow. Xenix always was a bit strange..."
3364 elif $test -r /etc/systemid; then
3365 echo "(What is a non-Xenix system doing with /etc/systemid?)"
3368 if $test "$cont"; then
3369 echo 'No, maybe "uuname -l" will work...'
3370 if tans=`sh -c 'uuname -l' 2>&1` ; then
3372 phostname='uuname -l'
3374 echo 'Strange. Maybe "uname -n" will work...'
3375 if tans=`sh -c 'uname -n' 2>&1` ; then
3377 phostname='uname -n'
3379 echo 'Oh well, maybe I can mine it out of whoami.h...'
3380 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
3381 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
3382 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
3384 case "$myhostname" in
3385 '') echo "Does this machine have an identity crisis or something?"
3388 echo "Well, you said $myhostname before..."
3389 phostname='echo $myhostname';;
3395 : you do not want to know about this
3400 if $test "$myhostname" ; then
3402 rp='Your host name appears to be "'$myhostname'".'" Right?"
3410 : bad guess or no guess
3411 while $test "X$myhostname" = X ; do
3413 rp="Please type the (one word) name of your host:"
3418 : translate upper to lower if necessary
3419 case "$myhostname" in
3421 echo "(Normalizing case in your host name)"
3422 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
3426 case "$myhostname" in
3428 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
3429 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
3430 echo "(Trimming domain name from host name--host name is now $myhostname)"
3432 *) case "$mydomain" in
3435 : If we use NIS, try ypmatch.
3436 : Is there some reason why this was not done before?
3437 test "X$hostcat" = "Xypcat hosts" &&
3438 ypmatch "$myhostname" hosts 2>/dev/null |\
3439 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
3442 : Extract only the relevant hosts, reducing file size,
3443 : remove comments, insert trailing space for later use.
3444 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
3445 /[ ]$myhostname[ . ]/p" > hosts
3448 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
3449 END { print sum }" hosts` = x1 || tmp_re="[ ]"
3450 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
3451 hosts | $sort | $uniq | \
3452 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
3453 case `$echo X$dflt` in
3454 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
3457 .) echo "(You do not have fully-qualified names in /etc/hosts)"
3462 tans=`./loc resolv.conf X /etc /usr/etc`
3463 if $test -f "$tans"; then
3464 echo "(Attempting domain name extraction from $tans)"
3465 : Why was there an Egrep here, when Sed works?
3466 dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \
3467 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
3472 .) echo "(No help from resolv.conf either -- attempting clever guess)"
3473 dflt=.`sh -c domainname 2>/dev/null`
3476 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
3481 .) echo "(Lost all hope -- silly guess then)"
3487 *) dflt="$mydomain";;
3491 rp="What is your domain name?"
3501 : translate upper to lower if necessary
3504 echo "(Normalizing case in your domain name)"
3505 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
3509 : a little sanity check here
3510 case "$phostname" in
3513 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
3514 $myhostname$mydomain|$myhostname) ;;
3516 case "$phostname" in
3518 echo "(That doesn't agree with your whoami.h file, by the way.)"
3521 echo "(That doesn't agree with your $phostname command, by the way.)"
3531 I need to get your e-mail address in Internet format if possible, i.e.
3532 something like user@host.domain. Please answer accurately since I have
3533 no easy means to double check it. The default value provided below
3534 is most probably close to the reality but may not be valid from outside
3535 your organization...
3539 while test "$cont"; do
3541 '') dflt="$cf_by@$myhostname$mydomain";;
3542 *) dflt="$cf_email";;
3544 rp='What is your e-mail address?'
3550 rp='Address does not look like an Internet one. Use it anyway?'
3566 If you or somebody else will be maintaining perl at your site, please
3567 fill in the correct e-mail address here so that they may be contacted
3568 if necessary. Currently, the "perlbug" program included with perl
3569 will send mail to this address in addition to perlbug@perl.com. You may
3570 enter "none" for no administrator.
3573 case "$perladmin" in
3574 '') dflt="$cf_email";;
3575 *) dflt="$perladmin";;
3577 rp='Perl administrator e-mail address'
3581 : determine where public executable scripts go
3582 set scriptdir scriptdir
3584 case "$scriptdir" in
3587 : guess some guesses
3588 $test -d /usr/share/scripts && dflt=/usr/share/scripts
3589 $test -d /usr/share/bin && dflt=/usr/share/bin
3590 $test -d /usr/local/script && dflt=/usr/local/script
3591 $test -d $prefixexp/script && dflt=$prefixexp/script
3595 *) dflt="$scriptdir"
3600 Some installations have a separate directory just for executable scripts so
3601 that they can mount it across multiple architectures but keep the scripts in
3602 one spot. You might, for example, have a subdirectory of /usr/share for this.
3603 Or you might just lump your scripts in with all your other executables.
3607 rp='Where do you keep publicly executable scripts?'
3609 if $test "X$ansexp" != "X$scriptdirexp"; then
3613 scriptdirexp="$ansexp"
3617 Since you are running AFS, I need to distinguish the directory in which
3618 scripts reside from the directory in which they are installed (and from
3619 which they are presumably copied to the former directory by occult means).
3622 case "$installscript" in
3623 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
3624 *) dflt="$installscript";;
3627 rp='Where will public scripts be installed?'
3629 installscript="$ans"
3631 installscript="$scriptdirexp"
3634 : determine perl absolute location
3636 '') perlpath=$binexp/perl ;;
3639 : figure out how to guarantee perl startup
3640 case "$startperl" in
3642 case "$sharpbang" in
3646 I can use the #! construct to start perl on your system. This will
3647 make startup of perl scripts faster, but may cause problems if you
3648 want to share those scripts and perl is not in a standard place
3649 ($perlpath) on all your platforms. The alternative is to force
3650 a shell by starting the script with a single ':' character.
3654 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
3657 none) startperl=": # use perl";;
3658 *) startperl="#!$ans";;
3661 *) startperl=": # use perl"
3666 echo "I'll use $startperl to start perl scripts."
3668 : see how we invoke the C preprocessor
3670 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3671 cat <<'EOT' >testcpp.c
3677 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3679 wrapper=`pwd`/cppstdin
3683 if $test "X$cppstdin" != "X" && \
3684 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3685 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3687 echo "You used to use $cppstdin $cppminus so we'll use that again."
3689 '') echo "But let's see if we can live without a wrapper..." ;;
3691 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3692 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3694 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3697 echo "(However, $cpprun $cpplast does not work, let's see...)"
3705 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3712 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3713 $cc -E <testcpp.c >testcpp.out 2>&1; \
3714 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3715 echo "Yup, it does."
3718 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3719 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3720 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3721 echo "Yup, it does."
3724 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3725 $cc -P <testcpp.c >testcpp.out 2>&1; \
3726 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3727 echo "Yipee, that works!"
3730 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3731 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3732 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3733 echo "At long last!"
3736 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3737 $cpp <testcpp.c >testcpp.out 2>&1; \
3738 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3742 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3743 $cpp - <testcpp.c >testcpp.out 2>&1; \
3744 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3745 echo "Hooray, it works! I was beginning to wonder."
3748 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3749 $wrapper <testcpp.c >testcpp.out 2>&1; \
3750 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3756 rp="No dice. I can't find a C preprocessor. Name one:"
3760 $x_cpp <testcpp.c >testcpp.out 2>&1
3761 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3762 echo "OK, that will do." >&4
3764 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3779 echo "Perhaps can we force $cc -E using a wrapper..."
3780 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3781 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3787 echo "Nope, we'll have to live without it..."
3802 *) $rm -f $wrapper;;
3804 $rm -f testcpp.c testcpp.out
3806 : Set private lib path
3809 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3814 '') dlist="$loclibpth $plibpth $glibpth";;
3815 *) dlist="$libpth";;
3818 : Now check and see which directories actually exist, avoiding duplicates
3822 if $test -d $xxx; then
3825 *) libpth="$libpth $xxx";;
3831 Some systems have incompatible or broken versions of libraries. Among
3832 the directories listed in the question below, please remove any you
3833 know not to be holding relevant libraries, and add any that are needed.
3834 Say "none" for none.
3845 rp="Directories to use for library searches?"
3852 : determine optimize, if desired, or use for debug flag also
3856 *) dflt="$optimize";;
3860 Some C compilers have problems with their optimizers, by default, $package
3861 compiles with the -O flag to use the optimizer. Alternately, you might want
3862 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3863 systems). Either flag can be specified here. To use neither flag, specify
3867 rp="What optimizer/debugger flag should be used?"
3871 'none') optimize=" ";;
3875 : We will not override a previous value, but we might want to
3876 : augment a hint file
3879 case "$gccversion" in
3880 1*) dflt='-fpcc-struct-return' ;;
3883 *-g*) dflt="$dflt -DDEBUGGING";;
3885 case "$gccversion" in
3886 2*) if test -d /etc/conf/kconfig.d &&
3887 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3896 case "$mips_type" in
3897 *BSD*|'') inclwanted="$locincpth $usrinc";;
3898 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3900 for thisincl in $inclwanted; do
3901 if $test -d $thisincl; then
3902 if $test x$thisincl != x$usrinc; then
3905 *) dflt="$dflt -I$thisincl";;
3911 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3913 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3921 *) dflt="$dflt -D$2";;
3926 set signal.h __LANGUAGE_C__; eval $inctest
3928 set signal.h LANGUAGE_C; eval $inctest
3930 set signal.h NO_PROTOTYPE; eval $inctest
3931 set signal.h _NO_PROTO; eval $inctest
3934 none|recommended) dflt="$ccflags $dflt" ;;
3935 *) dflt="$ccflags";;
3943 Your C compiler may want other flags. For this question you should include
3944 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3945 but you should NOT include libraries or ld flags like -lwhatever. If you
3946 want $package to honor its debug switch, you should include -DDEBUGGING here.
3947 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3948 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3950 To use no flags, specify the word "none".
3956 rp="Any additional cc flags?"
3963 : the following weeds options from ccflags that are of no interest to cpp
3965 case "$gccversion" in
3966 1*) cppflags="$cppflags -D__GNUC__"
3968 case "$mips_type" in
3970 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3976 echo "Let me guess what the preprocessor flags are..." >&4
3990 *) ftry="$previous $flag";;
3992 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3993 >cpp1.out 2>/dev/null && \
3994 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3995 >cpp2.out 2>/dev/null && \
3996 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3997 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3999 cppflags="$cppflags $ftry"
4009 *-*) echo "They appear to be: $cppflags";;
4011 $rm -f cpp.c cpp?.out
4015 : flags used in final linking phase
4018 '') if ./venix; then
4024 *-posix*) dflt="$dflt -posix" ;;
4027 *) dflt="$ldflags";;
4030 : Try to guess additional flags to pick up local libraries.
4031 for thislibdir in $libpth; do
4032 case " $loclibpth " in
4035 *"-L$thislibdir "*) ;;
4036 *) dflt="$dflt -L$thislibdir" ;;
4048 Your C linker may need flags. For this question you should
4049 include -L/whatever and any other flags used by the C linker, but you
4050 should NOT include libraries like -lwhatever.
4052 Make sure you include the appropriate -L/path flags if your C linker
4053 does not normally search all of the directories you specified above,
4056 To use no flags, specify the word "none".
4060 rp="Any additional ld flags (NOT including libraries)?"
4066 rmlist="$rmlist pdp11"
4070 echo "Checking your choice of C compiler and flags for coherency..." >&4
4071 set X $cc $optimize $ccflags $ldflags try.c -o try
4074 I've tried to compile and run a simple program with:
4079 and I got the following output:
4082 $cat > try.c <<'EOF'
4087 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
4088 if sh -c './try' >>try.msg 2>&1; then
4091 echo "The program compiled OK, but exited with status $?." >>try.msg
4092 rp="You have a problem. Shall I abort Configure"
4096 echo "I can't compile the test program." >>try.msg
4097 rp="You have a BIG problem. Shall I abort Configure"
4103 case "$knowitall" in
4105 echo "(The supplied flags might be incorrect with this C compiler.)"
4113 *) echo "Ok. Stopping Configure." >&4
4118 n) echo "OK, that should do.";;
4120 $rm -f try try.* core
4122 : compute shared library extension
4125 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4135 On some systems, shared libraries may be available. Answer 'none' if
4136 you want to suppress searching of shared libraries for the remaining
4137 of this configuration.
4140 rp='What is the file extension used for shared libraries?'
4144 : Looking for optional libraries
4146 echo "Checking for optional libraries..." >&4
4151 case "$libswanted" in
4152 '') libswanted='c_s';;
4154 for thislib in $libswanted; do
4156 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
4157 echo "Found -l$thislib (shared)."
4160 *) dflt="$dflt -l$thislib";;
4162 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4163 echo "Found -l$thislib (shared)."
4166 *) dflt="$dflt -l$thislib";;
4168 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
4169 echo "Found -l$thislib."
4172 *) dflt="$dflt -l$thislib";;
4174 elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
4175 echo "Found -l$thislib."
4178 *) dflt="$dflt -l$thislib";;
4180 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
4181 echo "Found -l${thislib}_s."
4184 *) dflt="$dflt -l${thislib}_s";;
4186 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
4187 echo "Found -l$thislib."
4190 *) dflt="$dflt -l$thislib";;
4193 echo "No -l$thislib."
4204 ' '|'') dflt='none';;
4209 Some versions of Unix support shared libraries, which make executables smaller
4210 but make load time slightly longer.
4212 On some systems, mostly newer Unix System V's, the shared library is included
4213 by putting the option "-lc_s" as the last thing on the cc command line when
4214 linking. Other systems use shared libraries by default. There may be other
4215 libraries needed to compile $package on your machine as well. If your system
4216 needs the "-lc_s" option, include it here. Include any other special libraries
4217 here as well. Say "none" for none.
4221 rp="Any additional libraries?"
4228 : see if nm is to be used to determine whether a symbol is defined or not
4231 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
4232 if $test $dflt -gt 20; then
4247 I can use 'nm' to extract the symbols from your C libraries. This is a time
4248 consuming task which may generate huge output on the disk (up to 3 megabytes)
4249 but that should make the symbols extraction faster. The alternative is to skip
4250 the 'nm' extraction part and to compile a small test program instead to
4251 determine whether each symbol is present. If you have a fast C compiler and/or
4252 if your 'nm' output cannot be parsed, this may be the best solution.
4255 rp='Shall I use nm to extract C symbols from the libraries?'
4267 : nm options which may be necessary
4269 '') if $test -f /mach_boot; then
4271 elif $test -d /usr/ccs/lib; then
4273 elif $test -f /dgux; then
4280 : nm options which may be necessary for shared libraries but illegal
4281 : for archive libraries. Thank you, Linux.
4282 case "$nm_so_opt" in
4283 '') case "$myuname" in
4285 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4286 nm_so_opt='--dynamic'
4295 : get list of predefined functions in a handy place
4300 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
4307 *) for thislib in $libs; do
4310 : Handle C library specially below.
4313 thislib=`echo $thislib | $sed -e 's/^-l//'`
4314 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4316 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4318 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
4320 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4322 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4324 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
4329 libnames="$libnames $try"
4331 *) libnames="$libnames $thislib" ;;
4340 for xxx in $libpth; do
4341 $test -r $1 || set $xxx/libc.$so
4342 : The messy sed command sorts on library version numbers.
4344 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4345 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
4347 s/[0-9][0-9]*/0000&/g
4348 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4351 sort | $sed -e 's/^.* //'`
4354 $test -r $1 || set /usr/ccs/lib/libc.$so
4355 $test -r $1 || set /lib/libsys_s.a
4361 if $test -r "$1"; then
4362 echo "Your (shared) C library seems to be in $1."
4364 elif $test -r /lib/libc && $test -r /lib/clib; then
4365 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4367 libc='/lib/clib /lib/libc'
4368 if $test -r /lib/syslib; then
4369 echo "(Your math library is in /lib/syslib.)"
4370 libc="$libc /lib/syslib"
4372 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4373 echo "Your C library seems to be in $libc, as you said before."
4374 elif $test -r $incpath/usr/lib/libc.a; then
4375 libc=$incpath/usr/lib/libc.a;
4376 echo "Your C library seems to be in $libc. That's fine."
4377 elif $test -r /lib/libc.a; then
4379 echo "Your C library seems to be in $libc. You're normal."
4381 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
4383 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4384 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4385 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4387 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4389 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4392 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
4394 if $test -r "$tans"; then
4395 echo "Your C library seems to be in $tans, of all places."
4401 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4405 If the guess above is wrong (which it might be if you're using a strange
4406 compiler, or your machine supports multiple models), you can override it here.
4411 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4413 I can't seem to find your C library. I've looked in the following places:
4416 $sed 's/^/ /' libpath
4419 None of these seems to contain your C library. I need to get its name...
4424 rp='Where is your C library?'
4429 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4430 set X `cat libnames`
4433 case $# in 1) xxx=file; esac
4434 echo "Extracting names from the following $xxx for later perusal:" >&4
4436 $sed 's/^/ /' libnames >&4
4438 $echo $n "This may take a while...$c" >&4
4440 : Linux may need the special Dynamic option to nm for shared libraries.
4441 : In general, this is stored in the nm_so_opt variable.
4442 : Unfortunately, that option may be fatal on non-shared libraries.
4443 for nm_libs_ext in $*; do
4444 case $nm_libs_ext in
4445 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4446 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4451 $grep fprintf libc.tmp > libc.ptf
4452 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4453 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4455 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx //p'";\
4457 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4459 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4461 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4463 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4465 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4467 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4469 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4471 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4473 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4475 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4477 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4479 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4480 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4482 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4484 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4486 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4488 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4490 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4492 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4494 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4496 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4498 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4501 nm -p $* 2>/dev/null >libc.tmp
4502 $grep fprintf libc.tmp > libc.ptf
4503 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4504 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4510 echo "nm didn't seem to work right. Trying ar instead..." >&4
4512 if ar t $libc > libc.tmp; then
4513 for thisname in $libnames; do
4514 ar t $thisname >>libc.tmp
4516 $sed -e 's/\.o$//' < libc.tmp > libc.list
4519 echo "ar didn't seem to work right." >&4
4520 echo "Maybe this is a Cray...trying bld instead..." >&4
4521 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4523 for thisname in $libnames; do
4525 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4526 ar t $thisname >>libc.tmp
4530 echo "That didn't work either. Giving up." >&4
4537 if $test -f /lib/syscalls.exp; then
4539 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4540 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4544 $rm -f libnames libpath
4546 : is a C symbol defined?
4549 -v) tf=libc.tmp; tc=""; tdc="";;
4550 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4551 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4554 case "$reuseval-$4" in
4556 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4562 if $contains $tlook $tf >/dev/null 2>&1;
4567 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4568 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4576 $define) tval=true;;
4582 : define an is-in-libc? function
4583 inlibc='echo " "; td=$define; tu=$undef;
4584 sym=$1; var=$2; eval "was=\$$2";
4586 case "$reuseval$was" in
4596 echo "$sym() found." >&4;
4597 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4599 echo "$sym() NOT found." >&4;
4600 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4604 $define) echo "$sym() found." >&4;;
4605 *) echo "$sym() NOT found." >&4;;
4609 : Check how to convert floats to strings.
4611 echo "Checking for an efficient way to convert floats to strings."
4614 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
4617 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
4620 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
4624 Gconvert(1.0, 8, 0, buf);
4625 if (buf[0] != '1' || buf[1] != '\0')
4627 Gconvert(0.0, 8, 0, buf);
4628 if (buf[0] != '0' || buf[1] != '\0')
4630 Gconvert(-1.0, 8, 0, buf);
4631 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
4636 case "$d_Gconvert" in
4637 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
4638 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
4639 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
4640 *) xxx_list='gconvert gcvt sprintf' ;;
4643 for xxx_convert in $xxx_list; do
4644 echo "Trying $xxx_convert"
4646 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
4647 try.c $libs > /dev/null 2>&1 ; then
4648 echo "$xxx_convert" found. >&4
4650 echo "Good, $xxx_convert drops a trailing decimal point."
4651 echo "I'll use $xxx_convert to convert floats into a string." >&4
4654 echo "But $xxx_convert keeps a trailing decimal point".
4657 echo "$xxx_convert NOT found." >&4
4661 case "$xxx_convert" in
4662 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
4663 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
4664 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
4667 : Initialize h_fcntl
4670 : Initialize h_sysfile
4673 : determine filename position in cpp output
4675 echo "Computing filename position in cpp output for #include directives..." >&4
4676 echo '#include <stdio.h>' > foo.c
4679 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4680 $grep '^[ ]*#.*stdio\.h' | \
4681 while read cline; do
4684 while $test \$# -gt 0; do
4685 if $test -r \`echo \$1 | $tr -d '"'\`; then
4690 pos=\`expr \$pos + 1\`
4702 *) pos="${fieldn}th";;
4704 echo "Your cpp writes the filename in the $pos field of the line."
4706 : locate header file