home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-11-19 | 35.3 KB | 1,600 lines |
- #! /bin/sh
- #
- # If these # comments don't work, trim them. Don't worry about any
- # other shell scripts, Configure will trim # comments from them for you.
- #
- # (If you are trying to port this package to a machine without sh,
- # I would suggest you have a look at the prototypical config.h.SH file
- # and edit it to reflect your system. Some packages may include samples
- # of config.h for certain machines, so you might look for one of those.)
- #
- # Yes, you may rip this off to use in other distribution packages. This
- # script belongs to the public domain and cannot be copyrighted.
- #
- # (Note: this Configure script was generated automatically. Rather than
- # working with this copy of Configure, you may wish to get metaconfig.
- # Write to ram@eiffel.com (Raphael Manfredi) and I will send you the
- # latest revision of the dist package, which includes metaconfig.)
-
- # $Id: Configure,v 2.9 92/07/14 16:46:52 ram Exp $
- #
- # Generated on Tue Jul 14 14:23:38 PDT 1992 [metaconfig 2.8 PL13]
-
- cat >/tmp/c1$$ <<EOF
-
- ARGGGHHHH!!!!!
-
- SCO csh still thinks true is false. Write to SCO today and tell them that next
- year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
-
- (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
- we'd have to do is go in and swap the && and || tokens, wherever they are.)
-
- [End of diatribe. We now return you to your regularly scheduled programming...]
- EOF
- cat >/tmp/c2$$ <<EOF
-
- OOPS! You naughty creature! You didn't run Configure with sh!
- I will attempt to remedy the situation by running sh for you...
- EOF
-
- true || cat /tmp/c1$$ /tmp/c2$$
- true || exec sh $0
-
- export PATH || cat /tmp/c2$$
- export PATH || exec sh $0
- rm -f /tmp/c1$$ /tmp/c2$$
-
- : sanity checks
- PATH=".:$PATH:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin"
- PATH=$PATH:'/usr/5bin:/etc:/usr/gnu/bin:/usr/new:/usr/new/bin:/usr/nbin'
- PATH=$PATH:'/sys5.3/bin:/sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb'
- PATH=$PATH:'/bsd4.3/usr/bin:/usr/bsd:/bsd43/bin:/usr/ccs/bin'
- export PATH
-
- if test ! -t 0; then
- echo "Say 'sh Configure', not 'sh <Configure'"
- exit 1
- fi
-
- (alias) >/dev/null 2>&1 && \
- echo "(I see you are using the Korn shell. Some ksh's blow up on Configure," && \
- echo "especially on exotic machines. If yours does, try the Bourne shell instead.)"
-
- test -d UU || mkdir UU
- cd UU && rm -f *
-
- case "$1" in
- -d) shift; fastread='yes';;
- esac
-
- d_bsd=''
- d_eunice=''
- d_xenix=''
- eunicefix=''
- Mcc=''
- awk=''
- bison=''
- cat=''
- chgrp=''
- chmod=''
- chown=''
- compress=''
- cp=''
- cpio=''
- cpp=''
- csh=''
- date=''
- echo=''
- egrep=''
- emacs=''
- expr=''
- grep=''
- inews=''
- less=''
- line=''
- lint=''
- ln=''
- lp=''
- lpr=''
- ls=''
- mail=''
- mailx=''
- make=''
- mkdir=''
- more=''
- mv=''
- nroff=''
- perl=''
- pg=''
- pmake=''
- pr=''
- rm=''
- rmail=''
- sed=''
- sendmail=''
- sleep=''
- smail=''
- sort=''
- submit=''
- tail=''
- tar=''
- tbl=''
- test=''
- touch=''
- tr=''
- troff=''
- uname=''
- uniq=''
- uuname=''
- vi=''
- zcat=''
- myuname=''
- Author=''
- Date=''
- Header=''
- Id=''
- Locker=''
- Log=''
- RCSfile=''
- Revision=''
- Source=''
- State=''
- bin=''
- cc=''
- ccflags=''
- cppflags=''
- ldflags=''
- lkflags=''
- optimize=''
- contains=''
- cppminus=''
- cppstdin=''
- d_bcopy=''
- aphostname=''
- d_gethname=''
- d_phostname=''
- d_uname=''
- d_hidnet=''
- hiddennet=''
- d_index=''
- d_portable=''
- d_rename=''
- d_strerrm=''
- d_strerror=''
- d_sysernlst=''
- d_syserrlst=''
- d_time=''
- timetype=''
- d_uwait=''
- d_vfork=''
- d_voidsig=''
- signal_t=''
- hostname=''
- mydomain=''
- phostname=''
- i_fcntl=''
- i_string=''
- strings=''
- i_sysfile=''
- i_syswait=''
- i_systime=''
- i_systimek=''
- i_time=''
- timeincl=''
- timezone=''
- intsize=''
- libc=''
- nm_opt=''
- libpth=''
- plibpth=''
- libs=''
- maildir=''
- mailfile=''
- manext=''
- mansrc=''
- mkdep=''
- huge=''
- large=''
- medium=''
- models=''
- small=''
- split=''
- c=''
- n=''
- orgname=''
- package=''
- perlpath=''
- pidtype=''
- privlib=''
- reg10=''
- reg11=''
- reg12=''
- reg13=''
- reg14=''
- reg15=''
- reg16=''
- reg1=''
- reg2=''
- reg3=''
- reg4=''
- reg5=''
- reg6=''
- reg7=''
- reg8=''
- reg9=''
- registers=''
- scriptdir=''
- sharpbang=''
- shsharp=''
- spitshell=''
- startsh=''
- sysman=''
- uidtype=''
- incpath=''
- mips=''
- mips_type=''
- usrinc=''
- d_whoami=''
- i_sysselct=''
- CONFIG=''
- : set package name
- package=mailagent
-
- : Eunice requires " " instead of "", can you believe it
- echo " "
- : Here we go...
- echo "Beginning of configuration questions for $package kit."
-
- define='define'
- undef='undef'
- smallmach='pdp11 i8086 z8000 i80286 iAPX286'
- rmlist='ark[1-9]isdone ark[1-9][0-9]isdone'
- trap 'echo " "; rm -f $rmlist; exit 1' 1 2 3 15
-
- : We must find out about Eunice early
- eunicefix=':'
- if test -f /etc/unixtovms; then
- eunicefix=/etc/unixtovms
- fi
- if test -f /etc/unixtovms.exe; then
- eunicefix=/etc/unixtovms.exe
- fi
-
- : Find out which program gives a meaningful exit status
- if ls blurfl >/dev/null 2>&1; then
- if awk '' blurfl >/dev/null 2>&1; then
- check='cat'
- else
- check='awk ""'
- fi
- else
- check='ls'
- fi
-
- : Now test for existence of everything in MANIFEST
- echo " "
- if test -f ../MANIFEST; then
- echo "First let's make sure your kit is complete. Checking..."
- : some grep do not return a proper exit status
- grep '^---' ../MANIFEST > .grepmani 2>/dev/null
- if test -s .grepmani; then
- (cd ..; eval $check `awk '!/^.*\/$/{if (b) print $1}
- /^---/{b=1}' MANIFEST` || kill $$) >/dev/null
- else
- (cd ..; eval $check `awk '!/^.*\/$/{print $1}' MANIFEST` || kill $$) >/dev/null
- fi
- echo "Looks good..."
- else
- echo "No MANIFEST found. Hope your kit is complete !"
- fi
- rm -f .grepmani
-
- : list of known cpp symbols
- attrlist="DGUX M_I186 M_I286 M_I386 M_I8086 M_XENIX UTS __DGUX__"
- attrlist="$attrlist _AIX __STDC__ __m88k__ ansi bsd4_2 gcos gimpel"
- attrlist="$attrlist hp9000s300 hp9000s500 hp9000s800 hpux"
- attrlist="$attrlist i186 i386 i486 i8086 iAPX286 ibm interdata"
- attrlist="$attrlist m88k mc300 mc500 mc68000 mc68k mc700 mert"
- attrlist="$attrlist mips ns16000 ns32000 nsc32000 os pdp11 posix pyr"
- attrlist="$attrlist sinix sony sparc sun tower tower32 tower32_600"
- attrlist="$attrlist tower32_800 tss u3b2 u3b20 u3b200 u3b5 ultrix unix"
- attrlist="$attrlist vax venix xenix z8000"
-
- : no include file wanted by default
- inclwanted=''
-
- : change the next line if compiling for Xenix/286 on Xenix/386
- xlibpath='/usr/lib/386 /lib/386'
- libpth='/usr/lib/large /lib '$xlibpth' /lib/large'
- libpth=$libpth' /usr/lib/small /lib/small'
-
-
- : some greps do not return status, grrr.
- echo "grimblepritz" >grimble
- if grep blurfldyick grimble >/dev/null 2>&1 ; then
- contains=contains
- elif grep grimblepritz grimble >/dev/null 2>&1 ; then
- contains=grep
- else
- contains=contains
- fi
- rm -f grimble
- : the following should work in any shell
- case "$contains" in
- contains*)
- echo " "
- echo "AGH! Grep doesn't return a status. Attempting remedial action."
- cat >contains <<'EOSS'
- grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
- EOSS
- chmod +x contains
- esac
-
- : first determine how to suppress newline on echo command
- echo " "
- echo "Checking echo to see how to suppress newlines..."
- (echo "hi there\c" ; echo " ") >.echotmp
- if $contains c .echotmp >/dev/null 2>&1 ; then
- echo "...using -n."
- n='-n'
- c=''
- else
- cat <<'EOM'
- ...using \c
- EOM
- n=''
- c='\c'
- fi
- echo $n "The star should be here-->$c"
- echo '*'
- rm -f .echotmp
-
- : set up the echo used in my read
- myecho="case \"\$xxxm\" in
- '') echo $n \"\$rp $c\";;
- *) case \"\$rp\" in
- '') echo $n \"[\$xxxm] $c\";;
- *) echo $n \"\$rp [\$xxxm] $c\";;
- esac;;
- esac"
-
- : now set up to do reads with possible shell escape and default assignment
- cat <<EOSC >myread
- xxxm=\$dflt
- $myecho
- case "\$fastread" in
- yes) case "\$dflt" in
- '') ans='!';;
- *) ans=''; echo " " ;;
- esac;;
- *) ans='!';;
- esac
- while expr "X\$ans" : "X!" >/dev/null; do
- read answ
- set x \$xxxm
- shift
- aok=''; eval "ans=\"\$answ\"" && aok=y
- case "\$answ" in
- "\$ans")
- case "\$ans" in
- !)
- sh
- echo " "
- $myecho
- ;;
- !*)
- set x \`expr "X\$ans" : "X!\(.*\)\$"\`
- shift
- sh -c "\$*"
- echo " "
- $myecho
- ;;
- esac;;
- *)
- case "\$aok" in
- y)
- echo "*** Substitution done -- please confirm."
- xxxm="\$ans"
- ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
- xxxm="\$ans"
- ans=!
- ;;
- *)
- echo "*** Error -- try again."
- ans=!
- ;;
- esac
- $myecho
- ;;
- esac
- done
- case "\$ans" in
- '') ans="\$xxxm";;
- esac
- EOSC
-
- : general instructions
- cat <<EOH
-
- This installation shell script will examine your system and ask you questions
- to determine how the mailagent package should be installed. If you get stuck
- on a question, you may use a ! shell escape to start a subshell or execute a
- command. Many of the questions will have default answers in square brackets;
- typing carriage return will give you the default.
-
- On some of the questions which ask for file or directory names you are allowed
- to use the ~name construct to specify the login directory belonging to "name",
- even if you don't have a shell which knows about that. Questions where this is
- allowed will be marked "(~name ok)".
-
- EOH
- rp=''
- dflt="Type carriage return to continue"
- . myread
- cat <<'EOH'
-
- The prompter used in this script allows you to use shell variables and
- backticks in your answers. You may use $1, $2, etc... to refer to the words
- in the default answer, as if the default line was a set of arguments given to a
- script shell. This means you may also use $* to repeat the whole default line,
- so you do not have to re-type everything to add something to the default.
-
- Everytime there is a substitution, you will have to confirm. If there is an
- error (e.g. an unmatched backtick), the default answer will remain unchanged
- and you will be prompted again.
-
- If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
- the questions and use the computed defaults (or the previous answers if there
- was already a config.sh file).
-
- EOH
- . myread
- cat <<EOH
-
- Much effort has been expended to ensure that this shell script will run on any
- Unix system. If despite that it blows up on yours, your best bet is to edit
- Configure and run it again. Also, let me (ram@eiffel.com)
- know how I blew it. If you can't run Configure for some reason, you'll have to
- generate a config.sh file by hand.
-
- This installation script affects things in two ways:
-
- 1) it may do direct variable substitutions on some of the files included
- in this kit.
- 2) it builds a config.h file for inclusion in C programs. You may edit
- any of these files as the need arises after running this script.
-
- If you make a mistake on a question, there is no easy way to back up to it
- currently. The easiest thing to do is to edit config.sh and rerun all the SH
- files. Configure will offer to let you do this before it runs the SH files.
-
- EOH
- dflt="Type carriage return to continue"
- . myread
-
- : see if sh knows # comments
- echo " "
- echo "Checking your sh to see if it knows about # comments..."
- if sh -c '#' >/dev/null 2>&1 ; then
- echo "Your sh handles # comments correctly."
- shsharp=true
- spitshell=cat
- echo " "
- echo "Okay, let's see if #! works on this system..."
- echo "#!/bin/cat" >try
- $eunicefix try
- chmod +x try
- try > today
- if test -s today; then
- echo "It does."
- sharpbang='#!'
- else
- echo "#! /bin/cat" > try
- $eunicefix try
- chmod +x try
- try > today
- if test -s today; then
- echo "It does."
- sharpbang='#! '
- else
- echo "It doesn't."
- sharpbang=': use '
- fi
- fi
- else
- echo "Your sh doesn't grok # comments--I will strip them later on."
- shsharp=false
- echo "exec grep -v '^[ ]*#'" >spitshell
- chmod +x spitshell
- $eunicefix spitshell
- spitshell=`pwd`/spitshell
- echo "I presume that if # doesn't work, #! won't work either!"
- sharpbang=': use '
- fi
- rm -f try today
-
- : figure out how to guarantee sh startup
- echo " "
- echo "Checking out how to guarantee sh startup..."
- startsh=$sharpbang'/bin/sh'
- echo "Let's see if '$startsh' works..."
- cat >try <<EOSS
- $startsh
- set abc
- test "$?abc" != 1
- EOSS
-
- chmod +x try
- $eunicefix try
- if try; then
- echo "Yup, it does."
- else
- echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
- fi
- rm -f try
-
- : find out where common programs are
- echo " "
- echo "Locating common programs..."
- cat <<EOSC >loc
- $startsh
- case \$# in
- 0) exit 1;;
- esac
- thing=\$1
- shift
- dflt=\$1
- shift
- for dir in \$*; do
- case "\$thing" in
- .)
- if test -d \$dir/\$thing; then
- echo \$dir
- exit 0
- fi
- ;;
- *)
- if test -f \$dir/\$thing; then
- echo \$dir/\$thing
- exit 0
- elif test -f \$dir/\$thing.exe; then
- : on Eunice apparently
- echo \$dir/\$thing
- exit 0
- fi
- ;;
- esac
- done
- echo \$dflt
- exit 1
- EOSC
- chmod +x loc
- $eunicefix loc
- loclist="
- awk
- cat
- chgrp
- chmod
- chown
- echo
- expr
- grep
- mv
- rm
- sed
- sleep
- sort
- tr
- uniq
- "
- trylist="
- Mcc
- cpp
- date
- inews
- nroff
- perl
- test
- uname
- zcat
- "
- pth=`echo $PATH | sed -e 's/:/ /g'`
- pth="$pth /lib /usr/lib"
- for file in $loclist; do
- xxx=`loc $file $file $pth`
- eval $file=$xxx
- eval _$file=$xxx
- case "$xxx" in
- /*)
- echo $file is in $xxx.
- ;;
- *)
- echo "I don't know where $file is. I hope it's in everyone's PATH."
- ;;
- esac
- done
- echo " "
- echo "Don't worry if any of the following aren't found..."
- ans=offhand
- for file in $trylist; do
- xxx=`loc $file $file $pth`
- eval $file=$xxx
- eval _$file=$xxx
- case "$xxx" in
- /*)
- echo $file is in $xxx.
- ;;
- *)
- echo "I don't see $file out there, $ans."
- ans=either
- ;;
- esac
- done
- case "$egrep" in
- egrep)
- echo "Substituting grep for egrep."
- egrep=$grep
- ;;
- esac
- case "$test" in
- test)
- echo "Hopefully test is built into your sh."
- ;;
- /bin/test)
- if sh -c "PATH= test true" >/dev/null 2>&1; then
- echo "Using the test built into your sh."
- test=test
- fi
- ;;
- *)
- test=test
- ;;
- esac
- case "$echo" in
- echo)
- echo "Hopefully echo is built into your sh."
- ;;
- /bin/echo)
- echo " "
- echo "Checking compatibility between /bin/echo and builtin echo (if any)..."
- $echo $n "hi there$c" >foo1
- echo $n "hi there$c" >foo2
- if cmp foo1 foo2 >/dev/null 2>&1; then
- echo "They are compatible. In fact, they may be identical."
- else
- case "$n" in
- '-n') n='' c='\c';;
- *) n='-n' c='';;
- esac
- cat <<FOO
- They are not compatible! You are probably running ksh on a non-USG system.
- I'll have to use /bin/echo instead of the builtin, since Bourne shell doesn't
- have echo built in and we may have to run some Bourne shell scripts. That
- means I'll have to use $ans to suppress newlines now. Life is ridiculous.
-
- FOO
- $echo $n "The star should be here-->$c"
- $echo "*"
- fi
- $rm -f foo1 foo2
- ;;
- *)
- : cross your fingers
- echo=echo
- ;;
- esac
- rmlist="$rmlist loc"
-
- : try to determine whether config.sh was made on this system
- myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
- dflt=n
- if test -f ../config.sh; then
- xxx=$myuname
- eval "`grep myuname= ../config.sh`"
- if test "X$xxx" = "X$myuname"; then
- dflt=y
- fi
- fi
-
- : get old answers, if there is a config file out there
- hint=default
- if test -f ../config.sh; then
- echo " "
- rp="I see a config.sh file. Did Configure make it on THIS system?"
- . myread
- case "$ans" in
- n*|N*) echo "OK, I'll ignore it.";;
- *) echo "Fetching default answers from your old config.sh file..."
- tmp="$n"
- ans="$c"
- . ../config.sh
- cp ../config.sh .
- n="$tmp"
- c="$ans"
- hint=previous
- ;;
- esac
- fi
-
- : restore computed paths
- for file in $loclist $trylist; do
- eval $file="\$_$file"
- done
-
- : preserve RCS keywords in files with variable substitution, grrr
- Header='$Header'
- Id='$Id'
- Log='$Log'
-
- : make some quick guesses about what we are up against
- echo " "
- $echo $n "Hmm... $c"
- $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
- if test `echo abc | tr a-z A-Z` = Abc ; then
- xxx=`./loc addbib blurfl $pth`
- if $test -f $xxx; then
- echo "Looks kind of like a USG system with BSD features, but we'll see..."
- echo exit 0 >bsd
- echo exit 0 >usg
- echo exit 1 >v7
- else
- if $contains SIGTSTP foo >/dev/null 2>&1 ; then
- echo "Looks kind of like an extended USG system, but we'll see..."
- else
- echo "Looks kind of like a USG system, but we'll see..."
- fi
- echo exit 1 >bsd
- echo exit 0 >usg
- echo exit 1 >v7
- fi
- d_bsd="$undef"
- elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
- echo "Looks kind of like a BSD system, but we'll see..."
- d_bsd="$define"
- echo exit 0 >bsd
- echo exit 1 >usg
- echo exit 1 >v7
- else
- echo "Looks kind of like a Version 7 system, but we'll see..."
- d_bsd="$undef"
- echo exit 1 >bsd
- echo exit 1 >usg
- echo exit 0 >v7
- fi
- case "$eunicefix" in
- *unixtovms*)
- cat <<'EOI'
- There is, however, a strange, musty smell in the air that reminds me of
- something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
- EOI
- echo "exit 0" >eunice
- eunicefix=unixtovms
- d_eunice="$define"
- : it so happens the Eunice I know will not run shell scripts in Unix format
- ;;
- *)
- echo " "
- echo "Congratulations. You aren't running Eunice."
- eunicefix=':'
- d_eunice="$undef"
- echo "exit 1" >eunice
- ;;
- esac
- if test -f /xenix; then
- echo "Actually, this looks more like a XENIX system..."
- echo "exit 0" >xenix
- d_xenix="$define"
- else
- echo " "
- echo "It's not Xenix..."
- echo "exit 1" >xenix
- d_xenix="$undef"
- fi
- chmod +x xenix
- $eunicefix xenix
- if test -f /venix; then
- echo "Actually, this looks more like a VENIX system..."
- echo "exit 0" >venix
- else
- echo " "
- if xenix; then
- : null
- else
- echo "Nor is it Venix..."
- fi
- echo "exit 1" >venix
- fi
- chmod +x bsd usg v7 eunice venix
- $eunicefix bsd usg v7 eunice venix
- $rm -f foo
- rmlist="$rmlist bsd usg v7 eunice venix xenix"
-
- : set up shell script to do ~ expansion
- cat >filexp <<EOSS
- $startsh
- : expand filename
- case "\$1" in
- ~/*|~)
- echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
- ;;
- ~*)
- if $test -f /bin/csh; then
- /bin/csh -f -c "glob \$1"
- echo ""
- else
- name=\`$expr x\$1 : '..\([^/]*\)'\`
- dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
- if $test ! -d "\$dir"; then
- me=\`basename \$0\`
- echo "\$me: can't locate home directory for: \$name" >&2
- exit 1
- fi
- case "\$1" in
- */*)
- echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
- ;;
- *)
- echo \$dir
- ;;
- esac
- fi
- ;;
- *)
- echo \$1
- ;;
- esac
- EOSS
- chmod +x filexp
- $eunicefix filexp
-
- : determine where manual pages are on this system
- echo " "
- case "$sysman" in
- '') sysman=`loc . /usr/man/man1 /usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1 /usr/man/u_man/man1 /usr/share/man/man1 /usr/catman/u_man/man1 /usr/man/l_man/man1 /usr/local/man/u_man/man1 /usr/local/man/l_man/man1 /usr/man/man.L`
- ;;
- esac
- if test -d "$sysman"; then
- echo "System manual is in $sysman."
- else
- echo "Could not find manual pages in source form."
- fi
-
- : see what memory models we can support
- case "$models" in
- '')
- $cat >pdp11.c <<'EOP'
- main() {
- #ifdef pdp11
- exit(0);
- #else
- exit(1);
- #endif
- }
- EOP
- cc -o pdp11 pdp11.c >/dev/null 2>&1
- if pdp11 2>/dev/null; then
- dflt='unsplit split'
- else
- ans=`loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
- case "$ans" in
- X) dflt='none';;
- *) if $test -d /lib/small || $test -d /usr/lib/small; then
- dflt='small'
- else
- dflt=''
- fi
- if $test -d /lib/medium || $test -d /usr/lib/medium; then
- dflt="$dflt medium"
- fi
- if $test -d /lib/large || $test -d /usr/lib/large; then
- dflt="$dflt large"
- fi
- if $test -d /lib/huge || $test -d /usr/lib/huge; then
- dflt="$dflt huge"
- fi
- esac
- fi;;
- *) dflt="$models";;
- esac
- $cat <<EOM
-
- Some systems have different model sizes. On most systems they are called
- small, medium, large, and huge. On the PDP11 they are called unsplit and
- split. If your system doesn't support different memory models, say "none".
- If you wish to force everything to one memory model, say "none" here and
- put the appropriate flags later when it asks you for other cc and ld flags.
- Venix systems may wish to put "none" and let the compiler figure things out.
- (In the following question multiple model names should be space separated.)
-
- EOM
- rp="Which models are supported?"
- . myread
- models="$ans"
-
- case "$models" in
- none)
- small=''
- medium=''
- large=''
- huge=''
- unsplit=''
- split=''
- ;;
- *split)
- case "$split" in
- '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
- $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
- dflt='-i'
- else
- dflt='none'
- fi;;
- *) dflt="$split";;
- esac
- rp="What flag indicates separate I and D space?"
- . myread
- case "$ans" in
- none) ans='';;
- esac
- split="$ans"
- unsplit='';;
- *large*|*small*|*medium*|*huge*)
- case "$model" in
- *large*)
- case "$large" in
- '') dflt='-Ml';;
- *) dflt="$large";;
- esac
- rp="What flag indicates large model?"
- . myread
- case "$ans" in
- none) ans='';
- esac
- large="$ans";;
- *) large='';;
- esac
- case "$model" in
- *huge*) case "$huge" in
- '') dflt='-Mh';;
- *) dflt="$huge";;
- esac
- rp="What flag indicates huge model?"
- . myread
- case "$ans" in
- none) ans='';
- esac
- huge="$ans";;
- *) huge="$large";;
- esac
- case "$model" in
- *medium*) case "$medium" in
- '') dflt='-Mm';;
- *) dflt="$medium";;
- esac
- rp="What flag indicates medium model?"
- . myread
- case "$ans" in
- none) ans='';
- esac
- medium="$ans";;
- *) medium="$large";;
- esac
- case "$model" in
- *small*) case "$small" in
- '') dflt='none';;
- *) dflt="$small";;
- esac
- rp="What flag indicates small model?"
- . myread
- case "$ans" in
- none) ans='';
- esac
- small="$ans";;
- *) small='';;
- esac
- ;;
- *)
- echo "Unrecognized memory models--you may have to edit Makefile.SH"
- ;;
- esac
-
- : see if we need a special compiler
- echo " "
- if usg; then
- case "$cc" in
- '') case "$Mcc" in
- /*) dflt='Mcc';;
- *) case "$large" in
- -M*) dflt='cc';;
- *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
- if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
- dflt='cc'
- else
- dflt='cc -M'
- fi
- else
- dflt='cc'
- fi;;
- esac;;
- esac;;
- *) dflt="$cc";;
- esac
- $cat <<'EOM'
- On some systems the default C compiler will not resolve multiple global
- references that happen to have the same name. On some such systems the "Mcc"
- command may be used to force these to be resolved. On other systems a "cc -M"
- command is required. (Note that the -M flag on other systems indicates a
- memory model to use!) If you have the Gnu C compiler, you might wish to use
- that instead.
-
- EOM
- rp="What command will force resolution on this system?"
- . myread
- cc="$ans"
- else
- case "$cc" in
- '') dflt=cc;;
- *) dflt="$cc";;
- esac
- rp="Use which C compiler?"
- . myread
- cc="$ans"
- fi
- case "$cc" in
- gcc*) cpp=`loc gcc-cpp $cpp $pth`;;
- esac
-
- : What should the include directory be ?
- echo " "
- $echo $n "Hmm... $c"
- case "$usrinc" in
- '') dflt='/usr/include';;
- *) dflt=$usrinc;;
- esac
- incpath=''
- mips_type=''
- if $test -f /bin/mips && /bin/mips; then
- echo "Looks like a MIPS system..."
- $cat >usr.c <<'EOCP'
- #ifdef SYSTYPE_BSD43
- /bsd43
- #endif
- EOCP
- if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
- dflt='/bsd43/usr/include'
- incpath='/bsd43'
- mips_type='BSD 4.3'
- else
- mips_type='System V'
- fi
- echo "and you're compiling with the $mips_type compiler and libraries."
- else
- echo "Doesn't look like a MIPS system."
- echo "exit 1" >mips
- chmod +x mips
- $eunicefix mips
- fi
- cont=true
- while $test "$cont"; do
- echo " "
- rp="Where are the include files you want to use?"
- . myread
- usrinc="$ans"
- if $test -d "$ans"; then
- cont=''
- else
- if $test "$fastread" = yes; then
- dflt=y
- else
- dflt=n
- fi
- rp="Directory $ans doesn't exist. Use that name anyway?"
- . myread
- dflt=''
- case "$ans" in
- y*) cont='';;
- esac
- fi
- done
- $rm -f usr.c usr.out
-
- : now get the host name
- echo " "
- echo "Figuring out host name..."
- cont=true
- echo 'Maybe "hostname" will work...'
- if ans=`sh -c hostname 2>&1` ; then
- hostname=$ans
- phostname=hostname
- cont=''
- fi
- if $test "$cont"; then
- if xenix; then
- echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
- if ans=`cat /etc/systemid 2>&1` ; then
- hostname=$ans
- phostname='cat /etc/systemid'
- echo "Whadyaknow. Xenix always was a bit strange..."
- cont=''
- fi
- elif $test -r /etc/systemid; then
- echo "(What is a non-Xenix system doing with /etc/systemid?)"
- fi
- fi
- if $test "$cont"; then
- echo 'No, maybe "uuname -l" will work...'
- if ans=`sh -c 'uuname -l' 2>&1` ; then
- hostname=$ans
- phostname='uuname -l'
- else
- echo 'Strange. Maybe "uname -n" will work...'
- if ans=`sh -c 'uname -n' 2>&1` ; then
- hostname=$ans
- phostname='uname -n'
- else
- echo 'Oh well, maybe I can mine it out of whoami.h...'
- if ans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
- hostname=`echo "$ans" | $sed 's/^.*"\(.*\)"/\1/'`
- phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
- else
- case "$hostname" in
- '') echo "Does this machine have an identity crisis or something?"
- phostname='';;
- *) echo "Well, you said $hostname before...";;
- esac
- fi
- fi
- fi
- fi
- : you do not want to know about this
- set $hostname
- hostname=$1
-
- : translate upper to lower if necessary
- case "$hostname" in
- *[A-Z]*)
- hostname=`echo $hostname | tr '[A-Z]' '[a-z]'`
- echo "(Normalizing case in your host name)"
- ;;
- esac
-
- : verify guess
- if $test "$hostname" ; then
- dflt=y
- rp='Your host name appears to be "'$hostname'".'" Right?"
- . myread
- case "$ans" in
- y*) ;;
- *) hostname='';;
- esac
- fi
-
- : bad guess or no guess
- while $test "X$hostname" = X ; do
- dflt=''
- rp="Please type the (one word) name of your host:"
- . myread
- hostname="$ans"
- done
-
- case "$hostname" in
- *.*)
- dflt=`expr "X$hostname" : "X[^.]*\(\..*\)"`
- hostname=`expr "X$hostname" : "X\([^.]*\)\."`
- echo "(Trimming domain name from host name--host name is now $hostname)"
- ;;
- *) case "$mydomain" in
- '') dflt=.`$awk "/[0-9].*$hostname/ {for(i=2; i<=NF;i++) print \\\$i}" /etc/hosts|
- $sort|$uniq|$sed -n -e "s/$hostname\.\([a-zA-Z_.]\)/\1/p"`
- case "$dflt" in
- .) echo "(You do not have fully-qualified names in /etc/hosts)"
- dflt='.uucp';;
- esac;;
- *) dflt="$mydomain";;
- esac;;
- esac
- echo " "
- rp="What is your domain name?"
- . myread
- case "$ans" in
- '') ;;
- .*) ;;
- *) ans=".$ans";;
- esac
- mydomain="$ans"
-
- : a little sanity check here
- case "$phostname" in
- '') ;;
- *)
- case `$phostname` in
- $hostname$mydomain|$hostname) ;;
- *)
- case "$phostname" in
- sed*)
- echo "(That doesn't agree with your whoami.h file, by the way.)"
- ;;
- *)
- echo "(That doesn't agree with your $phostname command, by the way.)"
- ;;
- esac
- phostname=''
- ;;
- esac
- ;;
- esac
-
- : decide how portable to be
- case "$d_portable" in
- "$define") dflt=y;;
- *) dflt=n;;
- esac
- $cat <<'EOH'
-
- I can set things up so that your shell scripts and binaries are more portable,
- at what may be a noticable cost in performance. In particular, if you
- ask to be portable, the following happens:
-
- 1) Shell scripts will rely on the PATH variable rather than using
- the paths derived above.
- 2) ~username interpretations will be done at run time rather than
- by Configure.
- 3) The system name will be determined at run time, if at all possible.
-
- EOH
- rp="Do you expect to run these scripts and binaries on multiple machines?"
- . myread
- case "$ans" in
- y*) d_portable="$define"
- for file in $loclist; do
- eval $file=$file
- done
- ;;
- *) d_portable="$undef" ;;
- esac
-
- : Set private lib path
- case "$plibpth" in
- '') if mips; then
- plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
- else
- plibpth="/usr/ccs/lib /usr/lib /usr/ucblib /usr/local/lib"
- fi;;
- esac
- libpth="$plibpth $libpth"
-
- : Looking for optional libraries
- echo " "
- echo "Checking for optional libraries..."
- case "$libs" in
- '') dflt='';;
- *) dflt="$libs";;
- esac
- case "$libswanted" in
- '') libswanted='c_s';;
- esac
- for thislib in $libswanted; do
- case "$thislib" in
- dbm) thatlib=ndbm;;
- *_s) thatlib=NONE;;
- *) thatlib="${thislib}_s";;
- *) thatlib=NONE;;
- esac
- yyy="$incpath/usr/ccs/lib $incpath/usr/lib $incpath/usr/ucblib"
- yyy="$yyy $incpath/usr/local/lib $incpath/lib"
- xxx=`loc lib$thislib.a X $yyy`
- if $test -f $xxx; then
- echo "Found -l$thislib."
- case "$dflt" in
- *-l$thislib*|*-l$thatlib*);;
- *) dflt="$dflt -l$thislib";;
- esac
- else
- xxx=`loc lib$thislib.a X $libpth`
- if $test -f $xxx; then
- echo "Found $xxx."
- case "$dflt" in
- *$xxx*);;
- *) dflt="$dflt $xxx";;
- esac
- else
- xxx=`loc Slib$thislib.a X $xlibpth`
- if $test -f $xxx; then
- echo "Found -l$thislib."
- case "$dflt" in
- *-l$thislib*|*-l$thatlib*);;
- *) dflt="$dflt -l$thislib";;
- esac
- else
- echo "No -l$thislib."
- fi
- fi
- fi
- done
- set X $dflt
- shift
- dflt="$*"
- case "$libs" in
- '') dflt="$dflt";;
- *) dflt="$libs";;
- esac
- case "$dflt" in
- '') dflt='none';;
- esac
-
- $cat <<EOM
-
- Some versions of Unix support shared libraries, which make executables smaller
- but make load time slightly longer.
-
- On some systems, mostly newer Unix System V's, the shared library is included
- by putting the option "-lc_s" as the last thing on the cc command line when
- linking. Other systems use shared libraries by default. There may be other
- libraries needed to compile $package on your machine as well. If your system
- needs the "-lc_s" option, include it here. Include any other special libraries
- here as well. Say "none" for none.
- EOM
-
- echo " "
- rp="Any additional libraries?"
- . myread
- case "$ans" in
- none) ans='';
- esac
- libs="$ans"
-
- : get list of predefined functions in a handy place
- echo " "
- case "$libc" in
- '') libc=unknown;;
- esac
- case "$nm_opt" in
- '') if $test -f /mach_boot; then
- nm_opt=''
- elif $test -d /usr/ccs/lib; then
- nm_opt='-p'
- elif $test -f /dgux; then
- nm_opt='-p'
- else
- nm_opt=''
- fi;;
- esac
- libpth="$plibpth $libpth"
- case "$libs" in
- *-lc_s*) libc=`loc libc_s.a $libc $libpth`
- esac
- libnames='';
- case "$libs" in
- '') ;;
- *) for thislib in $libs; do
- case "$thislib" in
- -l*) thislib=`expr X$thislib : 'X-l\(.*\)'`
- try=`loc lib$thislib.a blurfl/dyick $libpth`
- if test ! -f $try; then
- try=`loc lib$thislib blurfl/dyick $libpth`
- if test ! -f $try; then
- try=`loc $thislib blurfl/dyick $libpth`
- if test ! -f $try; then
- try=`loc Slib$thislib.a blurfl/dyick $xlibpth`
- if test ! -f $try; then
- try=''
- fi
- fi
- fi
- fi
- libnames="$libnames $try"
- ;;
- *) libnames="$libnames $thislib" ;;
- esac
- done
- ;;
- esac
- set /usr/ccs/lib/libc.so
- $test -f $1 || set /usr/lib/libc.so
- $test -f $1 || set /usr/lib/libc.so.[0-9]*
- $test -f $1 || set /lib/libsys_s.a
- eval set \$$#
- if test -f "$1"; then
- echo "Your (shared) C library seems to be in $1."
- libc="$1"
- elif test -f /lib/libc && test -f /lib/clib; then
- echo "Your C library seems to be in both /lib/clib and /lib/libc."
- libc='/lib/clib /lib/libc'
- if test -f /lib/syslib; then
- echo "(Your math library is in /lib/syslib.)"
- libc="$libc /lib/syslib"
- fi
- elif test -f "$libc"; then
- echo "Your C library seems to be in $libc, as you said before."
- elif test -f $incpath/usr/lib/libc.a; then
- libc=$incpath/usr/lib/libc.a;
- echo "Your C library seems to be in $libc. That's fine."
- elif test -f /lib/libc.a; then
- libc=/lib/libc.a;
- echo "Your C library seems to be in $libc. You're normal."
- else
- if ans=`./loc libc.a blurfl/dyick $libpth`; test -f "$ans"; then
- :
- elif ans=`./loc libc blurfl/dyick $libpth`; test -f "$ans"; then
- libnames="$libnames "`./loc clib blurfl/dyick $libpth`
- elif ans=`./loc clib blurfl/dyick $libpth`; test -f "$ans"; then
- :
- elif ans=`./loc Slibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then
- :
- elif ans=`./loc Mlibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then
- :
- else
- ans=`./loc Llibc.a blurfl/dyick $xlibpth`
- fi
- if test -f "$ans"; then
- echo "Your C library seems to be in $ans, of all places."
- libc=$ans
- else
- libc='blurfl'
- fi
- fi
- if $test -f "$libc"; then
- dflt="$libc"
- cat <<EOM
-
- If the guess above is wrong (which it might be if you're using a strange
- compiler, or your machine supports multiple models), you can override it here.
-
- EOM
- else
- dflt=''
- echo $libpth | tr ' ' '\012' | sort | uniq > libpath
- cat <<EOM
- I can't seem to find your C library. I've looked in the following places:
-
- EOM
- $sed 's/^/ /' libpath
- cat <<EOM
-
- None of these seems to contain your C library. I need to get its name...
-
- EOM
- fi
- cont=true
- while $test "$cont"; do
- rp="Where is your C library?"
- . myread
- libc="$ans"
- if $test -f "$libc"; then
- cont=''
- else
- case "$fastread" in
- yes) dflt=y;;
- *) dflt=n;;
- esac
- rp="File $libc does not exist. Use that name anyway?"
- . myread
- case "$ans" in
- y*) cont='';;
- esac
- dflt=''
- fi
- done
- echo " "
- echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
- set X `cat libnames`
- shift
- xxx=files
- case $# in 1) xxx=file; esac
- echo "Extracting names from the following $xxx for later perusal:"
- echo " "
- $sed 's/^/ /' libnames
- echo " "
- $echo $n "This may take a while...$c"
- nm $nm_opt $* 2>/dev/null >libc.tmp
- $echo $n ".$c"
- $grep fprintf libc.tmp > libc.ptf
- xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c"'
- xrun='eval "<libc.tmp $com >libc.list"; echo "done"'
- if com="$sed -n -e 's/^.* [ADTS] *_[_.]*//p' -e 's/^.* [ADTS] //p'";\
- eval $xscan;\
- $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- eval $xrun
- elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
- eval $xscan;\
- $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- eval $xrun
- elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
- eval $xscan;\
- $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- eval $xrun
- elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
- eval $xscan;\
- $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- eval $xrun
- elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
- eval $xscan;\
- $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- eval $xrun
- elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
- eval $xscan;\
- $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- eval $xrun
- elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
- -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
- eval $xscan;\
- $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- eval $xrun
- elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
- eval $xscan;\
- $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- eval $xrun
- elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
- eval $xscan;\
- $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- eval $xrun
- else
- nm -p $* 2>/dev/null >libc.tmp
- com="$sed -n -e 's/^.* [ADTS] *_[_.]*//p' -e 's/^.* [ADTS] //p'";\
- eval "<libc.tmp $com >libc.list"
- if $contains '^fprintf$' libc.list >/dev/null 2>&1; then
- nm_opt='-p'
- echo "done"
- else
- echo " "
- echo "nm didn't seem to work right. Trying ar instead..."
- com=''
- if ar t $libc > libc.tmp; then
- for thisname in $libnames; do
- ar t $thisname >>libc.tmp
- done
- $sed -e 's/\.o$//' < libc.tmp > libc.list
- echo "Ok."
- else
- echo "ar didn't seem to work right."
- echo "Maybe this is a Cray...trying bld instead..."
- if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list; then
- for thisname in $libnames; do
- bld t $libnames | \
- $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
- ar t $thisname >>libc.tmp
- done
- echo "Ok."
- else
- echo "That didn't work either. Giving up."
- exit 1
- fi
- fi
- fi
- fi
- nm_extract="$com"
- if test -f /lib/syscalls.exp; then
- echo " "
- echo "Also extracting names from /lib/syscalls.exp for good ole AIX..."
- $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
- fi
- $rm -f libnames libpath
-
- : see how we will look up host name
- echo " "
- d_uname="$undef"
- d_gethname="$undef"
- d_phostname="$undef"
- if xenix; then
- echo "(Assuming Xenix uname() is broken.)"
- elif $contains '^gethostname$' libc.list >/dev/null 2>&1 ; then
- echo "gethostname() found."
- d_gethname="$define"
- ans=gethostname
- elif $contains '^uname$' libc.list >/dev/null 2>&1 ; then
- echo "uname() found."
- d_uname="$define"
- ans=uname
- fi
- case "$d_uname$d_gethname" in
- *define*)
- dflt=n
- cat <<EOM
-
- Every now and then someone has a $ans() that lies about the hostname
- but can't be fixed for political or economic reasons. If you wish, I can
- pretend $ans() isn't there and maybe compile in the hostname or
- compute it from the '$phostname' command at run-time.
-
- EOM
-