changeset 9811:5f79eb63c21e

Alter GNUmakefile to install into top directory. * modules/maintainer-makefile: Split, and add dependency... * modules/gnumakefile: to this new module. * build-aux/GNUmakefile: Move... * top/GNUmakefile: ...here. * build-aux/maint.mk: Move... * top/maint.mk: ...here. * MODULES.html.sh (Support for maintaining...): Document new module. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Fri, 21 Mar 2008 22:29:37 -0600
parents f805ab5f1771
children 23c2f4de4b25
files ChangeLog MODULES.html.sh build-aux/GNUmakefile build-aux/maint.mk modules/gnumakefile modules/maintainer-makefile top/GNUmakefile top/maint.mk
diffstat 8 files changed, 258 insertions(+), 211 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2008-03-24  Eric Blake  <ebb9@byu.net>
+
+	Alter GNUmakefile to install into top directory.
+	* modules/maintainer-makefile: Split, and add dependency...
+	* modules/gnumakefile: to this new module.
+	* build-aux/GNUmakefile: Move...
+	* top/GNUmakefile: ...here.
+	* build-aux/maint.mk: Move...
+	* top/maint.mk: ...here.
+	* MODULES.html.sh (Support for maintaining...): Document new
+	module.
+
 2008-03-23  Bruno Haible  <bruno@clisp.org>
 
 	* gnulib-tool: New options --vc-files, --no-vc-files.
--- a/MODULES.html.sh
+++ b/MODULES.html.sh
@@ -2735,6 +2735,7 @@
   func_module autobuild
   func_module git-version-gen
   func_module gitlog-to-changelog
+  func_module gnumakefile
   func_module gnupload
   func_module maintainer-makefile
   func_module mktempd
