view configure1.in @ 1629:b57feef74718

* configure: Use GCC-style configuration names, using config.sub. Change the usage and help messages. * configure: Initialize window_system, not indow_system. * configure: Report which window system, compiler, and signal handler return type we decide to use.
author Jim Blandy <jimb@redhat.com>
date Fri, 20 Nov 1992 17:08:32 +0000
parents b941e08deb56
children bd3afc204773
line wrap: on
line source

#!/bin/sh
# Configuration script for GNU Emacs
#   Copyright (C) 1992 Free Software Foundation, Inc.

#This file is part of GNU Emacs.

#GNU Emacs is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 1, or (at your option)
#any later version.

#GNU Emacs is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

#You should have received a copy of the GNU General Public License
#along with GNU Emacs; see the file COPYING.  If not, write to
#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

# Shell script to edit files and make symlinks in preparation for
# compiling Emacs.
#
# Usage: configure config_name
#
# If configure succeeds, it leaves its status in config.status.
# If configure fails after disturbing the status quo,
# 	config.status is removed.
#

# Remove any leading "." elements from the path name.  If we don't
# remove them, then another "./" will be prepended to the file name
# each time we use config.status, and the program name will get larger
# and larger.  This wouldn't be a problem, except that since progname
# gets recorded in all the Makefiles this script produces,
# move-if-changed thinks they're different when they're not.
#
# It would be nice if we could put the ./ in a \( \) group and then
# apply the * operator to that, so we remove as many leading ./././'s
# as are present, but some seds (like Ultrix's sed) don't allow you to
# apply * to a \( \) group.  Bleah.
progname="`echo $0 | sed 's:^\./::'`"

short_usage="Type \`${progname} -usage' for more information about options."

usage_message="Usage: ${progname} CONFIGURATION [-OPTION[=VALUE] ...]

Set compilation and installation parameters for GNU Emacs, and report.
CONFIGURATION specifies the machine and operating system to build for.
For example:
        ${progname} sparc-sun-sunos4.1
configures Emacs to build on a Sun Sparc machine running SunOS 4.1, and 
        ${progname} decstation
configures Emacs to run on a DECstation running Ultrix.  See \`etc/MACHINES'.
Options are:
  --with-x, --with-x11 or --with-x10 - what window system to use;
         default is to use X11 if present.  If you don't want X, specify
         \`--with-x=no'.
  -g, -O - Passed to the compiler.  Default is -g, plus -O if using gcc.
  --prefix=DIR - where to install Emacs's library files
  --libdir=DIR - where to look for arch-dependent library files
  --datadir=DIR - where to look for architecture-independent library files
  --bindir=DIR - where to install the Emacs executable, and some friends
  --lisppath=PATH - colon-separated list of Emacs Lisp directories
  --lockdir=DIR - where Emacs should do its file-locking stuff
If successful, ${progname} leaves its status in config.status.  If
unsuccessful after disturbing the status quo, config.status is removed."
# These are omitted since users should not mess with them.
#  --gnu-malloc=[yes] or no - use the GNU memory allocator
#  --rel-alloc=[yes] or no - use compacting allocator for buffers
#  --lisp-float-type=[yes] or no - Support floating point in Emacs Lisp.
# --window-system is omitted because --with... follow the conventions.

if [ ! -r ./src/lisp.h ]; then
  echo "${progname}: Can't find Emacs sources in \`./src'.
Run this config script in the top directory of the Emacs source tree." >&2
  exit 1
fi

# The option names defined here are actually the shell variable names.
# They should have `_' in place of `-'.
options=":\
usage:help:\
with_x:with_x11:with_x10:\
g:O:\
prefix:bindir:emacsdir:datadir:lispdir:locallisppath:\
lisppath:buildlisppath:statedir:lockdir:libdir:mandir:infodir:\
"

boolean_opts=":\
g:O:with_x:with_x10:\
"

config_h_opts=":\
have_x_windows:have_x11:have_x_menu:\
c_switch_site:sigtype:gnu_malloc:rel_alloc:lisp_float_type:\
"

prefix=
bindir=/usr/local/bin
gnu_malloc=yes
lisp_float_type=yes

# The default values for the following options are guessed at after other
# options have been checked and given values, so we set them to null here.
lisppath=""
datadir=""
libdir=""
lockdir=""
window_system=""

# Record all the arguments, so we can save them in config.status.
arguments="$@"

echo "Examining options."
while [ $# != 0 ]; do
  arg="$1"
  case "${arg}" in
    -*)
      # Separate the switch name from the value it's being given.
      case "${arg}" in
        -*=*)
	  opt=`echo ${arg} | sed 's:^-*\([^=]*\)=.*$:\1:'`
	  val=`echo ${arg} | sed 's:^-*[^=]*=\(.*\)$:\1:'`
	  valomitted=no
	;;
        -*)
          # If FOO is a boolean argument, -FOO is equivalent to
          # -FOO=yes.  Otherwise, the value comes from the next
          # argument - see below.
	  opt=`echo ${arg} | sed 's:^-*\(.*\)$:\1:'`
          val="yes"
          valomitted=yes
        ;;
      esac

      # Also change `-' in the option name to `_'.
      opt="`echo ${opt} | tr - _`"

      # Make sure the argument is valid and unambiguous.
      case ${options} in
        *:${opt}:* )	# Exact match.
          optvar=${opt}
        ;;
        *:${opt}*:${opt}*:* )	# Ambiguous prefix.
	  echo "\`-${opt}' is an ambiguous switch; it could be any of the following:"
	  # We can't just use tr to translate colons to newlines, since
	  # BSD sed and SYSV sed use different syntaxes for that.
	  spaced_options=`echo ${options} | tr ':' ' '`
	  echo `(for option in ${spaced_options}; do echo $option; done) \
	        | grep "^${opt}"`
	  echo ${short_usage}
	  exit 1
	;;
        *:${opt}*:* )		# Unambigous prefix.
	  optvar=`echo ${options} | sed 's/^.*:\('${opt}'[^:]*\):.*$/\1/'`
        ;;
	* )
	  (echo "\`-${opt}' is not a valid option."
	   echo "${short_usage}") | more
	  exit 1
	;;
      esac

      case "${optvar}" in
        usage | help)
          echo "${usage_message}" | more
          exit 1
        ;;
      esac

      # If the variable is supposed to be boolean, make sure the value
      # given is either "yes" or "no".  If not, make sure some value
      # was given.
      case "${boolean_opts}" in
        *:${optvar}:* )
	  case "${val}" in
	    y | ye | yes )	val=yes ;;
	    n | no )		val=no  ;;
	    * )
	      echo "The \`-${optvar}' option (\`-${opt}') is supposed to have a boolean
  value - set it to either \`yes' or \`no'." >&2
	      exit 1
	    ;;
	  esac
        ;;
        *)
	  if [ "${valomitted}" = "yes" ]; then
            if [ $# = 1 ]; then
	      (echo "${progname}: You must give a value for the \`-${opt}' option, as in
    \`-${opt}=FOO'."
	       echo "${short_usage}") | more
	      exit 1
	    fi
	    shift; val="$1"
	  fi
        ;;
      esac

      eval "${optvar}=\"${val}\""
    ;;
    *)
      configuration=${arg}
    ;;
  esac
  shift
done

if [ "${configuration}" = "" ]; then
  (echo "You must specify a configuration name as an argument to ${progname}."
   echo "${short_usage}") | more
  exit 1
fi

# Canonicalize the configuration name.
echo "Checking the configuration name."
if configuration=`./config.sub "${configuration}"` ; then : ; else
  exit $?
fi

# Given the canonicalized configuration name, set machfile and opsysfile to
# the names of the m/*.h and s/*.h files we should use.

### You would hope that you could choose an m/*.h file pretty much
### based on the machine portion of the configuration name, and an s-
### file based on the operating system portion.  However, it turns out
### that each m/*.h file is pretty manufacturer-specific - for
### example, apollo.h, hp9000s300.h, mega68k, news.h, and tad68k are
### all 68000 machines; mips.h, pmax.h, and news-risc are all MIPS
### machines.  So we basically have to have a special case for each
### configuration name.

### As far as handling version numbers on operating systems is
### concerned, make sure things will fail in a fixable way.  If
### /etc/MACHINES doesn't say anything about version numbers, be
### prepared to handle anything reasonably.  If version numbers
### matter, be sure /etc/MACHINES says something about it.
machine='' opsys='' unported='false'
case "${configuration}" in

  ## Alliant machines
  ## Strictly speaking, we need the version of the alliant operating
  ## system to choose the right machine file, but currently the
  ## configuration name doesn't tell us enough to choose the right
  ## one; we need to give alliants their own operating system name to
  ## do this right.  When someone cares, they can help us.
  fx80-alliant-* )
    machine=alliant4 opsys=bsd4-2
  ;;
  i860-alliant-* )
    machine=alliant-2800 opsys=bsd4-3
  ;;

  ## Altos 3068
  m68*-altos-sysv* )
    machine=altos opsys=usg5-2
  ;;
    
  ## Amdahl UTS
  580-amdahl-sysv* )
    machine=amdahl opsys=usg5-2-2
  ;;

  ## Appallings - I mean, Apollos - running Domain
  m68*-apollo* )
    machine=apollo opsysfile=bsd4-2.h
  ;;

  ## AT&T 3b2, 3b5, 3b15, 3b20
  we32k-att-sysv* )
    machine=att3b opsys=usg5-2-2
  ;;

  ## AT&T 3b1 - The Mighty Unix PC!
  m68*-att-sysv* )
    machine=7300 opsys=usg5-2-2
  ;;

  ## Bull sps7
  m68*-bull-sysv* )
    machine=sps7 opsys=usg5-2
  ;;

  ## CCI 5/32, 6/32 -- see "Tahoe".

  ## Celerity
  ## I don't know what configuration name to use for this; config.sub
  ## doesn't seem to know anything about it.  Hey, Celerity users, get
  ## in touch with us!
  celerity-celerity-bsd* )
    machine=celerity opsys=bsd4-2
  ;;

  ## Clipper
  ## What operating systems does this chip run that Emacs has been
  ## tested on?
  clipper-* )
    machine=clipper
    ## We'll use the catch-all code at the bottom to guess the
    ## operating system.
  ;;

  ## Convex
  *-convex-bsd* )
    machine=convex opsys=bsd4-3
  ;;

  ## Cubix QBx/386
  i386-cubix-sysv* )
    machine=intel386 opsys=usg5-3
  ;;

  ## Cydra 5
  cydra*-cydrome-sysv* )
    machine=cydra5 opsys=usg5-3
  ;;

  ## DECstations
  mips-dec-ultrix[0-3].* | mips-dec-ultrix4.0 | mips-dec-bsd4.2 )
    machine=pmax opsys=bsd4-2
  ;;
  mips-dec-ultrix* | mips-dec-bsd* )
    machine=pmax opsys=bsd4-3
  ;;
  mips-dec-osf* )
    machine=pmax opsys=osf1
  ;;

  ## Motorola Delta machines
  m68*-motorola-sysv* )
    machine=delta opsys=usg5-3
  ;;
  m88k-motorola-sysv* | m88k-motorola-m88kbcs* )
    machine=delta88k opsys=usg5-3
  ;;

  ## Dual machines
  m68*-dual-sysv* )
    machine=dual opsys=usg5-2
  ;;
  m68*-dual-uniplus* )
    machine=dual opsys=unipl5-2
  ;;

  ## Elxsi 6400
  elxsi-elxsi-sysv* )
    machine=elxsi opsys=usg5-2
  ;;

  ## Encore machines
  ns16k-encore-bsd* )
    machine=ns16000 opsys=umax
  ;;

  ## The GEC 93 - apparently, this port isn't really finished yet.

  ## Gould Power Node and NP1
  pn-gould-bsd4.2 )
    machine=gould opsys=bsd4-2
  ;;
  pn-gould-bsd4.3 )
    machine=gould opsys=bsd4-3
  ;;
  np1-gould-bsd* )
    machine=gould-np1 opsys=bsd4-3
  ;;

  ## Honeywell XPS100
  xps*-honeywell-sysv* )
    machine=xps100 opsys=usg5-2
  ;;

  ## HP 9000 series 200 or 300
  m68*-hp-bsd* )
    machine=hp9000s300 opsys=bsd4-3
  ;;
  ## HP/UX 8 doesn't run on these machines, so use HP/UX 7.
  m68*-hp-hpux* )
    machine=hp9000s300 opsys=hpux
  ;;

  ## HP 9000 series 800, running HP/UX
  hppa1.0-hp-hpux* )
    machine=hp9000s800 opsys=hpux
  ;;

  ## Orion machines
  orion-orion-bsd* )
    machine=orion opsys=bsd4-2
  ;;
  clipper-orion-bsd* )
    machine=orion105 opsys=bsd4-2
  ;;

  ## IBM machines
  i386-ibm-aix1.1 )
    machine=ibmps2-aix opsys=usg5-2-2
  ;;
  i386-ibm-aix1.2 )
    machine=ibmps2-aix opsys=usg5-3
  ;;
  rs6000-ibm-aix* )
    machine=ibmrs6000 opsys=aix3-1
  ;;
  romp-ibm-bsd* )
    machine=ibmrt opsys=bsd4-2
  ;;
  romp-ibm-aix* )
    machine=ibmrt-aix opsys=usg5-2-2
  ;;

  ## Integrated Solutions `Optimum V'
  m68*-isi-bsd4.2 )
    machine=isi-ov opsys=bsd4-2
  ;;
  m68*-isi-bsd4.3 )
    machine=isi-ov opsys=bsd4-3
  ;;

  ## Intel 386 machines where we do care about the manufacturer
  i[34]86-intsys-sysv* )
    machine=is386 opsys=usg5-2-2
  ;;
  ## Intel 386 machines where we don't care about the manufacturer
  i[34]86-* )
    machine=intel386
    case "${configuration}" in
      *-isc1.* | *-isc2.[01]* )	opsys=386-ix ;;
      *-isc* )			opsys=isc2-2 ;;
      *-esix* )			opsys=esix ;;
      *-xenix* )		opsys=xenix ;;
      ## Otherwise, we'll fall through to the generic opsys code at the bottom.
    esac
  ;;

  ## Silicon Graphics machines
  ## Iris 2500 and Iris 2500 Turbo (aka the Iris 3030)
  m68*-sgi-iris3.5 )
    machine=irist opsys=iris3-5
  ;;
  m68*-sgi-iris3.6 | m68*-sgi-iris*)
    machine=irist opsys=iris3-6
  ;;
  ## Iris 4D
  mips-sgi-irix3.* )
    machine=iris4d opsys=irix3-3
  ;;
  mips-sgi-irix4.* | mips-sgi-irix* )
    machine=iris4d opsys=irix4-0
  ;;

  ## Masscomp machines
  m68*-masscomp-rtu )
    machine=masscomp opsys=rtu
  ;;

  ## Megatest machines
  m68*-megatest-bsd* )
    machine=mega68 opsys=bsd4-2
  ;;

  ## Workstations sold by MIPS
  ## This is not necessarily all workstations using the MIPS processor -
  ## Irises are produced by SGI, and DECstations by DEC.

  ## etc/MACHINES lists mips.h and mips4.h as possible machine files,
  ## and usg5-2-2 and bsd4-3 as possible OS files.  The only guidance
  ## it gives for choosing between the alternatives seems to be "Use
  ## -machine=mips4 for RISCOS version 4; use -opsystem=bsd4-3 with
  ## the BSD world."  I'll assume that these are instructions for
  ## handling two odd situations, and that every other situation
  ## should use mips.h and usg5-2-2, they being listed first.
  mips-mips-riscos4* )
    machine=mips4 opsys=usg5-2-2
  ;;
  mips-mips-bsd* )
    machine=mips opsys=bsd4-3
  ;;
  mips-mips-* )
    machine=mips opsys=usg5-2-2
  ;;

  ## The complete machine from National Semiconductor
  ns32k-ns-genix* )
    machine=ns32000 opsys=usg5-2
  ;;

  ## NCR machines
  m68*-ncr-sysv2* )
    machine=tower32 opsys=usg5-2-2
  ;;
  m68*-ncr-sysv3* )
    machine=tower32v3 opsys=usg5-3
  ;;

  ## Nixdorf Targon 31
  m68*-nixdorf-sysv* )
    machine=targon31 opsys=usg5-2-2
  ;;

  ## Nu (TI or LMI)
  m68*-nu-sysv* )
    machine=nu opsys=usg5-2
  ;;

  ## Plexus
  m68*-plexus-sysv* )
    machine=plexus opsys=usg5-2
  ;;

  ## Prime EXL
  i386-prime-sysv* )
    machine=i386 opsys=usg5-3
  ;;

  ## Pyramid machines
  ## I don't really have any idea what sort of processor the Pyramid has,
  ## so I'm assuming it is its own architecture.
  pyramid-pyramid-bsd* )
    machine=pyramid opsys=bsd4-2
  ;;

  ## Sequent Balance
  ns32k-sequent-bsd4.2 )
    machine=sequent opsys=bsd4-2
  ;;
  ns32k-sequent-bsd4.3 )
    machine=sequent opsys=bsd4-3
  ;;
  ## Sequent Symmetry
  i386-sequent-bsd* )
    machine=symmetry opsys=bsd4-3
  ;;

  ## SONY machines
  m68*-sony-bsd4.2 )
    machine=news opsys=bsd4-2
  ;;
  m68*-sony-bsd4.3 )
    machine=news opsys=bsd4-3
  ;;
  mips-sony-bsd* )
    machine=news-risc opsys=bsd4-3
  ;;

  ## Stride
  m68*-stride-sysv* )
    machine=stride opsys=usg5-2
  ;;

  ## Suns
  *-sun-sunos* | *-sun-bsd* )
    case "${configuration}" in
      m68*-sunos1* )	machine=sun1 ;;
      m68*-sunos2* )	machine=sun2 ;;
      m68* )		machine=sun3 ;;
      i[34]86* )	machine=sun386 ;;
      sparc* )		machine=sparc ;;
      * )		unported=true ;;
    esac
    case "${configuration}" in
      *-sunos4.0*	  ) opsys=sunos4-0 ;;
      *-sunos4* | *-sunos ) opsys=sunos4-1 ;;
      *			  ) opsys=bsd4-2   ;;
    esac
  ;;

  ## Tadpole 68k
  m68*-tadpole-sysv* )
    machine=tad68k opsys=usg5-3
  ;;

  ## Tahoe machines
  tahoe-tahoe-bsd4.2 )
    machine=tahoe opsys=bsd4-2
  ;;
  tahoe-tahoe-bsd4.3 )
    machine=tahoe opsys=bsd4-3
  ;;

  ## Tandem Integrity S2
  mips-tandem-sysv* )
    machine=tandem-s2 opsys=usg5-3
  ;;

  ## Tektronix 16000 box (6130?)
  ns16k-tektronix-bsd* )
    machine=ns16000 opsys=bsd4-2
  ;;
  ## Tektronix 4300
  ## src/m/tek4300.h hints that this is a m68k machine.
  m68*-tektronix-bsd* )
    machine=tex4300 opsys=bsd4-3
  ;;

  ## Titan P2 or P3
  ## We seem to have lost the machine-description file titan.h!
  titan-titan-sysv* )
    machine=titan opsys=usg5-3
  ;;
  
  ## Ustation E30 (SS5E)
  m68*-unisys-uniplus* )
    machine=ustation opsystem=unipl5-2
  ;;

  ## Vaxen.
  vax-dec-* )
    machine=vax
    case "${configuration}" in
      *-bsd4.1 ) opsys=bsd4-1 ;;
      *-bsd4.2 | *-ultrix[0-3].* | *-ultrix4.0 ) opsys=bsd4-2 ;;
      *-bsd4.3 | *-ultrix* ) opsys=bsd4-3 ;;
      *-sysv[01]* ) opsys=usg5-0 ;;
      *-sysv2* ) opsys=usg5-2 ;;
      *-vms* ) opsys=vms ;;
      * ) unported=true
    esac
  ;;

  ## Whitechapel MG1
  ns16k-whitechapel-* )
    machine=mg1
    ## We don't know what sort of OS runs on these; we'll let the
    ## operating system guessing code below try.
  ;;

  ## Wicat
  m68*-wicat-sysv* )
    machine=wicat opsys=usg5-2
  ;;

  * )
    unported=true
  ;;
