summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2008-06-20 21:48:17 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2008-06-20 21:48:17 +0000
commit7dd3f660ca06ba8fb0a4b5168bf80d1e9c6f13cc (patch)
treeb97948ee4b7233e14c762320b6d8ec5641ac8001
parent24624f5bc7f705fde77750ff06f51b950dcc6c9e (diff)
downloademacs-7dd3f660ca06ba8fb0a4b5168bf80d1e9c6f13cc.tar.gz
* src/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. * 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.
-rw-r--r--ChangeLog13
-rw-r--r--INSTALL.CVS20
-rw-r--r--Makefile.in80
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/Makefile.in9
-rw-r--r--src/ChangeLog15
-rw-r--r--src/Makefile.in14
7 files changed, 81 insertions, 73 deletions
diff --git a/ChangeLog b/ChangeLog
index bcb9ffb21e4..7ce8e321a18 100644
--- 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>
diff --git a/INSTALL.CVS b/INSTALL.CVS
index 1c52b29d9be..97da65af711 100644
--- a/INSTALL.CVS
+++ b/INSTALL.CVS
@@ -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
diff --git a/Makefile.in b/Makefile.in
index 3b3d7cf9e96..2b313dffa56 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -56,11 +56,6 @@
# 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:
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index dae80c852a6..b260945d848 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -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.
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index a9c41a53311..9b354b9bdf6 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -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)
diff --git a/src/ChangeLog b/src/ChangeLog
index 13f27014f69..fde05b61c67 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -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>
diff --git a/src/Makefile.in b/src/Makefile.in
index a64ff668bdd..85b1c6c0f34 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -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