deleted file mode 100644
--- a/build-aux/GNUmakefile
+++ /dev/null
@@ -1,86 +0,0 @@
-# Having a separate GNUmakefile lets me `include' the dynamically
-# 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
-# (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/>.
-
-# Systems where /bin/sh is not the default shell need this.  The $(shell)
-# command below won't work with e.g. stock DOS/Windows shells.
-ifeq ($(wildcard /bin/s[h]),/bin/sh)
-SHELL = /bin/sh
-else
-# will be used only with the next shell-test line, then overwritten
-# by a configured-in value
-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
-
-include Makefile
-
-# Some projects override e.g., _autoreconf here.
--include $(srcdir)/cfg.mk
-include $(srcdir)/maint.mk
-
-# Allow cfg.mk to override these.
-_build-aux ?= build-aux
-_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.
-_have-git-version-gen := \
-  $(shell test -f $(srcdir)/$(_build-aux)/git-version-gen && echo yes)
-ifeq ($(_have-git-version-gen)0,yes$(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
-
-# 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
-
-endif
-
-# Tell version 3.79 and up of GNU make to not build goals in this
-# directory in parallel.  This is necessary in case someone tries to
-# build multiple targets on one command line.
-.NOTPARALLEL:
deleted file mode 100644
--- a/build-aux/maint.mk
+++ /dev/null
@@ -1,123 +0,0 @@
-# -*-Makefile-*-
-# This Makefile fragment is intended to be useful by any GNU-like project.
-# This file originate from coreutils, CPPI, Bison, and Autoconf.
-
-# Copyright (C) 2001-2007 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.
-#
-# 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/>.
-
-ME := maint.mk
-
-# List of all C-like source code files that will be tested for
-# stylistic "errors".  You may want to define this to something 
-# more complex in Makefile.cfg.
-C_SOURCES ?= $(shell find . -name '*.[chly]')
-
-# Add some more files to check, typically set in Makefile.cfg.
-C_SOURCES += $(C_SOURCES_ADD)
-
-# Do not save the original name or timestamp in the .tar.gz file.
-# Use --rsyncable if available.
-gzip_rsyncable := \
-  $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
-GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
-
-# Prevent programs like 'sort' from considering distinct strings to be equal.
-# Doing it here saves us from having to set LC_ALL elsewhere in this file.
-export LC_ALL = C
-
-# Casting arguments to free is never necessary.
-sc_cast_of_argument_to_free:
-	@grep -nE '\<free *\( *\(' $(C_SOURCES) &&			\
-	  { echo '$(ME): don'\''t cast free argument' 1>&2;		\
-	    exit 1; } || :
-
-sc_cast_of_x_alloc_return_value:
-	@grep -nE '\*\) *x(m|c|re)alloc\>' $(C_SOURCES) &&		\
-	  { echo '$(ME): don'\''t cast x*alloc return value' 1>&2;	\
-	    exit 1; } || :
-
-sc_cast_of_alloca_return_value:
-	@grep -nE '\*\) *alloca\>' $(C_SOURCES) &&			\
-	  { echo '$(ME): don'\''t cast alloca return value' 1>&2;	\
-	    exit 1; } || :
-
-sc_space_tab:
-	@grep -n '[ ]	' $(C_SOURCES) &&				\
-	  { echo '$(ME): found SPACE-TAB sequence; remove the SPACE'	\
-		1>&2; exit 1; } || :
-
-# Don't use the old ato* functions in `real' code.
-# They provide no error checking mechanism.
-# Instead, use strto* functions.
-sc_prohibit_atoi_atof:
-	@grep -nE '\<ato([filq]|ll)\>' $(C_SOURCES) &&			\
-	  { echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q'	\
-		1>&2; exit 1; } || :
-
-# Using EXIT_SUCCESS as the first argument to error is misleading,
-# since when that parameter is 0, error does not exit.  Use `0' instead.
-sc_error_exit_success:
-	@grep -nF 'error (EXIT_SUCCESS,' $(C_SOURCES) &&		\
-	  { echo '$(ME): found error (EXIT_SUCCESS' 1>&2;		\
-	    exit 1; } || :
-
-# Stylistic, use #ifdef instead of #if
-sc_no_if_have_config_h:
-	@grep -n '^# *if HAVE_CONFIG_H' $(C_SOURCES) &&			\
-	  { echo '$(ME): found use of #if HAVE_CONFIG_H; use #ifdef'	\
-		1>&2; exit 1; } || :
-
-# Prohibit the inclusion of assert.h without an actual use of assert.
-sc_prohibit_assert_without_use:
-	@files=$$(grep -l '# *include [<"]assert\.h[>"]' $(C_SOURCES)	\
-			| grep '\.[cy]$$') &&				\
-	grep -L '\<assert (' $$files					\
-	    | grep . &&							\
-	  { echo "$(ME): the above files include <assert.h> but don't use it" \
-		1>&2; exit 1; } || :
-
-sc_obsolete_symbols:
-	@grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' $(C_SOURCES) &&	\
-	  { echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY'	\
-		1>&2; exit 1; } || :
-
-# Each nonempty line must start with a year number, or a TAB.
-sc_changelog:
-	@grep -n '^[^12	]' $$(find . -name ChangeLog) &&	\
-	  { echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2;	\
-	    exit 1; } || :
-
-# Collect the names of rules starting with `sc_'.
-syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(ME))
-.PHONY: $(syntax-check-rules)
-
-syntax-check: $(syntax-check-rules)
-
-# Update gettext files.
-PACKAGE ?= $(shell basename $(PWD))
-POURL = http://translationproject.org/latest/$(PACKAGE)/
-PODIR ?= po
-refresh-po:
-	rm -f $(PODIR)/*.po && \
-	echo "$(ME): getting translations into po (please ignore the robots.txt ERROR 404)..." && \
-	wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \
-	echo 'en@boldquot' > $(PODIR)/LINGUAS && \
-	echo 'en@quot' >> $(PODIR)/LINGUAS && \
-	ls $(PODIR)/*.po | sed 's/.po//' | sed 's,$(PODIR)/,,' | sort >> $(PODIR)/LINGUAS
-
-INDENT_SOURCES ?= $(C_SOURCES)
-.PHONY: indent
-indent:
-	indent $(INDENT_SOURCES)
new file mode 100644
--- /dev/null
+++ b/modules/gnumakefile
@@ -0,0 +1,32 @@
+Description:
+Add GNU-make specific rules for maintainer use.
+
+Files:
+top/GNUmakefile
+
+Depends-on:
+
+configure.ac:
+# Autoconf 2.61a.99 and earlier don't support linking a file only
+# in VPATH builds.  But since GNUmakefile is for maintainer use
+# only, it does not matter if we skip the link with older autoconf.
+# Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
+# builds, so use a shell variable to bypass this.
+GNUmakefile=GNUmakefile
+m4_if(m4_version_compare([2.61a.100],
+	m4_defn([m4_PACKAGE_VERSION])), [1], [],
+      [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
+	[GNUmakefile=$GNUmakefile])])
+
+Makefile.am:
+distclean-local: clean-GNUmakefile
+clean-GNUmakefile:
+	if test x"$(VPATH)" != x ; then rm -f $(top_srcdir)/GNUmakefile ; fi
+
+Include:
+
+License:
+GPLed build tool
+
+Maintainer:
+coreutils
--- a/modules/maintainer-makefile
+++ b/modules/maintainer-makefile
@@ -2,8 +2,10 @@
 Helper GNUmakefile with syntax checks, build improvements, etc.
 
 Files:
-build-aux/GNUmakefile
-build-aux/maint.mk
+top/maint.mk
+
+Depends-on:
+gnumakefile
 
 License:
 GPLed build tool
new file mode 100644
--- /dev/null
+++ b/top/GNUmakefile
@@ -0,0 +1,86 @@
+# Having a separate GNUmakefile lets me `include' the dynamically
+# 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
+# (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/>.
+
+# Systems where /bin/sh is not the default shell need this.  The $(shell)
+# command below won't work with e.g. stock DOS/Windows shells.
+ifeq ($(wildcard /bin/s[h]),/bin/sh)
+SHELL = /bin/sh
+else
+# will be used only with the next shell-test line, then overwritten
+# by a configured-in value
+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
+
+include Makefile
+
+# Some projects override e.g., _autoreconf here.
+-include $(srcdir)/cfg.mk
+include $(srcdir)/maint.mk
+
+# Allow cfg.mk to override these.
+_build-aux ?= build-aux
+_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.
+_have-git-version-gen := \
+  $(shell test -f $(srcdir)/$(_build-aux)/git-version-gen && echo yes)
+ifeq ($(_have-git-version-gen)0,yes$(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
+
+# 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
+
+endif
+
+# Tell version 3.79 and up of GNU make to not build goals in this
+# directory in parallel.  This is necessary in case someone tries to
+# build multiple targets on one command line.
+.NOTPARALLEL:
new file mode 100644
--- /dev/null
+++ b/top/maint.mk
@@ -0,0 +1,123 @@
+# -*-Makefile-*-
+# This Makefile fragment is intended to be useful by any GNU-like project.
+# This file originate from coreutils, CPPI, Bison, and Autoconf.
+
+# Copyright (C) 2001-2007 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.
+#
+# 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/>.
+
+ME := maint.mk
+
+# List of all C-like source code files that will be tested for
+# stylistic "errors".  You may want to define this to something 
+# more complex in Makefile.cfg.
+C_SOURCES ?= $(shell find . -name '*.[chly]')
+
+# Add some more files to check, typically set in Makefile.cfg.
+C_SOURCES += $(C_SOURCES_ADD)
+
+# Do not save the original name or timestamp in the .tar.gz file.
+# Use --rsyncable if available.
+gzip_rsyncable := \
+  $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
+GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
+
+# Prevent programs like 'sort' from considering distinct strings to be equal.
+# Doing it here saves us from having to set LC_ALL elsewhere in this file.
+export LC_ALL = C
+
+# Casting arguments to free is never necessary.
+sc_cast_of_argument_to_free:
+	@grep -nE '\<free *\( *\(' $(C_SOURCES) &&			\
+	  { echo '$(ME): don'\''t cast free argument' 1>&2;		\
+	    exit 1; } || :
+
+sc_cast_of_x_alloc_return_value:
+	@grep -nE '\*\) *x(m|c|re)alloc\>' $(C_SOURCES) &&		\
+	  { echo '$(ME): don'\''t cast x*alloc return value' 1>&2;	\
+	    exit 1; } || :
+
+sc_cast_of_alloca_return_value:
+	@grep -nE '\*\) *alloca\>' $(C_SOURCES) &&			\
+	  { echo '$(ME): don'\''t cast alloca return value' 1>&2;	\
+	    exit 1; } || :
+
+sc_space_tab:
+	@grep -n '[ ]	' $(C_SOURCES) &&				\
+	  { echo '$(ME): found SPACE-TAB sequence; remove the SPACE'	\
+		1>&2; exit 1; } || :
+
+# Don't use the old ato* functions in `real' code.
+# They provide no error checking mechanism.
+# Instead, use strto* functions.
+sc_prohibit_atoi_atof:
+	@grep -nE '\<ato([filq]|ll)\>' $(C_SOURCES) &&			\
+	  { echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q'	\
+		1>&2; exit 1; } || :
+
+# Using EXIT_SUCCESS as the first argument to error is misleading,
+# since when that parameter is 0, error does not exit.  Use `0' instead.
+sc_error_exit_success:
+	@grep -nF 'error (EXIT_SUCCESS,' $(C_SOURCES) &&		\
+	  { echo '$(ME): found error (EXIT_SUCCESS' 1>&2;		\
+	    exit 1; } || :
+
+# Stylistic, use #ifdef instead of #if
+sc_no_if_have_config_h:
+	@grep -n '^# *if HAVE_CONFIG_H' $(C_SOURCES) &&			\
+	  { echo '$(ME): found use of #if HAVE_CONFIG_H; use #ifdef'	\
+		1>&2; exit 1; } || :
+
+# Prohibit the inclusion of assert.h without an actual use of assert.
+sc_prohibit_assert_without_use:
+	@files=$$(grep -l '# *include [<"]assert\.h[>"]' $(C_SOURCES)	\
+			| grep '\.[cy]$$') &&				\
+	grep -L '\<assert (' $$files					\
+	    | grep . &&							\
+	  { echo "$(ME): the above files include <assert.h> but don't use it" \
+		1>&2; exit 1; } || :
+
+sc_obsolete_symbols:
+	@grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' $(C_SOURCES) &&	\
+	  { echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY'	\
+		1>&2; exit 1; } || :
+
+# Each nonempty line must start with a year number, or a TAB.
+sc_changelog:
+	@grep -n '^[^12	]' $$(find . -name ChangeLog) &&	\
+	  { echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2;	\
+	    exit 1; } || :
+
+# Collect the names of rules starting with `sc_'.
+syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(ME))
+.PHONY: $(syntax-check-rules)
+
+syntax-check: $(syntax-check-rules)
+
+# Update gettext files.
+PACKAGE ?= $(shell basename $(PWD))
+POURL = http://translationproject.org/latest/$(PACKAGE)/
+PODIR ?= po
+refresh-po:
+	rm -f $(PODIR)/*.po && \
+	echo "$(ME): getting translations into po (please ignore the robots.txt ERROR 404)..." && \
+	wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \
+	echo 'en@boldquot' > $(PODIR)/LINGUAS && \
+	echo 'en@quot' >> $(PODIR)/LINGUAS && \
+	ls $(PODIR)/*.po | sed 's/.po//' | sed 's,$(PODIR)/,,' | sort >> $(PODIR)/LINGUAS
+
+INDENT_SOURCES ?= $(C_SOURCES)
+.PHONY: indent
+indent:
+	indent $(INDENT_SOURCES)