esac

### If the code above didn't choose an operating system, just choose
### an operating system based on the configuration name.  You really
### only want to use this when you have no idea what the right
### operating system is; if you know what operating systems a machine
### runs, it's cleaner to make it explicit in the case statement
### above.
if [ ! "${opsys}" ]; then
  case "${configuration}" in
    *-bsd4.[01] )	opsys=bsd4-1 ;;
    *-bsd4.2 )		opsys=bsd4-2 ;;
    *-bsd4.3 )		opsys=bsd4-3 ;;
    *-sysv0 )		opsys=usg5-0 ;;
    *-sysv2 )		opsys=usg5-2 ;;
    *-sysv2.2 )		opsys=usg5-2-2 ;;
    *-sysv3 )		opsys=usg5-3 ;;
    *-sysv4 )		opsys=usg5-4 ;;
    * )
      unported=true
    ;;
  esac
fi

if $unported ; then
  (echo "${progname}: Emacs hasn't been ported to \`${configuration}' systems."
   echo "${progname}: Check \`etc/MACHINES' for recognized configuration names."
  ) >&2
  exit 1
fi

machfile="m/${machine}.h"
opsysfile="s/${opsys}.h"

if [ ! "${prefix}" ]; then
  prefix="/usr/local"
fi

if [ ! "${emacsdir}" ]; then
  emacsdir="${prefix}/emacs-19.0"
