view Makefile.in @ 14789:d68b71228abd

(bibtex-pop): New generic function which unifies the functionality of bibtex-pop-previous and bibtex-pop-next. Now, bibtex-pop moves to the end of field after the pop. Concatenated strings are now handled correctly. Delimiters are not added to non-delimited entries. Changed occurences of bibtex-text-in-cfield to bibtex-text-in-field. (bibtex-pop-previous, bibtex-pop-next): Call bibtex-pop. (bibtex-complete-string): Fixed bug that removed delimiters around the following field if current field is already undelimited on completion. (bibtex-complete-string, bibtex-remove-double-quotes-or-braces): Only remove delimiters if field text is not concatenated. (bibtex-font-lock-keywords): Use the same regexps used in all other places of bibtex.el to parse the buffer. (bibtex-mode): Changed the definition of font-lock-defaults, so that quote-delimited entries aren't fontified as strings anymore. (bibtex-parse-keys): Changed the regexp used for finding crossref entries. (bibtex-field-const, bibtex-reference-key): Fixed the regexp to match more of the characters allowed here by BibTeX/LaTeX. (bibtex-field-name): Made it less restrictive. (bibtex-field-string): Changed so that quote-delimited entries with quotes inside aren't a problem anymore. Changed nesting level of braces in entries to support three inner braces. (bibtex-validate-buffer): By giving an optional argument, the user can now let it not validate the whole buffer, but only the portion starting at point. Small modification in strategy used to find next entry. (bibtex-print-help-message): Ignore case in field name when searching for help text. (bibtex-submit-bug-report): New function.
author Richard M. Stallman <rms@gnu.org>
date Fri, 08 Mar 1996 17:42:30 +0000
parents 1c0841475030
children 2dbe6630a156
line wrap: on
line source

# DIST: This is the distribution Makefile for Emacs.  configure can
# DIST: make most of the changes to this file you might want, so try
# DIST: that first.

# make all	to compile and build Emacs.
# make install	to install it.
# make TAGS	to update tags tables.
#
# make clean  or  make mostlyclean
#      Delete all files from the current directory that are normally
#      created by building the program.	 Don't delete the files that
#      record the configuration.  Also preserve files that could be made
#      by building, but normally aren't because the distribution comes
#      with them.
#
#      Delete `.dvi' files here if they are not part of the distribution.
# 
# make distclean
#      Delete all files from the current directory that are created by
#      configuring or building the program.  If you have unpacked the
#      source and built the program without creating any other files,
#      `make distclean' should leave only the files that were in the
#      distribution.
# 
# make maintainer-clean
#      Delete everything from the current directory that can be
#      reconstructed with this Makefile.  This typically includes
#      everything deleted by distclean, plus more: C source files
#      produced by Bison, tags tables, info files, and so on.
#
# make extraclean
#      Still more severe - delete backup and autosave files, too.

SHELL = /bin/sh

# If Make doesn't predefine MAKE, set it here.
@SET_MAKE@

# ==================== Things `configure' Might Edit ====================

CC=@CC@
CPP=@CPP@
C_SWITCH_SYSTEM=@c_switch_system@
ALLOCA=@ALLOCA@
LN_S=@LN_S@
CFLAGS=@CFLAGS@
C_SWITCH_X_SITE=@C_SWITCH_X_SITE@
LD_SWITCH_X_SITE=@LD_SWITCH_X_SITE@
YACC=@YACC@

### These help us choose version- and architecture-specific directories
### to install files in.

### This should be the number of the Emacs version we're building,
### like `18.59' or `19.0'.
version=@version@

### This should be the name of the configuration we're building Emacs
### for, like `mips-dec-ultrix' or `sparc-sun-sunos'.
configuration=@configuration@

# ==================== Where To Install Things ====================

# The default location for installation.  Everything is placed in
# subdirectories of this directory.  The default values for many of
# the variables below are expressed in terms of this one, so you may
# not need to change them.  This defaults to /usr/local.
prefix=@prefix@

# Like `prefix', but used for architecture-specific files.
exec_prefix=@exec_prefix@

# Where to install Emacs and other binaries that people will want to
# run directly (like etags).
bindir=@bindir@

