Alter GNUmakefile to install into top directory.
authorEric Blake <ebb9@byu.net>
Sat, 22 Mar 2008 04:29:37 +0000 (22:29 -0600)
committerEric Blake <ebb9@byu.net>
Mon, 24 Mar 2008 11:45:26 +0000 (05:45 -0600)
* 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>
ChangeLog
MODULES.html.sh
build-aux/GNUmakefile [deleted file]
build-aux/maint.mk [deleted file]
modules/gnumakefile [new file with mode: 0644]
modules/maintainer-makefile
top/GNUmakefile [new file with mode: 0644]
top/maint.mk [new file with mode: 0644]

index 6aad85264818a72b5c9a0aff99b1604a53bf8e09..fe72f6fabc94f12266d5712edeb59fdd1f14e4ef 100644 (file)
--- 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.
 2008-03-23  Bruno Haible  <bruno@clisp.org>
 
        * gnulib-tool: New options --vc-files, --no-vc-files.
index 739f0d1cc2c8bc96b5be80649426bbbbdbc75eeb..66147552f98948d0d4fd071db7bc1f47d489e0ad 100755 (executable)
@@ -2735,6 +2735,7 @@ func_all_modules ()
   func_module autobuild
   func_module git-version-gen
   func_module gitlog-to-changelog
   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
   func_module gnupload
   func_module maintainer-makefile
   func_module mktempd
diff --git a/build-aux/GNUmakefile b/build-aux/GNUmakefile
deleted file mode 100644 (file)
index 38dd126..0000000
+++ /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:
diff --git a/build-aux/maint.mk b/build-aux/maint.mk
deleted file mode 100644 (file)
index 662b371..0000000
+++ /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)
diff --git a/modules/gnumakefile b/modules/gnumakefile
new file mode 100644 (file)
index 0000000..af85344
--- /dev/null
@@ -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
index f35cd23567f989c3b45c0dd2f9fe8d9cbc682e73..492ca69bb236c09e86915193f16464a6536f557d 100644 (file)
@@ -2,8 +2,10 @@ Description:
 Helper GNUmakefile with syntax checks, build improvements, etc.
 
 Files:
 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
 
 License:
 GPLed build tool
diff --git a/top/GNUmakefile b/top/GNUmakefile
new file mode 100644 (file)
index 0000000..38dd126
--- /dev/null
@@ -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:
diff --git a/top/maint.mk b/top/maint.mk
new file mode 100644 (file)
index 0000000..662b371
--- /dev/null
@@ -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)