changeset 9800:b2c65dc6be73

Sync GNUmakefile with coreutils. * build-aux/GNUmakefile (have-Makefile): Rename... (_have-Makefile): ...to this, for namespace consideration. (GNUmakefile.cfg): Include, if present. (_autoreconf): Define a default. (_is-dist-target): New rule for rebuilds to pick up intra-release version. (maint-cfg.mk): Rename... (cfg.mk): ...to this. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Thu, 20 Mar 2008 06:52:53 -0600
parents 55aec4615f6d
children 152fac50e329
files ChangeLog build-aux/GNUmakefile
diffstat 2 files changed, 49 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2008-03-20  Eric Blake  <ebb9@byu.net>
+
+	Sync GNUmakefile with coreutils.
+	* build-aux/GNUmakefile (have-Makefile): Rename...
+	(_have-Makefile): ...to this, for namespace consideration.
+	(GNUmakefile.cfg): Include, if present.
+	(_autoreconf): Define a default.
+	(_is-dist-target): New rule for rebuilds to pick up intra-release
+	version.
+	(maint-cfg.mk): Rename...
+	(cfg.mk): ...to this.
+
 2008-03-18  Jim Meyering  <meyering@redhat.com>
 
 	New script and module: mktempd
--- a/build-aux/GNUmakefile
+++ b/build-aux/GNUmakefile
@@ -1,21 +1,22 @@
 # Having a separate GNUmakefile lets me `include' the dynamically
-# generated rules created via Makefile.maint as well as Makefile.maint itself.
+# generated rules created via cfg.mk (package-local configuration)
+# as well as maint.mk (generic maintainer rules).
 # This makefile is used only if you run GNU Make.
 # It is necessary if you want to build targets usually of interest
 # only to the maintainer.
 
-# Copyright (C) 2001, 2003, 2006, 2007 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
+# Copyright (C) 2001, 2003, 2006-2008 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 3 of the License,
-# or (at your option) any later version.
-#
+# the Free Software Foundation, either version 3 of the License, 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/>.
 
@@ -29,22 +30,43 @@
 SHELL = sh
 endif
 
+# If the user runs GNU make but has not yet run ./configure,
+# give them a diagnostic.
+_have-Makefile := $(shell test -f Makefile && echo yes)
+ifeq ($(_have-Makefile),yes)
+
 # Make tar archive easier to reproduce.
 export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
 
-# Ran autoreconf and configure or not?
-have-Makefile := $(shell test -f Makefile && echo yes)
-ifeq ($(have-Makefile),yes)
+include Makefile
+
+# Some projects override e.g., _autoreconf here.
+-include $(srcdir)/cfg.mk
+include $(srcdir)/maint.mk
+
+_autoreconf ?= autoreconf
 
-include Makefile
--include $(srcdir)/maint-cfg.mk
-include $(srcdir)/maint.mk
+# Ensure that $(VERSION) is up to date for dist-related targets, but not
+# for others: rerunning autoreconf and recompiling everything isn't cheap.
+ifeq (0,$(MAKELEVEL))
+  _is-dist-target = $(filter-out %clean, \
+    $(filter dist% alpha beta major,$(MAKECMDGOALS)))
+  ifneq (,$(_is-dist-target))
+    _curr-ver := $(shell cd $(srcdir) && ./build-aux/git-version-gen \
+                   $(srcdir)/.tarball-version)
+    ifneq ($(_curr-ver),$(VERSION))
+      $(info INFO: running autoreconf for new version string: $(_curr-ver))
+      _dummy := $(shell cd $(srcdir) && rm -rf autom4te.cache && $(_autoreconf)))
+    endif
+  endif
+endif
 
 else
 
 .DEFAULT_GOAL := abort-due-to-no-makefile
 
--include ./maint-cfg.mk
+# The package can override .DEFAULT_GOAL to run actions like autoreconf.
+-include ./cfg.mk
 include ./maint.mk
 
 abort-due-to-no-makefile: