3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc so you may fetch it yourself from your nearest
18 # archive site. Check with Archie if you don't know where that can be.)
21 # $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
23 # Generated on Thu Oct 10 15:08:34 EDT 1996 [metaconfig 3.0 PL60]
28 SCO csh still thinks true is false. Write to SCO today and tell them that next
29 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
32 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34 [End of diatribe. We now return you to your regularly scheduled programming...]
38 OOPS! You naughty creature! You didn't run Configure with sh!
39 I will attempt to remedy the situation by running sh for you...
42 true || cat /tmp/c1$$ /tmp/c2$$
43 true || exec sh $0 $argv:q
45 (exit $?0) || cat /tmp/c2$$
46 (exit $?0) || exec sh $0 $argv:q
47 rm -f /tmp/c1$$ /tmp/c2$$
49 : compute my invocation name
53 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
58 : Proper PATH separator
60 : On OS/2 this directory should exist if this is not floppy only system :-]
61 if test -d c:/. -a -n "$OS2_SHELL"; then
63 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
64 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
68 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
69 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
70 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
71 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
72 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
73 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
74 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
75 paths="$paths /sbin /usr/sbin /usr/libexec"
81 *) test -d $p && PATH=$PATH$p_$p ;;
90 echo "Say 'sh $me', not 'sh <$me'"
94 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
95 if test -f /hp-ux -a -f /bin/ksh; then
96 if (PATH=.; alias -x) >/dev/null 2>&1; then
97 : already under /bin/ksh
100 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
103 exec /bin/ksh $0 "$@"
106 : Warn them if they use ksh on other systems
107 (PATH=.; alias -x) >/dev/null 2>&1 && \
109 (I see you are using the Korn shell. Some ksh's blow up on $me,
110 especially on older exotic systems. If yours does, try the Bourne
115 : Configure runs within the UU subdirectory
116 test -d UU || mkdir UU
605 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
608 : We must find out about Eunice early
610 if test -f /etc/unixtovms; then
611 eunicefix=/etc/unixtovms
613 if test -f /etc/unixtovms.exe; then
614 eunicefix=/etc/unixtovms.exe
617 : list of known cpp symbols, sorted alphabetically
618 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
619 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
620 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
621 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
622 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
623 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
624 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
625 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
626 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
627 al="$al VMS Xenix286"
628 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
629 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
630 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
631 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
632 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
633 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
634 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
635 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
636 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
637 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
638 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
639 al="$al __SVR4_2__ __UMAXV__"
640 al="$al ____386BSD____ __alpha __alpha__ __amiga"
641 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
642 al="$al __host_mips__"
643 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
644 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
645 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
646 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
647 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
648 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
649 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
650 al="$al __mc88100 __mc88100__ __mips __mips__"
651 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
652 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
653 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
654 al="$al _host_mips _mips _unix"
655 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
656 al="$al apollo ardent att386 att3b"
657 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
658 al="$al cadmus clipper concurrent convex cray ctix"
659 al="$al dmert encore gcos gcx gimpel gould"
660 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
661 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
662 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
663 al="$al i186 i286 i386 i486 i8086"
664 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
665 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
666 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
667 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
668 al="$al mc88000 mc88100 merlin mert mips mvs n16"
669 al="$al ncl_el ncl_mr"
670 al="$al news1500 news1700 news1800 news1900 news3700"
671 al="$al news700 news800 news900 ns16000 ns32000"
672 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
673 al="$al parisc pc532 pdp11 plexus posix pyr"
674 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
675 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
676 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
677 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
678 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
679 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
684 : default library list
686 : set useposix=false in your hint file to disable the POSIX extension.
688 : set useopcode=false in your hint file to disable the Opcode extension.
690 : Define several unixisms. These can be used in hint files.
692 : Extra object files, if any, needed on this platform.
694 : Possible local include directories to search.
695 : Set locincpth to "" in a hint file to defeat local include searches.
696 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
697 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
699 : no include file wanted by default
702 : change the next line if compiling for Xenix/286 on Xenix/386
703 xlibpth='/usr/lib/386 /lib/386'
705 : Possible local library directories to search.
706 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
707 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
709 : general looking path for locating libraries
710 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
711 glibpth="$glibpth /lib /usr/lib $xlibpth"
712 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
713 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
715 : Private path used by Configure to find libraries. Its value
716 : is prepended to libpth. This variable takes care of special
717 : machines, like the mips. Usually, it should be empty.
720 : full support for void wanted by default
723 : List of libraries we want.
724 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
725 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
726 libswanted="$libswanted ucb bsd BSD PW x"
727 : We probably want to search /usr/shlib before most other libraries.
728 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
729 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
730 glibpth="/usr/shlib $glibpth"
731 : Do not use vfork unless overridden by a hint file.
734 : Find the basic shell for Bourne shell scripts
737 : SYSTYPE is for some older MIPS systems.
738 : I do not know if it is still needed.
740 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
743 if test -f "$xxx"; then
746 : Build up a list and do a single loop so we can 'break' out.
747 pth=`echo $PATH | sed -e "s/$p_/ /g"`
748 for xxx in sh bash ksh pdksh ash; do
750 try="$try ${p}/${xxx}"
754 if test -f "$xxx"; then
756 echo "Your Bourne shell appears to be in $sh."
758 elif test -f "$xxx.exe"; then
760 echo "Hmm. Your Bourne shell appears to be in $sh."
770 $me: Fatal Error: I can't find a Bourne Shell anywhere.
771 Usually it's in /bin/sh. How did you even get this far?
772 Please contact me (Andy Dougherty) at doughera@lafcol.lafayette.edu and
773 we'll try to straigten this all out.
779 : see if sh knows # comments
780 if `$sh -c '#' >/dev/null 2>&1`; then
785 test -f $xcat || xcat=/usr/bin/cat
790 if test -s today; then
793 echo "#! $xcat" > try
797 if test -s today; then
800 echo "Okay, let's see if #! works on this system..."
801 echo "It's just a comment."
806 echo "Your $sh doesn't grok # comments--I will strip them later on."
809 echo "exec grep -v '^[ ]*#'" >spitshell
812 spitshell=`pwd`/spitshell
814 echo "I presume that if # doesn't work, #! won't work either!"
819 : figure out how to guarantee sh startup
821 '') startsh=${sharpbang}${sh} ;;
833 : echo "Yup, it does."
835 echo "Hmm. '$startsh' didn't work."
836 echo "You may have to fix up the shell scripts to make sure sh runs them."
840 : script used to extract .SH files with variable substitutions
844 cat >>extract <<'EOS'
846 echo "Doing variable substitutions on .SH files..."
847 if test -f MANIFEST; then
848 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
849 : Pick up possible extension manifests.
850 for dir in ext/* ; do
851 if test -f $dir/MANIFEST; then
852 xxx=`awk '{print $1}' < $dir/MANIFEST |
853 sed -n "/\.SH$/ s@^@$dir/@p"`
854 shlist="$shlist $xxx"
859 echo "(Looking for .SH files under the current directory.)"
860 set x `find . -name "*.SH" -print`
864 0) set x *.SH; shift;;
866 if test ! -f $1; then
872 dir=`expr X$file : 'X\(.*\)/'`
873 file=`expr X$file : 'X.*/\(.*\)'`
874 (cd $dir && . ./$file)
881 if test -f config_h.SH; then
882 if test ! -f config.h; then
883 : oops, they left it out of MANIFEST, probably, so do it anyway.
889 : produce awk script to parse command line options
890 cat >options.awk <<'EOF'
892 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
894 len = length(optstr);
895 for (i = 1; i <= len; i++) {
896 c = substr(optstr, i, 1);
897 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
908 if (substr(str, 1, 1) != "-") {
909 printf("'%s'\n", str);
913 for (i = 2; i <= len; i++) {
914 c = substr(str, i, 1);
916 printf("-%s\n", substr(str, i));
922 printf("'%s'\n", substr(str, i + 1));
935 : process the command line options
936 set X `for arg in "$@"; do echo "X$arg"; done |
937 sed -e s/X// | awk -f options.awk`
942 : set up default values
955 while test $# -gt 0; do
957 -d) shift; fastread=yes;;
958 -e) shift; alldone=cont;;
962 if test -r "$1"; then
965 echo "$me: cannot read config file $1." >&2
970 -h) shift; error=true;;
971 -r) shift; reuseval=true;;
972 -s) shift; silent=true;;
973 -E) shift; alldone=exit;;
974 -K) shift; knowitall=true;;
975 -O) shift; override=true;;
976 -S) shift; extractsh=true;;
981 echo "$me: use '-U symbol=', not '-D symbol='." >&2
982 echo "$me: ignoring -D $1" >&2
985 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
986 *) echo "$1='define'" >> optdef.sh;;
993 *=) echo "$1" >> optdef.sh;;
995 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
996 echo "$me: ignoring -U $1" >&2
998 *) echo "$1='undef'" >> optdef.sh;;
1002 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1005 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1013 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1014 [-U symbol] [-U symbol=]
1015 -d : use defaults for all answers.
1016 -e : go on without questioning past the production of config.sh.
1017 -f : specify an alternate default configuration file.
1018 -h : print this help message and exit (with an error status).
1019 -r : reuse C symbols value if possible (skips costly nm extraction).
1020 -s : silent mode, only echoes questions and essential information.
1021 -D : define symbol to have some value:
1022 -D symbol symbol gets the value 'define'
1023 -D symbol=value symbol gets the value 'value'
1024 -E : stop at the end of questions, after having produced config.sh.
1025 -K : do not use unless you know what you are doing.
1026 -O : let -D and -U override definitions from loaded configuration file.
1027 -S : perform variable substitutions on all .SH files (can mix with -f)
1028 -U : undefine symbol:
1029 -U symbol symbol gets the value 'undef'
1030 -U symbol= symbol gets completely empty
1031 -V : print version number and exit (with a zero status).
1039 true) exec 1>/dev/null;;
1042 : run the defines and the undefines, if any, but leave the file out there...
1046 case "$extractsh" in
1048 case "$config_sh" in
1049 '') config_sh='config.sh'; config='./config.sh';;
1050 /*) config="$config_sh";;
1051 *) config="./$config_sh";;
1054 echo "Fetching answers from $config_sh..."
1057 test "$override" && . ./optdef.sh
1068 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1069 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1070 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1071 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1072 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1075 : Eunice requires " " instead of "", can you believe it
1078 echo "Beginning of configuration questions for $package."
1080 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1082 : Some greps do not return status, grrr.
1083 echo "grimblepritz" >grimble
1084 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1086 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1092 : the following should work in any shell
1096 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1097 cat >contains <<'EOSS'
1098 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1103 : first determine how to suppress newline on echo command
1105 echo "Checking echo to see how to suppress newlines..."
1106 (echo "hi there\c" ; echo " ") >.echotmp
1107 if $contains c .echotmp >/dev/null 2>&1 ; then
1118 echo $n "The star should be here-->$c"
1122 : Now test for existence of everything in MANIFEST
1124 if test -f ../MANIFEST; then
1125 echo "First let's make sure your kit is complete. Checking..." >&4
1126 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1128 for filelist in x??; do
1129 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1131 if test -s missing; then
1135 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1137 You have the option of continuing the configuration process, despite the
1138 distinct possibility that your kit is damaged, by typing 'y'es. If you
1139 do, don't blame me if something goes wrong. I advise you to type 'n'o
1140 and contact the author (doughera@lafcol.lafayette.edu).
1143 echo $n "Continue? [n] $c" >&4
1147 echo "Continuing..." >&4
1151 echo "ABORTING..." >&4
1156 echo "Looks good..." >&4
1159 echo "There is no MANIFEST file. I hope your kit is complete !"
1163 : compute the number of columns on the terminal for proper question formatting
1168 : set up the echo used in my read
1169 myecho="case \"\$xxxm\" in
1170 '') echo $n \"\$rp $c\" >&4;;
1172 '') echo $n \"[\$xxxm] $c\";;
1174 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1176 echo $n \"[\$xxxm] $c\" >&4
1178 echo $n \"\$rp [\$xxxm] $c\" >&4
1184 : now set up to do reads with possible shell escape and default assignment
1189 case "\$fastread" in
1190 yes) case "\$dflt" in
1193 case "\$silent-\$rp" in
1198 *) case "\$silent" in
1199 true) case "\$rp" in
1204 while expr "X\$ans" : "X!" >/dev/null; do
1208 aok=''; eval "ans=\"\$answ\"" && aok=y
1213 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1218 echo "(OK, I'll run with -d after this question.)" >&4
1221 echo "*** Sorry, \$1 not supported yet." >&4
1233 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1243 echo "*** Substitution done -- please confirm."
1245 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1250 echo "*** Error -- try again."
1257 case "\$ans\$xxxm\$nostick" in
1269 : create .config dir to save info across Configure sessions
1270 test -d ../.config || mkdir ../.config
1271 cat >../.config/README <<EOF
1272 This directory created by Configure to save information that should
1273 persist across sessions.
1275 You may safely delete it if you wish.
1278 : general instructions
1281 user=`(logname) 2>/dev/null`
1283 user=`whoami 2>&1` ;;
1285 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1288 rp='Would you like to see the instructions?'
1299 This installation shell script will examine your system and ask you questions
1300 to determine how the perl5 package should be installed. If you get
1301 stuck on a question, you may use a ! shell escape to start a subshell or
1302 execute a command. Many of the questions will have default answers in square
1303 brackets; typing carriage return will give you the default.
1305 On some of the questions which ask for file or directory names you are allowed
1306 to use the ~name construct to specify the login directory belonging to "name",
1307 even if you don't have a shell which knows about that. Questions where this is
1308 allowed will be marked "(~name ok)".
1312 dflt='Type carriage return to continue'
1316 The prompter used in this script allows you to use shell variables and
1317 backticks in your answers. You may use $1, $2, etc... to refer to the words
1318 in the default answer, as if the default line was a set of arguments given to a
1319 script shell. This means you may also use $* to repeat the whole default line,
1320 so you do not have to re-type everything to add something to the default.
1322 Everytime there is a substitution, you will have to confirm. If there is an
1323 error (e.g. an unmatched backtick), the default answer will remain unchanged
1324 and you will be prompted again.
1326 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1327 the questions and use the computed defaults (or the previous answers if there
1328 was already a config.sh file). Type 'Configure -h' for a list of options.
1329 You may also start interactively and then answer '& -d' at any prompt to turn
1330 on the non-interactive behaviour for the remaining of the execution.
1336 Much effort has been expended to ensure that this shell script will run on any
1337 Unix system. If despite that it blows up on yours, your best bet is to edit
1338 Configure and run it again. If you can't run Configure for some reason,
1339 you'll have to generate a config.sh file by hand. Whatever problems you
1340 have, let me (doughera@lafcol.lafayette.edu) know how I blew it.
1342 This installation script affects things in two ways:
1344 1) it may do direct variable substitutions on some of the files included
1346 2) it builds a config.h file for inclusion in C programs. You may edit
1347 any of these files as the need arises after running this script.
1349 If you make a mistake on a question, there is no easy way to back up to it
1350 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1351 files. Configure will offer to let you do this before it runs the SH files.
1354 dflt='Type carriage return to continue'
1356 case "$firsttime" in
1357 true) echo $user >>../.config/instruct;;
1361 : find out where common programs are
1363 echo "Locating common programs..." >&4
1376 if test -d \$dir/\$thing; then
1382 for thisthing in \$dir/\$thing; do
1383 : just loop through to pick last item
1385 if test -f \$thisthing; then
1388 elif test -f \$dir/\$thing.exe; then
1389 : on Eunice apparently
1439 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1440 pth="$pth /lib /usr/lib"
1441 for file in $loclist; do
1442 xxx=`./loc $file $file $pth`
1447 echo $file is in $xxx.
1450 echo $file is in $xxx.
1453 echo "I don't know where '$file' is, and my life depends on it." >&4
1454 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1460 echo "Don't worry if any of the following aren't found..."
1462 for file in $trylist; do
1463 xxx=`./loc $file $file $pth`
1468 echo $file is in $xxx.
1471 echo $file is in $xxx.
1474 echo "I don't see $file out there, $say."
1481 echo "Substituting grep for egrep."
1487 echo "Substituting cp for ln."
1493 echo "Hopefully test is built into your sh."
1496 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1497 echo "Using the test built into your sh."
1505 echo "Hopefully echo is built into your sh."
1510 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1511 $echo $n "hi there$c" >foo1
1512 echo $n "hi there$c" >foo2
1513 if cmp foo1 foo2 >/dev/null 2>&1; then
1514 echo "They are compatible. In fact, they may be identical."
1521 They are not compatible! You are probably running ksh on a non-USG system.
1522 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1523 have echo built in and we may have to run some Bourne shell scripts. That
1524 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1527 $echo $n "The star should be here-->$c"
1534 : determine whether symbolic links are supported
1537 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1538 echo "Symbolic links are supported." >&4
1541 echo "Symbolic links are NOT supported." >&4
1546 : see whether [:lower:] and [:upper:] are supported character classes
1550 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1552 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1557 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1560 : set up the translation script tr, must be called with ./tr of course
1564 '[A-Z][a-z]') exec $tr '$up' '$low';;
1565 '[a-z][A-Z]') exec $tr '$low' '$up';;
1572 : Try to determine whether config.sh was made on this system
1573 case "$config_sh" in
1575 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1576 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1577 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1578 newmyuname="$myuname"
1580 case "$knowitall" in
1582 if test -f ../config.sh; then
1583 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1584 eval "`grep myuname= ../config.sh`"
1586 if test "X$myuname" = "X$newmyuname"; then
1594 : Get old answers from old config file if Configure was run on the
1595 : same system, otherwise use the hints.
1598 if test -f config.sh; then
1600 rp="I see a config.sh file. Shall I use it to set the defaults?"
1603 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1604 *) echo "Fetching default answers from your old config.sh file..." >&4
1612 : Older versions did not always set $sh. Catch re-use of such
1621 if test ! -f config.sh; then
1624 First time through, eh? I have some defaults handy for the following systems:
1627 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1629 : Half the following guesses are probably wrong... If you have better
1630 : tests or hints, please send them to doughera@lafcol.lafayette.edu
1631 : The metaconfig authors would also appreciate a copy...
1632 $test -f /irix && osname=irix
1633 $test -f /xenix && osname=sco_xenix
1634 $test -f /dynix && osname=dynix
1635 $test -f /dnix && osname=dnix
1636 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1637 $test -f /bin/mips && /bin/mips && osname=mips
1638 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1639 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1640 $test -d /usr/apollo/bin && osname=apollo
1641 $test -f /etc/saf/_sactab && osname=svr4
1642 $test -d /usr/include/minix && osname=minix
1643 if $test -d /MachTen; then
1645 if $test -x /sbin/version; then
1646 osvers=`/sbin/version | $awk '{print $2}' |
1647 $sed -e 's/[A-Za-z]$//'`
1648 elif $test -x /usr/etc/version; then
1649 osvers=`/usr/etc/version | $awk '{print $2}' |
1650 $sed -e 's/[A-Za-z]$//'`
1655 if $test -f $uname; then
1663 umips) osname=umips ;;
1666 [23]100) osname=mips ;;
1667 next*) osname=next ;;
1668 news*) osname=news ;;
1670 if $test -f /etc/kconfig; then
1672 if test "$lns" = "ln -s"; then
1674 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1676 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1685 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1687 'not found') osvers="$4"."$3" ;;
1688 '<3240'|'<>3240') osvers=3.2.0 ;;
1689 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1690 '=3250'|'>3250') osvers=3.2.5 ;;
1697 domainos) osname=apollo
1703 dynixptx*) osname=dynixptx
1706 freebsd) osname=freebsd
1708 genix) osname=genix ;;
1713 *.10.*) osvers=10 ;;
1730 netbsd*) osname=netbsd
1733 bsd386) osname=bsd386
1736 next*) osname=next ;;
1737 solaris) osname=solaris
1739 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1746 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1750 titanos) osname=titanos
1759 ultrix) osname=ultrix
1765 osvers=`echo "$3" | sed 's/^[vt]//'`
1767 hp*) osname=hp_osf1 ;;
1768 mips) osname=mips_osf1 ;;
1774 $2) case "$osname" in
1778 : svr4.x or possibly later
1788 if test -f /stand/boot ; then
1789 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1790 if test -n "$INITPROG" -a -f "$INITPROG"; then
1791 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1792 if test -n "$isesix"; then
1800 *) if test -f /etc/systemid; then
1802 set `echo $3 | $sed 's/\./ /g'` $4
1803 if $test -f sco_$1_$2_$3.sh; then
1805 elif $test -f sco_$1_$2.sh; then
1807 elif $test -f sco_$1.sh; then
1812 '') : Still unknown. Probably a generic Sys V.
1821 *) case "$osname" in
1822 '') : Still unknown. Probably a generic BSD.
1830 if test -f /vmunix -a -f news_os.sh; then
1831 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1832 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1835 $rm -f ../UU/kernel.what
1836 elif test -d c:/.; then
1843 : Now look for a hint file osname_osvers, unless one has been
1844 : specified already.
1847 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1848 : Also try without trailing minor version numbers.
1849 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1850 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1851 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1852 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1855 *) case "$osvers" in
1858 *) if $test -f $file.sh ; then
1860 elif $test -f $xfile.sh ; then
1862 elif $test -f $xxfile.sh ; then
1864 elif $test -f $xxxfile.sh ; then
1866 elif $test -f $xxxxfile.sh ; then
1868 elif $test -f "${osname}.sh" ; then
1879 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1885 You may give one or more space-separated answers, or "none" if appropriate.
1886 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1889 rp="Which of these apply, if any?"
1892 for file in $tans; do
1893 if $test -f $file.sh; then
1895 $cat $file.sh >> ../UU/config.sh
1896 elif $test X$tans = X -o X$tans = Xnone ; then
1899 : Give one chance to correct a possible typo.
1900 echo "$file.sh does not exist"
1902 rp="hint to use instead?"
1904 for file in $ans; do
1905 if $test -f "$file.sh"; then
1907 $cat $file.sh >> ../UU/config.sh
1908 elif $test X$ans = X -o X$ans = Xnone ; then
1911 echo "$file.sh does not exist -- ignored."
1918 : Remember our hint file for later.
1919 if $test -f "$file.sh" ; then
1931 echo "Fetching default answers from $config_sh..." >&4
1935 cp $config_sh config.sh 2>/dev/null
1945 test "$override" && . ./optdef.sh
1946 myuname="$newmyuname"
1948 : Restore computed paths
1949 for file in $loclist $trylist; do
1950 eval $file="\$_$file"
1955 Configure uses the operating system name and version to set some defaults.
1956 The default value is probably right if the name rings a bell. Otherwise,
1957 since spelling matters for me, either accept the default or answer "none"
1964 ''|' '|none) dflt=none ;;
1965 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1968 *) dflt="$osname" ;;
1970 rp="Operating system name?"
1974 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1980 ''|' '|none) dflt=none ;;
1981 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
1982 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
1984 ''|' ') dflt=none ;;
1989 *) dflt="$osvers" ;;
1991 rp="Operating system version?"
2000 : who configured the system
2001 cf_time=`$date 2>&1`
2002 cf_by=`(logname) 2>/dev/null`
2003 case "$cf_by" in "")
2004 cf_by=`(whoami) 2>/dev/null`
2005 case "$cf_by" in "")
2010 : determine the architecture name
2012 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2013 tarch=`arch`"-$osname"
2014 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2015 if uname -m > tmparch 2>&1 ; then
2016 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
2024 case "$myarchname" in
2027 echo "(Your architecture name used to be $myarchname.)"
2033 *) dflt="$archname";;
2035 rp='What is your architecture name'
2043 $define|true) afs=true ;;
2044 $undef|false) afs=false ;;
2045 *) if test -d /afs; then
2053 echo "AFS may be running... I'll be extra cautious then..." >&4
2055 echo "AFS does not seem to be running..." >&4
2058 : decide how portable to be. Allow command line overrides.
2059 case "$d_portable" in
2061 *) d_portable="$define" ;;
2064 : set up shell script to do ~ expansion
2070 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2073 if $test -f /bin/csh; then
2074 /bin/csh -f -c "glob \$1"
2079 name=\`$expr x\$1 : '..\([^/]*\)'\`
2080 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2081 if $test ! -d "\$dir"; then
2083 echo "\$me: can't locate home directory for: \$name" >&2
2088 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2104 : now set up to get a file name
2105 cat <<'EOSC' >getfile
2118 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2119 fn=`echo $fn | sed 's/(.*)//'`
2125 loc_file=`expr $fn : '.*:\(.*\)'`
2126 fn=`expr $fn : '\(.*\):.*'`
2134 */*) fullpath=true;;
2143 *e*) exp_file=true;;
2146 *p*) nopath_ok=true;;
2151 *d*) type='Directory';;
2152 *l*) type='Locate';;
2157 Locate) what='File';;
2162 case "$d_portable" in
2170 while test "$type"; do
2175 true) rp="$rp (~name ok)";;
2178 if test -f UU/getfile.ok && \
2179 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2198 value=`UU/filexp $ans`
2201 if test "$ans" != "$value"; then
2202 echo "(That expands to $value on this system.)"
2216 /*) value="$ansexp" ;;
2221 echo "I shall only accept a full path name, as in /bin/ls." >&4
2222 echo "Use a ! shell escape if you wish to check pathnames." >&4
2225 echo "Please give a full path name, starting with slash." >&4
2228 echo "Note that using ~name is ok provided it expands well." >&4
2241 if test -f "$ansexp"; then
2243 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2245 echo "($value is not a plain file, but that's ok.)"
2250 if test -d "$ansexp"; then
2255 if test -d "$ansexp"; then
2256 echo "(Looking for $loc_file in directory $value.)"
2257 value="$value/$loc_file"
2258 ansexp="$ansexp/$loc_file"
2260 if test -f "$ansexp"; then
2263 case "$nopath_ok" in
2264 true) case "$value" in
2266 *) echo "Assuming $value will be in people's path."
2282 if test "$fastread" = yes; then
2287 rp="$what $value doesn't exist. Use that name anyway?"
2308 : determine root of directory hierarchy where package will be installed.
2311 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2319 By default, $package will be installed in $dflt/bin, manual
2320 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2321 all installation directories. Typically set to /usr/local, but you
2322 may choose /usr if you wish to install $package among your system
2323 binaries. If you wish to have binaries under /bin but manual pages
2324 under /usr/local/man, that's ok: you will be prompted separately
2325 for each of the installation directories, the prefix being only used
2326 to set the defaults.
2330 rp='Installation prefix to use?'
2338 *) oldprefix="$prefix";;
2345 : set the prefixit variable, to compute a suitable default value
2346 prefixit='case "$3" in
2348 case "$oldprefix" in
2349 "") eval "$1=\"\$$2\"";;
2356 ""|" ") eval "$1=\"\$$2\"";;
2362 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2364 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2365 /*-$oldprefix/*|\~*-$oldprefix/*)
2366 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2367 *) eval "$1=\"\$$2\"";;
2371 : determine where private library files go
2372 : Usual default is /usr/local/lib/perl5. Also allow things like
2373 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2375 *perl*) set dflt privlib lib ;;
2376 *) set dflt privlib lib/$package ;;
2381 There are some auxiliary files for $package that need to be put into a
2382 private library directory that is accessible by everyone.
2386 rp='Pathname where the private library files will reside?'
2388 if $test "X$privlibexp" != "X$ansexp"; then
2392 privlibexp="$ansexp"
2396 Since you are running AFS, I need to distinguish the directory in which
2397 private files reside from the directory in which they are installed (and from
2398 which they are presumably copied to the former directory by occult means).
2401 case "$installprivlib" in
2402 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2403 *) dflt="$installprivlib";;
2406 rp='Where will private files be installed?'
2408 installprivlib="$ans"
2410 installprivlib="$privlibexp"
2413 : set the base revision
2416 : get the patchlevel
2418 echo "Getting the current patchlevel..." >&4
2419 if $test -r ../patchlevel.h;then
2420 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2421 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2426 echo "(You have $package $baserev patchlevel $patchlevel subversion $subversion.)"
2428 : set the prefixup variable, to restore leading tilda escape
2429 prefixup='case "$prefixexp" in
2431 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2434 : determine where public architecture dependent libraries go
2440 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2444 *) version=`LC_ALL=C;export LC_ALL;\
2445 echo $baserev $patchlevel $subversion | \
2446 $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
2447 dflt="$privlib/$archname/$version"
2451 *) dflt="$archlib";;
2455 $spackage contains architecture-dependent library files. If you are
2456 sharing libraries in a heterogeneous environment, you might store
2457 these files in a separate location. Otherwise, you can just include
2458 them with the rest of the public library files.
2462 rp='Where do you want to put the public architecture-dependent libraries?'
2465 archlibexp="$ansexp"
2470 Since you are running AFS, I need to distinguish the directory in which
2471 private files reside from the directory in which they are installed (and from
2472 which they are presumably copied to the former directory by occult means).
2475 case "$installarchlib" in
2476 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2477 *) dflt="$installarchlib";;
2480 rp='Where will architecture-dependent library files be installed?'
2482 installarchlib="$ans"
2484 installarchlib="$archlibexp"
2486 if $test X"$archlib" = X"$privlib"; then
2492 : set up the script used to warn in case of inconsistency
2496 echo "*** WHOA THERE!!! ***" >&4
2497 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2498 rp=" Keep the $hint value?"
2501 y) td=$was; tu=$was;;
2505 : function used to set $1 to $val
2506 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2508 $define$undef) . ./whoa; eval "$var=\$td";;
2509 $undef$define) . ./whoa; eval "$var=\$tu";;
2510 *) eval "$var=$val";;
2513 : make some quick guesses about what we are up against
2515 $echo $n "Hmm... $c"
2525 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2526 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2528 echo "Looks kind of like an OSF/1 system, but we'll see..."
2530 elif test `echo abc | tr a-z A-Z` = Abc ; then
2531 xxx=`./loc addbib blurfl $pth`
2532 if $test -f $xxx; then
2533 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2537 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2538 echo "Looks kind of like an extended USG system, but we'll see..."
2540 echo "Looks kind of like a USG system, but we'll see..."
2544 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2545 echo "Looks kind of like a BSD system, but we'll see..."
2549 echo "Looks kind of like a Version 7 system, but we'll see..."
2552 case "$eunicefix" in
2555 There is, however, a strange, musty smell in the air that reminds me of
2556 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2560 : it so happens the Eunice I know will not run shell scripts in Unix format
2564 echo "Congratulations. You aren't running Eunice."
2568 : Detect OS2. The p_ variable is set above in the Head.U unit.
2573 I have the feeling something is not exactly right, however...don't tell me...
2574 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2579 if test -f /xenix; then
2580 echo "Actually, this looks more like a XENIX system..."
2585 echo "It's not Xenix..."
2590 if test -f /venix; then
2591 echo "Actually, this looks more like a VENIX system..."
2598 echo "Nor is it Venix..."
2601 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2602 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2605 : see if setuid scripts can be secure
2608 Some kernels have a bug that prevents setuid #! scripts from being
2609 secure. Some sites have disabled setuid #! scripts because of this.
2611 First let's decide if your kernel supports secure setuid #! scripts.
2612 (If setuid #! scripts would be secure but have been disabled anyway,
2613 don't say that they are secure if asked.)
2618 if $test -d /dev/fd; then
2619 echo "#!$ls" >reflect
2620 chmod +x,u+s reflect
2621 ./reflect >flect 2>&1
2622 if $contains "/dev/fd" flect >/dev/null; then
2623 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2627 If you are not sure if they are secure, I can check but I'll need a
2628 username and password different from the one you are using right now.
2629 If you don't have such a username or don't want me to test, simply
2633 rp='Other username to test security of setuid scripts with?'
2638 case "$d_suidsafe" in
2639 '') echo "I'll assume setuid scripts are *not* secure." >&4
2642 echo "Well, the $hint value is *not* secure." >&4
2644 *) echo "Well, the $hint value *is* secure." >&4
2649 $rm -f reflect flect
2650 echo "#!$ls" >reflect
2651 chmod +x,u+s reflect
2654 echo '"su" will (probably) prompt you for '"$ans's password."
2655 su $ans -c './reflect >flect'
2656 if $contains "/dev/fd" flect >/dev/null; then
2657 echo "Okay, it looks like setuid scripts are secure." >&4
2660 echo "I don't think setuid scripts are secure." >&4
2665 rp='Does your kernel have *secure* setuid scripts?'
2668 [yY]*) val="$define";;
2673 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2674 echo "(That's for file descriptors, not floppy disks.)"
2680 $rm -f reflect flect
2682 : now see if they want to do setuid emulation
2685 case "$d_suidsafe" in
2688 echo "No need to emulate SUID scripts since they are secure here." >& 4
2692 Some systems have disabled setuid scripts, especially systems where
2693 setuid scripts cannot be secure. On systems where setuid scripts have
2694 been disabled, the setuid/setgid bits on scripts are currently
2695 useless. It is possible for $package to detect those bits and emulate
2696 setuid/setgid in a secure fashion. This emulation will only work if
2697 setuid scripts have been disabled in your kernel.
2701 "$define") dflt=y ;;
2704 rp="Do you want to do setuid/setgid emulation?"
2707 [yY]*) val="$define";;
2715 : determine where site specific libraries go.
2719 '') dflt="$privlib/site_perl" ;;
2720 *) dflt="$sitelib" ;;
2724 The installation process will also create a directory for
2725 site-specific extensions and modules. Some users find it convenient
2726 to place all local files in this directory rather than in the main
2727 distribution directory.
2731 rp='Pathname for the site-specific library files?'
2733 if $test "X$sitelibexp" != "X$ansexp"; then
2737 sitelibexp="$ansexp"
2741 Since you are running AFS, I need to distinguish the directory in which
2742 private files reside from the directory in which they are installed (and from
2743 which they are presumably copied to the former directory by occult means).
2746 case "$installsitelib" in
2747 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2748 *) dflt="$installsitelib";;
2751 rp='Where will private files be installed?'
2753 installsitelib="$ans"
2755 installsitelib="$sitelibexp"
2758 : determine where site specific architecture-dependent libraries go.
2759 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2760 : xxx is usuually lib/site_perl/archname.
2761 set sitearch sitearch none
2764 '') dflt="$sitelib/$archname" ;;
2765 *) dflt="$sitearch" ;;
2769 The installation process will also create a directory for
2770 architecture-dependent site-specific extensions and modules.
2774 rp='Pathname for the site-specific architecture-dependent library files?'
2776 if $test "X$sitearchexp" != "X$ansexp"; then
2780 sitearchexp="$ansexp"
2784 Since you are running AFS, I need to distinguish the directory in which
2785 private files reside from the directory in which they are installed (and from
2786 which they are presumably copied to the former directory by occult means).
2789 case "$installsitearch" in
2790 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2791 *) dflt="$installsitearch";;
2794 rp='Where will private files be installed?'
2796 installsitearch="$ans"
2798 installsitearch="$sitearchexp"
2801 : determine where old public architecture dependent libraries might be
2802 case "$oldarchlib" in
2803 '') case "$privlib" in
2805 *) dflt="$privlib/$archname"
2809 *) dflt="$oldarchlib"
2812 if $test ! -d "$dflt/auto"; then
2817 In 5.001, Perl stored architecture-dependent library files in a directory
2818 with a name such as $privlib/$archname,
2819 and this directory contained files from the standard extensions and
2820 files from any additional extensions you might have added. Starting
2821 with version 5.002, all the architecture-dependent standard extensions
2822 will go into a version-specific directory such as
2824 while locally-added extensions will go into
2827 If you wish Perl to continue to search the old architecture-dependent
2828 library for your local extensions, give the path to that directory.
2829 If you do not wish to use your old architecture-dependent library
2830 files, answer 'none'.
2834 rp='Directory for your old 5.001 architecture-dependent libraries?'
2837 oldarchlibexp="$ansexp"
2838 case "$oldarchlib" in
2839 ''|' ') val="$undef" ;;
2845 : determine where public executables go
2850 rp='Pathname where the public executables will reside?'
2852 if $test "X$ansexp" != "X$binexp"; then
2860 Since you are running AFS, I need to distinguish the directory in which
2861 executables reside from the directory in which they are installed (and from
2862 which they are presumably copied to the former directory by occult means).
2865 case "$installbin" in
2866 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2867 *) dflt="$installbin";;
2870 rp='Where will public executables be installed?'
2874 installbin="$binexp"
2877 : determine where manual pages are on this system
2881 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2882 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2883 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2884 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2885 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2886 sysman=`./loc . /usr/man/man1 $syspath`
2889 if $test -d "$sysman"; then
2890 echo "System manual is in $sysman." >&4
2892 echo "Could not find manual pages in source form." >&4
2895 : see what memory models we can support
2898 $cat >pdp11.c <<'EOP'
2907 cc -o pdp11 pdp11.c >/dev/null 2>&1
2908 if ./pdp11 2>/dev/null; then
2909 dflt='unsplit split'
2911 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2914 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2919 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2922 if $test -d /lib/large || $test -d /usr/lib/large; then
2925 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2934 Some systems have different model sizes. On most systems they are called
2935 small, medium, large, and huge. On the PDP11 they are called unsplit and
2936 split. If your system doesn't support different memory models, say "none".
2937 If you wish to force everything to one memory model, say "none" here and
2938 put the appropriate flags later when it asks you for other cc and ld flags.
2939 Venix systems may wish to put "none" and let the compiler figure things out.
2940 (In the following question multiple model names should be space separated.)
2943 rp="Which memory models are supported?"
2958 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2959 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2966 rp="What flag indicates separate I and D space?"
2974 *large*|*small*|*medium*|*huge*)
2981 rp="What flag indicates large model?"
2991 *huge*) case "$huge" in
2995 rp="What flag indicates huge model?"
3005 *medium*) case "$medium" in
3009 rp="What flag indicates medium model?"
3016 *) medium="$large";;
3019 *small*) case "$small" in
3023 rp="What flag indicates small model?"
3034 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3038 : see if we need a special compiler
3046 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3047 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3060 On some systems the default C compiler will not resolve multiple global
3061 references that happen to have the same name. On some such systems the "Mcc"
3062 command may be used to force these to be resolved. On other systems a "cc -M"
3063 command is required. (Note that the -M flag on other systems indicates a
3064 memory model to use!) If you have the Gnu C compiler, you might wish to use
3068 rp="What command will force resolution on this system?"
3076 rp="Use which C compiler?"
3081 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3082 $cat >gccvers.c <<EOM
3087 printf("%s\n", __VERSION__);
3089 printf("%s\n", "1");
3095 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3096 gccversion=`./gccvers`
3097 case "$gccversion" in
3098 '') echo "You are not using GNU cc." ;;
3099 *) echo "You are using GNU cc $gccversion." ;;
3103 echo "*** WHOA THERE!!! ***" >&4
3104 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3105 case "$knowitall" in
3107 echo " You'd better start hunting for one and let me know about it." >&4
3113 case "$gccversion" in
3114 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3117 : What should the include directory be ?
3119 $echo $n "Hmm... $c"
3123 if $test -f /bin/mips && /bin/mips; then
3124 echo "Looks like a MIPS system..."
3125 $cat >usr.c <<'EOCP'
3126 #ifdef SYSTYPE_BSD43
3130 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3131 dflt='/bsd43/usr/include'
3135 mips_type='System V'
3137 $rm -f usr.c usr.out
3138 echo "and you're compiling with the $mips_type compiler and libraries."
3142 echo "Doesn't look like a MIPS system."
3153 case "$xxx_prompt" in
3155 rp='Where are the include files you want to use?'
3163 : Set private lib path
3166 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3171 '') dlist="$loclibpth $plibpth $glibpth";;
3172 *) dlist="$libpth";;
3175 : Now check and see which directories actually exist, avoiding duplicates
3179 if $test -d $xxx; then
3182 *) libpth="$libpth $xxx";;
3188 Some systems have incompatible or broken versions of libraries. Among
3189 the directories listed in the question below, please remove any you
3190 know not to be holding relevant libraries, and add any that are needed.
3191 Say "none" for none.
3202 rp="Directories to use for library searches?"
3209 : compute shared library extension
3212 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3222 On some systems, shared libraries may be available. Answer 'none' if
3223 you want to suppress searching of shared libraries for the remaining
3224 of this configuration.
3227 rp='What is the file extension used for shared libraries?'
3231 : Looking for optional libraries
3233 echo "Checking for optional libraries..." >&4
3238 case "$libswanted" in
3239 '') libswanted='c_s';;
3241 for thislib in $libswanted; do
3243 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3244 echo "Found -l$thislib (shared)."
3247 *) dflt="$dflt -l$thislib";;
3249 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3250 echo "Found -l$thislib (shared)."
3253 *) dflt="$dflt -l$thislib";;
3255 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
3256 echo "Found -l$thislib."
3259 *) dflt="$dflt -l$thislib";;
3261 elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
3262 echo "Found -l$thislib."
3265 *) dflt="$dflt -l$thislib";;
3267 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
3268 echo "Found -l${thislib}_s."
3271 *) dflt="$dflt -l${thislib}_s";;
3273 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
3274 echo "Found -l$thislib."
3277 *) dflt="$dflt -l$thislib";;
3280 echo "No -l$thislib."
3291 ' '|'') dflt='none';;
3296 Some versions of Unix support shared libraries, which make executables smaller
3297 but make load time slightly longer.
3299 On some systems, mostly System V Release 3's, the shared library is included
3300 by putting the option "-lc_s" as the last thing on the cc command line when
3301 linking. Other systems use shared libraries by default. There may be other
3302 libraries needed to compile $package on your machine as well. If your system
3303 needs the "-lc_s" option, include it here. Include any other special libraries
3304 here as well. Say "none" for none.
3308 rp="Any additional libraries?"
3315 : see how we invoke the C preprocessor
3317 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3318 cat <<'EOT' >testcpp.c
3324 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3326 wrapper=`pwd`/cppstdin
3330 if $test "X$cppstdin" != "X" && \
3331 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3332 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3334 echo "You used to use $cppstdin $cppminus so we'll use that again."
3336 '') echo "But let's see if we can live without a wrapper..." ;;
3338 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3339 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3341 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3344 echo "(However, $cpprun $cpplast does not work, let's see...)"
3352 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3359 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3360 $cc -E <testcpp.c >testcpp.out 2>&1; \
3361 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3362 echo "Yup, it does."
3365 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3366 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3367 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3368 echo "Yup, it does."
3371 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3372 $cc -P <testcpp.c >testcpp.out 2>&1; \
3373 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3374 echo "Yipee, that works!"
3377 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3378 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3379 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3380 echo "At long last!"
3383 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3384 $cpp <testcpp.c >testcpp.out 2>&1; \
3385 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3389 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3390 $cpp - <testcpp.c >testcpp.out 2>&1; \
3391 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3392 echo "Hooray, it works! I was beginning to wonder."
3395 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3396 $wrapper <testcpp.c >testcpp.out 2>&1; \
3397 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3403 rp="No dice. I can't find a C preprocessor. Name one:"
3407 $x_cpp <testcpp.c >testcpp.out 2>&1
3408 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3409 echo "OK, that will do." >&4
3411 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3426 echo "Perhaps can we force $cc -E using a wrapper..."
3427 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3428 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3434 echo "Nope, we'll have to live without it..."
3449 *) $rm -f $wrapper;;
3451 $rm -f testcpp.c testcpp.out
3453 : determine optimize, if desired, or use for debug flag also
3457 *) dflt="$optimize";;
3461 Some C compilers have problems with their optimizers. By default, $package
3462 compiles with the -O flag to use the optimizer. Alternately, you might want
3463 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3464 systems). Either flag can be specified here. To use neither flag, specify
3468 rp="What optimizer/debugger flag should be used?"
3472 'none') optimize=" ";;
3476 : We will not override a previous value, but we might want to
3477 : augment a hint file
3480 case "$gccversion" in
3481 1*) dflt='-fpcc-struct-return' ;;
3484 *-g*) dflt="$dflt -DDEBUGGING";;
3486 case "$gccversion" in
3487 2*) if test -d /etc/conf/kconfig.d &&
3488 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3497 case "$mips_type" in
3498 *BSD*|'') inclwanted="$locincpth $usrinc";;
3499 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3501 for thisincl in $inclwanted; do
3502 if $test -d $thisincl; then
3503 if $test x$thisincl != x$usrinc; then
3506 *) dflt="$dflt -I$thisincl";;
3512 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3514 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3522 *) dflt="$dflt -D$2";;
3527 set signal.h __LANGUAGE_C__; eval $inctest
3529 set signal.h LANGUAGE_C; eval $inctest
3531 set signal.h NO_PROTOTYPE; eval $inctest
3532 set signal.h _NO_PROTO; eval $inctest
3535 none|recommended) dflt="$ccflags $dflt" ;;
3536 *) dflt="$ccflags";;
3544 Your C compiler may want other flags. For this question you should include
3545 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3546 but you should NOT include libraries or ld flags like -lwhatever. If you
3547 want $package to honor its debug switch, you should include -DDEBUGGING here.
3548 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3549 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3551 To use no flags, specify the word "none".
3557 rp="Any additional cc flags?"
3564 : the following weeds options from ccflags that are of no interest to cpp
3566 case "$gccversion" in
3567 1*) cppflags="$cppflags -D__GNUC__"
3569 case "$mips_type" in
3571 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3577 echo "Let me guess what the preprocessor flags are..." >&4
3591 *) ftry="$previous $flag";;
3593 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3594 >cpp1.out 2>/dev/null && \
3595 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3596 >cpp2.out 2>/dev/null && \
3597 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3598 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3600 cppflags="$cppflags $ftry"
3610 *-*) echo "They appear to be: $cppflags";;
3612 $rm -f cpp.c cpp?.out
3616 : flags used in final linking phase
3619 '') if ./venix; then
3625 *-posix*) dflt="$dflt -posix" ;;
3628 *) dflt="$ldflags";;
3631 : Try to guess additional flags to pick up local libraries.
3632 for thislibdir in $libpth; do
3633 case " $loclibpth " in
3636 *"-L$thislibdir "*) ;;
3637 *) dflt="$dflt -L$thislibdir" ;;
3649 Your C linker may need flags. For this question you should
3650 include -L/whatever and any other flags used by the C linker, but you
3651 should NOT include libraries like -lwhatever.
3653 Make sure you include the appropriate -L/path flags if your C linker
3654 does not normally search all of the directories you specified above,
3657 To use no flags, specify the word "none".
3661 rp="Any additional ld flags (NOT including libraries)?"
3667 rmlist="$rmlist pdp11"
3671 echo "Checking your choice of C compiler and flags for coherency..." >&4
3672 set X $cc $optimize $ccflags $ldflags try.c -o try
3675 I've tried to compile and run a simple program with:
3680 and I got the following output:
3683 $cat > try.c <<'EOF'
3688 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
3689 if sh -c './try' >>try.msg 2>&1; then
3692 echo "The program compiled OK, but exited with status $?." >>try.msg
3693 rp="You have a problem. Shall I abort Configure"
3697 echo "I can't compile the test program." >>try.msg
3698 rp="You have a BIG problem. Shall I abort Configure"
3704 case "$knowitall" in
3706 echo "(The supplied flags might be incorrect with this C compiler.)"
3714 *) echo "Ok. Stopping Configure." >&4
3719 n) echo "OK, that should do.";;
3721 $rm -f try try.* core
3724 echo "Checking for GNU C Library..." >&4
3725 cat >gnulibc.c <<EOM
3729 return __libc_main();
3732 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3733 ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3735 echo "You are using the GNU C Library"
3738 echo "You are not using the GNU C Library"
3744 : see if nm is to be used to determine whether a symbol is defined or not
3747 case "$d_gnulibc" in
3752 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3753 if $test $dflt -gt 20; then
3770 I can use 'nm' to extract the symbols from your C libraries. This is a time
3771 consuming task which may generate huge output on the disk (up to 3 megabytes)
3772 but that should make the symbols extraction faster. The alternative is to skip
3773 the 'nm' extraction part and to compile a small test program instead to
3774 determine whether each symbol is present. If you have a fast C compiler and/or
3775 if your 'nm' output cannot be parsed, this may be the best solution.
3776 You shouldn't let me use 'nm' if you have the GNU C Library.
3779 rp='Shall I use nm to extract C symbols from the libraries?'
3791 : nm options which may be necessary
3793 '') if $test -f /mach_boot; then
3795 elif $test -d /usr/ccs/lib; then
3797 elif $test -f /dgux; then
3804 : nm options which may be necessary for shared libraries but illegal
3805 : for archive libraries. Thank you, Linux.
3806 case "$nm_so_opt" in
3807 '') case "$myuname" in
3809 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3810 nm_so_opt='--dynamic'
3819 : get list of predefined functions in a handy place
3824 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
3831 *) for thislib in $libs; do
3834 : Handle C library specially below.
3837 thislib=`echo $thislib | $sed -e 's/^-l//'`
3838 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3840 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3842 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
3844 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3846 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3848 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
3853 libnames="$libnames $try"
3855 *) libnames="$libnames $thislib" ;;
3864 for xxx in $libpth; do
3865 $test -r $1 || set $xxx/libc.$so
3866 : The messy sed command sorts on library version numbers.
3868 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3869 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3871 s/[0-9][0-9]*/0000&/g
3872 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3875 sort | $sed -e 's/^.* //'`
3878 $test -r $1 || set /usr/ccs/lib/libc.$so
3879 $test -r $1 || set /lib/libsys_s.a
3885 if $test -r "$1"; then
3886 echo "Your (shared) C library seems to be in $1."
3888 elif $test -r /lib/libc && $test -r /lib/clib; then
3889 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3891 libc='/lib/clib /lib/libc'
3892 if $test -r /lib/syslib; then
3893 echo "(Your math library is in /lib/syslib.)"
3894 libc="$libc /lib/syslib"
3896 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3897 echo "Your C library seems to be in $libc, as you said before."
3898 elif $test -r $incpath/usr/lib/libc.a; then
3899 libc=$incpath/usr/lib/libc.a;
3900 echo "Your C library seems to be in $libc. That's fine."
3901 elif $test -r /lib/libc.a; then
3903 echo "Your C library seems to be in $libc. You're normal."
3905 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
3907 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3908 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3909 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3911 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3913 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3916 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
3918 if $test -r "$tans"; then
3919 echo "Your C library seems to be in $tans, of all places."
3925 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3929 If the guess above is wrong (which it might be if you're using a strange
3930 compiler, or your machine supports multiple models), you can override it here.
3935 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
3937 I can't seem to find your C library. I've looked in the following places:
3940 $sed 's/^/ /' libpath
3943 None of these seems to contain your C library. I need to get its name...
3948 rp='Where is your C library?'
3953 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
3954 set X `cat libnames`
3957 case $# in 1) xxx=file; esac
3958 echo "Extracting names from the following $xxx for later perusal:" >&4
3960 $sed 's/^/ /' libnames >&4
3962 $echo $n "This may take a while...$c" >&4
3964 : Linux may need the special Dynamic option to nm for shared libraries.
3965 : In general, this is stored in the nm_so_opt variable.
3966 : Unfortunately, that option may be fatal on non-shared libraries.
3967 for nm_libs_ext in $*; do
3968 case $nm_libs_ext in
3969 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
3970 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
3975 $grep fprintf libc.tmp > libc.ptf
3976 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
3977 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
3979 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
3981 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3983 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
3985 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3987 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
3989 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3991 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
3993 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3995 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
3997 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3999 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4001 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4003 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4004 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4006 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4008 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4010 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4012 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4014 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4016 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4018 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4020 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4022 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4025 nm -p $* 2>/dev/null >libc.tmp
4026 $grep fprintf libc.tmp > libc.ptf
4027 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4028 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4034 echo "nm didn't seem to work right. Trying ar instead..." >&4
4036 if ar t $libc > libc.tmp; then
4037 for thisname in $libnames; do
4038 ar t $thisname >>libc.tmp
4040 $sed -e 's/\.o$//' < libc.tmp > libc.list
4043 echo "ar didn't seem to work right." >&4
4044 echo "Maybe this is a Cray...trying bld instead..." >&4
4045 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4047 for thisname in $libnames; do
4049 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4050 ar t $thisname >>libc.tmp
4054 echo "That didn't work either. Giving up." >&4
4061 if $test -f /lib/syscalls.exp; then
4063 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4064 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4068 $rm -f libnames libpath
4070 : Define several unixisms. Hints files or command line options
4071 : can be used to override them.
4084 : Which makefile gets called first. This is used by make depend.
4085 case "$firstmakefile" in
4086 '') firstmakefile='makefile';;
4089 : determine filename position in cpp output
4091 echo "Computing filename position in cpp output for #include directives..." >&4
4092 echo '#include <stdio.h>' > foo.c
4095 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4096 $grep '^[ ]*#.*stdio\.h' | \
4097 while read cline; do
4100 while $test \$# -gt 0; do
4101 if $test -r \`echo \$1 | $tr -d '"'\`; then
4106 pos=\`expr \$pos + 1\`
4118 *) pos="${fieldn}th";;
4120 echo "Your cpp writes the filename in the $pos field of the line."
4122 : locate header file
4127 if test -f $usrinc/\$wanted; then
4128 echo "$usrinc/\$wanted"
4131 awkprg='{ print \$$fieldn }'
4132 echo "#include <\$wanted>" > foo\$\$.c
4133 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4134 $grep "^[ ]*#.*\$wanted" | \
4135 while read cline; do
4136 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4138 */\$wanted) echo "\$name"; exit 0;;
4149 : define an alternate in-header-list? function
4150 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4151 cont=true; xxf="echo \"<\$1> found.\" >&4";
4152 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4153 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4155 case $# in 4) instead=instead;; *) instead="at last";; esac;
4156 while $test "$cont"; do
4158 var=$2; eval "was=\$$2";
4159 if $test "$xxx" && $test -r "$xxx";
4161 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4164 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4165 set $yyy; shift; shift; yyy=$@;
4166 case $# in 0) cont="";;
4167 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4168 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4169 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4170 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4174 do set $yyy; var=$2; eval "was=\$$2";
4175 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4176 set $yyy; shift; shift; yyy=$@;
4179 : see if dld is available
4183 : is a C symbol defined?
4186 -v) tf=libc.tmp; tc=""; tdc="";;
4187 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4188 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4191 case "$reuseval-$4" in
4193 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4199 if $contains $tlook $tf >/dev/null 2>&1;
4204 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4205 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4213 $define) tval=true;;
4219 : define an is-in-libc? function
4220 inlibc='echo " "; td=$define; tu=$undef;
4221 sym=$1; var=$2; eval "was=\$$2";
4223 case "$reuseval$was" in
4233 echo "$sym() found." >&4;
4234 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4236 echo "$sym() NOT found." >&4;
4237 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4241 $define) echo "$sym() found." >&4;;
4242 *) echo "$sym() NOT found." >&4;;
4246 : see if dlopen exists
4253 : determine which dynamic loading, if any, to compile in
4255 dldir="ext/DynaLoader"
4268 $define) dflt='y' ;;
4271 $define) dflt='y' ;;
4273 : Does a dl_xxx.xs file exist for this operating system
4274 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4277 rp="Do you wish to use dynamic loading?"
4284 if $test -f ../$dldir/dl_${osname}.xs ; then
4285 dflt="$dldir/dl_${osname}.xs"
4286 elif $test "$d_dlopen" = "$define" ; then
4287 dflt="$dldir/dl_dlopen.xs"
4288 elif $test "$i_dld" = "$define" ; then
4289 dflt="$dldir/dl_dld.xs"
4294 *) dflt="$dldir/$dlsrc"
4297 echo "The following dynamic loading files are available:"
4298 : Can not go over to $dldir because getfile has path hard-coded in.
4299 cd ..; ls -C $dldir/dl*.xs; cd UU
4300 rp="Source file to use for dynamic loading"
4305 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4309 Some systems may require passing special flags to $cc -c to
4310 compile modules that will be used to create a shared library.
4311 To use no flags, say "none".
4314 case "$cccdlflags" in
4315 '') case "$gccversion" in
4316 '') case "$osname" in
4318 next) dflt='none' ;;
4319 solaris|svr4*|esix*) dflt='-Kpic' ;;
4320 irix*) dflt='-KPIC' ;;
4321 sunos) dflt='-pic' ;;
4326 *) dflt="$cccdlflags" ;;
4328 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4331 none) cccdlflags=' ' ;;
4332 *) cccdlflags="$ans" ;;
4337 Some systems use ld to create libraries that can be dynamically loaded,
4338 while other systems (such as those using ELF) use $cc.
4342 '') $cat >try.c <<'EOM'
4343 /* Test for whether ELF binaries are produced */
4348 int i = open("a.out",O_RDONLY);
4351 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4352 exit(0); /* succeed (yes, it's ELF) */
4357 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4359 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4363 echo "I'll use ld to build dynamic libraries."
4372 rp="What command should be used to create dynamic libraries?"
4378 Some systems may require passing special flags to $ld to create a
4379 library that can be dynamically loaded. If your ld flags include
4380 -L/other/path options to locate libraries outside your loader's normal
4381 search path, you may need to specify those -L options here as well. To
4382 use no flags, say "none".
4385 case "$lddlflags" in
4386 '') case "$osname" in
4388 linux|irix*) dflt='-shared' ;;
4389 next) dflt='none' ;;
4390 solaris) dflt='-G' ;;
4391 sunos) dflt='-assert nodefinitions' ;;
4392 svr4*|esix*) dflt="-G $ldflags" ;;
4396 *) dflt="$lddlflags" ;;
4399 : Try to guess additional flags to pick up local libraries.
4400 for thisflag in $ldflags; do
4405 *) dflt="$dflt $thisflag" ;;
4415 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4418 none) lddlflags=' ' ;;
4419 *) lddlflags="$ans" ;;
4424 Some systems may require passing special flags to $cc to indicate that
4425 the resulting executable will use dynamic linking. To use no flags,
4429 case "$ccdlflags" in
4430 '') case "$osname" in
4431 hpux) dflt='-Wl,-E' ;;
4432 linux) dflt='-rdynamic' ;;
4433 next) dflt='none' ;;
4434 sunos) dflt='none' ;;
4437 *) dflt="$ccdlflags" ;;
4439 rp="Any special flags to pass to $cc to use dynamic loading?"
4442 none) ccdlflags=' ' ;;
4443 *) ccdlflags="$ans" ;;
4457 # No dynamic loading being used, so don't bother even to prompt.
4460 *) case "$useshrplib" in
4461 '') case "$osname" in
4462 svr4|dgux|dynixptx|esix|powerux)
4464 also='Building a shared libperl is required for dynamic loading to work on your system.'
4469 also='Building a shared libperl is needed for MAB support.'
4477 also='Building a shared libperl will definitely not work on SunOS 4.'
4491 The perl executable is normally obtained by linking perlmain.c with
4492 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4493 any other libraries needed on this system (such as -lm, etc.). Since
4494 your system supports dynamic loading, it is probably possible to build
4495 a shared libperl.$so. If you will have more than one executable linked
4496 to libperl.$so, this will significantly reduce the size of each
4497 executable, but it may have a noticeable affect on performance. The
4498 default is probably sensible for your system.
4502 rp="Build a shared libperl.$so (y/n)"
4507 # Why does next4 have to be so different?
4508 case "${osname}${osvers}" in
4509 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4510 *) xxx='LD_LIBRARY_PATH' ;;
4514 To build perl, you must add the current working directory to your
4515 $xxx environtment variable before running make. You can do
4517 $xxx=\`pwd\`; export $xxx
4518 for Bourne-style shells, or
4520 for Csh-style shells. You *MUST* do this before running make.
4524 *) useshrplib='false' ;;
4529 case "$useshrplib" in
4533 # Figure out a good name for libperl.so. Since it gets stored in
4534 # a version-specific architecture-dependent library, the version
4535 # number isn't really that important, except for making cc/ld happy.
4537 # A name such as libperl.so.3.1
4538 majmin="libperl.$so.$patchlevel.$subversion"
4539 # A name such as libperl.so.301
4540 majonly=`echo $patchlevel $subversion |
4541 $awk '{printf "%d%02d", $1, $2}'`
4542 majonly=libperl.$so.$majonly
4543 # I'd prefer to keep the os-specific stuff here to a minimum, and
4544 # rely on figuring it out from the naming of libc.
4545 case "${osname}${osvers}" in
4548 # XXX How handle the --version stuff for MAB?
4550 linux*) # ld won't link with a bare -lperl otherwise.
4553 *) # Try to guess based on whether libc has major.minor.
4555 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4556 *libc.$so.[0-9]*) dflt=$majonly ;;
4557 *) dflt=libperl.$so ;;
4567 I need to select a good name for the shared libperl. If your system uses
4568 library names with major and minor numbers, then you might want something
4569 like $majmin. Alternatively, if your system uses a single version
4570 number for shared libraries, then you might want to use $majonly.
4571 Or, your system might be quite happy with a simple libperl.$so.
4573 Since the shared libperl will get installed into a version-specific
4574 architecture-dependent directory, the version number of the shared perl
4575 library probably isn't important, so the default should be o.k.
4578 rp='What name do you want to give to the shared libperl?'
4581 echo "Ok, I'll use $libperl"
4584 libperl="libperl${lib_ext}"
4588 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4592 WARNING: Use of the shrpdir variable for the installation location of
4593 the shared $libperl is not supported. It was never documented and
4594 will not work in this version. Let me (doughera@lafcol.lafayette.edu)
4595 know of any problems this may cause.
4601 But your current setting of $shrpdir is
4602 the default anyway, so it's harmless.
4607 Further, your current attempted setting of $shrpdir
4608 conflicts with the value of $archlibexp/CORE
4609 that installperl will use.
4616 # How will the perl executable find the installed shared $libperl?
4617 # Add $xxx to ccdlflags.
4618 # If we can't figure out a command-line option, use $shrpenv to
4619 # set env LD_RUN_PATH. The main perl makefile uses this.
4620 shrpdir=$archlibexp/CORE
4623 if "$useshrplib"; then
4629 xxx="-Wl,-rpath,$shrpdir"
4632 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
4637 *) ccdlflags="$ccdlflags $xxx"
4640 Adding $xxx to the flags
4641 passed to $ld so that the perl executable will find the
4642 installed shared $libperl.
4648 # Respect a hint or command-line value.
4650 '') shrpenv="$tmp_shrpenv" ;;
4653 : determine where manual pages go
4654 set man1dir man1dir none
4658 $spackage has manual pages available in source form.
4662 echo "However, you don't have nroff, so they're probably useless to you."
4664 '') man1dir="none";;
4667 echo "If you don't want the manual sources installed, answer 'none'."
4672 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
4673 lookpath="$lookpath $prefixexp/man/p_man/man1"
4674 lookpath="$lookpath $prefixexp/man/u_man/man1"
4675 lookpath="$lookpath $prefixexp/man/man.1"
4676 : If prefix contains 'perl' then we want to keep the man pages
4677 : under the prefix directory. Otherwise, look in a variety of
4678 : other possible places. This is debatable, but probably a
4679 : good compromise. Well, apparently not.
4680 : Experience has shown people expect man1dir to be under prefix,
4681 : so we now always put it there. Users who want other behavior
4682 : can answer interactively or use a command line option.
4683 : Does user have System V-style man paths.
4685 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
4686 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
4696 rp="Where do the main $spackage manual pages (source) go?"
4698 if $test "X$man1direxp" != "X$ansexp"; then
4702 man1direxp="$ansexp"
4710 Since you are running AFS, I need to distinguish the directory in which
4711 manual pages reside from the directory in which they are installed (and from
4712 which they are presumably copied to the former directory by occult means).
4715 case "$installman1dir" in
4716 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
4717 *) dflt="$installman1dir";;
4720 rp='Where will man pages be installed?'
4722 installman1dir="$ans"
4724 installman1dir="$man1direxp"
4727 : What suffix to use on installed man pages
4734 rp="What suffix should be used for the main $spackage man pages?"
4736 '') case "$man1dir" in