ChangeLog fixes prompted by M-x authors.
[bpt/emacs.git] / Makefile.in
index 4439e85..5466193 100644 (file)
@@ -3,7 +3,7 @@
 # DIST: that first.
 
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-#   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+#   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
 # This file is part of GNU Emacs.
@@ -69,15 +69,9 @@ CDPATH=
 # ==================== Things `configure' Might Edit ====================
 
 CC=@CC@
-CPP=@CPP@
-C_SWITCH_SYSTEM=@c_switch_system@
-ALLOCA=@ALLOCA@
-LN_S=@LN_S@
 CFLAGS=@CFLAGS@
 LDFLAGS=@LDFLAGS@
 CPPFLAGS=@CPPFLAGS@
-C_SWITCH_X_SITE=@C_SWITCH_X_SITE@
-LD_SWITCH_X_SITE=@LD_SWITCH_X_SITE@
 EXEEXT=@EXEEXT@
 MAKEINFO=@MAKEINFO@
 
@@ -131,7 +125,7 @@ libexecdir=@libexecdir@
 # (and they contain cross-references that expect them to be there).
 mandir=@mandir@
 man1dir=$(mandir)/man1
-MAN_PAGES=b2m.1 ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \
+MAN_PAGES=ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \
           grep-changelog.1 rcs-checkin.1
 
 # Where to install and expect the info files describing Emacs. In the
@@ -139,12 +133,12 @@ MAN_PAGES=b2m.1 ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \
 # since there are now many packages documented with the texinfo
 # system, it is inappropriate to imply that it is part of Emacs.
 infodir=@infodir@
-INFO_FILES=ada-mode autotype calc ccmode cl dbus dired-x ebrowse ediff \
-           efaq eintr elisp emacs emacs-mime epa erc eshell eudc       \
-           flymake forms gnus idlwave info mairix-el message mh-e      \
-           newsticker nxml-mode org pcl-cvs pgg rcirc reftex remember  \
-           sasl sc ses sieve speedbar tramp vip viper widget woman     \
-           smtpmail url
+INFO_FILES=ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse  \
+           ede ediff edt eieio efaq eintr elisp emacs emacs-mime epa erc \
+          eshell eudc flymake forms gnus idlwave info mairix-el        \
+          message mh-e newsticker nxml-mode org pcl-cvs pgg rcirc      \
+          reftex remember sasl sc semantic ses sieve smtpmail speedbar \
+          tramp url vip viper widget woman
 
 # Directory for local state files for all programs.
 localstatedir=@localstatedir@
@@ -170,7 +164,6 @@ VPATH=@srcdir@
 x_default_search_path=@x_default_search_path@
 
 # Location to install Emacs.app under NeXT/Open/GNUstep / Cocoa
-ns_appdir=@ns_appdir@
 ns_appbindir=@ns_appbindir@
 ns_appresdir=@ns_appresdir@
 
@@ -250,6 +243,8 @@ INSTALL_STRIP =
 
 # We use gzip to compress installed .el files.
 GZIP_PROG = @GZIP_PROG@
+# If non-nil, gzip the installed Info and man pages.
+GZIP_INFO = @GZIP_INFO@
 
 # ============================= Targets ==============================
 
@@ -286,6 +281,9 @@ all: ${SUBDIR} leim
 removenullpaths=sed -e 's/^://g' -e 's/:$$//g' -e 's/::/:/g'
 
 # Generate epaths.h from epaths.in.  This target is invoked by `configure'.
+# See comments in configure.in for why it is done this way, as opposed
+# to just letting configure generate epaths.h from epaths.in in a
+# similar way to how Makefile is made from Makefile.in.
 epaths-force: FRC
        @(lisppath=`echo ${lisppath} | ${removenullpaths}` ;            \
          buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ;  \
@@ -320,6 +318,12 @@ src:       lib-src FRC
 # We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
 lisp: src
 
+# These targets should be "${SUBDIR} without `src'".
+lib-src lisp: Makefile FRC
+       cd $@; $(MAKE) all $(MFLAGS)                           \
+         CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
+         LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'
+
 # Pass to src/Makefile.in an additional BOOTSTRAPEMACS variable which
 # is either set to bootstrap-emacs (in case bootstrap-emacs has not been
 # constructed yet) or the empty string (otherwise).
@@ -329,12 +333,20 @@ lisp: src
 # file src/foo.c forces dumping a new bootstrap-emacs, then re-byte-compiling
 # all preloaded elisp files, and only then dump the actual src/emacs, which
 # is not wrong, but is overkill in 99.99% of the cases.
-${SUBDIR}: Makefile FRC
+src: Makefile FRC
        boot=bootstrap-emacs$(EXEEXT);                         \
-       if [ -x "src/$$boot" ]; then boot=""; fi;                   \
+       if [ ! -x "src/$$boot" ]; then                                     \
+           cd $@; $(MAKE) all $(MFLAGS)                                   \
+             CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}'         \
+             LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot"; \
+       fi;
+       if [ -r .bzr/checkout/dirstate ]; then                  \
+           vcswitness="$$(pwd)/.bzr/checkout/dirstate";        \
+       fi;                                                     \
        cd $@; $(MAKE) all $(MFLAGS)                           \
          CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
