diff options
| author | Paul Eggert | 2014-04-16 23:40:25 -0700 |
|---|---|---|
| committer | Paul Eggert | 2014-04-16 23:40:25 -0700 |
| commit | a3f989d4c430f4788352b2bad801ba99ccf2bb21 (patch) | |
| tree | 1aa551802fb10c8f5cad3a8ba0aca3d239f27305 | |
| parent | 8ac457d5edccc6cb72be90f1d8efc7389d1c824c (diff) | |
| download | emacs-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-- | ChangeLog | 6 | ||||
| -rw-r--r-- | GNUmakefile | 10 | ||||
| -rw-r--r-- | INSTALL.REPO | 65 |
3 files changed, 41 insertions, 40 deletions
| @@ -1,5 +1,11 @@ | |||
| 1 | 2014-04-17 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2014-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 | ||
| 58 | default $(filter-out configure Makefile,$(MAKECMDGOALS)): Makefile | 58 | ORDINARY_GOALS = $(filter-out configure Makefile bootstrap,$(MAKECMDGOALS)) |
| 59 | |||
| 60 | default $(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. | ||
| 78 | bootstrap: Makefile | ||
| 79 | $(MAKE) -f Makefile all | ||
| 80 | |||
| 81 | .PHONY: bootstrap default $(ORDINARY_GOALS) | ||
| 82 | |||
| 75 | endif | 83 | endif |
| 76 | endif | 84 | endif |
diff --git a/INSTALL.REPO b/INSTALL.REPO index ecf5bc068fe..36ab928673d 100644 --- a/INSTALL.REPO +++ b/INSTALL.REPO | |||
| @@ -1,9 +1,10 @@ | |||
| 1 | Copyright (C) 2002-2014 Free Software Foundation, Inc. | ||
| 2 | See 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 | ||
| 3 | Simply run 'make'. This should work if your files are freshly checked | ||
| 4 | out from the repository, and if you have the proper tools installed. | ||
| 5 | If it doesn't work, or if you have special build requirements, the | ||
| 6 | following information may be helpful. | ||
| 7 | |||
| 7 | Building Emacs from the source-code repository requires some tools | 8 | Building Emacs from the source-code repository requires some tools |
| 8 | that are not needed when building from a release. You will need: | 9 | that 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 | |||
| 14 | makeinfo - not strictly necessary, but highly recommended, so that | 15 | makeinfo - not strictly necessary, but highly recommended, so that |
| 15 | you can build the manuals. | 16 | you can build the manuals. |
| 16 | 17 | ||
| 17 | The `autogen.sh' script can help you figure out if you have the | 18 | To use the autotools, run the following shell command to generate the |
| 18 | necessary tools. | 19 | 'configure' script and some related files: |
| 19 | |||
| 20 | The first time you build, there are a couple of extra steps. | ||
| 21 | First, 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'). | 23 | You can then configure your build as follows: |
| 26 | |||
| 27 | You can then configure your build (use `./configure --help' to see | ||
| 28 | options you can set): | ||
| 29 | 24 | ||
| 30 | $ ./configure | 25 | $ ./configure |
| 31 | 26 | ||
| 32 | If you want later builds to go faster, at the expense of sometimes | 27 | The 'configure' script has many options; run './configure --help' to |
| 33 | doing the wrong thing if you update the build procedure, you can | 28 | see them. For example, if you want later builds to go faster, albeit |
| 34 | invoke "./configure -C" instead. | 29 | sometimes doing the wrong thing if you update the build procedure, you |
| 35 | 30 | can invoke './configure -C'. After configuring, build Emacs as follows: | |
| 36 | Some of the files that are included in the Emacs tarball, such as | ||
| 37 | byte-compiled Lisp files, are not stored in the repository. Therefore, to | ||
| 38 | build from the repository you must run "make bootstrap" instead of | ||
| 39 | just "make": | ||
| 40 | |||
| 41 | $ make bootstrap | ||
| 42 | |||
| 43 | Normally, it is not necessary to use "make bootstrap" after every | ||
| 44 | update from the repository. "make" should work in 90% of the cases and be | ||
| 45 | much quicker. | ||
| 46 | 31 | ||
| 47 | $ make | 32 | $ make |
| 48 | 33 | ||
| 49 | (If you want to install the Emacs binary, type "make install" instead | 34 | If you want to install Emacs, type 'make install' instead of 'make' in |
| 50 | of "make" in the last command.) | 35 | the last command. |
| 51 | 36 | ||
| 52 | Occasionally the file "lisp/loaddefs.el" (and similar automatically | 37 | Occasionally the file 'lisp/loaddefs.el' (and similar automatically |
| 53 | generated files, such as esh-groups.el, and *-loaddefs.el in some | 38 | generated files, such as 'esh-groups.el', and '*-loaddefs.el' in some |
| 54 | subdirectories of lisp/, e.g. mh-e/ and calendar/) will need to be | 39 | subdirectories of 'lisp/', e.g., 'mh-e/' and 'calendar/') will need to be |
| 55 | updated to reflect new autoloaded functions. If you see errors (rather | 40 | updated to reflect new autoloaded functions. If you see errors (rather |
| 56 | than warnings) about undefined lisp functions during compilation, that | 41 | than warnings) about undefined lisp functions during compilation, that |
| 57 | may be the reason. Finally, sometimes there can be build failures | 42 | may be the reason. Finally, sometimes there can be build failures |
| 58 | related to *loaddefs.el (e.g. "required feature `esh-groups' was not | 43 | related to '*loaddefs.el' (e.g., "required feature `esh-groups' was not |
| 59 | provided"). In that case, follow the instructions below. | 44 | provided"). In that case, follow the instructions below. |
| 60 | 45 | ||
| 61 | To update loaddefs.el (and similar files), do: | 46 | To 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 | ||
| 66 | If either of the above partial procedures fails, try "make bootstrap". | 51 | If either of the above partial procedures fails, try 'make bootstrap'. |
| 67 | If CPU time is not an issue, the most thorough way to rebuild, and | 52 | If CPU time is not an issue, 'make bootstrap' is the most thorough way |
| 68 | avoid any spurious problems, is always to use this method. | 53 | to rebuild, and avoid any spurious problems. |
| 69 | 54 | ||
| 70 | Users of non-Posix systems (MS-Windows etc.) should run the | 55 | Users of non-Posix systems (MS-Windows, etc.) should run the |
| 71 | platform-specific configuration scripts (nt/configure.bat, config.bat, | 56 | platform-specific configuration scripts ('nt/configure.bat', |
| 72 | etc.) before "make bootstrap" or "make"; the rest of the procedure is | 57 | 'config.bat', etc.) before 'make'; the rest of the procedure is |
| 73 | applicable to those systems as well. | 58 | applicable to those systems as well. |
| 74 | 59 | ||
| 75 | Because the repository version of Emacs is a work in progress, it will | 60 | Because 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 | ||
| 70 | Copyright (C) 2002-2014 Free Software Foundation, Inc. | ||
| 71 | |||
| 85 | This file is part of GNU Emacs. | 72 | This file is part of GNU Emacs. |
| 86 | 73 | ||
| 87 | GNU Emacs is free software: you can redistribute it and/or modify | 74 | GNU Emacs is free software: you can redistribute it and/or modify |