Fix last entry in src/ChangeLog.
[bpt/emacs.git] / Makefile.in
index ef1f3c9..fb2530d 100644 (file)
@@ -66,10 +66,8 @@ CDPATH=
 
 # ==================== Things `configure' Might Edit ====================
 
-MAINTAINER_MODE_FLAG = --disable-maintainer-mode
-@MAINT@MAINTAINER_MODE_FLAG = --enable-maintainer-mode
 cache_file = @cache_file@
-CONFIGURE_FLAGS = --cache-file=$(cache_file) $(MAINTAINER_MODE_FLAG)
+CONFIGURE_FLAGS = --cache-file=$(cache_file)
 
 CC=@CC@
 CFLAGS=@CFLAGS@
@@ -90,6 +88,13 @@ configuration=@configuration@
 
 # ==================== Where To Install Things ====================
 
+# Location to install Emacs.app under GNUstep / Mac OS X.
+# Later values may use these.
+ns_appbindir=@ns_appbindir@
+ns_appresdir=@ns_appresdir@
+# Either yes or no depending on whether this is a relocatable Emacs.app.
+ns_self_contained=@ns_self_contained@
+
 # 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
@@ -117,8 +122,10 @@ datadir=@datadir@
 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.
+# rather than directly by users (and other architecture-dependent
+# data, although Emacs does not have any).  The executables
+# are actually installed in ${archlibdir}, which is (normally)
+# a subdirectory of this.
 libexecdir=@libexecdir@
 
 # Where to install Emacs's man pages.
@@ -129,7 +136,8 @@ man1dir=$(mandir)/man1
 # Where to install and expect the info files describing Emacs.
 infodir=@infodir@
 # Info files not in the doc/misc directory (we get those via make echo-info).
-INFO_NONMISC=emacs eintr elisp
+INFO_EXT=@INFO_EXT@
+INFO_NONMISC=emacs$(INFO_EXT) eintr$(INFO_EXT) elisp$(INFO_EXT)
 
 # If no makeinfo was found and configured --without-makeinfo, "no"; else "yes".
 HAVE_MAKEINFO=@HAVE_MAKEINFO@
@@ -157,10 +165,6 @@ VPATH=@srcdir@
 # Where to find the application default.
 x_default_search_path=@x_default_search_path@
 
-# Location to install Emacs.app under NeXT/Open/GNUstep / Cocoa
-ns_appbindir=@ns_appbindir@
-ns_appresdir=@ns_appresdir@
-
 # Where the etc/emacs.desktop file is to be installed.
 desktopdir=$(datarootdir)/applications
 
@@ -175,11 +179,12 @@ iconsrcdir=$(srcdir)/etc/images/icons
 # 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
+# Where to install the lisp, leim 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@
+leimdir=@leimdir@
 
 # Directories Emacs should search for lisp files specific
 # to this site (i.e. customizations), before consulting
@@ -228,7 +233,7 @@ gamedir=@gamedir@
 # Note that if the system does not provide a suitable install,
 # configure will use build-aux/install-sh.  Annoyingly, it does
 # not use an absolute path.  So we must take care to always run
-# INSTALL-type commands from the top-level directory.
+# INSTALL-type commands from the directory containing the Makefile.
 # This explains (I think) the cd thisdir seen in several install rules.
 INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -236,6 +241,7 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_INFO = @INSTALL_INFO@
 # By default, we uphold the dignity of our programs.
 INSTALL_STRIP =
+MKDIR_P = @MKDIR_P@
 
 # We use gzip to compress installed .el files.
 GZIP_PROG = @GZIP_PROG@
@@ -251,14 +257,8 @@ TRANSFORM = @program_transform_name@
 EMACS = `echo emacs${EXEEXT} | sed '$(TRANSFORM)'`
 EMACSFULL = `echo emacs-${version}${EXEEXT} | sed '$(TRANSFORM)'`
 
-# Subdirectories to make recursively.  `lisp' is not included
-# because the compiled lisp files are part of the distribution.
-# leim is not included because it needs special handling.
-#
-# Actually, we now include `lisp' as well, since the compiled files
-# are not included any more in case of bootstrap or in case Emacs was
-# checked out from a VCS.
-SUBDIR = lib lib-src src lisp
+# Subdirectories to make recursively.
+SUBDIR = lib lib-src src lisp leim
 
 # The subdir makefiles created by config.status.
 SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@
