bug-gnulib
[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:19:44 -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 Jim Meyering on 3/13/2008 4:44 PM:
|> Hmm.  I was about to try to add the latest coreutils/autoconf/m4
|> GNUmakefile to gnulib, to make it easier to share.
|
| Thanks for looking into this.

Here's stage 1 of the sync for autoconf.  Rather than have two
configuration files (Makefile.cfg and GNUmakefile.cfg), I think it makes
more sense to have just one (cfg.mk).  Stage 2 would be updating the
synchronization rules to pull from gnulib rather than synchronizing by
hand, or even using gnulib-tool when doing a fresh checkout of autoconf.

I went ahead and applied this.

- --
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

iEYEARECAAYFAkfiZHAACgkQ84KuGfSFAYAYVACdGzyvZdZ6I4VGN8/V12Tkl3aZ
iw8An1WFjNelKBg+CMzbsBIYrtvZnjsB
=nwFz
-----END PGP SIGNATURE-----
>From 2027d5a9fc96f3fffd34c53865ecc932be19cfb9 Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Thu, 20 Mar 2008 07:18:23 -0600
Subject: [PATCH] Sync GNUmakefile with gnulib.

* GNUmakefile (Makefile.cfg): Rename...
(cfg.mk): ...to this, and make optional.
(GNUmakefile.cfg): Delete, redundant with cfg.mk.
(Makefile.maint): Rename...
(maint.mk): ...to this.
(all) [!_have-Makefile]: Rename...
(abort-due-to-no-makefile): ...to this, and invoke via
.DEFAULT_GOAL to pick up all targets.
* Makefile.cfg: Rename...
* cfg.mk: ...to this.
* Makefile.maint: Rename...
* maint.mk ...to this.
(ME): Reflect name change.
(makefile-check, m4-check, author_mark_check, msg): Use $(ME)
rather than hard-coded name.
* GNUmakefile.cfg: Delete; move rules into cfg.mk.
* Makefile.am (EXTRA_DIST): Reflect file name changes.
* .x-sc_prohibit_atoi_atof: Likewise.
* lib/freeze.mk: Likewise.

Signed-off-by: Eric Blake <address@hidden>
---
 .x-sc_prohibit_atoi_atof   |    2 +-
 ChangeLog                  |   23 +++++++++++++++++++++++
 GNUmakefile                |   24 +++++++++++++-----------
 Makefile.am                |    3 +--
 Makefile.cfg => cfg.mk     |   13 +++++++++++--
 lib/freeze.mk              |    4 ++--
 Makefile.maint => maint.mk |   10 +++++-----
 7 files changed, 56 insertions(+), 23 deletions(-)
 rename Makefile.cfg => cfg.mk (80%)
 rename Makefile.maint => maint.mk (98%)

diff --git a/.x-sc_prohibit_atoi_atof b/.x-sc_prohibit_atoi_atof
index 7f46b6e..4d68f47 100644
--- a/.x-sc_prohibit_atoi_atof
+++ b/.x-sc_prohibit_atoi_atof
@@ -1,3 +1,3 @@
 ChangeLog
-Makefile.maint
+maint.mk
 doc/autoconf.texi
diff --git a/ChangeLog b/ChangeLog
index 6815dad..8c653f8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+2008-03-20  Eric Blake  <address@hidden>
+
+       Sync GNUmakefile with gnulib.
+       * GNUmakefile (Makefile.cfg): Rename...
+       (cfg.mk): ...to this, and make optional.
+       (GNUmakefile.cfg): Delete, redundant with cfg.mk.
+       (Makefile.maint): Rename...
+       (maint.mk): ...to this.
+       (all) [!_have-Makefile]: Rename...
+       (abort-due-to-no-makefile): ...to this, and invoke via
+       .DEFAULT_GOAL to pick up all targets.
+       * Makefile.cfg: Rename...
+       * cfg.mk: ...to this.
+       * Makefile.maint: Rename...
+       * maint.mk ...to this.
+       (ME): Reflect name change.
+       (makefile-check, m4-check, author_mark_check, msg): Use $(ME)
+       rather than hard-coded name.
+       * GNUmakefile.cfg: Delete; move rules into cfg.mk.
+       * Makefile.am (EXTRA_DIST): Reflect file name changes.
+       * .x-sc_prohibit_atoi_atof: Likewise.
+       * lib/freeze.mk: Likewise.
+
 2008-03-19  Stepan Kasal  <address@hidden>
 
        * doc/autoconf.texi (Introduction): Improve the paraphrase of
diff --git a/GNUmakefile b/GNUmakefile
index 8bbd6c8..fac11d3 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -1,11 +1,12 @@
 # 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-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
@@ -29,10 +30,9 @@ else
 SHELL = sh
 endif
 
-_have-Makefile := $(shell test -f Makefile && echo yes)
-
 # 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.
@@ -41,7 +41,8 @@ export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
 include Makefile
 
 # Some projects override e.g., _autoreconf here.
--include $(srcdir)/GNUmakefile.cfg
+-include $(srcdir)/cfg.mk
+include $(srcdir)/maint.mk
 
 _autoreconf ?= autoreconf
 
@@ -60,18 +61,19 @@ ifeq (0,$(MAKELEVEL))
   endif
 endif
 
-include $(srcdir)/Makefile.cfg
-include $(srcdir)/Makefile.maint
-
 else
 
-all:
+.DEFAULT_GOAL := abort-due-to-no-makefile
+
+# The package can override .DEFAULT_GOAL to run actions like autoreconf.
+-include ./cfg.mk
+include ./maint.mk
+
+abort-due-to-no-makefile:
        @echo There seems to be no Makefile in this directory.   1>&2
        @echo "You must run ./configure before running \`make'." 1>&2
        @exit 1
 
-check dist distcheck install: all
-
 endif
 
 # Tell version 3.79 and up of GNU make to not build goals in this
diff --git a/Makefile.am b/Makefile.am
index 9abb7ca..40cb20c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -25,8 +25,7 @@ ACLOCAL_AMFLAGS = -I m4
 
 EXTRA_DIST = ChangeLog.0 ChangeLog.1 ChangeLog.2 \
             BUGS \
-            GNUmakefile GNUmakefile.cfg \
-            Makefile.maint Makefile.cfg \
+            GNUmakefile maint.mk cfg.mk \
             build-aux/git-version-gen \
             config/announce-gen config/prev-version.txt
 
diff --git a/Makefile.cfg b/cfg.mk
similarity index 80%
rename from Makefile.cfg
rename to cfg.mk
index 7164e3b..2b0bcac 100644
--- a/Makefile.cfg
+++ b/cfg.mk
@@ -1,5 +1,5 @@
-# Customize Makefile.maint for Autoconf.            -*- Makefile -*-
-# Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+# Customize maint.mk for Autoconf.            -*- Makefile -*-
+# Copyright (C) 2003, 2004, 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
@@ -14,6 +14,15 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# This file is '-include'd into GNUmakefile.
+
+# Build with our own versions of these tools, when possible.
+export PATH = $(shell echo "`pwd`/tests:$$PATH")
+
+# Remove the autoreconf-provided INSTALL, so that we regenerate it.
+_autoreconf = autoreconf -i -v && rm -f INSTALL
+
+# Version management.
 prev_version_file = $(srcdir)/config/prev-version.txt
 announce_gen   = $(srcdir)/config/announce-gen
 release_archive_dir = releases
diff --git a/lib/freeze.mk b/lib/freeze.mk
index d289b18..0903c9a 100644
--- a/lib/freeze.mk
+++ b/lib/freeze.mk
@@ -1,6 +1,6 @@
 # Freeze M4 files.
 
-# Copyright (C) 2002, 2004, 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2004, 2006, 2007, 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
@@ -26,7 +26,7 @@ AUTOM4TE_CFG = $(top_builddir)/lib/autom4te.cfg
 $(AUTOM4TE_CFG): $(top_srcdir)/lib/autom4te.in
        cd $(top_builddir)/lib && $(MAKE) $(AM_MAKEFLAGS) autom4te.cfg
 
-# Do not use AUTOM4TE here, since Makefile.maint (my-distcheck)
+# Do not use AUTOM4TE here, since maint.mk (my-distcheck)
 # checks if we are independent of Autoconf by defining AUTOM4TE (and
 # others) to `false'.  Autoconf provides autom4te, so that doesn't
 # apply to us.
diff --git a/Makefile.maint b/maint.mk
similarity index 98%
rename from Makefile.maint
rename to maint.mk
index 71bb6b2..0e22d3e 100644
--- a/Makefile.maint
+++ b/maint.mk
@@ -20,7 +20,7 @@
 
 # This is reported not to work with make-3.79.1
 # ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
-ME := $(srcdir)/Makefile.maint
+ME := $(srcdir)/maint.mk
 
 # Do not save the original name or timestamp in the .tar.gz file.
 # Use --rsyncable if available.
@@ -316,7 +316,7 @@ check-AUTHORS:
 # to emit a definition for each substituted variable.
 makefile-check:
        grep -nE '@[A-Z_0-9]+@' `find . -name Makefile.am` \
-         && { echo 'Makefile.maint: use $$(...), not @...@' 1>&2; exit 1; } || 
:
+         && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
 
 news-date-check: NEWS
        today=`date +%Y-%m-%d`; \
@@ -340,7 +340,7 @@ changelog-check:
 m4-check:
        @shopt -s nullglob;                                             \
        grep 'AC_DEFUN([^[]' m4/*.m4 /dev/null                          \
-         && { echo 'Makefile.maint: quote the first arg to AC_DEFUN' 1>&2; \
+         && { echo '$(ME): quote the first arg to AC_DEFUN' 1>&2; \
               exit 1; } || :
 
 # Verify that all source files using _() are listed in po/POTFILES.in.
@@ -371,7 +371,7 @@ po-check:
 # gettext recognizes it as a string requiring translation.
 author_mark_check:
        @grep -n '^# *define AUTHORS "[^"]* and ' src/*.c |grep -v ' N_ (' && \
-         { echo 'Makefile.maint: enclose the above strings in N_ (...)' 1>&2; \
+         { echo '$(ME): enclose the above strings in N_ (...)' 1>&2; \
            exit 1; } || :
 
 # Sometimes it is useful to change the PATH environment variable
@@ -380,7 +380,7 @@ author_mark_check:
 # It'd be better to use `find -print0 ...|xargs -0 ...', but less portable,
 # and there probably aren't many projects with so many Makefile.am files
 # that we'd have to worry about limits on command line length.
-msg = 'Makefile.maint: Do not use `:'\'' above; use @PATH_SEPARATOR@ instead'
+msg = '$(ME): Do not use `:'\'' above; use @PATH_SEPARATOR@ instead'
 makefile_path_separator_check:
        @grep -n 'PATH=.*:' `find $(srcdir) -name Makefile.am` \
          && { echo $(msg) 1>&2; exit 1; } || :
-- 
1.5.4


reply via email to

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