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 Tue Dec 17 14:33:33 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 :-]
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
614 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
617 : We must find out about Eunice early
619 if test -f /etc/unixtovms; then
620 eunicefix=/etc/unixtovms
622 if test -f /etc/unixtovms.exe; then
623 eunicefix=/etc/unixtovms.exe
626 : list of known cpp symbols, sorted alphabetically
627 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
628 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
629 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
630 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
631 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
632 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
633 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
634 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
635 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
636 al="$al VMS Xenix286"
637 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
638 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
639 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
640 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
641 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
642 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
643 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
644 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
645 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
646 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
647 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
648 al="$al __SVR4_2__ __UMAXV__"
649 al="$al ____386BSD____ __alpha __alpha__ __amiga"
650 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
651 al="$al __host_mips__"
652 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
653 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
654 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
655 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
656 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
657 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
658 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
659 al="$al __mc88100 __mc88100__ __mips __mips__"
660 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
661 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
662 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
663 al="$al _host_mips _mips _unix"
664 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
665 al="$al apollo ardent att386 att3b"
666 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
667 al="$al cadmus clipper concurrent convex cray ctix"
668 al="$al dmert encore gcos gcx gimpel gould"
669 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
670 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
671 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
672 al="$al i186 i286 i386 i486 i8086"
673 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
674 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
675 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
676 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
677 al="$al mc88000 mc88100 merlin mert mips mvs n16"
678 al="$al ncl_el ncl_mr"
679 al="$al news1500 news1700 news1800 news1900 news3700"
680 al="$al news700 news800 news900 ns16000 ns32000"
681 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
682 al="$al parisc pc532 pdp11 plexus posix pyr"
683 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
684 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
685 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
686 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
687 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
688 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
693 : default library list
695 : set useposix=false in your hint file to disable the POSIX extension.
697 : set useopcode=false in your hint file to disable the Opcode extension.
699 : Define several unixisms. These can be used in hint files.
701 : Extra object files, if any, needed on this platform.
703 : Possible local include directories to search.
704 : Set locincpth to "" in a hint file to defeat local include searches.
705 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
706 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
708 : no include file wanted by default
711 : change the next line if compiling for Xenix/286 on Xenix/386
712 xlibpth='/usr/lib/386 /lib/386'
714 : Possible local library directories to search.
715 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
716 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
718 : general looking path for locating libraries
719 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
720 glibpth="$glibpth /lib /usr/lib $xlibpth"
721 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
722 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
724 : Private path used by Configure to find libraries. Its value
725 : is prepended to libpth. This variable takes care of special
726 : machines, like the mips. Usually, it should be empty.
729 : full support for void wanted by default
732 : List of libraries we want.
733 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
734 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
735 libswanted="$libswanted ucb bsd BSD PW x"
736 : We probably want to search /usr/shlib before most other libraries.
737 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
738 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
739 glibpth="/usr/shlib $glibpth"
740 : Do not use vfork unless overridden by a hint file.
743 : Find the basic shell for Bourne shell scripts
746 : SYSTYPE is for some older MIPS systems.
747 : I do not know if it is still needed.
749 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
752 if test -f "$xxx"; then
755 : Build up a list and do a single loop so we can 'break' out.
756 pth=`echo $PATH | sed -e "s/$p_/ /g"`
757 for xxx in sh bash ksh pdksh ash; do
759 try="$try ${p}/${xxx}"
763 if test -f "$xxx"; then
765 echo "Your Bourne shell appears to be in $sh."
767 elif test -f "$xxx.exe"; then
769 echo "Hmm. Your Bourne shell appears to be in $sh."
779 $me: Fatal Error: I can't find a Bourne Shell anywhere.
780 Usually it's in /bin/sh. How did you even get this far?
781 Please contact me (Chip Salzenberg) at chip@atlantic.net and
782 we'll try to straigten this all out.
788 : see if sh knows # comments
789 if `$sh -c '#' >/dev/null 2>&1`; then
794 test -f $xcat || xcat=/usr/bin/cat
799 if test -s today; then
802 echo "#! $xcat" > try
806 if test -s today; then
809 echo "Okay, let's see if #! works on this system..."
810 echo "It's just a comment."
815 echo "Your $sh doesn't grok # comments--I will strip them later on."
818 echo "exec grep -v '^[ ]*#'" >spitshell
821 spitshell=`pwd`/spitshell
823 echo "I presume that if # doesn't work, #! won't work either!"
828 : figure out how to guarantee sh startup
830 '') startsh=${sharpbang}${sh} ;;
842 : echo "Yup, it does."
844 echo "Hmm. '$startsh' didn't work."
845 echo "You may have to fix up the shell scripts to make sure sh runs them."
849 : script used to extract .SH files with variable substitutions
853 cat >>extract <<'EOS'
855 echo "Doing variable substitutions on .SH files..."
856 if test -f MANIFEST; then
857 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
858 : Pick up possible extension manifests.
859 for dir in ext/* ; do
860 if test -f $dir/MANIFEST; then
861 xxx=`awk '{print $1}' < $dir/MANIFEST |
862 sed -n "/\.SH$/ s@^@$dir/@p"`
863 shlist="$shlist $xxx"
868 echo "(Looking for .SH files under the current directory.)"
869 set x `find . -name "*.SH" -print`
873 0) set x *.SH; shift;;
875 if test ! -f $1; then
881 dir=`expr X$file : 'X\(.*\)/'`
882 file=`expr X$file : 'X.*/\(.*\)'`
883 (cd $dir && . ./$file)
890 if test -f config_h.SH; then
891 if test ! -f config.h; then
892 : oops, they left it out of MANIFEST, probably, so do it anyway.
898 : produce awk script to parse command line options
899 cat >options.awk <<'EOF'
901 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
903 len = length(optstr);
904 for (i = 1; i <= len; i++) {
905 c = substr(optstr, i, 1);
906 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
917 if (substr(str, 1, 1) != "-") {
918 printf("'%s'\n", str);
922 for (i = 2; i <= len; i++) {
923 c = substr(str, i, 1);
925 printf("-%s\n", substr(str, i));
931 printf("'%s'\n", substr(str, i + 1));
944 : process the command line options
945 set X `for arg in "$@"; do echo "X$arg"; done |
946 sed -e s/X// | awk -f options.awk`
951 : set up default values
964 while test $# -gt 0; do
966 -d) shift; fastread=yes;;
967 -e) shift; alldone=cont;;
971 if test -r "$1"; then
974 echo "$me: cannot read config file $1." >&2
979 -h) shift; error=true;;
980 -r) shift; reuseval=true;;
981 -s) shift; silent=true;;
982 -E) shift; alldone=exit;;
983 -K) shift; knowitall=true;;
984 -O) shift; override=true;;
985 -S) shift; extractsh=true;;
990 echo "$me: use '-U symbol=', not '-D symbol='." >&2
991 echo "$me: ignoring -D $1" >&2
994 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
995 *) echo "$1='define'" >> optdef.sh;;
1002 *=) echo "$1" >> optdef.sh;;
1004 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1005 echo "$me: ignoring -U $1" >&2
1007 *) echo "$1='undef'" >> optdef.sh;;
1011 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1014 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1022 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1023 [-U symbol] [-U symbol=]
1024 -d : use defaults for all answers.
1025 -e : go on without questioning past the production of config.sh.
1026 -f : specify an alternate default configuration file.
1027 -h : print this help message and exit (with an error status).
1028 -r : reuse C symbols value if possible (skips costly nm extraction).
1029 -s : silent mode, only echoes questions and essential information.
1030 -D : define symbol to have some value:
1031 -D symbol symbol gets the value 'define'
1032 -D symbol=value symbol gets the value 'value'
1033 -E : stop at the end of questions, after having produced config.sh.
1034 -K : do not use unless you know what you are doing.
1035 -O : let -D and -U override definitions from loaded configuration file.
1036 -S : perform variable substitutions on all .SH files (can mix with -f)
1037 -U : undefine symbol:
1038 -U symbol symbol gets the value 'undef'
1039 -U symbol= symbol gets completely empty
1040 -V : print version number and exit (with a zero status).
1048 true) exec 1>/dev/null;;
1051 : run the defines and the undefines, if any, but leave the file out there...
1055 case "$extractsh" in
1057 case "$config_sh" in
1058 '') config_sh='config.sh'; config='./config.sh';;
1059 /*) config="$config_sh";;
1060 *) config="./$config_sh";;
1063 echo "Fetching answers from $config_sh..."
1066 test "$override" && . ./optdef.sh
1077 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1078 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1079 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1080 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1081 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1084 : Eunice requires " " instead of "", can you believe it
1087 echo "Beginning of configuration questions for $package."
1089 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1091 : Some greps do not return status, grrr.
1092 echo "grimblepritz" >grimble
1093 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1095 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1101 : the following should work in any shell
1105 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1106 cat >contains <<'EOSS'
1107 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1112 : first determine how to suppress newline on echo command
1114 echo "Checking echo to see how to suppress newlines..."
1115 (echo "hi there\c" ; echo " ") >.echotmp
1116 if $contains c .echotmp >/dev/null 2>&1 ; then
1127 echo $n "The star should be here-->$c"
1131 : Now test for existence of everything in MANIFEST
1133 if test -f ../MANIFEST; then
1134 echo "First let's make sure your kit is complete. Checking..." >&4
1135 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1137 for filelist in x??; do
1138 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1140 if test -s missing; then
1144 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1146 You have the option of continuing the configuration process, despite the
1147 distinct possibility that your kit is damaged, by typing 'y'es. If you
1148 do, don't blame me if something goes wrong. I advise you to type 'n'o
1149 and contact the author (chip@atlantic.net).
1152 echo $n "Continue? [n] $c" >&4
1156 echo "Continuing..." >&4
1160 echo "ABORTING..." >&4
1165 echo "Looks good..." >&4
1168 echo "There is no MANIFEST file. I hope your kit is complete !"
1172 : compute the number of columns on the terminal for proper question formatting
1177 : set up the echo used in my read
1178 myecho="case \"\$xxxm\" in
1179 '') echo $n \"\$rp $c\" >&4;;
1181 '') echo $n \"[\$xxxm] $c\";;
1183 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1185 echo $n \"[\$xxxm] $c\" >&4
1187 echo $n \"\$rp [\$xxxm] $c\" >&4
1193 : now set up to do reads with possible shell escape and default assignment
1198 case "\$fastread" in
1199 yes) case "\$dflt" in
1202 case "\$silent-\$rp" in
1207 *) case "\$silent" in
1208 true) case "\$rp" in
1213 while expr "X\$ans" : "X!" >/dev/null; do
1217 aok=''; eval "ans=\"\$answ\"" && aok=y
1222 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1227 echo "(OK, I'll run with -d after this question.)" >&4
1230 echo "*** Sorry, \$1 not supported yet." >&4
1242 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1252 echo "*** Substitution done -- please confirm."
1254 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1259 echo "*** Error -- try again."
1266 case "\$ans\$xxxm\$nostick" in
1278 : create .config dir to save info across Configure sessions
1279 test -d ../.config || mkdir ../.config
1280 cat >../.config/README <<EOF
1281 This directory created by Configure to save information that should
1282 persist across sessions.
1284 You may safely delete it if you wish.
1287 : general instructions
1290 user=`(logname) 2>/dev/null`
1292 user=`whoami 2>&1` ;;
1294 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1297 rp='Would you like to see the instructions?'
1308 This installation shell script will examine your system and ask you questions
1309 to determine how the perl5 package should be installed. If you get
1310 stuck on a question, you may use a ! shell escape to start a subshell or
1311 execute a command. Many of the questions will have default answers in square
1312 brackets; typing carriage return will give you the default.
1314 On some of the questions which ask for file or directory names you are allowed
1315 to use the ~name construct to specify the login directory belonging to "name",
1316 even if you don't have a shell which knows about that. Questions where this is
1317 allowed will be marked "(~name ok)".
1321 dflt='Type carriage return to continue'
1325 The prompter used in this script allows you to use shell variables and
1326 backticks in your answers. You may use $1, $2, etc... to refer to the words
1327 in the default answer, as if the default line was a set of arguments given to a
1328 script shell. This means you may also use $* to repeat the whole default line,
1329 so you do not have to re-type everything to add something to the default.
1331 Everytime there is a substitution, you will have to confirm. If there is an
1332 error (e.g. an unmatched backtick), the default answer will remain unchanged
1333 and you will be prompted again.
1335 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1336 the questions and use the computed defaults (or the previous answers if there
1337 was already a config.sh file). Type 'Configure -h' for a list of options.
1338 You may also start interactively and then answer '& -d' at any prompt to turn
1339 on the non-interactive behaviour for the remaining of the execution.
1345 Much effort has been expended to ensure that this shell script will run on any
1346 Unix system. If despite that it blows up on yours, your best bet is to edit
1347 Configure and run it again. If you can't run Configure for some reason,
1348 you'll have to generate a config.sh file by hand. Whatever problems you
1349 have, let me (chip@atlantic.net) know how I blew it.
1351 This installation script affects things in two ways:
1353 1) it may do direct variable substitutions on some of the files included
1355 2) it builds a config.h file for inclusion in C programs. You may edit
1356 any of these files as the need arises after running this script.
1358 If you make a mistake on a question, there is no easy way to back up to it
1359 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1360 files. Configure will offer to let you do this before it runs the SH files.
1363 dflt='Type carriage return to continue'
1365 case "$firsttime" in
1366 true) echo $user >>../.config/instruct;;
1370 : find out where common programs are
1372 echo "Locating common programs..." >&4
1385 if test -d \$dir/\$thing; then
1391 for thisthing in \$dir/\$thing; do
1392 : just loop through to pick last item
1394 if test -f \$thisthing; then
1397 elif test -f \$dir/\$thing.exe; then
1398 : on Eunice apparently
1448 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1449 pth="$pth /lib /usr/lib"
1450 for file in $loclist; do
1451 xxx=`./loc $file $file $pth`
1456 echo $file is in $xxx.
1459 echo $file is in $xxx.
1462 echo "I don't know where '$file' is, and my life depends on it." >&4
1463 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1469 echo "Don't worry if any of the following aren't found..."
1471 for file in $trylist; do
1472 xxx=`./loc $file $file $pth`
1477 echo $file is in $xxx.
1480 echo $file is in $xxx.
1483 echo "I don't see $file out there, $say."
1490 echo "Substituting grep for egrep."
1496 echo "Substituting cp for ln."
1502 echo "Hopefully test is built into your sh."
1505 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1506 echo "Using the test built into your sh."
1514 echo "Hopefully echo is built into your sh."
1519 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1520 $echo $n "hi there$c" >foo1
1521 echo $n "hi there$c" >foo2
1522 if cmp foo1 foo2 >/dev/null 2>&1; then
1523 echo "They are compatible. In fact, they may be identical."
1530 They are not compatible! You are probably running ksh on a non-USG system.
1531 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1532 have echo built in and we may have to run some Bourne shell scripts. That
1533 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1536 $echo $n "The star should be here-->$c"
1543 : determine whether symbolic links are supported
1546 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1547 echo "Symbolic links are supported." >&4
1550 echo "Symbolic links are NOT supported." >&4
1555 : see whether [:lower:] and [:upper:] are supported character classes
1559 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1561 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1566 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1569 : set up the translation script tr, must be called with ./tr of course
1573 '[A-Z][a-z]') exec $tr '$up' '$low';;
1574 '[a-z][A-Z]') exec $tr '$low' '$up';;
1581 : Try to determine whether config.sh was made on this system
1582 case "$config_sh" in
1584 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1585 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1586 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1587 newmyuname="$myuname"
1589 case "$knowitall" in
1591 if test -f ../config.sh; then
1592 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1593 eval "`grep myuname= ../config.sh`"
1595 if test "X$myuname" = "X$newmyuname"; then
1603 : Get old answers from old config file if Configure was run on the
1604 : same system, otherwise use the hints.
1607 if test -f config.sh; then
1609 rp="I see a config.sh file. Shall I use it to set the defaults?"
1612 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1613 *) echo "Fetching default answers from your old config.sh file..." >&4
1621 : Older versions did not always set $sh. Catch re-use of such
1630 if test ! -f config.sh; then
1633 First time through, eh? I have some defaults handy for the following systems:
1636 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1638 : Half the following guesses are probably wrong... If you have better
1639 : tests or hints, please send them to chip@atlantic.net
1640 : The metaconfig authors would also appreciate a copy...
1641 $test -f /irix && osname=irix
1642 $test -f /xenix && osname=sco_xenix
1643 $test -f /dynix && osname=dynix
1644 $test -f /dnix && osname=dnix
1645 $test -f /lynx.os && osname=lynxos
1646 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1647 $test -f /bin/mips && /bin/mips && osname=mips
1648 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1649 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1650 $test -d /usr/apollo/bin && osname=apollo
1651 $test -f /etc/saf/_sactab && osname=svr4
1652 $test -d /usr/include/minix && osname=minix
1653 if $test -d /MachTen; then
1655 if $test -x /sbin/version; then
1656 osvers=`/sbin/version | $awk '{print $2}' |
1657 $sed -e 's/[A-Za-z]$//'`
1658 elif $test -x /usr/etc/version; then
1659 osvers=`/usr/etc/version | $awk '{print $2}' |
1660 $sed -e 's/[A-Za-z]$//'`
1665 if $test -f $uname; then
1673 umips) osname=umips ;;
1676 [23]100) osname=mips ;;
1677 next*) osname=next ;;
1678 news*) osname=news ;;
1680 if $test -f /etc/kconfig; then
1682 if test "$lns" = "ln -s"; then
1684 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1686 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1695 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1697 'not found') osvers="$4"."$3" ;;
1698 '<3240'|'<>3240') osvers=3.2.0 ;;
1699 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1700 '=3250'|'>3250') osvers=3.2.5 ;;
1707 domainos) osname=apollo
1713 dynixptx*) osname=dynixptx
1716 freebsd) osname=freebsd
1718 genix) osname=genix ;;
1723 *.10.*) osvers=10 ;;
1740 netbsd*) osname=netbsd
1743 bsd386) osname=bsd386
1746 next*) osname=next ;;
1747 solaris) osname=solaris
1749 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1756 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1760 titanos) osname=titanos
1769 ultrix) osname=ultrix
1775 osvers=`echo "$3" | sed 's/^[vt]//'`
1777 hp*) osname=hp_osf1 ;;
1778 mips) osname=mips_osf1 ;;
1787 $2) case "$osname" in
1791 : svr4.x or possibly later
1801 if test -f /stand/boot ; then
1802 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1803 if test -n "$INITPROG" -a -f "$INITPROG"; then
1804 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1805 if test -n "$isesix"; then
1813 *) if test -f /etc/systemid; then
1815 set `echo $3 | $sed 's/\./ /g'` $4
1816 if $test -f sco_$1_$2_$3.sh; then
1818 elif $test -f sco_$1_$2.sh; then
1820 elif $test -f sco_$1.sh; then
1825 '') : Still unknown. Probably a generic Sys V.
1834 *) case "$osname" in
1835 '') : Still unknown. Probably a generic BSD.
1843 if test -f /vmunix -a -f news_os.sh; then
1844 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1845 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1848 $rm -f ../UU/kernel.what
1849 elif test -d c:/.; then
1856 : Now look for a hint file osname_osvers, unless one has been
1857 : specified already.
1860 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1861 : Also try without trailing minor version numbers.
1862 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1863 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1864 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1865 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1868 *) case "$osvers" in
1871 *) if $test -f $file.sh ; then
1873 elif $test -f $xfile.sh ; then
1875 elif $test -f $xxfile.sh ; then
1877 elif $test -f $xxxfile.sh ; then
1879 elif $test -f $xxxxfile.sh ; then
1881 elif $test -f "${osname}.sh" ; then
1892 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1898 You may give one or more space-separated answers, or "none" if appropriate.
1899 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1902 rp="Which of these apply, if any?"
1905 for file in $tans; do
1906 if $test -f $file.sh; then
1908 $cat $file.sh >> ../UU/config.sh
1909 elif $test X$tans = X -o X$tans = Xnone ; then
1912 : Give one chance to correct a possible typo.
1913 echo "$file.sh does not exist"
1915 rp="hint to use instead?"
1917 for file in $ans; do
1918 if $test -f "$file.sh"; then
1920 $cat $file.sh >> ../UU/config.sh
1921 elif $test X$ans = X -o X$ans = Xnone ; then
1924 echo "$file.sh does not exist -- ignored."
1931 : Remember our hint file for later.
1932 if $test -f "$file.sh" ; then
1944 echo "Fetching default answers from $config_sh..." >&4
1948 cp $config_sh config.sh 2>/dev/null
1958 test "$override" && . ./optdef.sh
1959 myuname="$newmyuname"
1961 : Restore computed paths
1962 for file in $loclist $trylist; do
1963 eval $file="\$_$file"
1968 Configure uses the operating system name and version to set some defaults.
1969 The default value is probably right if the name rings a bell. Otherwise,
1970 since spelling matters for me, either accept the default or answer "none"
1977 ''|' '|none) dflt=none ;;
1978 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1981 *) dflt="$osname" ;;
1983 rp="Operating system name?"
1987 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1993 ''|' '|none) dflt=none ;;
1994 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
1995 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
1997 ''|' ') dflt=none ;;
2002 *) dflt="$osvers" ;;
2004 rp="Operating system version?"
2013 : who configured the system
2014 cf_time=`$date 2>&1`
2015 cf_by=`(logname) 2>/dev/null`
2016 case "$cf_by" in "")
2017 cf_by=`(whoami) 2>/dev/null`
2018 case "$cf_by" in "")
2023 : determine the architecture name
2025 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2026 tarch=`arch`"-$osname"
2027 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2028 if uname -m > tmparch 2>&1 ; then
2029 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2030 -e 's/$/'"-$osname/" tmparch`
2038 case "$myarchname" in
2041 echo "(Your architecture name used to be $myarchname.)"
2047 *) dflt="$archname";;
2049 rp='What is your architecture name'
2057 $define|true) afs=true ;;
2058 $undef|false) afs=false ;;
2059 *) if test -d /afs; then
2067 echo "AFS may be running... I'll be extra cautious then..." >&4
2069 echo "AFS does not seem to be running..." >&4
2072 : decide how portable to be. Allow command line overrides.
2073 case "$d_portable" in
2075 *) d_portable="$define" ;;
2078 : set up shell script to do ~ expansion
2084 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2087 if $test -f /bin/csh; then
2088 /bin/csh -f -c "glob \$1"
2093 name=\`$expr x\$1 : '..\([^/]*\)'\`
2094 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2095 if $test ! -d "\$dir"; then
2097 echo "\$me: can't locate home directory for: \$name" >&2
2102 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2118 : now set up to get a file name
2119 cat <<'EOSC' >getfile
2132 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2133 fn=`echo $fn | sed 's/(.*)//'`
2139 loc_file=`expr $fn : '.*:\(.*\)'`
2140 fn=`expr $fn : '\(.*\):.*'`
2148 */*) fullpath=true;;
2157 *e*) exp_file=true;;
2160 *p*) nopath_ok=true;;
2165 *d*) type='Directory';;
2166 *l*) type='Locate';;
2171 Locate) what='File';;
2176 case "$d_portable" in
2184 while test "$type"; do
2189 true) rp="$rp (~name ok)";;
2192 if test -f UU/getfile.ok && \
2193 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2212 value=`UU/filexp $ans`
2215 if test "$ans" != "$value"; then
2216 echo "(That expands to $value on this system.)"
2230 /*) value="$ansexp" ;;
2235 echo "I shall only accept a full path name, as in /bin/ls." >&4
2236 echo "Use a ! shell escape if you wish to check pathnames." >&4
2239 echo "Please give a full path name, starting with slash." >&4
2242 echo "Note that using ~name is ok provided it expands well." >&4
2255 if test -f "$ansexp"; then
2257 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2259 echo "($value is not a plain file, but that's ok.)"
2264 if test -d "$ansexp"; then
2269 if test -d "$ansexp"; then
2270 echo "(Looking for $loc_file in directory $value.)"
2271 value="$value/$loc_file"
2272 ansexp="$ansexp/$loc_file"
2274 if test -f "$ansexp"; then
2277 case "$nopath_ok" in
2278 true) case "$value" in
2280 *) echo "Assuming $value will be in people's path."
2296 if test "$fastread" = yes; then
2301 rp="$what $value doesn't exist. Use that name anyway?"
2322 : determine root of directory hierarchy where package will be installed.
2325 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2333 By default, $package will be installed in $dflt/bin, manual
2334 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2335 all installation directories. Typically set to /usr/local, but you
2336 may choose /usr if you wish to install $package among your system
2337 binaries. If you wish to have binaries under /bin but manual pages
2338 under /usr/local/man, that's ok: you will be prompted separately
2339 for each of the installation directories, the prefix being only used
2340 to set the defaults.
2344 rp='Installation prefix to use?'
2352 *) oldprefix="$prefix";;
2359 : set the prefixit variable, to compute a suitable default value
2360 prefixit='case "$3" in
2362 case "$oldprefix" in
2363 "") eval "$1=\"\$$2\"";;
2370 ""|" ") eval "$1=\"\$$2\"";;
2376 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2378 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2379 /*-$oldprefix/*|\~*-$oldprefix/*)
2380 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2381 *) eval "$1=\"\$$2\"";;
2385 : determine where private library files go
2386 : Usual default is /usr/local/lib/perl5. Also allow things like
2387 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2389 *perl*) set dflt privlib lib ;;
2390 *) set dflt privlib lib/$package ;;
2395 There are some auxiliary files for $package that need to be put into a
2396 private library directory that is accessible by everyone.
2400 rp='Pathname where the private library files will reside?'
2402 if $test "X$privlibexp" != "X$ansexp"; then
2406 privlibexp="$ansexp"
2410 Since you are running AFS, I need to distinguish the directory in which
2411 private files reside from the directory in which they are installed (and from
2412 which they are presumably copied to the former directory by occult means).
2415 case "$installprivlib" in
2416 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2417 *) dflt="$installprivlib";;
2420 rp='Where will private files be installed?'
2422 installprivlib="$ans"
2424 installprivlib="$privlibexp"
2427 : set the base revision
2430 : get the patchlevel
2432 echo "Getting the current patchlevel..." >&4
2433 if $test -r ../patchlevel.h;then
2434 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2435 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2440 $echo $n "(You have $package" $c
2443 *) $echo $n " $baserev" $c ;;
2445 $echo $n " patchlevel $patchlevel" $c
2446 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2449 : set the prefixup variable, to restore leading tilda escape
2450 prefixup='case "$prefixexp" in
2452 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2455 : determine where public architecture dependent libraries go
2461 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2465 *) if test 0 -eq "$subversion"; then
2466 version=`echo $baserev $patchlevel | \
2467 $awk '{ printf "%d.%03d\n",$1,$2 }'`
2469 version=`echo $baserev $patchlevel $subversion | \
2470 $awk '{ printf "%d.%03d%02d\n",$1,$2,$3 }'`
2472 dflt="$privlib/$archname/$version"
2476 *) dflt="$archlib";;
2480 $spackage contains architecture-dependent library files. If you are
2481 sharing libraries in a heterogeneous environment, you might store
2482 these files in a separate location. Otherwise, you can just include
2483 them with the rest of the public library files.
2487 rp='Where do you want to put the public architecture-dependent libraries?'
2490 archlibexp="$ansexp"
2495 Since you are running AFS, I need to distinguish the directory in which
2496 private files reside from the directory in which they are installed (and from
2497 which they are presumably copied to the former directory by occult means).
2500 case "$installarchlib" in
2501 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2502 *) dflt="$installarchlib";;
2505 rp='Where will architecture-dependent library files be installed?'
2507 installarchlib="$ans"
2509 installarchlib="$archlibexp"
2511 if $test X"$archlib" = X"$privlib"; then
2517 : set up the script used to warn in case of inconsistency
2521 echo "*** WHOA THERE!!! ***" >&4
2522 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2523 rp=" Keep the $hint value?"
2526 y) td=$was; tu=$was;;
2530 : function used to set $1 to $val
2531 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2533 $define$undef) . ./whoa; eval "$var=\$td";;
2534 $undef$define) . ./whoa; eval "$var=\$tu";;
2535 *) eval "$var=$val";;
2540 Perl 5.004 can be compiled for binary compatibility with 5.003.
2541 If you decide to do so, you will be able to continue using any
2542 extensions that were compiled for Perl 5.003. However, binary
2543 compatibility forces Perl to expose some of its internal symbols
2544 in the same way that 5.003 did. So you may have symbol conflicts
2545 if you embed a binary-compatible Perl in other programs.
2548 case "$d_bincompat3" in
2552 rp='Binary compatibility with Perl 5.003?'
2555 y*) val="$define" ;;
2560 case "$d_bincompat3" in
2561 "$define") bincompat3=y ;;
2565 : make some quick guesses about what we are up against
2567 $echo $n "Hmm... $c"
2577 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2578 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2580 echo "Looks kind of like an OSF/1 system, but we'll see..."
2582 elif test `echo abc | tr a-z A-Z` = Abc ; then
2583 xxx=`./loc addbib blurfl $pth`
2584 if $test -f $xxx; then
2585 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2589 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2590 echo "Looks kind of like an extended USG system, but we'll see..."
2592 echo "Looks kind of like a USG system, but we'll see..."
2596 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2597 echo "Looks kind of like a BSD system, but we'll see..."
2601 echo "Looks kind of like a Version 7 system, but we'll see..."
2604 case "$eunicefix" in
2607 There is, however, a strange, musty smell in the air that reminds me of
2608 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2612 : it so happens the Eunice I know will not run shell scripts in Unix format
2616 echo "Congratulations. You aren't running Eunice."
2620 : Detect OS2. The p_ variable is set above in the Head.U unit.
2625 I have the feeling something is not exactly right, however...don't tell me...
2626 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2631 if test -f /xenix; then
2632 echo "Actually, this looks more like a XENIX system..."
2637 echo "It's not Xenix..."
2642 if test -f /venix; then
2643 echo "Actually, this looks more like a VENIX system..."
2650 echo "Nor is it Venix..."
2653 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2654 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2657 : see if setuid scripts can be secure
2660 Some kernels have a bug that prevents setuid #! scripts from being
2661 secure. Some sites have disabled setuid #! scripts because of this.
2663 First let's decide if your kernel supports secure setuid #! scripts.
2664 (If setuid #! scripts would be secure but have been disabled anyway,
2665 don't say that they are secure if asked.)
2670 if $test -d /dev/fd; then
2671 echo "#!$ls" >reflect
2672 chmod +x,u+s reflect
2673 ./reflect >flect 2>&1
2674 if $contains "/dev/fd" flect >/dev/null; then
2675 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2679 If you are not sure if they are secure, I can check but I'll need a
2680 username and password different from the one you are using right now.
2681 If you don't have such a username or don't want me to test, simply
2685 rp='Other username to test security of setuid scripts with?'
2690 case "$d_suidsafe" in
2691 '') echo "I'll assume setuid scripts are *not* secure." >&4
2694 echo "Well, the $hint value is *not* secure." >&4
2696 *) echo "Well, the $hint value *is* secure." >&4
2701 $rm -f reflect flect
2702 echo "#!$ls" >reflect
2703 chmod +x,u+s reflect
2706 echo '"su" will (probably) prompt you for '"$ans's password."
2707 su $ans -c './reflect >flect'
2708 if $contains "/dev/fd" flect >/dev/null; then
2709 echo "Okay, it looks like setuid scripts are secure." >&4
2712 echo "I don't think setuid scripts are secure." >&4
2717 rp='Does your kernel have *secure* setuid scripts?'
2720 [yY]*) val="$define";;
2725 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2726 echo "(That's for file descriptors, not floppy disks.)"
2732 $rm -f reflect flect
2734 : now see if they want to do setuid emulation
2737 case "$d_suidsafe" in
2740 echo "No need to emulate SUID scripts since they are secure here." >& 4
2744 Some systems have disabled setuid scripts, especially systems where
2745 setuid scripts cannot be secure. On systems where setuid scripts have
2746 been disabled, the setuid/setgid bits on scripts are currently
2747 useless. It is possible for $package to detect those bits and emulate
2748 setuid/setgid in a secure fashion. This emulation will only work if
2749 setuid scripts have been disabled in your kernel.
2753 "$define") dflt=y ;;
2756 rp="Do you want to do setuid/setgid emulation?"
2759 [yY]*) val="$define";;
2767 : determine where site specific libraries go.
2771 '') dflt="$privlib/site_perl" ;;
2772 *) dflt="$sitelib" ;;
2776 The installation process will also create a directory for
2777 site-specific extensions and modules. Some users find it convenient
2778 to place all local files in this directory rather than in the main
2779 distribution directory.
2783 rp='Pathname for the site-specific library files?'
2785 if $test "X$sitelibexp" != "X$ansexp"; then
2789 sitelibexp="$ansexp"
2793 Since you are running AFS, I need to distinguish the directory in which
2794 private files reside from the directory in which they are installed (and from
2795 which they are presumably copied to the former directory by occult means).
2798 case "$installsitelib" in
2799 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2800 *) dflt="$installsitelib";;
2803 rp='Where will private files be installed?'
2805 installsitelib="$ans"
2807 installsitelib="$sitelibexp"
2810 : determine where site specific architecture-dependent libraries go.
2811 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2812 : xxx is usuually lib/site_perl/archname.
2813 set sitearch sitearch none
2816 '') dflt="$sitelib/$archname" ;;
2817 *) dflt="$sitearch" ;;
2821 The installation process will also create a directory for
2822 architecture-dependent site-specific extensions and modules.
2826 rp='Pathname for the site-specific architecture-dependent library files?'
2828 if $test "X$sitearchexp" != "X$ansexp"; then
2832 sitearchexp="$ansexp"
2836 Since you are running AFS, I need to distinguish the directory in which
2837 private files reside from the directory in which they are installed (and from
2838 which they are presumably copied to the former directory by occult means).
2841 case "$installsitearch" in
2842 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2843 *) dflt="$installsitearch";;
2846 rp='Where will private files be installed?'
2848 installsitearch="$ans"
2850 installsitearch="$sitearchexp"
2853 : determine where old public architecture dependent libraries might be
2854 case "$oldarchlib" in
2855 '') case "$privlib" in
2857 *) dflt="$privlib/$archname"
2861 *) dflt="$oldarchlib"
2864 if $test ! -d "$dflt/auto"; then
2869 In 5.001, Perl stored architecture-dependent library files in a directory
2870 with a name such as $privlib/$archname,
2871 and this directory contained files from the standard extensions and
2872 files from any additional extensions you might have added. Starting
2873 with version 5.002, all the architecture-dependent standard extensions
2874 will go into a version-specific directory such as
2876 while locally-added extensions will go into
2879 If you wish Perl to continue to search the old architecture-dependent
2880 library for your local extensions, give the path to that directory.
2881 If you do not wish to use your old architecture-dependent library
2882 files, answer 'none'.
2886 rp='Directory for your old 5.001 architecture-dependent libraries?'
2889 oldarchlibexp="$ansexp"
2890 case "$oldarchlib" in
2891 ''|' ') val="$undef" ;;
2897 : determine where public executables go
2902 rp='Pathname where the public executables will reside?'
2904 if $test "X$ansexp" != "X$binexp"; then
2912 Since you are running AFS, I need to distinguish the directory in which
2913 executables reside from the directory in which they are installed (and from
2914 which they are presumably copied to the former directory by occult means).
2917 case "$installbin" in
2918 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2919 *) dflt="$installbin";;
2922 rp='Where will public executables be installed?'
2926 installbin="$binexp"
2929 : determine where manual pages are on this system
2933 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2934 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2935 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2936 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2937 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2938 sysman=`./loc . /usr/man/man1 $syspath`
2941 if $test -d "$sysman"; then
2942 echo "System manual is in $sysman." >&4
2944 echo "Could not find manual pages in source form." >&4
2947 : see what memory models we can support
2950 $cat >pdp11.c <<'EOP'
2959 cc -o pdp11 pdp11.c >/dev/null 2>&1
2960 if ./pdp11 2>/dev/null; then
2961 dflt='unsplit split'
2963 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2966 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2971 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2974 if $test -d /lib/large || $test -d /usr/lib/large; then
2977 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2986 Some systems have different model sizes. On most systems they are called
2987 small, medium, large, and huge. On the PDP11 they are called unsplit and
2988 split. If your system doesn't support different memory models, say "none".
2989 If you wish to force everything to one memory model, say "none" here and
2990 put the appropriate flags later when it asks you for other cc and ld flags.
2991 Venix systems may wish to put "none" and let the compiler figure things out.
2992 (In the following question multiple model names should be space separated.)
2995 rp="Which memory models are supported?"
3010 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3011 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3018 rp="What flag indicates separate I and D space?"
3026 *large*|*small*|*medium*|*huge*)
3033 rp="What flag indicates large model?"
3043 *huge*) case "$huge" in
3047 rp="What flag indicates huge model?"
3057 *medium*) case "$medium" in
3061 rp="What flag indicates medium model?"
3068 *) medium="$large";;
3071 *small*) case "$small" in
3075 rp="What flag indicates small model?"
3086 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3090 : see if we need a special compiler
3098 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3099 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3112 On some systems the default C compiler will not resolve multiple global
3113 references that happen to have the same name. On some such systems the "Mcc"
3114 command may be used to force these to be resolved. On other systems a "cc -M"
3115 command is required. (Note that the -M flag on other systems indicates a
3116 memory model to use!) If you have the Gnu C compiler, you might wish to use
3120 rp="What command will force resolution on this system?"
3128 rp="Use which C compiler?"
3133 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3134 $cat >gccvers.c <<EOM
3139 printf("%s\n", __VERSION__);
3141 printf("%s\n", "1");
3147 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3148 gccversion=`./gccvers`
3149 case "$gccversion" in
3150 '') echo "You are not using GNU cc." ;;
3151 *) echo "You are using GNU cc $gccversion." ;;
3155 echo "*** WHOA THERE!!! ***" >&4
3156 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3157 case "$knowitall" in
3159 echo " You'd better start hunting for one and let me know about it." >&4
3165 case "$gccversion" in
3166 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3169 : What should the include directory be ?
3171 $echo $n "Hmm... $c"
3175 if $test -f /bin/mips && /bin/mips; then
3176 echo "Looks like a MIPS system..."
3177 $cat >usr.c <<'EOCP'
3178 #ifdef SYSTYPE_BSD43
3182 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3183 dflt='/bsd43/usr/include'
3187 mips_type='System V'
3189 $rm -f usr.c usr.out
3190 echo "and you're compiling with the $mips_type compiler and libraries."
3194 echo "Doesn't look like a MIPS system."
3205 case "$xxx_prompt" in
3207 rp='Where are the include files you want to use?'
3215 : Set private lib path
3218 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3223 '') dlist="$loclibpth $plibpth $glibpth";;
3224 *) dlist="$libpth";;
3227 : Now check and see which directories actually exist, avoiding duplicates
3231 if $test -d $xxx; then
3234 *) libpth="$libpth $xxx";;
3240 Some systems have incompatible or broken versions of libraries. Among
3241 the directories listed in the question below, please remove any you
3242 know not to be holding relevant libraries, and add any that are needed.
3243 Say "none" for none.
3254 rp="Directories to use for library searches?"
3261 : Define several unixisms. Hints files or command line options
3262 : can be used to override them.
3275 : Which makefile gets called first. This is used by make depend.
3276 case "$firstmakefile" in
3277 '') firstmakefile='makefile';;
3280 : compute shared library extension
3283 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3293 On some systems, shared libraries may be available. Answer 'none' if
3294 you want to suppress searching of shared libraries for the remaining
3295 of this configuration.
3298 rp='What is the file extension used for shared libraries?'
3302 : Looking for optional libraries
3304 echo "Checking for optional libraries..." >&4
3309 case "$libswanted" in
3310 '') libswanted='c_s';;
3312 for thislib in $libswanted; do
3314 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3315 echo "Found -l$thislib (shared)."
3318 *) dflt="$dflt -l$thislib";;
3320 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3321 echo "Found -l$thislib (shared)."
3324 *) dflt="$dflt -l$thislib";;
3326 elif xxx=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3327 echo "Found -l$thislib."
3330 *) dflt="$dflt -l$thislib";;
3332 elif xxx=`./loc $thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3333 echo "Found -l$thislib."
3336 *) dflt="$dflt -l$thislib";;
3338 elif xxx=`./loc lib${thislib}_s$lib_ext X $libpth`; $test -f "$xxx"; then
3339 echo "Found -l${thislib}_s."
3342 *) dflt="$dflt -l${thislib}_s";;
3344 elif xxx=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$xxx"; then
3345 echo "Found -l$thislib."
3348 *) dflt="$dflt -l$thislib";;
3351 echo "No -l$thislib."
3362 ' '|'') dflt='none';;
3367 Some versions of Unix support shared libraries, which make executables smaller
3368 but make load time slightly longer.
3370 On some systems, mostly System V Release 3's, the shared library is included
3371 by putting the option "-lc_s" as the last thing on the cc command line when
3372 linking. Other systems use shared libraries by default. There may be other
3373 libraries needed to compile $package on your machine as well. If your system
3374 needs the "-lc_s" option, include it here. Include any other special libraries
3375 here as well. Say "none" for none.
3379 rp="Any additional libraries?"
3386 : see how we invoke the C preprocessor
3388 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3389 cat <<'EOT' >testcpp.c
3395 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3397 wrapper=`pwd`/cppstdin
3401 if $test "X$cppstdin" != "X" && \
3402 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3403 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3405 echo "You used to use $cppstdin $cppminus so we'll use that again."
3407 '') echo "But let's see if we can live without a wrapper..." ;;
3409 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3410 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3412 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3415 echo "(However, $cpprun $cpplast does not work, let's see...)"
3423 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3430 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3431 $cc -E <testcpp.c >testcpp.out 2>&1; \
3432 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3433 echo "Yup, it does."
3436 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3437 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3438 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3439 echo "Yup, it does."
3442 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3443 $cc -P <testcpp.c >testcpp.out 2>&1; \
3444 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3445 echo "Yipee, that works!"
3448 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3449 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3450 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3451 echo "At long last!"
3454 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3455 $cpp <testcpp.c >testcpp.out 2>&1; \
3456 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3460 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3461 $cpp - <testcpp.c >testcpp.out 2>&1; \
3462 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3463 echo "Hooray, it works! I was beginning to wonder."
3466 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3467 $wrapper <testcpp.c >testcpp.out 2>&1; \
3468 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474 rp="No dice. I can't find a C preprocessor. Name one:"
3478 $x_cpp <testcpp.c >testcpp.out 2>&1
3479 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480 echo "OK, that will do." >&4
3482 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3497 echo "Perhaps can we force $cc -E using a wrapper..."
3498 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3499 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3505 echo "Nope, we'll have to live without it..."
3520 *) $rm -f $wrapper;;
3522 $rm -f testcpp.c testcpp.out
3524 : determine optimize, if desired, or use for debug flag also
3528 *) dflt="$optimize";;
3532 Some C compilers have problems with their optimizers. By default, $package
3533 compiles with the -O flag to use the optimizer. Alternately, you might want
3534 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3535 systems). Either flag can be specified here. To use neither flag, specify
3539 rp="What optimizer/debugger flag should be used?"
3543 'none') optimize=" ";;
3547 : We will not override a previous value, but we might want to
3548 : augment a hint file
3551 case "$gccversion" in
3552 1*) dflt='-fpcc-struct-return' ;;
3555 *-g*) dflt="$dflt -DDEBUGGING";;
3557 case "$gccversion" in
3558 2*) if test -d /etc/conf/kconfig.d &&
3559 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3568 case "$mips_type" in
3569 *BSD*|'') inclwanted="$locincpth $usrinc";;
3570 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3572 for thisincl in $inclwanted; do
3573 if $test -d $thisincl; then
3574 if $test x$thisincl != x$usrinc; then
3577 *) dflt="$dflt -I$thisincl";;
3583 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3585 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3593 *) dflt="$dflt -D$2";;
3598 set signal.h __LANGUAGE_C__; eval $inctest
3600 set signal.h LANGUAGE_C; eval $inctest
3602 set signal.h _NO_PROTO; eval $inctest
3605 none|recommended) dflt="$ccflags $dflt" ;;
3606 *) dflt="$ccflags";;
3614 Your C compiler may want other flags. For this question you should include
3615 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3616 but you should NOT include libraries or ld flags like -lwhatever. If you
3617 want $package to honor its debug switch, you should include -DDEBUGGING here.
3618 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3619 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3621 To use no flags, specify the word "none".
3627 rp="Any additional cc flags?"
3634 : the following weeds options from ccflags that are of no interest to cpp
3636 case "$gccversion" in
3637 1*) cppflags="$cppflags -D__GNUC__"
3639 case "$mips_type" in
3641 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3647 echo "Let me guess what the preprocessor flags are..." >&4
3661 *) ftry="$previous $flag";;
3663 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3664 >cpp1.out 2>/dev/null && \
3665 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3666 >cpp2.out 2>/dev/null && \
3667 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3668 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3670 cppflags="$cppflags $ftry"
3680 *-*) echo "They appear to be: $cppflags";;
3682 $rm -f cpp.c cpp?.out
3686 : flags used in final linking phase
3689 '') if ./venix; then
3695 *-posix*) dflt="$dflt -posix" ;;
3698 *) dflt="$ldflags";;
3701 : Try to guess additional flags to pick up local libraries.
3702 for thislibdir in $libpth; do
3703 case " $loclibpth " in
3706 *"-L$thislibdir "*) ;;
3707 *) dflt="$dflt -L$thislibdir" ;;
3719 Your C linker may need flags. For this question you should
3720 include -L/whatever and any other flags used by the C linker, but you
3721 should NOT include libraries like -lwhatever.
3723 Make sure you include the appropriate -L/path flags if your C linker
3724 does not normally search all of the directories you specified above,
3727 To use no flags, specify the word "none".
3731 rp="Any additional ld flags (NOT including libraries)?"
3737 rmlist="$rmlist pdp11"
3741 echo "Checking your choice of C compiler and flags for coherency..." >&4
3742 set X $cc $optimize $ccflags $ldflags try.c -o try
3745 I've tried to compile and run a simple program with:
3750 and I got the following output:
3753 $cat > try.c <<'EOF'
3758 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
3759 if sh -c './try' >>try.msg 2>&1; then
3762 echo "The program compiled OK, but exited with status $?." >>try.msg
3763 rp="You have a problem. Shall I abort Configure"
3767 echo "I can't compile the test program." >>try.msg
3768 rp="You have a BIG problem. Shall I abort Configure"
3774 case "$knowitall" in
3776 echo "(The supplied flags might be incorrect with this C compiler.)"
3784 *) echo "Ok. Stopping Configure." >&4
3789 n) echo "OK, that should do.";;
3791 $rm -f try try.* core
3794 echo "Checking for GNU C Library..." >&4
3795 cat >gnulibc.c <<EOM
3799 return __libc_main();
3802 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3803 ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3805 echo "You are using the GNU C Library"
3808 echo "You are not using the GNU C Library"
3814 : see if nm is to be used to determine whether a symbol is defined or not
3817 case "$d_gnulibc" in
3822 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3823 if $test $dflt -gt 20; then
3840 I can use 'nm' to extract the symbols from your C libraries. This is a time
3841 consuming task which may generate huge output on the disk (up to 3 megabytes)
3842 but that should make the symbols extraction faster. The alternative is to skip
3843 the 'nm' extraction part and to compile a small test program instead to
3844 determine whether each symbol is present. If you have a fast C compiler and/or
3845 if your 'nm' output cannot be parsed, this may be the best solution.
3846 You shouldn't let me use 'nm' if you have the GNU C Library.
3849 rp='Shall I use nm to extract C symbols from the libraries?'
3861 : nm options which may be necessary
3863 '') if $test -f /mach_boot; then
3865 elif $test -d /usr/ccs/lib; then
3867 elif $test -f /dgux; then
3874 : nm options which may be necessary for shared libraries but illegal
3875 : for archive libraries. Thank you, Linux.
3876 case "$nm_so_opt" in
3877 '') case "$myuname" in
3879 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3880 nm_so_opt='--dynamic'
3889 : get list of predefined functions in a handy place
3894 *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth`
3901 *) for thislib in $libs; do
3904 : Handle C library specially below.
3907 thislib=`echo $thislib | $sed -e 's/^-l//'`
3908 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3910 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3912 elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then
3914 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3916 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3918 elif try=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$try"; then
3923 libnames="$libnames $try"
3925 *) libnames="$libnames $thislib" ;;
3934 for xxx in $libpth; do
3935 $test -r $1 || set $xxx/libc.$so
3936 : The messy sed command sorts on library version numbers.
3938 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3939 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3941 s/[0-9][0-9]*/0000&/g
3942 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3945 sort | $sed -e 's/^.* //'`
3948 $test -r $1 || set /usr/ccs/lib/libc.$so
3949 $test -r $1 || set /lib/libsys_s$lib_ext
3955 if $test -r "$1"; then
3956 echo "Your (shared) C library seems to be in $1."
3958 elif $test -r /lib/libc && $test -r /lib/clib; then
3959 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3961 libc='/lib/clib /lib/libc'
3962 if $test -r /lib/syslib; then
3963 echo "(Your math library is in /lib/syslib.)"
3964 libc="$libc /lib/syslib"
3966 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3967 echo "Your C library seems to be in $libc, as you said before."
3968 elif $test -r $incpath/usr/lib/libc$lib_ext; then
3969 libc=$incpath/usr/lib/libc$lib_ext;
3970 echo "Your C library seems to be in $libc. That's fine."
3971 elif $test -r /lib/libc$lib_ext; then
3972 libc=/lib/libc$lib_ext;
3973 echo "Your C library seems to be in $libc. You're normal."
3975 if tans=`./loc libc$lib_ext blurfl/dyick $libpth`; $test -r "$tans"; then
3977 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3978 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3979 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3981 elif tans=`./loc Slibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
3983 elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
3986 tans=`./loc Llibc$lib_ext blurfl/dyick $xlibpth`
3988 if $test -r "$tans"; then
3989 echo "Your C library seems to be in $tans, of all places."
3995 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3999 If the guess above is wrong (which it might be if you're using a strange
4000 compiler, or your machine supports multiple models), you can override it here.
4005 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4007 I can't seem to find your C library. I've looked in the following places:
4010 $sed 's/^/ /' libpath
4013 None of these seems to contain your C library. I need to get its name...
4018 rp='Where is your C library?'
4023 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4024 set X `cat libnames`
4027 case $# in 1) xxx=file; esac
4028 echo "Extracting names from the following $xxx for later perusal:" >&4
4030 $sed 's/^/ /' libnames >&4
4032 $echo $n "This may take a while...$c" >&4
4034 : Linux may need the special Dynamic option to nm for shared libraries.
4035 : In general, this is stored in the nm_so_opt variable.
4036 : Unfortunately, that option may be fatal on non-shared libraries.
4037 for nm_libs_ext in $*; do
4038 case $nm_libs_ext in
4039 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4040 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4045 $grep fprintf libc.tmp > libc.ptf
4046 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4047 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4049 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4051 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4053 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4055 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4057 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4059 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4061 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4063 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4065 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4067 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4069 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4071 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4073 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4074 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4076 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4078 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4080 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4082 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4084 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4086 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4088 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4090 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4092 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4095 nm -p $* 2>/dev/null >libc.tmp
4096 $grep fprintf libc.tmp > libc.ptf
4097 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4098 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4104 echo "nm didn't seem to work right. Trying ar instead..." >&4
4106 if ar t $libc > libc.tmp; then
4107 for thisname in $libnames; do
4108 ar t $thisname >>libc.tmp
4110 $sed -e 's/\.o$//' < libc.tmp > libc.list
4113 echo "ar didn't seem to work right." >&4
4114 echo "Maybe this is a Cray...trying bld instead..." >&4
4115 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4117 for thisname in $libnames; do
4119 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4120 ar t $thisname >>libc.tmp
4124 echo "That didn't work either. Giving up." >&4
4131 if $test -f /lib/syscalls.exp; then
4133 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4134 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4138 $rm -f libnames libpath
4140 : determine filename position in cpp output
4142 echo "Computing filename position in cpp output for #include directives..." >&4
4143 echo '#include <stdio.h>' > foo.c
4146 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4147 $grep '^[ ]*#.*stdio\.h' | \
4148 while read cline; do
4151 while $test \$# -gt 0; do
4152 if $test -r \`echo \$1 | $tr -d '"'\`; then
4157 pos=\`expr \$pos + 1\`
4169 *) pos="${fieldn}th";;
4171 echo "Your cpp writes the filename in the $pos field of the line."
4173 : locate header file
4178 if test -f $usrinc/\$wanted; then
4179 echo "$usrinc/\$wanted"
4182 awkprg='{ print \$$fieldn }'
4183 echo "#include <\$wanted>" > foo\$\$.c
4184 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4185 $grep "^[ ]*#.*\$wanted" | \
4186 while read cline; do
4187 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4189 */\$wanted) echo "\$name"; exit 0;;
4200 : define an alternate in-header-list? function
4201 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4202 cont=true; xxf="echo \"<\$1> found.\" >&4";
4203 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4204 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4206 case $# in 4) instead=instead;; *) instead="at last";; esac;
4207 while $test "$cont"; do
4209 var=$2; eval "was=\$$2";
4210 if $test "$xxx" && $test -r "$xxx";
4212 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4215 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4216 set $yyy; shift; shift; yyy=$@;
4217 case $# in 0) cont="";;
4218 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4219 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4220 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4221 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4225 do set $yyy; var=$2; eval "was=\$$2";
4226 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4227 set $yyy; shift; shift; yyy=$@;
4230 : see if dld is available
4234 : is a C symbol defined?
4237 -v) tf=libc.tmp; tc=""; tdc="";;
4238 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4239 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4242 case "$reuseval-$4" in
4244 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4250 if $contains $tlook $tf >/dev/null 2>&1;
4255 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4256 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4264 $define) tval=true;;
4270 : define an is-in-libc? function
4271 inlibc='echo " "; td=$define; tu=$undef;
4272 sym=$1; var=$2; eval "was=\$$2";
4274 case "$reuseval$was" in
4284 echo "$sym() found." >&4;
4285 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4287 echo "$sym() NOT found." >&4;
4288 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4292 $define) echo "$sym() found." >&4;;
4293 *) echo "$sym() NOT found." >&4;;
4297 : see if dlopen exists
4304 : determine which dynamic loading, if any, to compile in
4306 dldir="ext/DynaLoader"
4319 $define) dflt='y' ;;
4322 $define) dflt='y' ;;
4324 : Does a dl_xxx.xs file exist for this operating system
4325 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4328 rp="Do you wish to use dynamic loading?"
4335 if $test -f ../$dldir/dl_${osname}.xs ; then
4336 dflt="$dldir/dl_${osname}.xs"
4337 elif $test "$d_dlopen" = "$define" ; then
4338 dflt="$dldir/dl_dlopen.xs"
4339 elif $test "$i_dld" = "$define" ; then
4340 dflt="$dldir/dl_dld.xs"
4345 *) dflt="$dldir/$dlsrc"
4348 echo "The following dynamic loading files are available:"
4349 : Can not go over to $dldir because getfile has path hard-coded in.
4350 cd ..; ls -C $dldir/dl*.xs; cd UU
4351 rp="Source file to use for dynamic loading"
4356 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4360 Some systems may require passing special flags to $cc -c to
4361 compile modules that will be used to create a shared library.
4362 To use no flags, say "none".
4365 case "$cccdlflags" in
4366 '') case "$gccversion" in
4367 '') case "$osname" in
4369 next) dflt='none' ;;
4370 solaris|svr4*|esix*) dflt='-Kpic' ;;
4371 irix*) dflt='-KPIC' ;;
4372 sunos) dflt='-pic' ;;
4377 *) dflt="$cccdlflags" ;;
4379 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4382 none) cccdlflags=' ' ;;
4383 *) cccdlflags="$ans" ;;
4388 Some systems use ld to create libraries that can be dynamically loaded,
4389 while other systems (such as those using ELF) use $cc.
4393 '') $cat >try.c <<'EOM'
4394 /* Test for whether ELF binaries are produced */
4399 int i = open("a.out",O_RDONLY);
4402 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4403 exit(0); /* succeed (yes, it's ELF) */
4408 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4410 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4414 echo "I'll use ld to build dynamic libraries."
4423 rp="What command should be used to create dynamic libraries?"
4429 Some systems may require passing special flags to $ld to create a
4430 library that can be dynamically loaded. If your ld flags include
4431 -L/other/path options to locate libraries outside your loader's normal
4432 search path, you may need to specify those -L options here as well. To
4433 use no flags, say "none".
4436 case "$lddlflags" in
4437 '') case "$osname" in
4439 linux|irix*) dflt='-shared' ;;
4440 next) dflt='none' ;;
4441 solaris) dflt='-G' ;;
4442 sunos) dflt='-assert nodefinitions' ;;
4443 svr4*|esix*) dflt="-G $ldflags" ;;
4447 *) dflt="$lddlflags" ;;
4450 : Try to guess additional flags to pick up local libraries.
4451 for thisflag in $ldflags; do
4456 *) dflt="$dflt $thisflag" ;;
4466 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4469 none) lddlflags=' ' ;;
4470 *) lddlflags="$ans" ;;
4475 Some systems may require passing special flags to $cc to indicate that
4476 the resulting executable will use dynamic linking. To use no flags,
4480 case "$ccdlflags" in
4481 '') case "$osname" in
4482 hpux) dflt='-Wl,-E' ;;
4483 linux) dflt='-rdynamic' ;;
4484 next) dflt='none' ;;
4485 sunos) dflt='none' ;;
4488 *) dflt="$ccdlflags" ;;
4490 rp="Any special flags to pass to $cc to use dynamic loading?"
4493 none) ccdlflags=' ' ;;
4494 *) ccdlflags="$ans" ;;
4508 # No dynamic loading being used, so don't bother even to prompt.
4511 *) case "$useshrplib" in
4512 '') case "$osname" in
4513 svr4|dgux|dynixptx|esix|powerux)
4515 also='Building a shared libperl is required for dynamic loading to work on your system.'
4520 also='Building a shared libperl is needed for MAB support.'
4528 also='Building a shared libperl will definitely not work on SunOS 4.'
4542 The perl executable is normally obtained by linking perlmain.c with
4543 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4544 any other libraries needed on this system (such as -lm, etc.). Since
4545 your system supports dynamic loading, it is probably possible to build
4546 a shared libperl.$so. If you will have more than one executable linked
4547 to libperl.$so, this will significantly reduce the size of each
4548 executable, but it may have a noticeable affect on performance. The
4549 default is probably sensible for your system.
4553 rp="Build a shared libperl.$so (y/n)"
4558 # Why does next4 have to be so different?
4559 case "${osname}${osvers}" in
4560 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4561 *) xxx='LD_LIBRARY_PATH' ;;
4565 To build perl, you must add the current working directory to your
4566 $xxx environtment variable before running make. You can do
4568 $xxx=\`pwd\`; export $xxx
4569 for Bourne-style shells, or
4571 for Csh-style shells. You *MUST* do this before running make.
4575 *) useshrplib='false' ;;
4580 case "$useshrplib" in
4584 # Figure out a good name for libperl.so. Since it gets stored in
4585 # a version-specific architecture-dependent library, the version
4586 # number isn't really that important, except for making cc/ld happy.
4588 # A name such as libperl.so.3.1
4589 majmin="libperl.$so.$patchlevel.$subversion"
4590 # A name such as libperl.so.301
4591 majonly=`echo $patchlevel $subversion |
4592 $awk '{printf "%d%02d", $1, $2}'`
4593 majonly=libperl.$so.$majonly
4594 # I'd prefer to keep the os-specific stuff here to a minimum, and
4595 # rely on figuring it out from the naming of libc.
4596 case "${osname}${osvers}" in
4599 # XXX How handle the --version stuff for MAB?
4601 linux*) # ld won't link with a bare -lperl otherwise.
4604 *) # Try to guess based on whether libc has major.minor.
4606 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4607 *libc.$so.[0-9]*) dflt=$majonly ;;
4608 *) dflt=libperl.$so ;;
4618 I need to select a good name for the shared libperl. If your system uses
4619 library names with major and minor numbers, then you might want something
4620 like $majmin. Alternatively, if your system uses a single version
4621 number for shared libraries, then you might want to use $majonly.
4622 Or, your system might be quite happy with a simple libperl.$so.
4624 Since the shared libperl will get installed into a version-specific
4625 architecture-dependent directory, the version number of the shared perl
4626 library probably isn't important, so the default should be o.k.
4629 rp='What name do you want to give to the shared libperl?'
4632 echo "Ok, I'll use $libperl"
4635 libperl="libperl${lib_ext}"
4639 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4643 WARNING: Use of the shrpdir variable for the installation location of
4644 the shared $libperl is not supported. It was never documented and
4645 will not work in this version. Let me (chip@atlantic.net)
4646 know of any problems this may cause.
4652 But your current setting of $shrpdir is
4653 the default anyway, so it's harmless.
4658 Further, your current attempted setting of $shrpdir
4659 conflicts with the value of $archlibexp/CORE
4660 that installperl will use.
4667 # How will the perl executable find the installed shared $libperl?
4668 # Add $xxx to ccdlflags.
4669 # If we can't figure out a command-line option, use $shrpenv to
4670 # set env LD_RUN_PATH. The main perl makefile uses this.
4671 shrpdir=$archlibexp/CORE
4674 if "$useshrplib"; then
4680 xxx="-Wl,-rpath,$shrpdir"
4683 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
4688 *) ccdlflags="$ccdlflags $xxx"
4691 Adding $xxx to the flags
4692 passed to $ld so that the perl executable will find the
4693 installed shared $libperl.
4699 # Respect a hint or command-line value.
4701 '') shrpenv="$tmp_shrpenv" ;;
4704 : determine where manual pages go
4705 set man1dir man1dir none
4709 $spackage has manual pages available in source form.
4713 echo "However, you don't have nroff, so they're probably useless to you."
4715 '') man1dir="none";;
4718 echo "If you don't want the manual sources installed, answer 'none'."
4723 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
4724 lookpath="$lookpath $prefixexp/man/p_man/man1"
4725 lookpath="$lookpath $prefixexp/man/u_man/man1"
4726 lookpath="$lookpath $prefixexp/man/man.1"
4727 : If prefix contains 'perl' then we want to keep the man pages
4728 : under the prefix directory. Otherwise, look in a variety of