@@ -266,14 +266,13 @@ SUBDIR_MAKEFILES = `echo $(SUBDIR_MAKEFILES_IN:.in=) | sed 's|$(srcdir)/||g'`
 
 # Subdirectories to install, and where they'll go.
 # lib-src's makefile knows how to install it, so we don't do that here.
-# leim's makefile also 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 = $(DESTDIR)${etcdir} $(DESTDIR)${lispdir}
+# Directories that cannot simply be copied, eg info,
+# are treated separately.
+# quail appears twice because in out-of-tree builds, it exists twice.
+COPYDIR = ${srcdir}/etc ${srcdir}/lisp ${srcdir}/leim/ja-dic ${srcdir}/leim/quail leim/quail
+COPYDESTS = $(DESTDIR)${etcdir} $(DESTDIR)${lispdir} $(DESTDIR)${leimdir}/ja-dic $(DESTDIR)${leimdir}/quail $(DESTDIR)${leimdir}/quail
 
-all: ${SUBDIR} leim
+all: ${SUBDIR}
 
 removenullpaths=sed -e 's/^://g' -e 's/:$$//g' -e 's/::/:/g'
 
@@ -298,62 +297,19 @@ epaths-force: FRC
          -e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";') &&                \
        ${srcdir}/build-aux/move-if-change epaths.h.$$$$ src/epaths.h
 
-# For parallel make, src should be built before leim.
-# "export PARALLEL=0" is for SGI's Make, to prevent it from
-# running more than 1 process in the leim directory, especially for
-# the $TIT files there.
-leim:   src Makefile FRC
-       cd leim && PARALLEL=0 $(MAKE) all $(MFLAGS)
-
 lib-src src: lib
 
 src:   lib-src FRC
 
-.RECURSIVE: ${SUBDIR} leim
-
-# We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
-lisp: src
-
-# Maintainers can put a copy of gnulib into $(gnulib_srcdir).
-gnulib_srcdir = ../gnulib
-$(gnulib_srcdir):
-       git clone git://git.savannah.gnu.org/gnulib.git $@
-
-# A shorter name that satisfies MS-DOS 8+3 constraints.
-DOS_gnulib_comp.m4 = gl-comp.m4
-
-# Update modules from gnulib, for maintainers, who should have it in
-# $(gnulib_srcdir) (relative to $(srcdir) and should have build tools
-# as per $(gnulib_srcdir)/DEPENDENCIES.
-GNULIB_MODULES = \
-  alloca-opt \
-  careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr \
-  dup2 \
-  filemode getloadavg getopt-gnu ignore-value intprops lstat \
-  manywarnings mktime pthread_sigmask readlink \
-  socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat \
-  warnings
-GNULIB_TOOL_FLAGS = \
- --avoid=msvc-inval --avoid=msvc-nothrow \
- --avoid=raise --avoid=threadlib \
- --conditional-dependencies --import --no-changelog --no-vc-files \
- --makefile-name=gnulib.mk
-sync-from-gnulib: $(gnulib_srcdir)
-       -cd $(srcdir)/m4 && cp $(DOS_gnulib_comp.m4) gnulib-comp.m4
-       cd $(srcdir) && \
-         $(gnulib_srcdir)/gnulib-tool $(GNULIB_TOOL_FLAGS) $(GNULIB_MODULES)
-       cd $(srcdir)/m4 && rm gnulib-cache.m4 warn-on-use.m4
-       cd $(srcdir)/m4 && mv gnulib-comp.m4 $(DOS_gnulib_comp.m4)
-       cp $(gnulib_srcdir)/build-aux/texinfo.tex $(srcdir)/doc/misc
-       cp \
-         $(gnulib_srcdir)/build-aux/move-if-change \
-         $(srcdir)/build-aux
-       cd $(srcdir) && autoreconf -i -I m4
-.PHONY: sync-from-gnulib
+.RECURSIVE: ${SUBDIR}
+
+# We need to build `emacs' in `src' to compile the *.elc files in `lisp'
+# and `leim'.
+lisp leim: src
 
 # These targets should be "${SUBDIR} without `src'".
-lib lib-src lisp: Makefile FRC
-       cd $@; $(MAKE) all $(MFLAGS)                           \
+lib lib-src lisp leim: Makefile FRC
+       cd $@ && $(MAKE) all $(MFLAGS)                         \
          CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
          LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'
 
@@ -382,7 +338,7 @@ src: Makefile FRC
          VCSWITNESS="$$vcswitness"
 
 blessmail: Makefile src FRC
-       cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \
+       cd lib-src && $(MAKE) maybe-blessmail $(MFLAGS) \
          MAKE='${MAKE}' archlibdir='$(archlibdir)'
 
 # We used to have one rule per */Makefile.in, but that leads to race
@@ -402,16 +358,17 @@ config.status: ${srcdir}/configure ${srcdir}/lisp/version.el
            ./configure $(CONFIGURE_FLAGS); \
        fi
 
-AUTOCONF_INPUTS = @MAINT@ $(srcdir)/configure.in $(srcdir)/aclocal.m4
+AUTOCONF_INPUTS = $(srcdir)/configure.in $(srcdir)/aclocal.m4
 
 $(srcdir)/configure: $(AUTOCONF_INPUTS)
        cd ${srcdir} && autoconf
 
-ACLOCAL_INPUTS = @MAINT@ $(srcdir)/m4/$(DOS_gnulib_comp.m4)
+ACLOCAL_INPUTS = $(srcdir)/m4/gnulib-comp.m4
 $(srcdir)/aclocal.m4: $(ACLOCAL_INPUTS)
        cd $(srcdir) && aclocal -I m4
 
-AUTOMAKE_INPUTS = @MAINT@ $(srcdir)/aclocal.m4 $(srcdir)/lib/Makefile.am $(srcdir)/lib/gnulib.mk
+AUTOMAKE_INPUTS = $(srcdir)/aclocal.m4 $(srcdir)/lib/Makefile.am \
+  $(srcdir)/lib/gnulib.mk
 $(srcdir)/lib/Makefile.in: $(AUTOMAKE_INPUTS)
        cd $(srcdir) && automake --gnu -a -c lib/Makefile
 am--refresh: $(srcdir)/aclocal.m4 $(srcdir)/configure $(srcdir)/src/config.in
@@ -434,51 +391,55 @@ $(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS)
 ## 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
 
-.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 do install-arch-indep first because
-### the executable needs the Lisp files and DOC file to work properly.
-install: all install-arch-indep install-arch-dep install-leim blessmail
+install: all install-arch-indep install-doc install-arch-dep blessmail
        @true
 
-MV_DIRS = for i in $$dir; do rm -fr `basename "$$i"` ; mv "$$i" . ; done
+## Ensure that $subdir contains a subdirs.el file.
+## Here and elsewhere, we set the umask so that any created files are
+## world-readable.
+## TODO it might be good to warn about non-standard permissions of
+## pre-existing directories, but that does not seem easy.
+write_subdir=if [ -f $${subdir}/subdirs.el ]; \
+       then true; \
+       else \
+         umask 022; \
+         ${MKDIR_P} $${subdir}; \
+         (echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
+          echo "    (normal-top-level-add-subdirs-to-load-path))") \
+           > $${subdir}/subdirs.el; \
+       fi
 
 ### Install the executables that were compiled specifically for this machine.
