From: Stefan Monnier Date: Fri, 20 Jun 2008 21:48:17 +0000 (+0000) Subject: * src/Makefile.in (emacs${EXEEXT}): Depend on the machine-specific files. X-Git-Tag: emacs-pretest-23.0.90~4626 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=49f6eb95b2dc33e178af0f3fd5d48217abe44d9b;p=emacs.git * 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. --- diff --git a/ChangeLog b/ChangeLog index bcb9ffb21e4..7ce8e321a18 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,15 @@ -2008-06-20 Angelo Graziosi (tiny change) +2008-06-20 Stefan Monnier - * 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 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 5188d160710..bed038f31ef 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2008-06-20 Stefan Monnier + * 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 4434b1d45e1..791ea6dcaa5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,10 +1,17 @@ +2008-06-20 Stefan Monnier + + * 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 - * 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 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