-         LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot"
+         LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="" \
+         VCSWITNESS="$$vcswitness"
 
 blessmail: Makefile src FRC
        cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \
@@ -366,7 +378,11 @@ $(srcdir)/configure: $(AUTOCONF_INPUTS)
        cd ${srcdir} && autoconf
 
 $(srcdir)/src/config.in: $(srcdir)/src/stamp-h.in
-       @true
+       @ # Usually, there's no need to rebuild src/config.in just
+       @ # because stamp-h.in has changed (since building stamp-h.in
+       @ # refreshes config.in as well), but if config.in is missing
+       @ # then we really need to do something more.
+       [ -r "$@" ] || ( cd ${srcdir} && autoheader )
 $(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS)
        cd ${srcdir} && autoheader
        rm -f $(srcdir)/src/stamp-h.in
@@ -393,7 +409,7 @@ $(srcdir)/src/stamp-h.in: $(AUTOCONF_INPUTS)
 install: all install-arch-indep install-arch-dep install-leim blessmail
        @true
 
-MV_DIRS = for i in $$dir; do rm -fr $$(basename "$$i") ; mv "$$i" . ; done
+MV_DIRS = for i in $$dir; do rm -fr `basename "$$i"` ; mv "$$i" . ; done
 
 ### Install the executables that were compiled specifically for this machine.
 ### It would be nice to do something for a parallel make
@@ -414,17 +430,22 @@ install-arch-dep: mkdir
            ${INSTALL_DATA} lib-src/$$f $(DESTDIR)${archlibdir}/$$f; \
          else true; fi ; \
        done
-       if test "${ns_appdir}" != ""; then \
+       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}/libexec ; dir=emacs/*/*/* ; $(MV_DIRS); \
+         ( cd ${ns_appbindir}libexec ; dir=emacs/*/*/* ; $(MV_DIRS); \
            rm -fr emacs ) ; \
