bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Generalize GNUmakefile, ...


From: Eric Blake
Subject: Re: [PATCH] Generalize GNUmakefile, ...
Date: Thu, 20 Mar 2008 07:20:03 -0600
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080213 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Simon Josefsson on 3/20/2008 4:23 AM:
|> Hmm.  I was about to try to add the latest coreutils/autoconf/m4
|> GNUmakefile to gnulib, to make it easier to share.  But gnulib already
|> provides build-aux/GNUmakefile as part of the maintainer-makefile module,
|> added by Simon a while ago (and originally borrowed from coreutils).
|
| Hi!  Thanks for looking into this, and sorry for slow response.  Merging
| them would be useful.  There are some things in coreutils that I'd like
| to have, but haven't had time to merge into gnulib.

Here's stage 1 for the gnulib side - picking up useful tricks from
coreutils into gnulib's copy.  I'd still like to consider splitting the
module, and implementing gnulib-tool hooks to recognize top/GNUmakefile in
a module description as a request to install the file in '.', regardless
of whether build-aux is '.' or a subdirectory.

I went ahead and applied this.

| I don't care strongly about this.  The name 'maint-cfg.mk' haven't been
| the best though, since it clashes with name completion of main.mk.  Is
| cfg.mk too generic?  I think this would be a good opportunity to change
| the name.

Did you mean maint.mk, not main.mk?  But I'm okay with the name cfg.mk.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkfiZIMACgkQ84KuGfSFAYBOeACgwG6MwvebQsK/wH/EpnnUeh41
IVoAn1l+aVf3v6mKwaglOlFmOj9hEYei
=Zilq
-----END PGP SIGNATURE-----
>From 8a1a492ae9389b6b450b2f8a32550e0ddbe3957a Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Thu, 20 Mar 2008 06:52:53 -0600
Subject: [PATCH] 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 <address@hidden>
---
 ChangeLog             |   12 +++++++++++
 build-aux/GNUmakefile |   50 +++++++++++++++++++++++++++++++++++-------------
 2 files changed, 48 insertions(+), 14 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 1341775..85d2587 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2008-03-20  Eric Blake  <address@hidden>
+
+       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  <address@hidden>
 
        New script and module: mktempd
diff --git a/build-aux/GNUmakefile b/build-aux/GNUmakefile
index 35c8869..fac11d3 100644
--- 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 @@ else
 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
--include $(srcdir)/maint-cfg.mk
+
+# Some projects override e.g., _autoreconf here.
+-include $(srcdir)/cfg.mk
 include $(srcdir)/maint.mk
 
+_autoreconf ?= autoreconf
+
+# 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:
-- 
1.5.4


reply via email to

[Prev in Thread] Current Thread [Next in Thread]