]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/Makefile.in (emacs${EXEEXT}): Depend on the machine-specific files.
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 20 Jun 2008 21:48:17 +0000 (21:48 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 20 Jun 2008 21:48:17 +0000 (21:48 +0000)
(bootstrap-clean): New target that keeps TAGS around.
(../lisp/subdirs.el, ../lisp/loaddefs.el): New targets.
(bootstrap-emacs${EXEEXT}): Depend on subdirs.el.
* lisp/Makefile.in (all): New target.
(bootstrap-prepare): Remove.
* Makefile.in (SUBDIR): Include `lisp'.
(lisp): Depend on `src'.
(top_distclean): Don't remove config.status.
(bootstrap-clean): New target.
(maintainer-clean): Use it.
(bootstrap): Use bootstrap-clean.  Re-run config.status.
(src/bootstrap-emacs${EXEEXT}): New target.
(bootstrap-build): Use it.  Don't use bootstrap-prepare because
src/Makefile now takes care of it.
(bootfast, bootstrap-clean-before, bootstrap-clean-before-fast): Remove.

ChangeLog
INSTALL.CVS
Makefile.in
lisp/ChangeLog
lisp/Makefile.in
src/ChangeLog
src/Makefile.in

index bcb9ffb21e4436c74fde0b0e10026f53d1fe7b2f..7ce8e321a18e818d2d5122445ef96354434261df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
-2008-06-20  Angelo Graziosi  <angelo.graziosi@alice.it>  (tiny change)
+2008-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * configure.in: Check for presence of cfmakeraw and cfsetspeed.
+       * Makefile.in (SUBDIR): Include `lisp'.
+       (lisp): Depend on `src'.
+       (top_distclean): Don't remove config.status.
+       (bootstrap-clean): New target.
+       (maintainer-clean): Use it.
+       (bootstrap): Use bootstrap-clean.  Re-run config.status.
+       (src/bootstrap-emacs${EXEEXT}): New target.
+       (bootstrap-build): Use it.  Don't use bootstrap-prepare because
+       src/Makefile now takes care of it.
+       (bootfast, bootstrap-clean-before, bootstrap-clean-before-fast): Remove.
 
 2008-06-15  Glenn Morris  <rgm@gnu.org>
 
index 1c52b29d9be76913651878ea2ab5730dc4b659df..97da65af71104e5abb2efb18e87b2c18aea4114c 100644 (file)
@@ -11,28 +11,14 @@ Therefore, to build from CVS you must run "make bootstrap"
 instead of just "make":
 
   $ cvs update -dP
-  $ ./configure
   $ make bootstrap
 
-The bootstrap process makes sure all necessary files are rebuilt
-before it builds the final Emacs binary.  Unfortunately, it doesn't
-always work when there are stale files from a previous build in the
-directory tree.
-
-So if 'make bootstrap' fails, it may be necessary first to do 'make
-maintainer-clean' to clear out these stale files.  You can then try
-again, starting with `./configure'.
+Of course, if this is the first time you go through it, you'll need to do
+./configure before the "make bootstrap".
 
 Normally, it is not necessary to use "make bootstrap" after every CVS
-update.  Unless there are problems, we suggest using the following
-alternative procedure after you have done "make bootstrap" at least
-once:
+update.  "make" should work in 90% of the cases and be much quicker.
 
-  $ ./configure
-  $ make
-  $ cd lisp
-  $ make recompile
-  $ cd ..
   $ make
 
 (If you want to install the Emacs binary, type "make install" instead
index 3b3d7cf9e96bb3a559227c71991a928c614eea3e..2b313dffa561551ca479939ab7c7dcd8b6bc285c 100644 (file)
 # make bootstrap
 #      Recompiles all the Emacs Lisp files using the latest source,
 #      then rebuilds Emacs.
-#
-# make bootfast
-#      Recompiles changed Emacs Lisp files using the latest C source,
-#      then rebuilds Emacs.  This is faster than `make bootstrap'
-#      but once in a while an old .elc file can cause trouble.
 
 SHELL = /bin/sh
 
@@ -261,7 +256,11 @@ 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.
-SUBDIR = lib-src src
+# 
+# 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-src src lisp
 
 # The subdir makefiles created by config.status.
 SUBDIR_MAKEFILES = lib-src/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispref/Makefile doc/lispintro/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile lisp/Makefile
@@ -313,6 +312,9 @@ lib-src: FRC src/config.stamp
 
 .RECURSIVE: ${SUBDIR} leim
 
+# We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
+lisp: src
+
 ${SUBDIR}: maybe_bootstrap ${SUBDIR_MAKEFILES} FRC
        cd $@; $(MAKE) all $(MFLAGS) \
          CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
@@ -711,7 +713,7 @@ clean: FRC
 ###      `make distclean' should leave only the files that were in the
 ###      distribution.
 top_distclean=\
-       rm -f config.status config.cache config.log ; \
+       rm -f config.cache config.log ; \
        rm -f Makefile ${SUBDIR_MAKEFILES} ; \
        if [ -d lock ] ; then (cd lock && (rm -f * || true)); else true; fi
 distclean: FRC
@@ -727,6 +729,22 @@ distclean: FRC
        (cd lisp;     $(MAKE) $(MFLAGS) distclean)
        ${top_distclean}
 
+### `bootstrap-clean'
+###      Delete everything that can be reconstructed by `make' and that
+###      needs to be deleted in order to force a bootstrap from a clean state.
+bootstrap-clean: FRC
+       (cd src;      $(MAKE) $(MFLAGS) bootstrap-clean)
+       (cd oldXMenu; $(MAKE) $(MFLAGS) maintainer-clean)
+       (cd lwlib;    $(MAKE) $(MFLAGS) maintainer-clean)
+       (cd lib-src;  $(MAKE) $(MFLAGS) maintainer-clean)
+       -(cd doc/emacs &&   $(MAKE) $(MFLAGS) maintainer-clean)
+       -(cd doc/misc &&   $(MAKE) $(MFLAGS) maintainer-clean)
+       -(cd doc/lispref &&   $(MAKE) $(MFLAGS) maintainer-clean)
+       -(cd doc/lispintro &&   $(MAKE) $(MFLAGS) maintainer-clean)
+       (cd leim;     $(MAKE) $(MFLAGS) maintainer-clean)
+       (cd lisp;     $(MAKE) $(MFLAGS) maintainer-clean)
+       ${top_distclean}
+
 ### `maintainer-clean'
 ###      Delete everything from the current directory that can be
 ###      reconstructed with this Makefile.  This typically includes
@@ -738,18 +756,9 @@ distclean: FRC
 ###      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
+maintainer-clean: bootstrap-clean
        (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 doc/emacs &&   $(MAKE) $(MFLAGS) maintainer-clean)
-       -(cd doc/misc &&   $(MAKE) $(MFLAGS) maintainer-clean)
-       -(cd doc/lispref &&   $(MAKE) $(MFLAGS) maintainer-clean)
-       -(cd doc/lispintro &&   $(MAKE) $(MFLAGS) maintainer-clean)
-       (cd leim;     $(MAKE) $(MFLAGS) maintainer-clean)
-       (cd lisp;     $(MAKE) $(MFLAGS) maintainer-clean)
-       ${top_distclean}
+       -rm -f config.status
 
 ### This doesn't actually appear in the coding standards, but Karl
 ### says GCC supports it, and that's where the configuration part of
@@ -826,7 +835,6 @@ dvi:
 
 .PHONY: bootstrap
 .PHONY: bootstrap-build
-.PHONY: bootfast
 .PHONY: maybe_bootstrap
 
 maybe_bootstrap:
@@ -837,40 +845,26 @@ maybe_bootstrap:
          exit 1;\
        fi
 
-bootstrap: bootstrap-clean-before FRC
+bootstrap: bootstrap-clean FRC
+       if [ -x ./config.status ]; then           \
+           ./config.status --recheck;            \
+           ./config.status;                      \
+       else                                      \
+           ./configure --enable-maintainer-mode; \
+       fi
        $(MAKE) $(MFLAGS) info bootstrap-build
 
-bootfast: bootstrap-clean-before-fast FRC
-       $(MAKE) $(MFLAGS) info bootstrap-build
+src/bootstrap-emacs${EXEEXT}:
+       (cd src; $(MAKE) $(MFLAGS) bootstrap-emacs${EXEEXT})
 
 ## There used to be a src; mostlyclean before all, but it does not
 ## seem to serve any purpose, and compiles things twice.
 ## http://lists.gnu.org/archive/html/emacs-devel/2008-06/msg00104.html
-bootstrap-build: FRC
-       (cd lisp; $(MAKE) $(MFLAGS) bootstrap-prepare)
-       (cd src; $(MAKE) $(MFLAGS) bootstrap)
+bootstrap-build: src/bootstrap-emacs$(EXEEXT) FRC
        (cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=../src/bootstrap-emacs${EXEEXT})
        $(MAKE) $(MFLAGS) all
        (cd lisp; $(MAKE) $(MFLAGS) bootstrap-after)
 
-### Used for `bootstrap' to avoid deleting existing dumped Emacs executables.
-bootstrap-clean-before: bootstrap-clean-before-fast FRC
-       (cd lisp;     $(MAKE) $(MFLAGS) bootstrap-clean)
-       (cd leim;     $(MAKE) $(MFLAGS) bootstrap-clean)
-
-### Used for `bootfast' to avoid deleting existing dumped Emacs executables
-### and compiled .elc files.
-bootstrap-clean-before-fast: FRC
-       (cd src;      $(MAKE) $(MFLAGS) mostlyclean)
-       (cd oldXMenu; $(MAKE) $(MFLAGS) clean)
-       (cd lwlib;    $(MAKE) $(MFLAGS) clean)
-       (cd lib-src;  $(MAKE) $(MFLAGS) clean)
-       -(cd doc/emacs &&   $(MAKE) $(MFLAGS) clean)
-       -(cd doc/misc &&   $(MAKE) $(MFLAGS) clean)
-       -(cd doc/lispref &&   $(MAKE) $(MFLAGS) clean)
-       -(cd doc/lispintro &&   $(MAKE) $(MFLAGS) clean)
-       (cd leim;     $(MAKE) $(MFLAGS) clean)
-
 .PHONY: check-declare
 
 check-declare:
index 5188d160710d4276b0e60365d1a12465f2ed4945..bed038f31efb4da96c394debb3ec9addfd8d6d98 100644 (file)
@@ -1,5 +1,8 @@
 2008-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * Makefile.in (all): New target.
+       (bootstrap-prepare): Remove.
+
        * Makefile.in ($(lisp)/progmodes/cc-mode.elc): Pass the .el file not
        the .elc file to batch-byte-compile.
 
index a9c41a533117b8a5f8381e18253ba80a5cf39fa3..9b354b9bdf644a02eade0363b313da095c50233d 100644 (file)
@@ -98,6 +98,10 @@ setwins_almost=subdirs=`(cd $$wd; find . -type d -print)`; \
           esac; \
         done
 
+# `compile-main' tends to be slower than `recompile' but can be parallelized
+# with "make -j" and results in more deterministic compilation warnings.
+all: compile-main
+
 doit:
 
 # custom-deps and finder-data both used to scan _all_ the *.el files.
@@ -1401,11 +1405,6 @@ $(CAL_DIR)/hol-loaddefs.el: $(emacs-deps) $(CAL_SRC)
 # local changes.  (Because loaddefs.el is an automatically generated
 # file, we don't want to store it in the source repository).
 
-bootstrap-prepare:
-       if test -x $(EMACS); then                               \
-         $(MAKE) $(MFLAGS) autoloads EMACS=$(EMACS);           \
-       fi
-
 autogen-clean:
        cd $(lisp); rm -f $(AUTOGENEL)
 
index 4434b1d45e1f10e6c9e1aad703f23ccbe940a7e5..791ea6dcaa599735d480931d6434b6c720b94334 100644 (file)
@@ -1,10 +1,17 @@
+2008-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * Makefile.in (emacs${EXEEXT}): Depend on the machine-specific files.
+       (bootstrap-clean): New target that keeps TAGS around.
+       (../lisp/subdirs.el, ../lisp/loaddefs.el): New targets.
+       (bootstrap-emacs${EXEEXT}): Depend on subdirs.el.
+
 2008-06-20  Jason Rumney  <jasonr@gnu.org>
 
-        * w32fns.c, w32term.c, w32term.h, w32gui.h [OLD_FONT]: Remove
-        obsolete font code.
+       * w32fns.c, w32term.c, w32term.h, w32gui.h [OLD_FONT]:
+       Remove obsolete font code.
 
-        * w32font.c (font_matches_spec): Use csb bitfield from font signature
-        to determine language support.
+       * w32font.c (font_matches_spec): Use csb bitfield from font signature
+       to determine language support.
 
 2008-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
index a64ff668bdd34966ed46673d443df3f31427c83a..85b1c6c0f34f4ba166908d626f86ea7bf097c1e0 100644 (file)
@@ -906,7 +906,7 @@ RUN_TEMACS = `/bin/pwd`/temacs
 
 all: emacs${EXEEXT} OTHER_FILES
 
-emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
+emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp} ${SOME_MACHINE_LISP}
 #ifdef CANNOT_DUMP
        rm -f emacs${EXEEXT}
        ln temacs${EXEEXT} emacs${EXEEXT}
