aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2014-04-16 23:40:25 -0700
committerPaul Eggert2014-04-16 23:40:25 -0700
commita3f989d4c430f4788352b2bad801ba99ccf2bb21 (patch)
tree1aa551802fb10c8f5cad3a8ba0aca3d239f27305
parent8ac457d5edccc6cb72be90f1d8efc7389d1c824c (diff)
downloademacs-a3f989d4c430f4788352b2bad801ba99ccf2bb21.tar.gz
emacs-a3f989d4c430f4788352b2bad801ba99ccf2bb21.zip
* 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.
-rw-r--r--ChangeLog6
-rw-r--r--GNUmakefile10
-rw-r--r--INSTALL.REPO65
3 files changed, 41 insertions, 40 deletions
diff --git a/ChangeLog b/ChangeLog
index c145829152f..caeaae428ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
12014-04-17 Paul Eggert <eggert@cs.ucla.edu> 12014-04-17 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 * GNUmakefile: Speed up 'make bootstrap' in fresh checkout.
4 (ORDINARY_GOALS): New macro, which excludes 'bootstrap'.
5 (bootstrap, .PHONY): New rules.
6 * INSTALL.REPO: Document current procedure better.
7 Move copyright notice to just before license notice.
8
3 * Makefile.in (FRC, force-info): Remove. 9 * Makefile.in (FRC, force-info): Remove.
4 All uses removed. This hack is no longer needed here 10 All uses removed. This hack is no longer needed here
5 now that we can assume GNU Make's .PHONY feature works. 11 now that we can assume GNU Make's .PHONY feature works.
diff --git a/GNUmakefile b/GNUmakefile
index 22c57f5cb5b..b4b33f4dbb6 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -55,7 +55,9 @@ else
55# Once 'configure' exists, run it. 55# Once 'configure' exists, run it.
56# Finally, run the actual 'make'. 56# Finally, run the actual 'make'.
57 57
58default $(filter-out configure Makefile,$(MAKECMDGOALS)): Makefile 58ORDINARY_GOALS = $(filter-out configure Makefile bootstrap,$(MAKECMDGOALS))
59
60default $(ORDINARY_GOALS): Makefile
59 $(MAKE) -f Makefile $(MAKECMDGOALS) 61 $(MAKE) -f Makefile $(MAKECMDGOALS)
60# Execute in sequence, so that multiple user goals don't conflict. 62# Execute in sequence, so that multiple user goals don't conflict.
61.NOTPARALLEL: 63.NOTPARALLEL:
@@ -72,5 +74,11 @@ Makefile: configure
72 ./configure 74 ./configure
73 @echo >&2 'Makefile built.' 75 @echo >&2 'Makefile built.'
74 76
77# 'make bootstrap' in a fresh checkout needn't run 'configure' twice.
78bootstrap: Makefile
79 $(MAKE) -f Makefile all
80
81.PHONY: bootstrap default $(ORDINARY_GOALS)
82
75endif 83endif
76endif 84endif
diff --git a/INSTALL.REPO b/INSTALL.REPO
index ecf5bc068fe..36ab928673d 100644
--- a/INSTALL.REPO
+++ b/INSTALL.REPO
@@ -1,9 +1,10 @@
1Copyright (C) 2002-2014 Free Software Foundation, Inc.
2See the end of the file for license conditions.
3
4
5 Building and Installing Emacs from the Repository 1 Building and Installing Emacs from the Repository
6 2
3Simply run 'make'. This should work if your files are freshly checked
4out from the repository, and if you have the proper tools installed.
5If it doesn't work, or if you have special build requirements, the
6following information may be helpful.
7
7Building Emacs from the source-code repository requires some tools 8Building Emacs from the source-code repository requires some tools
8that are not needed when building from a release. You will need: 9that are not needed when building from a release. You will need:
9 10
@@ -14,48 +15,32 @@ automake - at least the version specified near the start of
14makeinfo - not strictly necessary, but highly recommended, so that 15makeinfo - not strictly necessary, but highly recommended, so that
15 you can build the manuals. 16 you can build the manuals.
16 17
17The `autogen.sh' script can help you figure out if you have the 18To use the autotools, run the following shell command to generate the
18necessary tools. 19'configure' script and some related files:
19
20The first time you build, there are a couple of extra steps.
21First, generate the `configure' script and some related files:
22 20
23 $ ./autogen.sh 21 $ ./autogen.sh
24 22
25(or you can just run `autoreconf -i -I m4'). 23You can then configure your build as follows:
26
27You can then configure your build (use `./configure --help' to see
28options you can set):
29 24
30 $ ./configure 25 $ ./configure
31 26
32If you want later builds to go faster, at the expense of sometimes 27The 'configure' script has many options; run './configure --help' to
33doing the wrong thing if you update the build procedure, you can 28see them. For example, if you want later builds to go faster, albeit
34invoke "./configure -C" instead. 29sometimes doing the wrong thing if you update the build procedure, you
35 30can invoke './configure -C'. After configuring, build Emacs as follows:
36Some of the files that are included in the Emacs tarball, such as
37byte-compiled Lisp files, are not stored in the repository. Therefore, to
38build from the repository you must run "make bootstrap" instead of
39just "make":
40
41 $ make bootstrap
42
43Normally, it is not necessary to use "make bootstrap" after every
44update from the repository. "make" should work in 90% of the cases and be
45much quicker.
46 31
47 $ make 32 $ make
48 33
49(If you want to install the Emacs binary, type "make install" instead 34If you want to install Emacs, type 'make install' instead of 'make' in
50of "make" in the last command.) 35the last command.
51 36
52Occasionally the file "lisp/loaddefs.el" (and similar automatically 37Occasionally the file 'lisp/loaddefs.el' (and similar automatically
53generated files, such as esh-groups.el, and *-loaddefs.el in some 38generated files, such as 'esh-groups.el', and '*-loaddefs.el' in some
54subdirectories of lisp/, e.g. mh-e/ and calendar/) will need to be 39subdirectories of 'lisp/', e.g., 'mh-e/' and 'calendar/') will need to be
55updated to reflect new autoloaded functions. If you see errors (rather 40updated to reflect new autoloaded functions. If you see errors (rather
56than warnings) about undefined lisp functions during compilation, that 41than warnings) about undefined lisp functions during compilation, that
57may be the reason. Finally, sometimes there can be build failures 42may be the reason. Finally, sometimes there can be build failures
58related to *loaddefs.el (e.g. "required feature `esh-groups' was not 43related to '*loaddefs.el' (e.g., "required feature `esh-groups' was not
59provided"). In that case, follow the instructions below. 44provided"). In that case, follow the instructions below.
60 45
61To update loaddefs.el (and similar files), do: 46To update loaddefs.el (and similar files), do:
@@ -63,13 +48,13 @@ To update loaddefs.el (and similar files), do:
63 $ cd lisp 48 $ cd lisp
64 $ make autoloads 49 $ make autoloads
65 50
66If either of the above partial procedures fails, try "make bootstrap". 51If either of the above partial procedures fails, try 'make bootstrap'.
67If CPU time is not an issue, the most thorough way to rebuild, and 52If CPU time is not an issue, 'make bootstrap' is the most thorough way
68avoid any spurious problems, is always to use this method. 53to rebuild, and avoid any spurious problems.
69 54
70Users of non-Posix systems (MS-Windows etc.) should run the 55Users of non-Posix systems (MS-Windows, etc.) should run the
71platform-specific configuration scripts (nt/configure.bat, config.bat, 56platform-specific configuration scripts ('nt/configure.bat',
72etc.) before "make bootstrap" or "make"; the rest of the procedure is 57'config.bat', etc.) before 'make'; the rest of the procedure is
73applicable to those systems as well. 58applicable to those systems as well.
74 59
75Because the repository version of Emacs is a work in progress, it will 60Because the repository version of Emacs is a work in progress, it will
@@ -82,6 +67,8 @@ never platform-specific.
82 67
83 68
84 69
70Copyright (C) 2002-2014 Free Software Foundation, Inc.
71
85This file is part of GNU Emacs. 72This file is part of GNU Emacs.
86 73
87GNU Emacs is free software: you can redistribute it and/or modify 74GNU Emacs is free software: you can redistribute it and/or modify