Commit | Line | Data |
---|---|---|
427c285b PE |
1 | # Build Emacs from a fresh tarball or version-control checkout. |
2 | ||
ab422c4d | 3 | # Copyright (C) 2011-2013 Free Software Foundation, Inc. |
427c285b PE |
4 | # |
5 | # This file is part of GNU Emacs. | |
6 | # | |
7 | # GNU Emacs is free software: you can redistribute it and/or modify | |
8 | # it under the terms of the GNU General Public License as published by | |
9 | # the Free Software Foundation, either version 3 of the License, or | |
10 | # (at your option) any later version. | |
11 | # | |
12 | # GNU Emacs is distributed in the hope that it will be useful, | |
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | # GNU General Public License for more details. | |
16 | # | |
17 | # You should have received a copy of the GNU General Public License | |
18 | # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | |
19 | # | |
20 | # written by Paul Eggert | |
21 | ||
22 | ||
23 | # This GNUmakefile is for GNU Make. It is for convenience, so that | |
24 | # one can run 'make' in an unconfigured source tree. In such a tree, | |
25 | # this file causes GNU Make to first create a standard configuration | |
26 | # with the default options, and then reinvokes itself on the | |
27 | # newly-built Makefile. If the source tree is already configured, | |
28 | # this file defers to the existing Makefile. | |
29 | ||
30 | # If you are using a non-GNU 'make', or if you want non-default build | |
31 | # options, or if you want to build in an out-of-source tree, please | |
32 | # run "configure" by hand. But run autogen.sh first, if the source | |
33 | # was checked out directly from the repository. | |
34 | ||
35 | ||
36 | # If a Makefile already exists, just use it. | |
37 | ||
38 | ifeq ($(wildcard Makefile),Makefile) | |
39 | include Makefile | |
40 | else | |
41 | ||
42 | # If cleaning and Makefile does not exist, don't bother creating it. | |
43 | # The source tree is already clean, or is in a weird state that | |
44 | # requires expert attention. | |
45 | ||
46 | ifeq ($(filter-out %clean,$(or $(MAKECMDGOALS),default)),) | |
47 | ||
48 | $(MAKECMDGOALS): | |
49 | @echo >&2 'No Makefile; skipping $@.' | |
50 | ||
51 | else | |
52 | ||
53 | # No Makefile, and not cleaning. | |
54 | # If 'configure' does not exist, Emacs must have been checked | |
55 | # out directly from the repository; run ./autogen.sh. | |
56 | # Once 'configure' exists, run it. | |
57 | # Finally, run the actual 'make'. | |
58 | ||
59 | default $(filter-out configure Makefile,$(MAKECMDGOALS)): Makefile | |
60 | $(MAKE) -f Makefile $(MAKECMDGOALS) | |
61 | # Execute in sequence, so that multiple user goals don't conflict. | |
62 | .NOTPARALLEL: | |
63 | ||
64 | configure: | |
65 | @echo >&2 'There seems to be no "configure" file in this directory.' | |
66 | @echo >&2 'Running ./autogen.sh || autogen/copy_autogen ...' | |
67 | ./autogen.sh || autogen/copy_autogen | |
68 | @echo >&2 '"configure" file built.' | |
69 | ||
70 | Makefile: configure | |
71 | @echo >&2 'There seems to be no Makefile in this directory.' | |
72 | @echo >&2 'Running ./configure ...' | |
73 | ./configure | |
74 | @echo >&2 'Makefile built.' | |
75 | ||
76 | endif | |
77 | endif |