fi

if [ ! "${datadir}" ]; then
  datadir="${emacsdir}/etc"
fi

if [ ! "${lispdir}" ]; then
  lispdir="${emacsdir}/lisp"
fi

if [ ! "${locallisppath}" ]; then
  locallisppath="${emacsdir}/local-lisp"
fi

if [ ! "${lisppath}" ]; then
  lisppath="${locallisppath}:${lispdir}"
fi

if [ ! "${buildlisppath}" ]; then
  buildlisppath=../lisp
fi

if [ ! "${statedir}" ]; then
  statedir="${emacsdir}"
fi

if [ ! "${lockdir}" ]; then
  lockdir="${statedir}/lock"
fi

if [ "${libdir}" = "" ]; then
  libdir="${emacsdir}/arch-lib"
fi

if [ ! "${mandir}" ]; then
  mandir="/usr/man/man1"
fi

if [ ! "${infodir}" ]; then
  infodir="${prefix}/info"
fi

echo "Checking window system."
window_system=''
case "${with_x}" in
  yes )
    window_system=${window_system}x11
  ;;
  no )
    window_system=${window_system}none
esac
case "${with_x11}" in
  yes )
    window_system=${window_system}x11
  ;;
esac
case "${with_x10}" in
  yes )
    window_system=${window_system}x10
  ;;
