summaryrefslogtreecommitdiff
path: root/GNUmakefile
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2012-04-27 18:48:27 +0200
committerStefano Lattarini <stefano.lattarini@gmail.com>2012-04-27 23:37:49 +0200
commit56badcd480c91e73e3a7f56beed80e0ebe566eab (patch)
treef5021fade5194e21173b401f65371cbd59ad725e /GNUmakefile
parentb99b5be0d88d69698f71a5cc85d841c9816f3031 (diff)
downloadautomake-56badcd480c91e73e3a7f56beed80e0ebe566eab.tar.gz
bootstrap: add convenience make target
Dependencies in the Automake build system are not completely specified (see for example the commit log of recent commit 'v1.12-10-gab14841', "build: avoid too greedy rebuilds in the testsuite"). In fact, some of them cannot even be; for example, Makefile is generated at configure time from Makefile.in, which should be regenerated by our bleeding-edge automake script, which is generated by out Makefile -- specifying the complete chain of dependencies here would bring to a circular dependency issue. For this reason, before testing or deploying a change, we are often forced to perform a full re-bootstrap of the Automake package, to ensure all our files are actually up-to-date. Until now, this has to be done manually, thus causing wasted keystrokes and more possibilities of error. With this change, we introduce a new 'bootstrap' make target to automatize all the (easy) steps of this re-bootstrapping (plus some minor bells & whistles since we are at it). * GNUmakefile: Rewrite to allow an easy bootstrapping and clean rebuild of the whole package, in particular with the help of ... (bootstrap): ... this new target. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 'GNUmakefile')
-rw-r--r--GNUmakefile54
1 files changed, 47 insertions, 7 deletions
diff --git a/GNUmakefile b/GNUmakefile
index 9d83dbaa3..dcaaf01a6 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -15,14 +15,54 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# If the user runs GNU make but has not yet run ./configure,
-# give them an helpful diagnostic instead of a cryptic error.
-am--Makefile := $(wildcard Makefile)
-ifeq ($(am--Makefile),)
- $(warning There seems to be no Makefile in this directory.)
- $(warning You must run ./configure before running 'make'.)
- $(error Fatal Error)
+ifeq ($(wildcard Makefile),)
+ ifeq ($(filter bootstrap,$(MAKECMDGOALS)),bootstrap)
+ # Allow the user (or more likely the developer) to ask for a bootstrap
+ # of the package; of course, this can happen before configure is run,
+ # and in fact even before it is created.
+ else
+ # Else, If the user runs GNU make but has not yet run ./configure,
+ # give them an helpful diagnostic instead of a cryptic error.
+ $(warning There seems to be no Makefile in this directory.)
+ $(warning You must run ./configure before running 'make'.)
+ $(error Fatal Error)
+ endif
else
include ./Makefile
include $(srcdir)/syntax-checks.mk
endif
+
+# To allow bootstrapping also in an unconfigured tree.
+srcdir ?= .
+am__cd ?= CDPATH=. && unset CDPATH && cd
+AM_DEFAULT_VERBOSITY ?= 0
+V ?= $(AM_DEFAULT_VERBOSITY)
+
+ifeq ($(V),0)
+ AM_V_BOOTSTRAP = @echo " BOOTSTRAP";
+ AM_V_CONFIGURE = @echo " CONFIGURE";
+ AM_V_REMAKE = @echo " REMAKE";
+else
+ AM_V_BOOTSTRAP =
+ AM_V_CONFIGURE =
+ AM_V_REMAKE =
+endif
+
+# Must be phony, not to be confused with the 'bootstrap' script.
+.PHONY: bootstrap
+bootstrap:
+ $(AM_V_BOOTSTRAP)$(am__cd) $(srcdir) && ./bootstrap
+ $(AM_V_CONFIGURE)set -e; \
+ am__bootstrap_configure () { \
+ $(srcdir)/configure $${1+"$$@"} $(BOOTSTRAP_CONFIGURE_FLAGS); \
+ }; \
+ if test -f $(srcdir)/config.status; then \
+ : config.status should return a string properly quoted for eval; \
+ old_configure_flags=`$(srcdir)/config.status --config`; \
+ else \
+ old_configure_flags=""; \
+ fi; \
+ eval am__bootstrap_configure "$$old_configure_flags"
+ # The "make check" below is to ensure all the testsuite-required
+ # files are rebuilt.
+ $(AM_V_REMAKE)$(MAKE) clean && $(MAKE) check TESTS=t/get-sysconf