# Where to install architecture-independent data files.	 ${lispdir}
# and ${etcdir} are subdirectories of this.
datadir=@datadir@

# Where to install and expect the files that Emacs modifies as it
# runs.	 These files are all architecture-independent. Right now, the
# only such data is the locking directory; ${lockdir} is a
# subdirectory of this.
sharedstatedir=@sharedstatedir@

# Where to install and expect executable files to be run by Emacs
# rather than directly by users, and other architecture-dependent
# data.	 ${archlibdir} is a subdirectory of this.
libexecdir=@libexecdir@

# Where to install Emacs's man pages, and what extension they should have.
mandir=@mandir@
manext=.1
man1dir=$(mandir)/man1

# Where to install and expect the info files describing Emacs.	In the
# past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but
# since there are now many packages documented with the texinfo
# system, it is inappropriate to imply that it is part of Emacs.
infodir=@infodir@

# Where to look for bitmap files.
bitmapdir=@bitmapdir@

# Where to find the source code.  The source code for Emacs's C kernel is
# expected to be in ${srcdir}/src, and the source code for Emacs's
# utility programs is expected to be in ${srcdir}/lib-src.  This is
# set by the configure script's `--srcdir' option.
srcdir=@srcdir@

# Tell make where to find source files; this is needed for the makefiles.
VPATH=@srcdir@

# ==================== Emacs-specific directories ====================

# These variables hold the values Emacs will actually use.  They are
# based on the values of the standard Make variables above.

# Where to install the lisp files distributed with
# Emacs.  This includes the Emacs version, so that the
# lisp files for different versions of Emacs will install
# themselves in separate directories.
lispdir=@lispdir@

# Directories Emacs should search for lisp files specific
# to this site (i.e. customizations), before consulting
# ${lispdir}.  This should be a colon-separated list of
# directories.
locallisppath=@locallisppath@

# Where Emacs will search to find its lisp files.  Before
# changing this, check to see if your purpose wouldn't
# better be served by changing locallisppath.  This
# should be a colon-separated list of directories.
lisppath=@lisppath@

# Where Emacs will search for its lisp files while
# building.  This is only used during the process of
# compiling Emacs, to help Emacs find its lisp files
# before they've been installed in their final location.
# It's usually identical to lisppath, except that 
# it does not include locallisppath, and the
# entry for the directory containing the installed lisp
# files has been replaced with ../lisp.  This should be a
# colon-separated list of directories.
buildlisppath=${srcdir}/lisp

# Where to install the other architecture-independent
# data files distributed with Emacs (like the tutorial,
# the cookie recipes and the Zippy database). This path
# usually contains the Emacs version number, so the data
# files for multiple versions of Emacs may be installed
# at once.
etcdir=@etcdir@

# Where to create and expect the locking directory, where
# the Emacs locking code keeps track of which files are
# currently being edited.
lockdir=@lockdir@

# Where to put executables to be run by Emacs rather than
# the user.  This path usually includes the Emacs version
# and configuration name, so that multiple configurations
# for multiple versions of Emacs may be installed at
# once.
archlibdir=@archlibdir@

# Where to put the docstring file.
docdir=@docdir@

# ==================== Utility Programs for the Build ====================

# Allow the user to specify the install program.
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

# ============================= Targets ==============================

# What emacs should be called when installed.
EMACS = emacs

# Subdirectories to make recursively.  `lisp' is not included
# because the compiled lisp files are part of the distribution
# and you cannot remake them without installing Emacs first.
SUBDIR = lib-src src

# The makefiles of the directories in $SUBDIR.
SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile

# Subdirectories to install, and where they'll go.
# lib-src's makefile knows how to install it, so we don't do that here.
# When installing the info files, we need to do special things to
# avoid nuking an existing dir file, so we don't do that here;
# instead, we have written out explicit code in the `install' targets.
COPYDIR = ${srcdir}/etc ${srcdir}/lisp
COPYDESTS = ${etcdir} ${lispdir}

all:	paths-force ${SUBDIR}

removenullpaths=sed -e 's/^://g' -e 's/:$$//g' -e 's/::/:/g'