esac

case "${window_system}" in
  "none" | "x11" | "x10" ) ;;
  "" )
    echo "  No window system specifed.  Looking for X Windows."
    window_system=none
    if [ -r /usr/lib/libX11.a -o -d /usr/include/X11 ]; then
      window_system=x11
    fi
  ;;
  * )
    echo "Don\'t specify the window system more than once." >&2
    exit 1
  ;;
esac

case "${window_system}" in
  x11 )
    have_x_windows=yes
    have_x11=yes
    echo "  Using X11."
  ;;
  x10 )
    have_x_windows=yes
    have_x11=no
    echo "  Using X10."
  ;;
  none )
    have_x_windows=no
    have_x11=no
    echo "  Using no window system."
  ;;
esac

# If we're using X11, we should use the X menu package.
have_x_menu=no
case ${have_x11} in
  yes )
    have_x_menu=yes
  ;;
esac

echo "Checking for GCC."
temppath=`echo $PATH | sed 's/^:/.:/
			    s/::/:.:/g
			    s/:$/:./
			    s/:/ /g'`
cc=`(
  for dir in ${temppath}; do
    if [ -f ${dir}/gcc ]; then echo gcc; exit 0; fi
  done
  echo cc
)`

case "${cc}" in
  "gcc" )
    echo "  Using GCC."
    # With GCC, both O and g should default to yes, no matter what
    # the other is.
    case "${O},${g}" in
      ,  ) O=yes; g=yes ;;
      ,* ) O=yes;	;;
      *, )        g=yes ;;
    esac
  ;;
  "*" )
    echo "  Using the system's CC."
    # With other compilers, treat them as mutually exclusive,
    # defaulting to debug.
    case "${O},${g}" in
      ,    ) O=no ; g=yes ;;
      ,no  ) O=yes;       ;;
      ,yes ) O=no ;       ;;
      no,  )        g=yes ;;
      yes, )        g=no  ;;
    esac
  ;;