-         ( cd ${ns_appbindir}/bin ; rm -f emacs emacs-23* ; \
+         ( cd ${ns_appbindir}bin ; rm -f emacs emacs-24* ; \
            ln -sf ../libexec/* .) ; \
        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.
+
 ## 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.
 set_installuser=for installuser in $${LOGNAME} $${USERNAME} $${USER} \
@@ -472,20 +493,19 @@ install-arch-indep: mkdir info install-etc
                | (cd $${dest}; umask 022; \
                    tar -xvf - && cat > /dev/null) || exit 1; \
              find $${dest} -exec chown $${installuser} {} ';' ;\
-             for subdir in `find $${dest} -type d ! -name RCS ! -name CVS -print` ; do \
+             for subdir in `find $${dest} -type d -print` ; do \
                chmod a+rx $${subdir} ; \
-               rm -rf $${subdir}/RCS ; \
-               rm -rf $${subdir}/CVS ; \
-               rm -f  $${subdir}/.cvsignore ; \
+               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* ; \
+                rm -f $${subdir}/[mM]akefile*.c $${subdir}/[mM]akefile*[.-]in \
+                  $${subdir}/[mM]akefile ; \
                rm -f  $${subdir}/ChangeLog* ; \
-               rm -f  $${subdir}/dired.todo ; \
              done) ; \
        done
        -rm -f $(DESTDIR)${lispdir}/subdirs.el
@@ -514,7 +534,7 @@ install-arch-indep: mkdir info install-etc
           then \
             docfile="DOC-$${fullversion}"; \
           else \
-            docfile="DOC-${version}*"; \
+            docfile="DOC"; \
           fi; \
           echo "Copying etc/$${docfile} to $(DESTDIR)${docdir} ..." ; \
           (cd ./etc; tar -chf - $${docfile}) \
@@ -562,6 +582,10 @@ install-arch-indep: mkdir info install-etc
              for f in `ls $$elt $$elt-[1-9] $$elt-[1-9][0-9] 2>/dev/null`; do \
                ${INSTALL_DATA} $$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; \
              done; \
           done); \
        else true; fi
@@ -575,13 +599,17 @@ install-arch-indep: mkdir info install-etc
             ${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
          done; \
        else true; fi
-       -chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} $(DESTDIR)${datadir}/emacs/site-lisp ${COPYDESTS} $(DESTDIR)${infodir}
+       -chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} ${COPYDESTS}
        thisdir=`/bin/pwd`; \
        cd ${mansrcdir}; \
        for page in ${MAN_PAGES}; do \
          (cd $${thisdir}; \
           ${INSTALL_DATA} ${mansrcdir}/$${page} $(DESTDIR)${man1dir}/$${page}; \
-          chmod a+r $(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 ); \
        done
 
 ## Install those items from etc/ that need to end up elsewhere.
@@ -611,11 +639,10 @@ install-strip:
 ### 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.
+### 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
-       if [ -d $(DESTDIR)${datadir} ]; then true; else \
-         $(srcdir)/mkinstalldirs $(DESTDIR)${datadir}; \
-         chmod a+r $(DESTDIR)${datadir};\
-       fi
        icondirs= ; \
        for dir in $(iconsrcdir)/*/*/apps $(iconsrcdir)/*/*/mimetypes; do \
          if [ -d $${dir} ]; then \
@@ -623,7 +650,9 @@ mkdir: FRC
          fi ; \
        done ; \
        icondirs=`echo "$${icondirs}" | sed 's,$(srcdir)/etc/images/icons,$(DESTDIR)${icondir},g'` ; \
-       $(srcdir)/mkinstalldirs ${COPYDESTS} $(DESTDIR)${infodir} $(DESTDIR)${man1dir} \
+       umask 022 ; \
+       $(srcdir)/mkinstalldirs $(DESTDIR)${datadir} ${COPYDESTS} \
+         $(DESTDIR)${infodir} $(DESTDIR)${man1dir} \
          $(DESTDIR)${bindir} $(DESTDIR)${docdir} $(DESTDIR)${libexecdir} \
          $(DESTDIR)${datadir}/emacs/site-lisp \
          $(DESTDIR)${datadir}/emacs/${version}/site-lisp \
@@ -631,8 +660,7 @@ mkdir: FRC
          $(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).
+### 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:
@@ -654,7 +682,9 @@ uninstall:
            esac ;                                      \
          fi ;                                          \
        done
-       (cd $(DESTDIR)${archlibdir} && rm -f fns-*)
+       if [ -d $(DESTDIR)${archlibdir} ]; then \
+         (cd $(DESTDIR)${archlibdir} && rm -f fns-*) \
+       fi
        -rm -rf $(DESTDIR)${libexecdir}/emacs/${version}
        (cd $(DESTDIR)${infodir} && \
          for elt in $(INFO_FILES); do \
@@ -795,21 +825,26 @@ dist:
 .PHONY: info dvi dist check html
 
 info-real: 
-       -(cd doc/emacs; $(MAKE) $(MFLAGS) info)
-       -(cd doc/misc; $(MAKE) $(MFLAGS) info)
-       -(cd doc/lispref; $(MAKE) $(MFLAGS) info)
-       -(cd doc/lispintro; $(MAKE) $(MFLAGS) info)
+       (cd doc/emacs; $(MAKE) $(MFLAGS) info)
+       (cd doc/misc; $(MAKE) $(MFLAGS) info)
+       (cd doc/lispref; $(MAKE) $(MFLAGS) info)
+       (cd doc/lispintro; $(MAKE) $(MFLAGS) info)
 
 force-info:
-# Note that man/Makefile knows how to
-# put the info files in $(srcdir),
+# Note that man/Makefile knows how to put the info files in $(srcdir),
 # so we can do ok running make in the build dir.
+# This used to have a clause that exited with an error if MAKEINFO = no.
+# But it is inappropriate to do so without checking if makeinfo is
+# actually needed - it is not if the info files are up-to-date.  (Bug#3982)
+# Only the doc/*/Makefiles can decide that, so we let those rules run
+# and give a standard error if makeinfo is needed but missing.
+# While it would be nice to give a more detailed error message, that
+# would require changing every rule in doc/ that builds an info file,
+# and it's not worth it.  This case is only relevant if you download a
+# release, then change the .texi files.
 info: force-info
        @if test "$(MAKEINFO)" = "off"; then \
          echo "Configured --without-makeinfo, not building manuals" ; \
-       elif test "$(MAKEINFO)" = "no"; then \
-         echo "makeinfo is missing - cannot build manuals" ; \
-         exit 1 ; \
        else \
          $(MAKE) $(MFLAGS) info-real ; \
        fi