-### It would be nice to do something for a parallel make
-### to ensure that install-arch-indep finishes before this starts.
-install-arch-dep: mkdir
-       (cd lib-src; \
+### We do install-arch-indep first because the executable needs the
+### Lisp files and DOC file to work properly.
+install-arch-dep: install-arch-indep install-doc
+       umask 022; ${MKDIR_P} $(DESTDIR)${bindir}
+       cd lib-src && \
          $(MAKE) install $(MFLAGS) prefix=${prefix} \
            exec_prefix=${exec_prefix} bindir=${bindir} \
            libexecdir=${libexecdir} archlibdir=${archlibdir} \
-           INSTALL_STRIP=${INSTALL_STRIP})
-       ${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} $(DESTDIR)${bindir}/$(EMACSFULL)
-       -chmod 1755 $(DESTDIR)${bindir}/$(EMACSFULL)
-       rm -f $(DESTDIR)${bindir}/$(EMACS)
-       -ln $(DESTDIR)${bindir}/$(EMACSFULL) $(DESTDIR)${bindir}/$(EMACS)
-       if test "${ns_appresdir}" != ""; then \
-         ( cd ${ns_appresdir} ; \
-           if test -d share/emacs ; then dir=share/emacs/*/*; $(MV_DIRS); fi;\
-           if test -d share/info ; then dir=share/info; $(MV_DIRS) ; fi ; \
-           rm -fr share ) ; \
-         ( cd ${ns_appbindir} ; \
-           if cd libexec ; then dir=emacs/*/*/* ; $(MV_DIRS); \
-           rm -fr emacs; if cd ../bin; then rm -f emacs emacs-24*; \
-           ln -sf ../libexec/* . ; fi ; fi ) ; \
-       else true ; fi
-
-## FIXME is the emacs-24* bit above really necessary and correct?
-## What if I have 24.1 and 24.2 installed at the same time?
-## In any case, it should use something like echo $version | sed 's/\..*//'
-## instead of hard-coding a version.
+           INSTALL_STRIP=${INSTALL_STRIP}
+       if test "${ns_self_contained}" = "no"; then \
+         ${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} $(DESTDIR)${bindir}/$(EMACSFULL) || exit 1 ; \
+         chmod 1755 $(DESTDIR)${bindir}/$(EMACSFULL) ; \
+         rm -f $(DESTDIR)${bindir}/$(EMACS) ; \
+         ln $(DESTDIR)${bindir}/$(EMACSFULL) $(DESTDIR)${bindir}/$(EMACS) || true ; \
+       else \
+         subdir=${ns_appresdir}/site-lisp; \
+         ${write_subdir} || exit 1; \
+         rm -rf ${ns_appresdir}/share; \
+       fi
+
+## In the share directory, we are deleting:
+## applications (with emacs.desktop, also found in etc/)
+## emacs (basically empty except for unneeded site-lisp directories)
+## icons (duplicates etc/images/icons/hicolor)
+
+## This is install-etc for everything except self-contained-ns builds.
+## For them, it is empty.
+INSTALL_ARCH_INDEP_EXTRA = @INSTALL_ARCH_INDEP_EXTRA@
 
 ## http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg01672.html
 ## Needs to be the user running install, so configure can't set it.
@@ -488,80 +449,109 @@ set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \
        done
 
 ### 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.
+### Most of them come straight from the distribution; the exception is
+### the DOC file, which is copied from the build directory.
 
-## We install only the relevant DOC file if possible
-## (ie DOC-${version}.buildnumber), otherwise DOC-${version}*.
+## 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.
 
-## If people complain about the h flag in tar command, take that out.
-## That flag is also used in leim/Makefile.in
+## We delete etc/DOC* because there may be irrelevant DOC files from
+## other builds in the source directory.  This is ok because we just
+## deleted the entire installed etc/ directory and recreated it.
+## install-doc installs the relevant DOC.
 
 ## Note that the Makefiles in the etc directory are potentially useful
 ## in an installed Emacs, so should not be excluded.
 
-install-arch-indep: mkdir info install-etc
-       -set ${COPYDESTS} ; \
-       unset CDPATH; \
-       for dir in ${COPYDIR} ; do \
-         if [ `(cd $$1 && /bin/pwd)` != `(cd $${dir} && /bin/pwd)` ] ; then \
-           rm -rf $$1 ; \
-         fi ; \
-         shift ; \
-       done
+## I'm not sure creating locallisppath here serves any useful purpose.
+## If it has the default value, then the later write_subdir commands
+## will ensure all these components exist.
+## This will only do something if locallisppath has a non-standard value.
+## Is it really Emacs's job to create those directories?
+## Should we also be ensuring they contain subdirs.el files?
+## It would be easy to do, just use write_subdir.
+
+## Note that we use tar instead of plain old cp -R/-r because the latter
+## is apparently not portable (even in 2012!).
+## http://lists.gnu.org/archive/html/emacs-devel/2012-05/msg00278.html
+## I have no idea which platforms Emacs supports where cp -R does not
+## work correctly, and therefore no idea when tar can be replaced.
+## See also these comments from 2004 about cp -r working fine:
+## http://lists.gnu.org/archive/html/autoconf-patches/2004-11/msg00005.html
+install-arch-indep: install-info install-man ${INSTALL_ARCH_INDEP_EXTRA}
+       umask 022 ; \
+         $(MKDIR_P) $(DESTDIR)`echo ${locallisppath} | sed 's,:, $(DESTDIR),g'`
        -set ${COPYDESTS} ; \
-       mkdir ${COPYDESTS} ; \
-       chmod ugo+rx ${COPYDESTS} ; \
        unset CDPATH; \
        $(set_installuser); \
        for dir in ${COPYDIR} ; do \
+         [ -d $${dir} ] || exit 1 ; \
          dest=$$1 ; shift ; \
-         [ -d $${dir} ] \
-         && [ `(cd $${dir} && /bin/pwd)` != `(cd $${dest} && /bin/pwd)` ] \
-         && (echo "Copying $${dir} to $${dest}..." ; \
-             (cd $${dir}; tar -chf - . ) \
-               | (cd $${dest}; umask 022; \
-                   tar -xvf - && cat > /dev/null) || exit 1; \
-             find $${dest} -exec chown $${installuser} {} ';' ;\
-             for subdir in `find $${dest} -type d -print` ; do \
-               chmod a+rx $${subdir} ; \
-               rm -f  $${subdir}/.gitignore ; \
-               rm -f  $${subdir}/.arch-inventory ; \
-               rm -f  $${subdir}/.DS_Store ; \
-               rm -f  $${subdir}/\#* ; \
-               rm -f  $${subdir}/.\#* ; \
-               rm -f  $${subdir}/*~ ; \
-               rm -f  $${subdir}/*.orig ; \
-               [ "$${dir}" != "${srcdir}/etc" ] && \
-                rm -f $${subdir}/[mM]akefile*.c $${subdir}/[mM]akefile*[.-]in \
-                  $${subdir}/[mM]akefile ; \
-               rm -f  $${subdir}/ChangeLog* ; \
-             done) ; \
+         [ -d $${dest} ] && \
+           [ `cd $${dest} && /bin/pwd` = `cd $${dir} && /bin/pwd` ] && \
+           continue ; \
+         if [ "$${dir}" = "leim/quail" ]; then \
+           [ `cd $${dir} && /bin/pwd` = `cd ${srcdir}/leim/quail && /bin/pwd` ] && \
+             continue ; \
+         else \
+           rm -rf $${dest} ; \
+           umask 022; ${MKDIR_P} $${dest} ; \
+         fi ; \
+         echo "Copying $${dir} to $${dest}..." ; \
+         (cd $${dir}; tar -chf - . ) \
+           | (cd $${dest}; umask 022; \
+              tar -xvf - && cat > /dev/null) || exit 1; \
+         [ "$${dir}" != "${srcdir}/etc" ] || rm -f $${dest}/DOC* ; \
+         for subdir in `find $${dest} -type d -print` ; do \
+           rm -f $${subdir}/.gitignore ; \
+           rm -f $${subdir}/.arch-inventory ; \
+           rm -f $${subdir}/.DS_Store ; \
+           rm -f $${subdir}/\#* ; \
+           rm -f $${subdir}/.\#* ; \
+           rm -f $${subdir}/*~ ; \
+           rm -f $${subdir}/*.orig ; \
+           rm -f $${subdir}/ChangeLog* ; \
+           [ "$${dir}" != "${srcdir}/etc" ] && \
+             rm -f $${subdir}/[mM]akefile*[.-]in $${subdir}/[mM]akefile ; \
+         done ; \
+         find $${dest} -exec chown $${installuser} {} ';' ;\
        done
+       -rm -f $(DESTDIR)${leimdir}/leim-list.el
+       ${INSTALL_DATA} leim/leim-list.el $(DESTDIR)${leimdir}/leim-list.el
        -rm -f $(DESTDIR)${lispdir}/subdirs.el
-       $(srcdir)/update-subdirs $(DESTDIR)${lispdir}
-       if [ -f $(DESTDIR)${datadir}/emacs/${version}/site-lisp/subdirs.el ]; \
-       then true; \
-       else \
-         (echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
-          echo "    (normal-top-level-add-subdirs-to-load-path))") \
-           > $(DESTDIR)${datadir}/emacs/${version}/site-lisp/subdirs.el; \
-       fi
-       chmod a+r $(DESTDIR)${datadir}/emacs/${version}/site-lisp/subdirs.el
-       -if [ -f $(DESTDIR)${datadir}/emacs/site-lisp/subdirs.el ]; \
-       then true; \
-       else \
-         (echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
-          echo "    (normal-top-level-add-subdirs-to-load-path))") \
-           > $(DESTDIR)${datadir}/emacs/site-lisp/subdirs.el; \
-       fi
-       -chmod a+r $(DESTDIR)${datadir}/emacs/site-lisp/subdirs.el
+       umask 022; $(srcdir)/build-aux/update-subdirs $(DESTDIR)${lispdir}
+       subdir=$(DESTDIR)${datadir}/emacs/${version}/site-lisp ; \
+         ${write_subdir}
+       subdir=$(DESTDIR)${datadir}/emacs/site-lisp ; \
+         ${write_subdir} || true
+       [ -z "${GZIP_PROG}" ] || \
+         ( echo "Compressing *.el ..." ; \
+           unset CDPATH; \
+           thisdir=`/bin/pwd`; \
+           for dir in $(DESTDIR)${lispdir} $(DESTDIR)${leimdir}; do \
+             cd $${thisdir} ; \
+             cd $${dir} || exit 1 ; \
+             for f in `find . -name "*.elc" -print`; do \
+               ${GZIP_PROG} -9n `echo $$f|sed 's/.elc$$/.el/'` ; \
+             done ; \
+           done )
+       -chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} ${COPYDESTS}
+
+# The last chmod isn't needed at present.
+
+## We install only the relevant DOC file if possible
+## (ie DOC-${version}.buildnumber), otherwise DOC-${version}*.
+## (Note "otherwise" is inaccurate since 2009-08-23.)
+
+## Note that install-arch-indep deletes and recreates the entire
+## installed etc/ directory, so we need it to run before this does.
+install-doc: install-arch-indep
        -unset CDPATH; \
-       if [ `(cd ./etc; /bin/pwd)` != `(cd $(DESTDIR)${docdir}; /bin/pwd)` ]; \
+       umask 022; ${MKDIR_P} $(DESTDIR)${docdir} ; \
+       if [ `cd ./etc; /bin/pwd` != `cd $(DESTDIR)${docdir}; /bin/pwd` ]; \
        then \
           fullversion=`./src/emacs --version | sed -n '1 s/GNU Emacs *//p'`; \
           if [ -f "./etc/DOC-$${fullversion}" ]; \
@@ -571,45 +561,20 @@ install-arch-indep: mkdir info install-etc
             docfile="DOC"; \
           fi; \
           echo "Copying etc/$${docfile} to $(DESTDIR)${docdir} ..." ; \
-          (cd ./etc; tar -chf - $${docfile}) \
-            |(cd $(DESTDIR)${docdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \
-          (cd $(DESTDIR)$(docdir); \
-           $(set_installuser); \
-           chown $${installuser} DOC*; chmod a+r DOC*; \
-           if test "`echo DOC-*`" != "DOC-*"; then rm -f DOC; fi); \
-       else true; fi
-       -unset CDPATH; \
-       if [ -r ./lisp ] \
-          && [ -r ./lisp/simple.el ] \
-          && [ x`(cd ./lisp; /bin/pwd)` != x`(cd $(DESTDIR)${lispdir}; /bin/pwd)` ] \
-          && [ x`(cd ${srcdir}/lisp; /bin/pwd)` != x`(cd ./lisp; /bin/pwd)` ]; \
-       then \
-          echo "Copying lisp/*.el and lisp/*.elc to $(DESTDIR)${lispdir} ..." ; \
-          (cd lisp; tar -chf - *.el *.elc) \
-            |(cd $(DESTDIR)${lispdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \
-          (cd $(DESTDIR)${lispdir}; \
-           $(set_installuser); \
-           find . -exec chown $${installuser} {} ';') ; \
-       else true; fi
-       -unset CDPATH; \
-       if [ -n "${GZIP_PROG}" ]; \
-       then \
-          echo "Compressing *.el ..." ; \
-          (cd $(DESTDIR)${lispdir}; for f in `find . -name "*.elc" -print`; do \
-               ${GZIP_PROG} -9n `echo $$f|sed 's/.elc$$/.el/'` ; \
-           done) \
+          ${INSTALL_DATA} etc/$${docfile} $(DESTDIR)${docdir}/$${docfile}; \
+          $(set_installuser); \
+            chown $${installuser} $(DESTDIR)${docdir}/$${docfile} || true ; \
        else true; fi
+
+install-info: info
+       umask 022; ${MKDIR_P} $(DESTDIR)${infodir}
        -unset CDPATH; \
        thisdir=`/bin/pwd`; \
-       if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd $(DESTDIR)${infodir} && /bin/pwd)` ]; \
-       then \
+       [ `cd ${srcdir}/info && /bin/pwd` = `cd $(DESTDIR)${infodir} && /bin/pwd` ] || \
          (cd $(DESTDIR)${infodir};  \
-          if [ -f dir ]; then true; \
-          else \
+          [ -f dir ] || \
             (cd $${thisdir}; \
-             ${INSTALL_DATA} ${srcdir}/info/dir $(DESTDIR)${infodir}/dir; \
-             chmod a+r $(DESTDIR)${infodir}/dir); \
-          fi; \
+             ${INSTALL_DATA} ${srcdir}/info/dir $(DESTDIR)${infodir}/dir) ; \
           info_misc=`cd $${thisdir}/doc/misc; ${MAKE} echo-info | sed '/ing directory/d'`; \
           cd ${srcdir}/info ; \
           for elt in ${INFO_NONMISC} $${info_misc}; do \
@@ -617,90 +582,62 @@ install-arch-indep: mkdir info install-etc
              for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \
               (cd $${thisdir}; \
                ${INSTALL_DATA} ${srcdir}/info/$$f $(DESTDIR)${infodir}/$$f); \
-               chmod a+r $(DESTDIR)${infodir}/$$f; \
-               if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \
-                 rm -f $(DESTDIR)${infodir}/$$f.gz; \
-                 ${GZIP_PROG} -9n $(DESTDIR)${infodir}/$$f; \
-               else true; fi; \
+               ( [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ] ) || continue ; \
+               rm -f $(DESTDIR)${infodir}/$$f.gz; \
+               ${GZIP_PROG} -9n $(DESTDIR)${infodir}/$$f; \
              done; \
             (cd $${thisdir}; \
              ${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
-          done); \
-       else true; fi
-       -chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} ${COPYDESTS}
+          done)
+
+install-man:
+       umask 022; ${MKDIR_P} $(DESTDIR)${man1dir}
        thisdir=`/bin/pwd`; \
        cd ${mansrcdir}; \
        for page in *.1; do \
          (cd $${thisdir}; \
-          ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}; \
-          chmod a+r $(DESTDIR)${man1dir}/$${page}; \
-          if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \
-            rm -f $(DESTDIR)${man1dir}/$${page}.gz; \
-            ${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${page}; \
-          else true; fi ); \
+          ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}); \
+         ( [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ] ) || continue ; \
+         rm -f $(DESTDIR)${man1dir}/$${page}.gz; \
+         ${GZIP_PROG} -9n $(DESTDIR)${man1dir}/$${page}; \
        done
 
 ## Install those items from etc/ that need to end up elsewhere.
-install-etc: mkdir
+install-etc:
+       umask 022; ${MKDIR_P} $(DESTDIR)${desktopdir}
        ${INSTALL_DATA} ${srcdir}/etc/emacs.desktop \
          $(DESTDIR)${desktopdir}/emacs.desktop
-       for icon in $(iconsrcdir)/*/*/apps/*.* \
-         $(iconsrcdir)/*/*/mimetypes/*.*; do \
-         if [ -r $${icon} ]; then \
-           iicon=`echo "$${icon}" | sed 's,$(srcdir)/etc/images/icons,$(DESTDIR)${icondir},'` ; \
-           ${INSTALL_DATA} $${icon} $${iicon} ; \
-         fi ; \
+       thisdir=`/bin/pwd`; \
+       cd ${iconsrcdir} || exit 1; umask 022 ; \
+       for dir in */*/apps */*/mimetypes; do \
+         [ -d $${dir} ] || continue ; \
+         ( cd $${thisdir}; ${MKDIR_P} $(DESTDIR)${icondir}/$${dir} ) ; \
+         for icon in $${dir}/*.*; do \
+           [ -r $${icon} ] || continue ; \
+           ( cd $${thisdir}; \
+             ${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${icon} ) \
+           || exit 1; \
+         done ; \
        done
 
-### Install LEIM files.  Although they are machine-independent, we
-### have separate target here instead of including it in
-### `install-arch-indep'.  People who extracted LEIM files after they
-### installed Emacs itself can install only LEIM files by this target.
-install-leim: leim/Makefile mkdir
-       cd leim && $(MAKE) $(MFLAGS) install
-
 ### Build Emacs and install it, stripping binaries while installing them.
 install-strip:
        $(MAKE) $(MFLAGS) INSTALL_STRIP=-s install
 
-### 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 install-sh -d
-### instead of mkdir.  Not all systems' mkdir programs have the `-p' flag.
-### We set the umask so that any created directories are world-readable.
-### FIXME it would be good to warn about non-standard permissions of
-### pre-existing directories, but that does not seem easy.
-mkdir: FRC
-       icondirs= ; \
-       for dir in $(iconsrcdir)/*/*/apps $(iconsrcdir)/*/*/mimetypes; do \
-         if [ -d $${dir} ]; then \
-           icondirs="$${icondirs} $${dir}" ; \
-         fi ; \
-       done ; \
-       icondirs=`echo "$${icondirs}" | sed 's,$(srcdir)/etc/images/icons,$(DESTDIR)${icondir},g'` ; \
-       umask 022 ; \
-       $(srcdir)/build-aux/install-sh -d $(DESTDIR)${datadir} ${COPYDESTS} \
-         $(DESTDIR)${infodir} $(DESTDIR)${man1dir} \
-         $(DESTDIR)${bindir} $(DESTDIR)${docdir} $(DESTDIR)${libexecdir} \
-         $(DESTDIR)${datadir}/emacs/site-lisp \
-         $(DESTDIR)${datadir}/emacs/${version}/site-lisp \
-         $(DESTDIR)`echo ${locallisppath} | sed 's,:, $(DESTDIR),g'` \
-         $(DESTDIR)${desktopdir} $${icondirs}
-
 ### 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;                                    \
+       cd lib-src &&                                   \
         $(MAKE) $(MFLAGS) uninstall                    \
            prefix=${prefix} exec_prefix=${exec_prefix} \
-           bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir})
+           bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir}
        -unset CDPATH; \
        for dir in $(DESTDIR)${lispdir} $(DESTDIR)${etcdir} ; do        \
          if [ -d $${dir} ]; then                       \
-           case `(cd $${dir} ; /bin/pwd)` in           \
-             `(cd ${srcdir} ; /bin/pwd)`* ) ;;         \
+           case `cd $${dir} ; /bin/pwd` in             \
+             `cd ${srcdir} ; /bin/pwd`* ) ;;           \
              * ) rm -rf $${dir} ;;                     \
            esac ;                                      \
            case $${dir} in                             \
@@ -847,7 +784,7 @@ maintainer-clean: bootstrap-clean FRC
 ### the coding standards seem to come from.  It's like distclean, but
 ### it deletes backup and autosave files too.
 extraclean:
-       for i in ${SUBDIR} leim; do (cd $$i; $(MAKE) $(MFLAGS) extraclean); done
+       for i in ${SUBDIR}; do (cd $$i; $(MAKE) $(MFLAGS) extraclean); done
        ${top_maintainer_clean}
        -rm -f config-tmp-*
        -rm -f *~ \#*
@@ -904,6 +841,7 @@ check-info-dir: info
          case $${file} in \
            *-[0-9]*|COPYING|dir) continue ;; \
          esac ; \
+         file=`echo $${file} | sed 's/\.info//'` ; \
          grep -q -F ": ($${file})." dir || missing="$${missing} $${file}" ; \
        done ; \
        if test -n "$${missing}"; then \