@@ -1284,6 +1284,10 @@ distclean: clean
        mv ./.gdbinit ./.gdbinit.save
        if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
        else mv ./.gdbinit.save ./.gdbinit; fi
+/* bootstrap-clean is used to clean up just before a bootstrap.
+   It should remove all files generated during a compilation/bootstrap,
+   but not things like config.status or TAGS.  */
+bootstrap-clean: distclean
 maintainer-clean: distclean
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
@@ -1318,10 +1322,16 @@ tags: TAGS TAGS-LISP $(lwlibdir)TAGS
 
 bootstrap: bootstrap-emacs${EXEEXT}
 
+../lisp/subdirs.el:
+       cd $(lispsource); $(MAKE) update-subdirs
+
+../lisp/loaddefs.el: bootstrap-emacs${EXEEXT}
+       cd $(lispsource); $(MAKE) autoloads EMACS=../src/bootstrap-emacs${EXEEXT}
+
 /* Dump an Emacs executable named bootstrap-emacs containing the
    files from loadup.el in source form.  */
 
-bootstrap-emacs${EXEEXT}: temacs${EXEEXT} ${lispsource}international/charprop.el
+bootstrap-emacs${EXEEXT}: temacs${EXEEXT} ${lispsource}international/charprop.el ../lisp/subdirs.el
 #ifdef CANNOT_DUMP
        ln temacs${EXEEXT} bootstrap-emacs${EXEEXT}
 #else