esac

# What is the return type of a signal handler?  We run
# /usr/include/signal.h through cpp and grep for the declaration of
# the signal function.  Yuck.
echo "Looking for return type of signal handler functions."
signal_h_file=''
if [ -r /usr/include/signal.h ]; then
  signal_h_file=/usr/include/signal.h
elif [ -r /usr/include/sys/signal.h ]; then
  signal_h_file=/usr/include/sys/signal.h
fi
sigtype=void
if [ "${signal_h_file}" ]; then
  sigpattern='[ 	]*([ 	]*\*[ 	]*signal[ 	]*('

  # We make a copy whose name ends in .c, so the compiler
  # won't complain about having only been given a .h file.
  tempcname="configure.tmp.$$.c"
  cp ${signal_h_file}  ${tempcname}
  if ${cc} -E ${tempcname} | grep "int${sigpattern}" > /dev/null; then
    sigtype=int
  fi
  rm -f ${tempcname}
fi
echo "  Guessing that signals return \`${sigtype}'."

echo "Examining the machine- and system-dependent files to find out"
echo " - which libraries the lib-src programs will want, and"
echo " - whether the GNU malloc routines are usable."
tempcname="configure.tmp.$$.c"
echo '#include "src/'${opsysfile}'"
#include "src/'${machfile}'"
#ifndef LIBS_MACHINE
#define LIBS_MACHINE
#endif
#ifndef LIBS_SYSTEM
#define LIBS_SYSTEM
#endif
@configure@ libsrc_libs=LIBS_MACHINE LIBS_SYSTEM
#ifdef SYSTEM_MALLOC
@configure@ system_malloc=yes
#else
@configure@ system_malloc=no
#endif
' > ${tempcname}
eval `${cc} -E ${tempcname} \
      | grep '@configure@' \
      | sed -e 's/^@configure@//'`
