| 1 | # Build Emacs from a fresh tarball or version-control checkout. |
| 2 | |
| 3 | # Copyright (C) 2011-2012 Free Software Foundation, Inc. |
| 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 |