# Note that sed is not in /bin on 386bsd.
src/paths.h: Makefile ${srcdir}/src/paths.in
	@echo "Producing \`src/paths.h' from \`src/paths.in'."
	@(lisppath=`echo ${lisppath} | ${removenullpaths}` ;		\
	  buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ;	\
	  sed < ${srcdir}/src/paths.in > paths.h.$$$$		\
	  -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";'	\
	  -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${buildlisppath}'";' \
	  -e 's;\(#.*PATH_EXEC\).*$$;\1 "${archlibdir}";'		\
	  -e 's;\(#.*PATH_INFO\).*$$;\1 "${infodir}";'			\
	  -e 's;\(#.*PATH_DATA\).*$$;\1 "${etcdir}";'			\
	  -e 's;\(#.*PATH_BITMAPS\).*$$;\1 "${bitmapdir}";'		\
	  -e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";'			\
	  -e 's;\(#.*PATH_LOCK\).*$$;\1 "${lockdir}/";') &&		\
	${srcdir}/move-if-change paths.h.$$$$ src/paths.h

# For `make all',
# we force the rebuilding of src/paths.h because the user might give
# make different values for the various directories.  Since we use
# move-if-change, src/paths.h only actually changes if the user did
# something notable, so the only unnecessary work we do is in building
# paths.h.$$, which isn't much.
# Note that sed is not in /bin on 386bsd.
# We depend on src/paths.h here to prevent simultaneous execution of
# that rule and this one, in a parallel make.
# It is possible for paths.h to be updated twice--but that would happen anyway.
paths-force: FRC src/paths.h
	@echo "Producing \`src/paths.h' from \`src/paths.in'."
	@(lisppath=`echo ${lisppath} | ${removenullpaths}` ;		\
	  buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ;	\
	  sed < ${srcdir}/src/paths.in > paths.h.$$$$		\
	  -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";'	\
	  -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${buildlisppath}'";' \
	  -e 's;\(#.*PATH_EXEC\).*$$;\1 "${archlibdir}";'		\
	  -e 's;\(#.*PATH_INFO\).*$$;\1 "${infodir}";'			\
	  -e 's;\(#.*PATH_DATA\).*$$;\1 "${etcdir}";'			\
	  -e 's;\(#.*PATH_BITMAPS\).*$$;\1 "${bitmapdir}";'		\
	  -e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";'			\
	  -e 's;\(#.*PATH_LOCK\).*$$;\1 "${lockdir}/";') &&		\
	${srcdir}/move-if-change paths.h.$$$$ src/paths.h

src:	lib-src FRC src/paths.h

# This ought to depend on src/paths.h, so that in parallel make
# src/paths.h will be available for the compilations in lib-src.
# But that causes trouble in `make install' if a different prefix
# is specified at that time.
lib-src: FRC src/paths.h

.RECURSIVE: ${SUBDIR}

${SUBDIR}: ${SUBDIR_MAKEFILES} FRC
	cd $@; $(MAKE) all $(MFLAGS) \
	  CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
	  LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'

blessmail: ${SUBDIR_MAKEFILES} src FRC
	cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \
	  MAKE='${MAKE}' archlibdir='$(archlibdir)'

Makefile: Makefile.in config.status
	./config.status

src/Makefile: src/Makefile.in config.status
	./config.status

lib-src/Makefile: lib-src/Makefile.in config.status
	./config.status

oldXMenu/Makefile: oldXMenu/Makefile.in config.status
	./config.status

lwlib/Makefile: lwlib/Makefile.in config.status
	./config.status

# ==================== Installation ====================

## If we let lib-src do its own installation, that means we
## don't have to duplicate the list of utilities to install in
## this Makefile as well.

## On AIX, use tar xBf.
## On Xenix, use tar xpf.

.PHONY: install mkdir

## We delete each directory in ${COPYDESTS} before we copy into it;
## that way, we can reinstall over directories that have been put in
## place with their files read-only (perhaps because they are checked
## into RCS).  In order to make this safe, we make sure that the
## source exists and is distinct from the destination.
## We don't depend on `all', but rather on ${SUBDIR}, so that we won't
## ever modify src/paths.h.
install: ${SUBDIR} install-arch-indep install-arch-dep blessmail
	@true

### Install the executables that were compiled specifically for this machine.
### This depends on install-arch-indep because
### the executable needs the Lisp files and DOC file to work properly.
install-arch-dep: mkdir install-arch-indep
	(cd lib-src; \
	  $(MAKE) install $(MFLAGS) prefix=${prefix} \
	    exec_prefix=${exec_prefix} bindir=${bindir} \
	    libexecdir=${libexecdir} archlibdir=${archlibdir})
	${INSTALL_PROGRAM} src/emacs ${bindir}/emacs-${version}
	-chmod 1755  ${bindir}/emacs-${version}
	rm -f ${bindir}/$(EMACS)
	-ln ${bindir}/emacs-${version} ${bindir}/$(EMACS)

### Install the files that are machine-independent.
### Most of them come straight from the distribution;
### the exception is the DOC-* files, which are copied
### from the build directory.

### Note that we copy DOC* and then delete DOC
### as a workaround for a bug in tar on Ultrix 4.2.
install-arch-indep: mkdir
	-set ${COPYDESTS} ; \
	for dir in ${COPYDIR} ; do \
	  if [ `(cd $$1 && /bin/pwd)` != `(cd $${dir} && /bin/pwd)` ] ; then \
	    rm -rf $$1 ; \
	  fi ; \
	  shift ; \
	done
	-set ${COPYDESTS} ; \
	mkdir ${COPYDESTS} ; \
	chmod ugo+rx ${COPYDESTS} ; \
	for dir in ${COPYDIR} ; do \
	  dest=$$1 ; shift ; \
	  [ -d $${dir} ] \
	  && [ `(cd $${dir} && /bin/pwd)` != `(cd $${dest} && /bin/pwd)` ] \
	  && (echo "Copying $${dir} to $${dest}..." ; \
	      (cd $${dir}; tar -cf - . )|(cd $${dest};umask 022; tar -xvf - ); \
	      for subdir in `find $${dest} -type d ! -name RCS -print` ; do \
		rm -rf $${subdir}/RCS ; \
		rm -rf $${subdir}/CVS ; \
		rm -f  $${subdir}/\#* ; \
		rm -f  $${subdir}/.\#* ; \
		rm -f  $${subdir}/*~ ; \
		rm -f  $${subdir}/*.orig ; \
		rm -f  $${subdir}/[mM]akefile* ; \
		rm -f  $${subdir}/ChangeLog* ; \
		rm -f  $${subdir}/dired.todo ; \
	      done) ; \
	done
	-rm -f ${lispdir}/subdirs.el
	$(srcdir)/update-subdirs ${lispdir}
	-chmod -R a+r ${COPYDESTS}
	if [ `(cd ./etc; /bin/pwd)` != `(cd ${docdir}; /bin/pwd)` ]; \
	then \
	   echo "Copying etc/DOC-* to ${docdir} ..." ; \
	   (cd etc; tar -cf - DOC*)|(cd ${docdir}; umask 0; tar -xvf - ); \
	   (cd $(docdir); chmod a+r DOC*; rm DOC) \
	else true; fi
	if [ x`(cd ./lisp; /bin/pwd)` != x`(cd ${lispdir}; /bin/pwd)` ] \
	   && [ x`(cd ${srcdir}/lisp; /bin/pwd)` != x`(cd ./lisp; /bin/pwd)` ]; \
	then \
	   echo "Copying lisp/*.el and lisp/*.elc to ${lispdir} ..." ; \
	   (cd lisp; tar -cf - *.el *.elc)|(cd ${lispdir}; umask 0; tar -xvf - ); \
	else true; fi
	thisdir=`/bin/pwd`; \
	if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
	then \
	  (cd ${infodir};  \
	   if [ -f dir ]; then \
	     if [ ! -f dir.old ]; then mv -f dir dir.old; \
	     else mv -f dir dir.bak; fi; \
	   fi; \
	   cd ${srcdir}/info ; \
	   (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \
	   (cd $${thisdir}; chmod a+r ${infodir}/dir); \
	   for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* info* mh-e* sc* vip*; do \
	     (cd $${thisdir}; \
	      ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \
	      chmod a+r ${infodir}/$$f); \
	   done); \
	else true; fi
	thisdir=`/bin/pwd`; \
	cd ${srcdir}/etc; \
	for page in emacs etags ctags ; do \
	  (cd $${thisdir}; \
	   ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 ${man1dir}/$${page}${manext}; \
	   chmod a+r ${man1dir}/$${page}${manext}); \
	done

### Build all the directories we're going to install Emacs in.	Since
### we may be creating several layers of directories (for example,
### /usr/local/lib/emacs/19.0/mips-dec-ultrix4.2), we use mkinstalldirs
### instead of mkdir.  Not all systems' mkdir programs have the `-p' flag.
mkdir: FRC
	$(srcdir)/mkinstalldirs ${COPYDESTS} ${lockdir} ${infodir} ${man1dir} \
	  ${bindir} ${datadir} ${docdir} ${libexecdir} \
	  `echo ${locallisppath} | sed 's/:/ /g'`
	-chmod a+rwx ${lockdir}

### Delete all the installed files that the `install' target would
### create (but not the noninstalled files such as `make all' would
### create).
###
### Don't delete the lisp and etc directories if they're in the source tree.
uninstall:
	(cd lib-src; 					\
	 $(MAKE) $(MFLAGS) uninstall			\
	    prefix=${prefix} exec_prefix=${exec_prefix}	\
	    bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir})
	for dir in ${lispdir} ${etcdir} ; do 		\
	  if [ -d $${dir} ]; then			\
	    case `(cd $${dir} ; /bin/pwd)` in		\
	      `(cd ${srcdir} ; /bin/pwd)`* ) ;;		\
	      * ) rm -rf $${dir} ;;			\
	    esac ;					\
	    case $${dir} in				\
	      ${datadir}/emacs/${version}/* )		\
	        rm -rf ${datadir}/emacs/${version}	\
	      ;;					\
	    esac ;					\
	  fi ;						\
	done
	(cd ${infodir} && rm -f cl* dired-x* ediff* emacs* forms* gnus* info* mh-e* sc* vip*)
	(cd ${man1dir}  && rm -f emacs.1 etags.1 ctags.1)
	(cd ${bindir}  && rm -f emacs-${version} $(EMACS))


FRC:

# ==================== Cleaning up and miscellanea ====================

.PHONY: mostlyclean clean distclean maintainer-clean extraclean

### `mostlyclean'
###      Like `clean', but may refrain from deleting a few files that people
###      normally don't want to recompile.  For example, the `mostlyclean'
###      target for GCC does not delete `libgcc.a', because recompiling it
###      is rarely necessary and takes a lot of time.
mostlyclean: FRC
	(cd src;      $(MAKE) $(MFLAGS) mostlyclean)
	(cd oldXMenu; $(MAKE) $(MFLAGS) mostlyclean)
	(cd lwlib;    $(MAKE) $(MFLAGS) mostlyclean)
	(cd lib-src;  $(MAKE) $(MFLAGS) mostlyclean)
	-(cd man &&   $(MAKE) $(MFLAGS) mostlyclean)

### `clean'
###      Delete all files from the current directory that are normally
###      created by building the program.  Don't delete the files that
###      record the configuration.  Also preserve files that could be made
###      by building, but normally aren't because the distribution comes
###      with them.
### 
###      Delete `.dvi' files here if they are not part of the distribution.
clean: FRC
	(cd src;      $(MAKE) $(MFLAGS) clean)
	(cd oldXMenu; $(MAKE) $(MFLAGS) clean)
	(cd lwlib;    $(MAKE) $(MFLAGS) clean)
	(cd lib-src;  $(MAKE) $(MFLAGS) clean)
	-(cd man &&   $(MAKE) $(MFLAGS) clean)

### `distclean'
###      Delete all files from the current directory that are created by
###      configuring or building the program.  If you have unpacked the
###      source and built the program without creating any other files,
###      `make distclean' should leave only the files that were in the
###      distribution.
top_distclean=\
	rm -f config.status config.cache config.log ; \
	rm -f Makefile ${SUBDIR_MAKEFILES} ; \
	(cd lock && rm -f *)
distclean: FRC
	(cd src;      $(MAKE) $(MFLAGS) distclean)
	(cd oldXMenu; $(MAKE) $(MFLAGS) distclean)
	(cd lwlib;    $(MAKE) $(MFLAGS) distclean)
	(cd lib-src;  $(MAKE) $(MFLAGS) distclean)
	(cd man &&    $(MAKE) $(MFLAGS) distclean)
	${top_distclean}

### `maintainer-clean'
###      Delete everything from the current directory that can be
###      reconstructed with this Makefile.  This typically includes
###      everything deleted by distclean, plus more: C source files
###      produced by Bison, tags tables, info files, and so on.
### 
###      One exception, however: `make maintainer-clean' should not delete
###      `configure' even if `configure' can be remade using a rule in the
###      Makefile.  More generally, `make maintainer-clean' should not delete
###      anything that needs to exist in order to run `configure' and then
###      begin to build the program.
maintainer-clean: FRC
	(cd src;      $(MAKE) $(MFLAGS) maintainer-clean)
	(cd oldXMenu; $(MAKE) $(MFLAGS) maintainer-clean)
	(cd lwlib;    $(MAKE) $(MFLAGS) maintainer-clean)
	(cd lib-src;  $(MAKE) $(MFLAGS) maintainer-clean)
	-(cd man &&   $(MAKE) $(MFLAGS) maintainer-clean)
	${top_distclean}

### This doesn't actually appear in the coding standards, but Karl
### says GCC supports it, and that's where the configuration part of
### the coding standards seem to come from.  It's like distclean, but
### it deletes backup and autosave files too.
extraclean:
	for i in ${SUBDIR}; do (cd $$i; $(MAKE) $(MFLAGS) extraclean); done
	${top_distclean}
	-rm config-tmp-*
	-rm -f *~ \#*

### Unlocking and relocking.  The idea of these productions is to reduce
### hassles when installing an incremental tar of Emacs.  Do `make unlock'
### before unlocking the file to take the write locks off all sources so
### that tar xvof will overwrite them without fuss.  Then do `make relock'
### afterward so that VC mode will know which files should be checked in
### if you want to mung them.
###
### Note: it's no disaster if these productions miss a file or two; tar
### and VC will swiftly let you know if this happens, and it is easily
### corrected.
SOURCES = ChangeLog GETTING.GNU.SOFTWARE INSTALL Makefile.in PROBLEMS \
	README configure make-dist move-if-change

.PHONY: unlock relock

unlock:
	chmod u+w $(SOURCES) cpp/*
	-(cd elisp; chmod u+w Makefile README *.texi)
	(cd etc; $(MAKE) $(MFLAGS) unlock)
	(cd lib-src; $(MAKE) $(MFLAGS) unlock)
	(cd lisp; $(MAKE) $(MFLAGS) unlock)
	(cd lisp/term; chmod u+w README *.el)
	(cd man; chmod u+w *texi* ChangeLog split-man)
	(cd oldXMenu; chmod u+w *.[ch] Makefile README)
	(cd lwlib; chmod u+w *.[ch] Makefile README)
	(cd src; $(MAKE) $(MFLAGS) unlock)

relock:
	chmod u-w $(SOURCES) cpp/*
	-(cd elisp; chmod u-w Makefile README *.texi)
	(cd etc; $(MAKE) $(MFLAGS) relock)
	(cd lib-src; $(MAKE) $(MFLAGS) relock)
	(cd lisp; $(MAKE) $(MFLAGS) relock)
	(cd lisp/term; chmod u+w README *.el)
	(cd man; chmod u+w *texi* ChangeLog split-man)
	(cd oldXMenu; chmod u+w *.[ch] Makefile README)
	(cd lwlib; chmod u+w *.[ch] Makefile README)
	(cd src; $(MAKE) $(MFLAGS) relock)

TAGS tags:	lib-src
	cd ${srcdir}/src; $(MAKE) tags

check:
	@echo "We don't have any tests for GNU Emacs yet."

dist:
	$(srcdir)/update-subdirs ${srcdir}/lisp
	cd ${srcdir}; make-dist

.PHONY: info dvi dist check
force-info:
info: force-info
	(cd ${srcdir}/man; $(MAKE) $(MFLAGS) info)
dvi:
	(cd man; $(MAKE) $(MFLAGS) dvi)