rm ${tempcname}

# Do the opsystem or machine files prohibit the use of the GNU malloc?
if [ "${system_malloc}" = "yes" ]; then
  gnu_malloc=no
  gnu_malloc_reason="
  (The GNU allocators don't work with this system configuration.)"
fi

if [ ! "${rel_alloc}" ]; then
  rel_alloc=${gnu_malloc}
fi

rm -f config.status
set -e

# Make the proper settings in the config file.
echo "Making src/config.h from src/config.h.in"
case "${g}" in
  "yes" ) c_switch_site="${c_switch_site} -g" ;;
esac
case "${O}" in
  "yes" ) c_switch_site="${c_switch_site} -O" ;;
esac
sed_flags="-e 's:@machine@:${machfile}:'"
sed_flags="${sed_flags} -e 's:@opsystem@:${opsysfile}:'"

for flag in `echo ${config_h_opts} | tr ':' ' '`; do
  # Note that SYSV `tr' doesn't handle character ranges.
  cflagname=`echo ${flag} \
	     | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
  val=`eval echo '$'${flag}`
  case ${val} in
    no | "")
      f="-e 's:.*#define ${cflagname}.*:/\\* #define ${cflagname} \\*/:'"
    ;;
    yes)
      f="-e 's:.*#define ${cflagname}.*:#define ${cflagname}:'"
    ;;
    *)
      f="-e 's:.*#define ${cflagname}.*:#define ${cflagname} ${val}:'"
    ;;
  esac
  sed_flags="${sed_flags} ${f}"
done

rm -f src/config.h.tmp
eval '/bin/sed '${sed_flags}' < src/config.h.in > src/config.h.tmp'
./move-if-change src/config.h.tmp src/config.h
# Remind people not to edit this.
chmod -w src/config.h

# Modify the parameters in the top makefile.
echo "Producing ./Makefile from ./Makefile.in."
rm -f Makefile.tmp
(echo "# This file is generated by \`${progname}' from \`./Makefile.in'.
# If you are thinking about editing it, you should seriously consider
# editing \`./Makefile.in' itself, or running \`${progname}' instead."
 /bin/sed < Makefile.in					\
 -e '/^# DIST: /d'					\
 -e 's;^\(prefix=\).*$;\1'"${prefix};"			\
 -e 's;^\(bindir=\).*$;\1'"${bindir};"			\
 -e 's;^\(emacsdir=\).*$;\1'"${emacsdir};"		\
 -e 's;^\(datadir=\).*$;\1'"${datadir};"		\
 -e 's;^\(lispdir=\).*$;\1'"${lispdir};"		\
 -e 's;^\(locallisppath=\).*$;\1'"${locallisppath};"	\
 -e 's;^\(lisppath=\).*$;\1'"${lisppath};"		\
 -e 's;^\(buildlisppath=\).*$;\1'"${buildlisppath};"	\
 -e 's;^\(statedir=\).*$;\1'"${statedir};"		\
 -e 's;^\(lockdir=\).*$;\1'"${lockdir};"		\
 -e 's;^\(libdir=\).*$;\1'"${libdir};"			\
 -e 's;^\(mandir=\).*$;\1'"${mandir};"			\
 -e 's;^\(infodir=\).*$;\1'"${infodir};"		\
) > ./Makefile.tmp
./move-if-change Makefile.tmp Makefile
# Remind people not to edit this.
chmod -w ./Makefile

# Modify the parameters in the `build-install' script.
echo "Producing ./build-install from ./build-install.in."
rm -f ./build-install.tmp
(echo "# This file is generated by \`${progname}' from \`./build-install.in'.
# If you are thinking about editing it, you should seriously consider
# editing \`./build-install.in' itself, or running \`${progname}' instead."
 /bin/sed < build-install.in				\
 -e 's;^\(prefix=\).*$;\1'"${prefix};"			\
 -e 's;^\(bindir=\).*$;\1'"${bindir};"			\
 -e 's;^\(lisppath=\).*$;\1'"${lisppath};"		\
 -e 's;^\(datadir=\).*$;\1'"${datadir};"		\
 -e 's;^\(lockdir=\).*$;\1'"${lockdir};"		\
 -e 's;^\(libdir=\).*$;\1'"${libdir};") > ./build-install.tmp
