From: Stefano Lattarini Date: Fri, 27 Apr 2012 16:48:27 +0000 (+0200) Subject: bootstrap: add convenience make target X-Git-Tag: v1.12.0b~47 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=56badcd480c91e73e3a7f56beed80e0ebe566eab;p=platform%2Fupstream%2Fautomake.git 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 --- diff --git a/GNUmakefile b/GNUmakefile index 9d83dba..dcaaf01 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 . -# 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