12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- # Maintainer makefile for Automake. Requires GNU make.
- # Copyright (C) 2012-2017 Free Software Foundation, Inc.
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
- ifeq ($(filter bootstrap,$(MAKECMDGOALS)),)
- ifeq ($(wildcard Makefile),)
- # Any target but 'bootstrap' specified in an unconfigured tree
- # is an error, even when the user is running GNU make.
- $(warning There seems to be no Makefile in this directory.)
- $(warning You must run ./configure before running 'make'.)
- $(error Fatal Error)
- endif
- include ./Makefile
- include $(srcdir)/maintainer/maint.mk
- include $(srcdir)/maintainer/syntax-checks.mk
- else # ! bootstrap in $(MAKECMDGOALS)
- other-targets := $(filter-out bootstrap,$(MAKECMDGOALS))
- config-status := $(wildcard ./config.status)
- BOOTSTRAP_SHELL ?= /bin/sh
- export BOOTSTRAP_SHELL
- # Allow the user (or more likely the developer) to ask for a bootstrap
- # of the package.
- #
- # Two issues that must be kept in mind in the implementation below:
- #
- # [1] "make bootstrap" can be invoked before 'configure' is run (and in
- # fact, even before it is created, if we are bootstrapping from a
- # freshly-cloned checkout).
- #
- # [2] When re-bootstrapping an already configured tree, we must ensure
- # that the automatic remake rules for Makefile and company do not
- # kick in, because the tree might be in an inconsistent state (e.g.,
- # we have just switched from 'maint' to 'master', and have the built
- # 'automake' script left from 'maint', but the files 'lib/am/*.am'
- # are from 'master': if 'automake' gets run and uses those files --
- # boom!).
- ifdef config-status # Bootstrap from an already-configured tree.
- # We need the definition of $(srcdir) in the 'bootstrap' rule
- # below.
- srcdir := $(shell echo @srcdir@ | $(config-status) --file=-)
- ifndef srcdir
- $(error Could not obtain $$(srcdir) from $(config-status))
- endif
- # Also, if we are re-bootstrapping an already-configured tree, we
- # want to re-configure it with the same pre-existing configuration.
- old-configure-flags := $(shell $(config-status) --config)
- else # Assume we are bootstrapping from an unconfigured srcdir.
- srcdir := .
- old-configure-flags :=
- endif
- configure-flags := $(old-configure-flags) $(BOOTSTRAP_CONFIGURE_FLAGS)
- .PHONY: bootstrap
- bootstrap:
- cd $(srcdir) && $(SHELL) ./bootstrap
- $(srcdir)/configure $(configure-flags)
- $(MAKE) clean
- $(MAKE) check TESTS=t/get-sysconf
- # Ensure that all the specified targets but 'bootstrap' (if any) are
- # run with a properly re-bootstrapped tree.
- ifdef other-targets
- $(other-targets): restart
- .PHONY: $(other-targets) restart
- restart: bootstrap; $(MAKE) $(AM_MAKEFLAGS) $(other-targets)
- endif
- endif # ! bootstrap in $(MAKECMDGOALS)
|