./move-if-change build-install.tmp build-install
# Remind people not to edit this.
chmod -w build-install
chmod +x build-install

# Modify the parameters in the src makefile.
echo "Producing src/Makefile from src/Makefile.in."
rm -f src/Makefile.tmp
(echo "# This file is generated by \`${progname}' from \`Makefile.in'.
# If you are thinking about editing it, you should seriously consider
# editing \`Makefile.in' itself, or running \`${progname}' instead."
 /bin/sed < src/Makefile.in				\
 -e '/^# DIST: /d'					\
 -e 's;^\(CC[ ]*=\).*$;\1'"${cc};") > src/Makefile.tmp
./move-if-change src/Makefile.tmp src/Makefile
# Remind people not to edit this.
chmod -w src/Makefile

# Modify the parameters in the lib-src makefile.
echo "Producing lib-src/Makefile from lib-src/Makefile.in."
rm -f lib-src/Makefile.tmp
(echo "# This file is generated by \`${progname}' from \`Makefile.in'.
# If you are thinking about editing it, you should seriously consider
# editing \`Makefile.in' itself, or running \`${progname}' instead."
 /bin/sed < lib-src/Makefile.in				\
 -e '/^# DIST: /d'					\
 -e 's;^\(CONFIG_CFLAGS=\).*$;\1'"${c_switch_site};"	\
 -e 's;^\(LOADLIBES=\).*$;\1'"${libsrc_libs};"		\
 -e 's;^\(CC=\).*$;\1'"${cc};") > lib-src/Makefile.tmp
./move-if-change lib-src/Makefile.tmp lib-src/Makefile
# Remind people not to edit this.
chmod -w lib-src/Makefile


# Create a verbal description of what we have done.
message="Configured for \`${configuration}'.

The following values have been set in ./Makefile and ./build-install:
  \`make install' or \`build-install' will place executables in
        ${bindir}.
  Emacs's lisp search path will be
        \`${lisppath}'.
  Emacs will look for its architecture-independent data in
        ${datadir}.
  Emacs will look for its utility programs and other architecture-
  dependent data in
        ${libdir}.
  Emacs will keep track of file-locking in
        ${lockdir}.

The following values have been set in src/config.h:
  What operating system and machine description files should Emacs use?
        \`${opsysfile}' and \`${machfile}'
  Should Emacs use the GNU version of malloc?             ${gnu_malloc}${gnu_malloc_reason}
  Should Emacs use the relocating allocator for buffers?  ${rel_alloc}
  Should Emacs support a floating point data type?        ${lisp_float_type}
  What window system should Emacs use?                    ${window_system}
  What compiler should emacs be built with?               ${cc}
  Should the compilation use \`-g' and/or \`-O'?           ${c_switch_site- neither}"

# Document the damage we have done by writing config.status.

echo '#!/bin/sh' > config.status

echo "# This file is generated by \`${progname}.'
# If you are thinking about editing it, you should seriously consider
# running \`${progname}' instead.
" >> config.status
echo "${message}" | sed -e 's/^/# /' >> config.status
echo "'${progname}' ${arguments} "'$@' >> config.status
# Remind people not to edit this.
chmod -w config.status
chmod +x config.status

# Print the description.
echo
echo "${message}"

exit 0