Commit a3f989d4 authored by Paul Eggert's avatar Paul Eggert

* GNUmakefile: Speed up 'make bootstrap' in fresh checkout.

(ORDINARY_GOALS): New macro, which excludes 'bootstrap'.
(bootstrap, .PHONY): New rules.
* INSTALL.REPO: Document current procedure better.
Move copyright notice to just before license notice.
parent 8ac457d5
2014-04-17 Paul Eggert <eggert@cs.ucla.edu> 2014-04-17 Paul Eggert <eggert@cs.ucla.edu>
* GNUmakefile: Speed up 'make bootstrap' in fresh checkout.
(ORDINARY_GOALS): New macro, which excludes 'bootstrap'.
(bootstrap, .PHONY): New rules.
* INSTALL.REPO: Document current procedure better.
Move copyright notice to just before license notice.
* Makefile.in (FRC, force-info): Remove. * Makefile.in (FRC, force-info): Remove.
All uses removed. This hack is no longer needed here All uses removed. This hack is no longer needed here
now that we can assume GNU Make's .PHONY feature works. now that we can assume GNU Make's .PHONY feature works.
......
...@@ -55,7 +55,9 @@ else ...@@ -55,7 +55,9 @@ else
# Once 'configure' exists, run it. # Once 'configure' exists, run it.
# Finally, run the actual 'make'. # Finally, run the actual 'make'.
default $(filter-out configure Makefile,$(MAKECMDGOALS)): Makefile ORDINARY_GOALS = $(filter-out configure Makefile bootstrap,$(MAKECMDGOALS))
default $(ORDINARY_GOALS): Makefile
$(MAKE) -f Makefile $(MAKECMDGOALS) $(MAKE) -f Makefile $(MAKECMDGOALS)
# Execute in sequence, so that multiple user goals don't conflict. # Execute in sequence, so that multiple user goals don't conflict.
.NOTPARALLEL: .NOTPARALLEL:
...@@ -72,5 +74,11 @@ Makefile: configure ...@@ -72,5 +74,11 @@ Makefile: configure
./configure ./configure
@echo >&2 'Makefile built.' @echo >&2 'Makefile built.'
# 'make bootstrap' in a fresh checkout needn't run 'configure' twice.
bootstrap: Makefile
$(MAKE) -f Makefile all
.PHONY: bootstrap default $(ORDINARY_GOALS)
endif endif
endif endif
Copyright (C) 2002-2014 Free Software Foundation, Inc.
See the end of the file for license conditions.
Building and Installing Emacs from the Repository Building and Installing Emacs from the Repository
Simply run 'make'. This should work if your files are freshly checked
out from the repository, and if you have the proper tools installed.
If it doesn't work, or if you have special build requirements, the
following information may be helpful.
Building Emacs from the source-code repository requires some tools Building Emacs from the source-code repository requires some tools
that are not needed when building from a release. You will need: that are not needed when building from a release. You will need:
...@@ -14,48 +15,32 @@ automake - at least the version specified near the start of ...@@ -14,48 +15,32 @@ automake - at least the version specified near the start of
makeinfo - not strictly necessary, but highly recommended, so that makeinfo - not strictly necessary, but highly recommended, so that
you can build the manuals. you can build the manuals.
The `autogen.sh' script can help you figure out if you have the To use the autotools, run the following shell command to generate the
necessary tools. 'configure' script and some related files:
The first time you build, there are a couple of extra steps.
First, generate the `configure' script and some related files:
$ ./autogen.sh $ ./autogen.sh
(or you can just run `autoreconf -i -I m4'). You can then configure your build as follows:
You can then configure your build (use `./configure --help' to see
options you can set):
$ ./configure $ ./configure
If you want later builds to go faster, at the expense of sometimes The 'configure' script has many options; run './configure --help' to
doing the wrong thing if you update the build procedure, you can see them. For example, if you want later builds to go faster, albeit
invoke "./configure -C" instead. sometimes doing the wrong thing if you update the build procedure, you
can invoke './configure -C'. After configuring, build Emacs as follows:
Some of the files that are included in the Emacs tarball, such as
byte-compiled Lisp files, are not stored in the repository. Therefore, to
build from the repository you must run "make bootstrap" instead of
just "make":
$ make bootstrap
Normally, it is not necessary to use "make bootstrap" after every
update from the repository. "make" should work in 90% of the cases and be
much quicker.
$ make $ make
(If you want to install the Emacs binary, type "make install" instead If you want to install Emacs, type 'make install' instead of 'make' in
of "make" in the last command.) the last command.
Occasionally the file "lisp/loaddefs.el" (and similar automatically Occasionally the file 'lisp/loaddefs.el' (and similar automatically
generated files, such as esh-groups.el, and *-loaddefs.el in some generated files, such as 'esh-groups.el', and '*-loaddefs.el' in some
subdirectories of lisp/, e.g. mh-e/ and calendar/) will need to be subdirectories of 'lisp/', e.g., 'mh-e/' and 'calendar/') will need to be
updated to reflect new autoloaded functions. If you see errors (rather updated to reflect new autoloaded functions. If you see errors (rather
than warnings) about undefined lisp functions during compilation, that than warnings) about undefined lisp functions during compilation, that
may be the reason. Finally, sometimes there can be build failures may be the reason. Finally, sometimes there can be build failures
related to *loaddefs.el (e.g. "required feature `esh-groups' was not related to '*loaddefs.el' (e.g., "required feature `esh-groups' was not
provided"). In that case, follow the instructions below. provided"). In that case, follow the instructions below.
To update loaddefs.el (and similar files), do: To update loaddefs.el (and similar files), do:
...@@ -63,13 +48,13 @@ To update loaddefs.el (and similar files), do: ...@@ -63,13 +48,13 @@ To update loaddefs.el (and similar files), do:
$ cd lisp $ cd lisp
$ make autoloads $ make autoloads
If either of the above partial procedures fails, try "make bootstrap". If either of the above partial procedures fails, try 'make bootstrap'.
If CPU time is not an issue, the most thorough way to rebuild, and If CPU time is not an issue, 'make bootstrap' is the most thorough way
avoid any spurious problems, is always to use this method. to rebuild, and avoid any spurious problems.
Users of non-Posix systems (MS-Windows etc.) should run the Users of non-Posix systems (MS-Windows, etc.) should run the
platform-specific configuration scripts (nt/configure.bat, config.bat, platform-specific configuration scripts ('nt/configure.bat',
etc.) before "make bootstrap" or "make"; the rest of the procedure is 'config.bat', etc.) before 'make'; the rest of the procedure is
applicable to those systems as well. applicable to those systems as well.
Because the repository version of Emacs is a work in progress, it will Because the repository version of Emacs is a work in progress, it will
...@@ -82,6 +67,8 @@ never platform-specific. ...@@ -82,6 +67,8 @@ never platform-specific.
Copyright (C) 2002-2014 Free Software Foundation, Inc.
This file is part of GNU Emacs. This file is part of GNU Emacs.
GNU Emacs is free software: you can redistribute it and/or modify GNU Emacs is free software: you can redistribute it and/or modify
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment