annotate top/maint.mk @ 18294:a90f8370aad4

intprops, mktime, strtol: assume two's complement These macros were not portable to every conforming C11 ones' complement platform. It's not worth the hassle of porting to some platforms that use ones' complement or signed magnitude, as such platforms are almost purely theoretical nowadays and porting even to some of them makes the code harder to review for little practical benefit. Problem reported by Florian Weimer in: https://sourceware.org/ml/libc-alpha/2016-04/msg00295.html * lib/intprops.h (TYPE_TWOS_COMPLEMENT, TYPE_ONES_COMPLEMENT) (TYPE_SIGNED_MAGNITUDE, _GL_INT_TWOS_COMPLEMENT): * lib/mktime.c (TYPE_TWOS_COMPLEMENT): * lib/strtol.c (TYPE_TWOS_COMPLEMENT, TYPE_ONES_COMPLEMENT) (TYPE_SIGNED_MAGNITUDE): Remove. All uses rewritten to assume two's complement, which is all we can reasonably test nowadays anyway. * top/maint.mk (_intprops_names): Remove the removed macros.
author Paul Eggert <eggert@cs.ucla.edu>
date Wed, 13 Apr 2016 00:06:36 -0700
parents 31b2239ca59c
children c397b02b9e03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1 # -*-Makefile-*-
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
2 # This Makefile fragment tries to be general-purpose enough to be
11501
5223ecd9ec17 maint.mk: import improvements from m4
Eric Blake <ebb9@byu.net>
parents: 11500
diff changeset
3 # used by many projects via the gnulib maintainer-makefile module.
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
4
18189
31b2239ca59c version-etc: new year
Paul Eggert <eggert@cs.ucla.edu>
parents: 18139
diff changeset
5 ## Copyright (C) 2001-2016 Free Software Foundation, Inc.
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
6 ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
7 ## This program is free software: you can redistribute it and/or modify
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
8 ## it under the terms of the GNU General Public License as published by
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
9 ## the Free Software Foundation, either version 3 of the License, or
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
10 ## (at your option) any later version.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
11 ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
12 ## This program is distributed in the hope that it will be useful,
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
13 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
14 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
15 ## GNU General Public License for more details.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
16 ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
17 ## You should have received a copy of the GNU General Public License
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
18 ## along with this program. If not, see <http://www.gnu.org/licenses/>.
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
19
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
20 # This is reported not to work with make-3.79.1
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
21 # ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
22 ME := maint.mk
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
23
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
24 # Helper variables.
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
25 _empty =
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
26 _sp = $(_empty) $(_empty)
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
27
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
28 # _equal,S1,S2
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
29 # ------------
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
30 # If S1 == S2, return S1, otherwise the empty string.
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
31 _equal = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1)))
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
32
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
33 # member-check,VARIABLE,VALID-VALUES
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
34 # ----------------------------------
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
35 # Check that $(VARIABLE) is in the space-separated list of VALID-VALUES, and
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
36 # return it. Die otherwise.
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
37 member-check = \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
38 $(strip \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
39 $(if $($(1)), \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
40 $(if $(findstring $(_sp),$($(1))), \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
41 $(error invalid $(1): '$($(1))', expected $(2)), \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
42 $(or $(findstring $(_sp)$($(1))$(_sp),$(_sp)$(2)$(_sp)), \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
43 $(error invalid $(1): '$($(1))', expected $(2)))), \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
44 $(error $(1) undefined)))
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
45
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
46 # Do not save the original name or timestamp in the .tar.gz file.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
47 # Use --rsyncable if available.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
48 gzip_rsyncable := \
13376
c22f7afc2eec maint.mk: avoid echo -e
Eric Blake <eblake@redhat.com>
parents: 13338
diff changeset
49 $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null \
c22f7afc2eec maint.mk: avoid echo -e
Eric Blake <eblake@redhat.com>
parents: 13338
diff changeset
50 && printf %s --rsyncable)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
51 GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
52
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
53 GIT = git
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
54 VC = $(GIT)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
55
16000
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
56 VC_LIST = $(srcdir)/$(_build-aux)/vc-list-files -C $(srcdir)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
57
12736
123f8b43a3aa top/maint.mk (VC_LIST_EXCEPT): Filter list through VC_LIST_ALWAYS_EXCLUDE_REGEX.
Simon Josefsson <simon@josefsson.org>
parents: 12608
diff changeset
58 # You can override this variable in cfg.mk to set your own regexp
123f8b43a3aa top/maint.mk (VC_LIST_EXCEPT): Filter list through VC_LIST_ALWAYS_EXCLUDE_REGEX.
Simon Josefsson <simon@josefsson.org>
parents: 12608
diff changeset
59 # matching files to ignore.
123f8b43a3aa top/maint.mk (VC_LIST_EXCEPT): Filter list through VC_LIST_ALWAYS_EXCLUDE_REGEX.
Simon Josefsson <simon@josefsson.org>
parents: 12608
diff changeset
60 VC_LIST_ALWAYS_EXCLUDE_REGEX ?= ^$$
123f8b43a3aa top/maint.mk (VC_LIST_EXCEPT): Filter list through VC_LIST_ALWAYS_EXCLUDE_REGEX.
Simon Josefsson <simon@josefsson.org>
parents: 12608
diff changeset
61
12768
f12919d53a60 maint.mk: make VC_LIST_EXCEPT robustly handle a srcdir containing "."
Jim Meyering <meyering@redhat.com>
parents: 12767
diff changeset
62 # This is to preprocess robustly the output of $(VC_LIST), so that even
f12919d53a60 maint.mk: make VC_LIST_EXCEPT robustly handle a srcdir containing "."
Jim Meyering <meyering@redhat.com>
parents: 12767
diff changeset
63 # when $(srcdir) is a pathological name like "....", the leading sed command
f12919d53a60 maint.mk: make VC_LIST_EXCEPT robustly handle a srcdir containing "."
Jim Meyering <meyering@redhat.com>
parents: 12767
diff changeset
64 # removes only the intended prefix.
12771
a11a67aec9bf maint.mk: fix syntax-check in a non-srcdir build directory
Jim Meyering <meyering@redhat.com>
parents: 12768
diff changeset
65 _dot_escaped_srcdir = $(subst .,\.,$(srcdir))
12768
f12919d53a60 maint.mk: make VC_LIST_EXCEPT robustly handle a srcdir containing "."
Jim Meyering <meyering@redhat.com>
parents: 12767
diff changeset
66
12773
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
67 # Post-process $(VC_LIST) output, prepending $(srcdir)/, but only
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
68 # when $(srcdir) is not ".".
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
69 ifeq ($(srcdir),.)
17107
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
70 _prepend_srcdir_prefix =
12773
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
71 else
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
72 _prepend_srcdir_prefix = | $(SED) 's|^|$(srcdir)/|'
12773
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
73 endif
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
74
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
75 # In order to be able to consistently filter "."-relative names,
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
76 # (i.e., with no $(srcdir) prefix), this definition is careful to
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
77 # remove any $(srcdir) prefix, and to restore what it removes.
14432
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
78 _sc_excl = \
16997
efd55e9041c8 maint.mk: minor simplification.
Akim Demaille <akim@lrde.epita.fr>
parents: 16990
diff changeset
79 $(or $(exclude_file_name_regexp--$@),^$$)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
80 VC_LIST_EXCEPT = \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
81 $(VC_LIST) | $(SED) 's|^$(_dot_escaped_srcdir)/||' \
12767
941bc7981053 maint.mk: fix VC_LIST_EXCEPT for srcdir != builddir
Jiri Denemark <jdenemar@redhat.com>
parents: 12736
diff changeset
82 | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; \
941bc7981053 maint.mk: fix VC_LIST_EXCEPT for srcdir != builddir
Jiri Denemark <jdenemar@redhat.com>
parents: 12736
diff changeset
83 else grep -Ev -e "$${VC_LIST_EXCEPT_DEFAULT-ChangeLog}"; fi \
14432
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
84 | grep -Ev -e '($(VC_LIST_ALWAYS_EXCLUDE_REGEX)|$(_sc_excl))' \
12773
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
85 $(_prepend_srcdir_prefix)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
86
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
87 ifeq ($(origin prev_version_file), undefined)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
88 prev_version_file = $(srcdir)/.prev-version
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
89 endif
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
90
11736
9f4d092a26a4 maint.mk: avoid warnings about missing files
Jim Meyering <meyering@redhat.com>
parents: 11733
diff changeset
91 PREV_VERSION := $(shell cat $(prev_version_file) 2>/dev/null)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
92 VERSION_REGEXP = $(subst .,\.,$(VERSION))
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
93 PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION))
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
94
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
95 ifeq ($(VC),$(GIT))
17107
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
96 this-vc-tag = v$(VERSION)
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
97 this-vc-tag-regexp = v$(VERSION_REGEXP)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
98 else
17107
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
99 tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
100 tag-this-version = $(subst .,_,$(VERSION))
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
101 this-vc-tag = $(tag-package)-$(tag-this-version)
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
102 this-vc-tag-regexp = $(this-vc-tag)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
103 endif
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
104 my_distdir = $(PACKAGE)-$(VERSION)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
105
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
106 # Old releases are stored here.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
107 release_archive_dir ?= ../release
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
108
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
109 # If RELEASE_TYPE is undefined, but RELEASE is, use its second word.
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
110 # But overwrite VERSION.
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
111 ifdef RELEASE
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
112 VERSION := $(word 1, $(RELEASE))
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
113 RELEASE_TYPE ?= $(word 2, $(RELEASE))
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
114 endif
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
115
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
116 # Validate and return $(RELEASE_TYPE), or die.
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
117 RELEASE_TYPES = alpha beta stable
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
118 release-type = $(call member-check,RELEASE_TYPE,$(RELEASE_TYPES))
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
119
12329
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
120 # Override gnu_rel_host and url_dir_list in cfg.mk if these are not right.
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
121 # Use alpha.gnu.org for alpha and beta releases.
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
122 # Use ftp.gnu.org for stable releases.
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
123 gnu_ftp_host-alpha = alpha.gnu.org
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
124 gnu_ftp_host-beta = alpha.gnu.org
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
125 gnu_ftp_host-stable = ftp.gnu.org
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
126 gnu_rel_host ?= $(gnu_ftp_host-$(release-type))
12329
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
127
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
128 url_dir_list ?= $(if $(call _equal,$(gnu_rel_host),ftp.gnu.org), \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
129 http://ftpmirror.gnu.org/$(PACKAGE), \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
130 ftp://$(gnu_rel_host)/gnu/$(PACKAGE))
12329
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
131
12383
a22f69c2029c maintainer-makefile: allow customization of NEWS entry format
Alfred M. Szmidt <ams@gnu.org>
parents: 12329
diff changeset
132 # Override this in cfg.mk if you are using a different format in your
a22f69c2029c maintainer-makefile: allow customization of NEWS entry format
Alfred M. Szmidt <ams@gnu.org>
parents: 12329
diff changeset
133 # NEWS file.
12384
8620ff59758a maint.mk: news-check: use grep -E
Jim Meyering <meyering@redhat.com>
parents: 12383
diff changeset
134 today = $(shell date +%Y-%m-%d)
13393
50e9a2259a7d maint.mk: make the news-check rule more configurable
Peter Simons <simons@cryp.to>
parents: 13378
diff changeset
135
50e9a2259a7d maint.mk: make the news-check rule more configurable
Peter Simons <simons@cryp.to>
parents: 13378
diff changeset
136 # Select which lines of NEWS are searched for $(news-check-regexp).
50e9a2259a7d maint.mk: make the news-check rule more configurable
Peter Simons <simons@cryp.to>
parents: 13378
diff changeset
137 # This is a sed line number spec. The default says that we search
50e9a2259a7d maint.mk: make the news-check rule more configurable
Peter Simons <simons@cryp.to>
parents: 13378
diff changeset
138 # lines 1..10 of NEWS for $(news-check-regexp).
50e9a2259a7d maint.mk: make the news-check rule more configurable
Peter Simons <simons@cryp.to>
parents: 13378
diff changeset
139 # If you want to search only line 3 or only lines 20-22, use "3" or "20,22".
50e9a2259a7d maint.mk: make the news-check rule more configurable
Peter Simons <simons@cryp.to>
parents: 13378
diff changeset
140 news-check-lines-spec ?= 1,10
12385
ad3ca6ce84b0 maint.mk: backslash-escape parens in default regexp
Jim Meyering <meyering@redhat.com>
parents: 12384
diff changeset
141 news-check-regexp ?= '^\*.* $(VERSION_REGEXP) \($(today)\)'
12383
a22f69c2029c maintainer-makefile: allow customization of NEWS entry format
Alfred M. Szmidt <ams@gnu.org>
parents: 12329
diff changeset
142
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
143 # Prevent programs like 'sort' from considering distinct strings to be equal.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
144 # Doing it here saves us from having to set LC_ALL elsewhere in this file.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
145 export LC_ALL = C
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
146
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
147 ## --------------- ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
148 ## Sanity checks. ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
149 ## --------------- ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
150
17695
cb3ab1f4efea maintainer-makefile: avoid spurious error messages
Eric Blake <eblake@redhat.com>
parents: 17649
diff changeset
151 ifneq ($(_gl-Makefile),)
17201
34b7c5b6a266 maint.mk: avoid extra forks
Stefano Lattarini <stefano.lattarini@gmail.com>
parents: 17162
diff changeset
152 _cfg_mk := $(wildcard $(srcdir)/cfg.mk)
11736
9f4d092a26a4 maint.mk: avoid warnings about missing files
Jim Meyering <meyering@redhat.com>
parents: 11733
diff changeset
153
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
154 # Collect the names of rules starting with 'sc_'.
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
155 syntax-check-rules := $(sort $(shell $(SED) -n \
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
156 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(srcdir)/$(ME) $(_cfg_mk)))
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
157 .PHONY: $(syntax-check-rules)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
158
14357
e52d28567d4e maintainer-makefile: make syntax-check a no-op from tarballs
Eric Blake <eblake@redhat.com>
parents: 14216
diff changeset
159 ifeq ($(shell $(VC_LIST) >/dev/null 2>&1; echo $$?),0)
17107
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
160 local-checks-available += $(syntax-check-rules)
14357
e52d28567d4e maintainer-makefile: make syntax-check a no-op from tarballs
Eric Blake <eblake@redhat.com>
parents: 14216
diff changeset
161 else
17107
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
162 local-checks-available += no-vc-detected
14357
e52d28567d4e maintainer-makefile: make syntax-check a no-op from tarballs
Eric Blake <eblake@redhat.com>
parents: 14216
diff changeset
163 no-vc-detected:
e52d28567d4e maintainer-makefile: make syntax-check a no-op from tarballs
Eric Blake <eblake@redhat.com>
parents: 14216
diff changeset
164 @echo "No version control files detected; skipping syntax check"
e52d28567d4e maintainer-makefile: make syntax-check a no-op from tarballs
Eric Blake <eblake@redhat.com>
parents: 14216
diff changeset
165 endif
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
166 .PHONY: $(local-checks-available)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
167
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
168 # Arrange to print the name of each syntax-checking rule just before running it.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
169 $(syntax-check-rules): %: %.m
12866
bedb32c7fa1b maint.mk: mark syntax-check sc_*.m rules as .PHONY
Jim Meyering <meyering@redhat.com>
parents: 12865
diff changeset
170 sc_m_rules_ = $(patsubst %, %.m, $(syntax-check-rules))
bedb32c7fa1b maint.mk: mark syntax-check sc_*.m rules as .PHONY
Jim Meyering <meyering@redhat.com>
parents: 12865
diff changeset
171 .PHONY: $(sc_m_rules_)
bedb32c7fa1b maint.mk: mark syntax-check sc_*.m rules as .PHONY
Jim Meyering <meyering@redhat.com>
parents: 12865
diff changeset
172 $(sc_m_rules_):
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
173 @echo $(patsubst sc_%.m, %, $@)
13208
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
174 @date +%s.%N > .sc-start-$(basename $@)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
175
13208
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
176 # Compute and print the elapsed time for each syntax-check rule.
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
177 sc_z_rules_ = $(patsubst %, %.z, $(syntax-check-rules))
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
178 .PHONY: $(sc_z_rules_)
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
179 $(sc_z_rules_): %.z: %
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
180 @end=$$(date +%s.%N); \
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
181 start=$$(cat .sc-start-$*); \
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
182 rm -f .sc-start-$*; \
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
183 awk -v s=$$start -v e=$$end \
13221
6b5e6ecef4f5 maint.mk: generate more concise timing data for syntax-check rules
Jim Meyering <meyering@redhat.com>
parents: 13210
diff changeset
184 'END {printf "%.2f $(patsubst sc_%,%,$*)\n", e - s}' < /dev/null
13208
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
185
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
186 # The patsubst here is to replace each sc_% rule with its sc_%.z wrapper
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
187 # that computes and prints elapsed time.
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
188 local-check := \
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
189 $(patsubst sc_%, sc_%.z, \
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
190 $(filter-out $(local-checks-to-skip), $(local-checks-available)))
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
191
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
192 syntax-check: $(local-check)
17695
cb3ab1f4efea maintainer-makefile: avoid spurious error messages
Eric Blake <eblake@redhat.com>
parents: 17649
diff changeset
193 endif
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
194
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
195 # _sc_search_regexp
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
196 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
197 # This macro searches for a given construct in the selected files and
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
198 # then takes some action.
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
199 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
200 # Parameters (shell variables):
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
201 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
202 # prohibit | require
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
203 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
204 # Regular expression (ERE) denoting either a forbidden construct
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
205 # or a required construct. Those arguments are exclusive.
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
206 #
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
207 # exclude
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
208 #
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
209 # Regular expression (ERE) denoting lines to ignore that matched
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
210 # a prohibit construct. For example, this can be used to exclude
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
211 # comments that mention why the nearby code uses an alternative
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
212 # construct instead of the simpler prohibited construct.
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
213 #
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
214 # in_vc_files | in_files
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
215 #
16978
8d1ddfdb8668 maint.mk: _sc_search_regexp, sc_vulnerable_makefile_CVE-2009-4029: fix
Jim Meyering <meyering@redhat.com>
parents: 16913
diff changeset
216 # grep-E-style regexp selecting the files to check. For in_vc_files,
8d1ddfdb8668 maint.mk: _sc_search_regexp, sc_vulnerable_makefile_CVE-2009-4029: fix
Jim Meyering <meyering@redhat.com>
parents: 16913
diff changeset
217 # the regexp is used to select matching files from the list of all
8d1ddfdb8668 maint.mk: _sc_search_regexp, sc_vulnerable_makefile_CVE-2009-4029: fix
Jim Meyering <meyering@redhat.com>
parents: 16913
diff changeset
218 # version-controlled files; for in_files, it's from the names printed
8d1ddfdb8668 maint.mk: _sc_search_regexp, sc_vulnerable_makefile_CVE-2009-4029: fix
Jim Meyering <meyering@redhat.com>
parents: 16913
diff changeset
219 # by "find $(srcdir)". When neither is specified, use all files that
8d1ddfdb8668 maint.mk: _sc_search_regexp, sc_vulnerable_makefile_CVE-2009-4029: fix
Jim Meyering <meyering@redhat.com>
parents: 16913
diff changeset
220 # are under version control.
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
221 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
222 # containing | non_containing
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
223 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
224 # Select the files (non) containing strings matching this regexp.
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
225 # If both arguments are specified then CONTAINING takes
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
226 # precedence.
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
227 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
228 # with_grep_options
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
229 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
230 # Extra options for grep.
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
231 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
232 # ignore_case
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
233 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
234 # Ignore case.
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
235 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
236 # halt
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
237 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
238 # Message to display before to halting execution.
14432
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
239 #
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
240 # Finally, you may exempt files based on an ERE matching file names.
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
241 # For example, to exempt from the sc_space_tab check all files with the
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
242 # .diff suffix, set this Make variable:
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
243 #
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
244 # exclude_file_name_regexp--sc_space_tab = \.diff$
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
245 #
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
246 # Note that while this functionality is mostly inherited via VC_LIST_EXCEPT,
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
247 # when filtering by name via in_files, we explicitly filter out matching
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
248 # names here as well.
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
249
16553
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
250 # Initialize each, so that envvar settings cannot interfere.
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
251 export require =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
252 export prohibit =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
253 export exclude =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
254 export in_vc_files =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
255 export in_files =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
256 export containing =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
257 export non_containing =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
258 export halt =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
259 export with_grep_options =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
260
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
261 # By default, _sc_search_regexp does not ignore case.
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
262 export ignore_case =
13376
c22f7afc2eec maint.mk: avoid echo -e
Eric Blake <eblake@redhat.com>
parents: 13338
diff changeset
263 _ignore_case = $$(test -n "$$ignore_case" && printf %s -i || :)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
264
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
265 define _sc_say_and_exit
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
266 dummy=; : so we do not need a semicolon before each use; \
13376
c22f7afc2eec maint.mk: avoid echo -e
Eric Blake <eblake@redhat.com>
parents: 13338
diff changeset
267 { printf '%s\n' "$(ME): $$msg" 1>&2; exit 1; };
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
268 endef
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
269
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
270 define _sc_search_regexp
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
271 dummy=; : so we do not need a semicolon before each use; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
272 \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
273 : Check arguments; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
274 test -n "$$prohibit" && test -n "$$require" \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
275 && { msg='Cannot specify both prohibit and require' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
276 $(_sc_say_and_exit) } || :; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
277 test -z "$$prohibit" && test -z "$$require" \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
278 && { msg='Should specify either prohibit or require' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
279 $(_sc_say_and_exit) } || :; \
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
280 test -z "$$prohibit" && test -n "$$exclude" \
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
281 && { msg='Use of exclude requires a prohibit pattern' \
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
282 $(_sc_say_and_exit) } || :; \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
283 test -n "$$in_vc_files" && test -n "$$in_files" \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
284 && { msg='Cannot specify both in_vc_files and in_files' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
285 $(_sc_say_and_exit) } || :; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
286 test "x$$halt" != x \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
287 || { msg='halt not defined' $(_sc_say_and_exit) }; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
288 \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
289 : Filter by file name; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
290 if test -n "$$in_files"; then \
14432
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
291 files=$$(find $(srcdir) | grep -E "$$in_files" \
16978
8d1ddfdb8668 maint.mk: _sc_search_regexp, sc_vulnerable_makefile_CVE-2009-4029: fix
Jim Meyering <meyering@redhat.com>
parents: 16913
diff changeset
292 | grep -Ev '$(_sc_excl)'); \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
293 else \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
294 files=$$($(VC_LIST_EXCEPT)); \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
295 if test -n "$$in_vc_files"; then \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
296 files=$$(echo "$$files" | grep -E "$$in_vc_files"); \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
297 fi; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
298 fi; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
299 \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
300 : Filter by content; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
301 test -n "$$files" && test -n "$$containing" \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
302 && { files=$$(grep -l "$$containing" $$files); } || :; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
303 test -n "$$files" && test -n "$$non_containing" \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
304 && { files=$$(grep -vl "$$non_containing" $$files); } || :; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
305 \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
306 : Check for the construct; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
307 if test -n "$$files"; then \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
308 if test -n "$$prohibit"; then \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
309 grep $$with_grep_options $(_ignore_case) -nE "$$prohibit" $$files \
16726
518ff78686bb maint.mk: fix syntax checks without exclusions
Eric Blake <eblake@redhat.com>
parents: 16691
diff changeset
310 | grep -vE "$${exclude:-^$$}" \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
311 && { msg="$$halt" $(_sc_say_and_exit) } || :; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
312 else \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
313 grep $$with_grep_options $(_ignore_case) -LE "$$require" $$files \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
314 | grep . \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
315 && { msg="$$halt" $(_sc_say_and_exit) } || :; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
316 fi \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
317 else :; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
318 fi || :;
11468
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
319 endef
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
320
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
321 sc_avoid_if_before_free:
16000
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
322 @$(srcdir)/$(_build-aux)/useless-if-before-free \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
323 $(useless_free_options) \
11518
956eb61203ab top/maint.mk (sc_avoid_if_before_free): Except useless-if-before-free script.
Simon Josefsson <simon@josefsson.org>
parents: 11517
diff changeset
324 $$($(VC_LIST_EXCEPT) | grep -v useless-if-before-free) && \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
325 { echo '$(ME): found useless "if" before "free" above' 1>&2; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
326 exit 1; } || :
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
327
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
328 sc_cast_of_argument_to_free:
16322
7256be967b3a maint.mk: use more readable (yet functionally equivalent) quoting
Jim Meyering <meyering@redhat.com>
parents: 16299
diff changeset
329 @prohibit='\<free *\( *\(' halt="don't cast free argument" \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
330 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
331
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
332 sc_cast_of_x_alloc_return_value:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
333 @prohibit='\*\) *x(m|c|re)alloc\>' \
16322
7256be967b3a maint.mk: use more readable (yet functionally equivalent) quoting
Jim Meyering <meyering@redhat.com>
parents: 16299
diff changeset
334 halt="don't cast x*alloc return value" \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
335 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
336
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
337 sc_cast_of_alloca_return_value:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
338 @prohibit='\*\) *alloca\>' \
16322
7256be967b3a maint.mk: use more readable (yet functionally equivalent) quoting
Jim Meyering <meyering@redhat.com>
parents: 16299
diff changeset
339 halt="don't cast alloca return value" \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
340 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
341
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
342 sc_space_tab:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
343 @prohibit='[ ] ' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
344 halt='found SPACE-TAB sequence; remove the SPACE' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
345 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
346
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
347 # Don't use *scanf or the old ato* functions in "real" code.
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
348 # They provide no error checking mechanism.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
349 # Instead, use strto* functions.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
350 sc_prohibit_atoi_atof:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
351 @prohibit='\<([fs]?scanf|ato([filq]|ll)) *\(' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
352 halt='do not use *scan''f, ato''f, ato''i, ato''l, ato''ll or ato''q' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
353 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
354
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
355 # Use STREQ rather than comparing strcmp == 0, or != 0.
16386
bb8c8cc1050d maint.mk: tell sc_prohibit_strcmp to ding "0 == strcmp (...)", too
Jim Meyering <meyering@redhat.com>
parents: 16360
diff changeset
356 sp_ = strcmp *\(.+\)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
357 sc_prohibit_strcmp:
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
358 @prohibit='! *strcmp *\(|\<$(sp_) *[!=]=|[!=]= *$(sp_)' \
17087
ba92000376ad maint.mk: relax sc_prohibit_strcmp, to avoid a false positive
Jim Meyering <meyering@redhat.com>
parents: 17055
diff changeset
359 exclude='# *define STRN?EQ\(' \
17055
672cf835d212 maint.mk: avoid redundant file name in message
Eric Blake <eblake@redhat.com>
parents: 17036
diff changeset
360 halt='replace strcmp calls above with STREQ/STRNEQ' \
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
361 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
362
16880
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
363 # Really. You don't want to use this function.
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
364 # It may fail to NUL-terminate the destination,
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
365 # and always NUL-pads out to the specified length.
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
366 sc_prohibit_strncpy:
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
367 @prohibit='\<strncpy *\(' \
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
368 halt='do not use strncpy, period' \
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
369 $(_sc_search_regexp)
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
370
12208
a377ab624fcc maint: detect usage(1) and other suspicious exits
Eric Blake <ebb9@byu.net>
parents: 12083
diff changeset
371 # Pass EXIT_*, not number, to usage, exit, and error (when exiting)
12325
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
372 # Convert all uses automatically, via these two commands:
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
373 # git grep -l '\<exit *(1)' \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
374 # | grep -vEf .x-sc_prohibit_magic_number_exit \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
375 # | xargs --no-run-if-empty \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
376 # perl -pi -e 's/(^|[^.])\b(exit ?)\(1\)/$1$2(EXIT_FAILURE)/'
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
377 # git grep -l '\<exit *(0)' \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
378 # | grep -vEf .x-sc_prohibit_magic_number_exit \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
379 # | xargs --no-run-if-empty \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
380 # perl -pi -e 's/(^|[^.])\b(exit ?)\(0\)/$1$2(EXIT_SUCCESS)/'
12208
a377ab624fcc maint: detect usage(1) and other suspicious exits
Eric Blake <ebb9@byu.net>
parents: 12083
diff changeset
381 sc_prohibit_magic_number_exit:
17001
47d115143a81 maint.mk: forbid exit(-1)
Eric Blake <eblake@redhat.com>
parents: 16997
diff changeset
382 @prohibit='(^|[^.])\<(usage|exit|error) ?\(-?[0-9]+[,)]' \
17088
1ad5cd44b28f maint.mk: teach sc_prohibit_magic_number_exit to accept 77
Jim Meyering <meyering@redhat.com>
parents: 17087
diff changeset
383 exclude='exit \(77\)|error ?\(((0|77),|[^,]*)' \
17001
47d115143a81 maint.mk: forbid exit(-1)
Eric Blake <eblake@redhat.com>
parents: 16997
diff changeset
384 halt='use EXIT_* values rather than magic number' \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
385 $(_sc_search_regexp)
12208
a377ab624fcc maint: detect usage(1) and other suspicious exits
Eric Blake <ebb9@byu.net>
parents: 12083
diff changeset
386
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
387 # Using EXIT_SUCCESS as the first argument to error is misleading,
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
388 # since when that parameter is 0, error does not exit. Use '0' instead.
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
389 sc_error_exit_success:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
390 @prohibit='error *\(EXIT_SUCCESS,' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
391 in_vc_files='\.[chly]$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
392 halt='found error (EXIT_SUCCESS' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
393 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
394
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
395 # "FATAL:" should be fully upper-cased in error messages
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
396 # "WARNING:" should be fully upper-cased, or fully lower-cased
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
397 sc_error_message_warn_fatal:
13102
9c58202271c4 maint.mk: match 0 or more whitespace-before-function-call '('
Jose E. Marchesi <jemarch@gnu.org>
parents: 13101
diff changeset
398 @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
399 | grep -E '"Warning|"Fatal|"fatal' && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
400 { echo '$(ME): use FATAL, WARNING or warning' 1>&2; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
401 exit 1; } || :
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
402
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
403 # Error messages should not start with a capital letter
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
404 sc_error_message_uppercase:
13102
9c58202271c4 maint.mk: match 0 or more whitespace-before-function-call '('
Jose E. Marchesi <jemarch@gnu.org>
parents: 13101
diff changeset
405 @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
406 | grep -E '"[A-Z]' \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
407 | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
408 { echo '$(ME): found capitalized error message' 1>&2; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
409 exit 1; } || :
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
410
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
411 # Error messages should not end with a period
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
412 sc_error_message_period:
13102
9c58202271c4 maint.mk: match 0 or more whitespace-before-function-call '('
Jose E. Marchesi <jemarch@gnu.org>
parents: 13101
diff changeset
413 @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
414 | grep -E '[^."]\."' && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
415 { echo '$(ME): found error message ending in period' 1>&2; \
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
416 exit 1; } || :
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
417
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
418 sc_file_system:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
419 @prohibit=file''system \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
420 ignore_case=1 \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
421 halt='found use of "file''system"; spell it "file system"' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
422 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
423
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
424 # Don't use cpp tests of this symbol. All code assumes config.h is included.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
425 sc_prohibit_have_config_h:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
426 @prohibit='^# *if.*HAVE''_CONFIG_H' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
427 halt='found use of HAVE''_CONFIG_H; remove' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
428 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
429
11519
49521800ab0c maint.mk: allow package-specific header to provide <config.h>
Eric Blake <ebb9@byu.net>
parents: 11518
diff changeset
430 # Nearly all .c files must include <config.h>. However, we also permit this
49521800ab0c maint.mk: allow package-specific header to provide <config.h>
Eric Blake <ebb9@byu.net>
parents: 11518
diff changeset
431 # via inclusion of a package-specific header, if cfg.mk specified one.
49521800ab0c maint.mk: allow package-specific header to provide <config.h>
Eric Blake <ebb9@byu.net>
parents: 11518
diff changeset
432 # config_h_header must be suitable for grep -E.
49521800ab0c maint.mk: allow package-specific header to provide <config.h>
Eric Blake <ebb9@byu.net>
parents: 11518
diff changeset
433 config_h_header ?= <config\.h>
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
434 sc_require_config_h:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
435 @require='^# *include $(config_h_header)' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
436 in_vc_files='\.c$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
437 halt='the above files do not include <config.h>' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
438 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
439
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
440 # You must include <config.h> before including any other header file.
11519
49521800ab0c maint.mk: allow package-specific header to provide <config.h>
Eric Blake <ebb9@byu.net>
parents: 11518
diff changeset
441 # This can possibly be via a package-specific header, if given by cfg.mk.
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
442 sc_require_config_h_first:
17715
24551c8f1ea2 maint.mk: less syntax-check noise when SIGPIPE is ignored
Eric Blake <eblake@redhat.com>
parents: 17696
diff changeset
443 @if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
444 fail=0; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
445 for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
446 grep '^# *include\>' $$i | $(SED) 1q \
11519
49521800ab0c maint.mk: allow package-specific header to provide <config.h>
Eric Blake <ebb9@byu.net>
parents: 11518
diff changeset
447 | grep -E '^# *include $(config_h_header)' > /dev/null \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
448 || { echo $$i; fail=1; }; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
449 done; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
450 test $$fail = 1 && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
451 { echo '$(ME): the above files include some other header' \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
452 'before <config.h>' 1>&2; exit 1; } || :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
453 else :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
454 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
455
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
456 sc_prohibit_HAVE_MBRTOWC:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
457 @prohibit='\bHAVE_MBRTOWC\b' \
13202
69a6d1611d1b maint.mk: correct a diagnostic
Jim Meyering <meyering@redhat.com>
parents: 13192
diff changeset
458 halt="do not use $$prohibit; it is always defined" \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
459 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
460
11468
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
461 # To use this "command" macro, you must first define two shell variables:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
462 # h: the header name, with no enclosing <> or ""
11468
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
463 # re: a regular expression that matches IFF something provided by $h is used.
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
464 define _sc_header_without_use
11853
97a383c7cec4 maint.mk: _header_without_use: fix a quoting bug and remove a bash'ism
Jim Meyering <meyering@redhat.com>
parents: 11847
diff changeset
465 dummy=; : so we do not need a semicolon before each use; \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
466 h_esc=`echo '[<"]'"$$h"'[">]'|$(SED) 's/\./\\\\./g'`; \
17715
24551c8f1ea2 maint.mk: less syntax-check noise when SIGPIPE is ignored
Eric Blake <eblake@redhat.com>
parents: 17696
diff changeset
467 if $(VC_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
11468
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
468 files=$$(grep -l '^# *include '"$$h_esc" \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
469 $$($(VC_LIST_EXCEPT) | grep '\.c$$')) && \
11468
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
470 grep -LE "$$re" $$files | grep . && \
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
471 { echo "$(ME): the above files include $$h but don't use it" \
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
472 1>&2; exit 1; } || :; \
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
473 else :; \
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
474 fi
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
475 endef
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
476
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
477 # Prohibit the inclusion of assert.h without an actual use of assert.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
478 sc_prohibit_assert_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
479 @h='assert.h' re='\<assert *\(' $(_sc_header_without_use)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
480
12245
86929e33bdad maint.mk: Prohibit inclusion of "close-stream.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12208
diff changeset
481 # Prohibit the inclusion of close-stream.h without an actual use.
86929e33bdad maint.mk: Prohibit inclusion of "close-stream.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12208
diff changeset
482 sc_prohibit_close_stream_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
483 @h='close-stream.h' re='\<close_stream *\(' $(_sc_header_without_use)
12245
86929e33bdad maint.mk: Prohibit inclusion of "close-stream.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12208
diff changeset
484
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
485 # Prohibit the inclusion of getopt.h without an actual use.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
486 sc_prohibit_getopt_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
487 @h='getopt.h' re='\<getopt(_long)? *\(' $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
488
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
489 # Don't include quotearg.h unless you use one of its functions.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
490 sc_prohibit_quotearg_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
491 @h='quotearg.h' re='\<quotearg(_[^ ]+)? *\(' $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
492
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
493 # Don't include quote.h unless you use one of its functions.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
494 sc_prohibit_quote_without_use:
16691
fcfa472825d5 quote: fix syntax-check
Akim Demaille <akim@lrde.epita.fr>
parents: 16556
diff changeset
495 @h='quote.h' re='\<quote((_n)? *\(|_quoting_options\>)' \
fcfa472825d5 quote: fix syntax-check
Akim Demaille <akim@lrde.epita.fr>
parents: 16556
diff changeset
496 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
497
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
498 # Don't include this header unless you use one of its functions.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
499 sc_prohibit_long_options_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
500 @h='long-options.h' re='\<parse_long_options *\(' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
501 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
502
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
503 # Don't include this header unless you use one of its functions.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
504 sc_prohibit_inttostr_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
505 @h='inttostr.h' re='\<(off|[iu]max|uint)tostr *\(' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
506 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
507
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
508 # Don't include this header unless you use one of its functions.
12861
2afdfba76c99 maint.mk: prohibit inclusion of "ignore-value.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12827
diff changeset
509 sc_prohibit_ignore_value_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
510 @h='ignore-value.h' re='\<ignore_(value|ptr) *\(' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
511 $(_sc_header_without_use)
12861
2afdfba76c99 maint.mk: prohibit inclusion of "ignore-value.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12827
diff changeset
512
2afdfba76c99 maint.mk: prohibit inclusion of "ignore-value.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12827
diff changeset
513 # Don't include this header unless you use one of its functions.
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
514 sc_prohibit_error_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
515 @h='error.h' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
516 re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? *\('\
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
517 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
518
12287
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
519 # Don't include xalloc.h unless you use one of its functions.
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
520 # Consider these symbols:
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
521 # perl -lne '/^# *define (\w+)\(/ and print $1' lib/xalloc.h|grep -v '^__';
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
522 # perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) *\(/ and print $1' lib/xalloc.h
12287
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
523 # Divide into two sets on case, and filter each through this:
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
524 # | sort | perl -MRegexp::Assemble -le \
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
525 # 'print Regexp::Assemble->new(file => "/dev/stdin")->as_string'|sed 's/\?://g'
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
526 # Note this was produced by the above:
12576
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
527 # _xa1 = \
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
528 #x(((2n?)?re|c(har)?|n(re|m)|z)alloc|alloc_(oversized|die)|m(alloc|emdup)|strdup)
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
529 # But we can do better, in at least two ways:
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
530 # 1) take advantage of two "dup"-suffixed strings:
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
531 # x(((2n?)?re|c(har)?|n(re|m)|[mz])alloc|alloc_(oversized|die)|(mem|str)dup)
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
532 # 2) notice that "c(har)?|[mz]" is equivalent to the shorter and more readable
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
533 # "char|[cmz]"
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
534 # x(((2n?)?re|char|n(re|m)|[cmz])alloc|alloc_(oversized|die)|(mem|str)dup)
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
535 _xa1 = x(((2n?)?re|char|n(re|m)|[cmz])alloc|alloc_(oversized|die)|(mem|str)dup)
12287
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
536 _xa2 = X([CZ]|N?M)ALLOC
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
537 sc_prohibit_xalloc_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
538 @h='xalloc.h' \
12287
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
539 re='\<($(_xa1)|$(_xa2)) *\('\
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
540 $(_sc_header_without_use)
12287
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
541
12863
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
542 # Extract function names:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
543 # perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) *\(/ and print $1' lib/hash.h
12863
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
544 _hash_re = \
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
545 clear|delete|free|get_(first|next)|insert|lookup|print_statistics|reset_tuning
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
546 _hash_fn = \<($(_hash_re)) *\(
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
547 _hash_struct = (struct )?\<[Hh]ash_(table|tuning)\>
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
548 sc_prohibit_hash_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
549 @h='hash.h' \
12863
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
550 re='$(_hash_fn)|$(_hash_struct)'\
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
551 $(_sc_header_without_use)
12863
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
552
14855
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
553 sc_prohibit_cloexec_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
554 @h='cloexec.h' re='\<(set_cloexec_flag|dup_cloexec) *\(' \
14855
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
555 $(_sc_header_without_use)
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
556
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
557 sc_prohibit_posixver_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
558 @h='posixver.h' re='\<posix2_version *\(' $(_sc_header_without_use)
14855
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
559
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
560 sc_prohibit_same_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
561 @h='same.h' re='\<same_name *\(' $(_sc_header_without_use)
14855
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
562
12865
19a113553866 maint.mk: prohibit inclusion of "hash-pjw.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12864
diff changeset
563 sc_prohibit_hash_pjw_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
564 @h='hash-pjw.h' \
16299
1e8c74a6b668 maint: enable sc_prohibit_hash_pjw_without_use
Jim Meyering <meyering@redhat.com>
parents: 16261
diff changeset
565 re='\<hash_pjw\>' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
566 $(_sc_header_without_use)
12865
19a113553866 maint.mk: prohibit inclusion of "hash-pjw.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12864
diff changeset
567
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
568 sc_prohibit_safe_read_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
569 @h='safe-read.h' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
570 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
571
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
572 sc_prohibit_argmatch_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
573 @h='argmatch.h' \
15337
787a6021ecd5 maint.mk: correct omissions in prohibit_argmatch_without_use check
Jim Meyering <meyering@redhat.com>
parents: 15321
diff changeset
574 re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<(invalid_arg|argmatch(_exit_fn|_(in)?valid)?) *\()' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
575 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
576
12035
2898ee238452 syntax-check: detect unnecessary inclusion of canonicalize.h
Jim Meyering <meyering@redhat.com>
parents: 11969
diff changeset
577 sc_prohibit_canonicalize_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
578 @h='canonicalize.h' \
16331
2f966fea20dc maint.mk: sc_prohibit_canonicalize_without_use: avoid false positive
Jim Meyering <meyering@redhat.com>
parents: 16322
diff changeset
579 re='CAN_(EXISTING|ALL_BUT_LAST|MISSING)|canonicalize_(mode_t|filename_mode|file_name)' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
580 $(_sc_header_without_use)
12035
2898ee238452 syntax-check: detect unnecessary inclusion of canonicalize.h
Jim Meyering <meyering@redhat.com>
parents: 11969
diff changeset
581
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
582 sc_prohibit_root_dev_ino_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
583 @h='root-dev-ino.h' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
584 re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
585 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
586
11954
c2aabb82023d syntax-check: detect unnecessary inclusion of openat.h
Jim Meyering <meyering@redhat.com>
parents: 11927
diff changeset
587 sc_prohibit_openat_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
588 @h='openat.h' \
17585
31d5dfacc483 maint.mk: adapt openat.h-include-without-use test
Jim Meyering <meyering@fb.com>
parents: 17579
diff changeset
589 re='\<(openat_(permissive|needs_fchdir|(save|restore)_fail)|l?(stat|ch(own|mod))at|(euid)?accessat|(FCHMOD|FCHOWN|STAT)AT_INLINE)\>' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
590 $(_sc_header_without_use)
11954
c2aabb82023d syntax-check: detect unnecessary inclusion of openat.h
Jim Meyering <meyering@redhat.com>
parents: 11927
diff changeset
591
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
592 # Prohibit the inclusion of c-ctype.h without an actual use.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
593 ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
594 |isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
595 sc_prohibit_c_ctype_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
596 @h='c-ctype.h' re='\<c_($(ctype_re)) *\(' \
13098
8d61d11c6cf0 maint.mk: split a long line
Jim Meyering <meyering@redhat.com>
parents: 13097
diff changeset
597 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
598
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
599 # The following list was generated by running:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
600 # man signal.h|col -b|perl -ne '/bsd_signal.*;/.../sigwaitinfo.*;/ and print' \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
601 # | perl -lne '/^\s+(?:int|void).*?(\w+).*/ and print $1' | fmt
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
602 _sig_functions = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
603 bsd_signal kill killpg pthread_kill pthread_sigmask raise sigaction \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
604 sigaddset sigaltstack sigdelset sigemptyset sigfillset sighold sigignore \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
605 siginterrupt sigismember signal sigpause sigpending sigprocmask sigqueue \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
606 sigrelse sigset sigsuspend sigtimedwait sigwait sigwaitinfo
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
607 _sig_function_re = $(subst $(_sp),|,$(strip $(_sig_functions)))
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
608 # The following were extracted from "man signal.h" manually.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
609 _sig_types_and_consts = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
610 MINSIGSTKSZ SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
611 SA_RESETHAND SA_RESTART SA_SIGINFO SIGEV_NONE SIGEV_SIGNAL \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
612 SIGEV_THREAD SIGSTKSZ SIG_BLOCK SIG_SETMASK SIG_UNBLOCK SS_DISABLE \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
613 SS_ONSTACK mcontext_t pid_t sig_atomic_t sigevent siginfo_t sigset_t \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
614 sigstack sigval stack_t ucontext_t
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
615 # generated via this:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
616 # perl -lne '/^#ifdef (SIG\w+)/ and print $1' lib/sig2str.c|sort -u|fmt -70
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
617 _sig_names = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
618 SIGABRT SIGALRM SIGALRM1 SIGBUS SIGCANCEL SIGCHLD SIGCLD SIGCONT \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
619 SIGDANGER SIGDIL SIGEMT SIGFPE SIGFREEZE SIGGRANT SIGHUP SIGILL \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
620 SIGINFO SIGINT SIGIO SIGIOT SIGKAP SIGKILL SIGKILLTHR SIGLOST SIGLWP \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
621 SIGMIGRATE SIGMSG SIGPHONE SIGPIPE SIGPOLL SIGPRE SIGPROF SIGPWR \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
622 SIGQUIT SIGRETRACT SIGSAK SIGSEGV SIGSOUND SIGSTKFLT SIGSTOP SIGSYS \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
623 SIGTERM SIGTHAW SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGURG SIGUSR1 \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
624 SIGUSR2 SIGVIRT SIGVTALRM SIGWAITING SIGWINCH SIGWIND SIGWINDOW \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
625 SIGXCPU SIGXFSZ
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
626 _sig_syms_re = $(subst $(_sp),|,$(strip $(_sig_names) $(_sig_types_and_consts)))
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
627
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
628 # Prohibit the inclusion of signal.h without an actual use.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
629 sc_prohibit_signal_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
630 @h='signal.h' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
631 re='\<($(_sig_function_re)) *\(|\<($(_sig_syms_re))\>' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
632 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
633
14756
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
634 # Don't include stdio--.h unless you use one of its functions.
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
635 sc_prohibit_stdio--_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
636 @h='stdio--.h' re='\<((f(re)?|p)open|tmpfile) *\(' \
14756
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
637 $(_sc_header_without_use)
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
638
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
639 # Don't include stdio-safer.h unless you use one of its functions.
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
640 sc_prohibit_stdio-safer_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
641 @h='stdio-safer.h' re='\<((f(re)?|p)open|tmpfile)_safer *\(' \
14756
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
642 $(_sc_header_without_use)
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
643
13304
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
644 # Prohibit the inclusion of strings.h without a sensible use.
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
645 # Using the likes of bcmp, bcopy, bzero, index or rindex is not sensible.
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
646 sc_prohibit_strings_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
647 @h='strings.h' \
13304
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
648 re='\<(strn?casecmp|ffs(ll)?)\>' \
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
649 $(_sc_header_without_use)
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
650
13029
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
651 # Get the list of symbol names with this:
15319
cf58fc92428c maint.mk: update sc_prohibit_intprops_without_use
Eric Blake <eblake@redhat.com>
parents: 15316
diff changeset
652 # perl -lne '/^# *define ([A-Z]\w+)\(/ and print $1' lib/intprops.h|fmt
13029
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
653 _intprops_names = \
18294
a90f8370aad4 intprops, mktime, strtol: assume two's complement
Paul Eggert <eggert@cs.ucla.edu>
parents: 18189
diff changeset
654 TYPE_IS_INTEGER TYPE_SIGNED TYPE_MINIMUM TYPE_MAXIMUM \
15319
cf58fc92428c maint.mk: update sc_prohibit_intprops_without_use
Eric Blake <eblake@redhat.com>
parents: 15316
diff changeset
655 INT_BITS_STRLEN_BOUND INT_STRLEN_BOUND INT_BUFSIZE_BOUND \
cf58fc92428c maint.mk: update sc_prohibit_intprops_without_use
Eric Blake <eblake@redhat.com>
parents: 15316
diff changeset
656 INT_ADD_RANGE_OVERFLOW INT_SUBTRACT_RANGE_OVERFLOW \
cf58fc92428c maint.mk: update sc_prohibit_intprops_without_use
Eric Blake <eblake@redhat.com>
parents: 15316
diff changeset
657 INT_NEGATE_RANGE_OVERFLOW INT_MULTIPLY_RANGE_OVERFLOW \
cf58fc92428c maint.mk: update sc_prohibit_intprops_without_use
Eric Blake <eblake@redhat.com>
parents: 15316
diff changeset
658 INT_DIVIDE_RANGE_OVERFLOW INT_REMAINDER_RANGE_OVERFLOW \
cf58fc92428c maint.mk: update sc_prohibit_intprops_without_use
Eric Blake <eblake@redhat.com>
parents: 15316
diff changeset
659 INT_LEFT_SHIFT_RANGE_OVERFLOW INT_ADD_OVERFLOW INT_SUBTRACT_OVERFLOW \
cf58fc92428c maint.mk: update sc_prohibit_intprops_without_use
Eric Blake <eblake@redhat.com>
parents: 15316
diff changeset
660 INT_NEGATE_OVERFLOW INT_MULTIPLY_OVERFLOW INT_DIVIDE_OVERFLOW \
cf58fc92428c maint.mk: update sc_prohibit_intprops_without_use
Eric Blake <eblake@redhat.com>
parents: 15316
diff changeset
661 INT_REMAINDER_OVERFLOW INT_LEFT_SHIFT_OVERFLOW
13029
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
662 _intprops_syms_re = $(subst $(_sp),|,$(strip $(_intprops_names)))
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
663 # Prohibit the inclusion of intprops.h without an actual use.
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
664 sc_prohibit_intprops_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
665 @h='intprops.h' \
13029
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
666 re='\<($(_intprops_syms_re)) *\(' \
13097
ef132cd978fc maint.mk: s/_header_without_use/_sc_header_without_use/
Jose E. Marchesi <jemarch@gnu.org>
parents: 13085
diff changeset
667 $(_sc_header_without_use)
13029
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
668
14216
676f66180a36 maint.mk: add syntax-check rule: detect unnecessary #include <stddef.h>
Jim Meyering <meyering@redhat.com>
parents: 14210
diff changeset
669 _stddef_syms_re = NULL|offsetof|ptrdiff_t|size_t|wchar_t
676f66180a36 maint.mk: add syntax-check rule: detect unnecessary #include <stddef.h>
Jim Meyering <meyering@redhat.com>
parents: 14210
diff changeset
670 # Prohibit the inclusion of stddef.h without an actual use.
676f66180a36 maint.mk: add syntax-check rule: detect unnecessary #include <stddef.h>
Jim Meyering <meyering@redhat.com>
parents: 14210
diff changeset
671 sc_prohibit_stddef_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
672 @h='stddef.h' \
15990
2f6844abf7fd maint.mk: fix a bug in sc_prohibit_stddef_without_use
Jim Meyering <meyering@redhat.com>
parents: 15989
diff changeset
673 re='\<($(_stddef_syms_re))\>' \
14216
676f66180a36 maint.mk: add syntax-check rule: detect unnecessary #include <stddef.h>
Jim Meyering <meyering@redhat.com>
parents: 14210
diff changeset
674 $(_sc_header_without_use)
676f66180a36 maint.mk: add syntax-check rule: detect unnecessary #include <stddef.h>
Jim Meyering <meyering@redhat.com>
parents: 14210
diff changeset
675
16035
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
676 _de1 = dirfd|(close|(fd)?open|read|rewind|seek|tell)dir(64)?(_r)?
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
677 _de2 = (versionsort|struct dirent|getdirentries|alphasort|scandir(at)?)(64)?
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
678 _de3 = MAXNAMLEN|DIR|ino_t|d_ino|d_fileno|d_namlen
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
679 _dirent_syms_re = $(_de1)|$(_de2)|$(_de3)
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
680 # Prohibit the inclusion of dirent.h without an actual use.
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
681 sc_prohibit_dirent_without_use:
16053
48e53ddfb126 maint.mk: silence new syntax check
Eric Blake <eblake@redhat.com>
parents: 16035
diff changeset
682 @h='dirent.h' \
16035
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
683 re='\<($(_dirent_syms_re))\>' \
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
684 $(_sc_header_without_use)
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
685
15437
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
686 # Prohibit the inclusion of verify.h without an actual use.
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
687 sc_prohibit_verify_without_use:
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
688 @h='verify.h' \
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
689 re='\<(verify(true|expr)?|static_assert) *\(' \
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
690 $(_sc_header_without_use)
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
691
14756
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
692 # Don't include xfreopen.h unless you use one of its functions.
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
693 sc_prohibit_xfreopen_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
694 @h='xfreopen.h' re='\<xfreopen *\(' $(_sc_header_without_use)
14756
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
695
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
696 sc_obsolete_symbols:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
697 @prohibit='\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
698 halt='do not use HAVE''_FCNTL_H or O'_NDELAY \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
699 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
700
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
701 # FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
702
11468
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
703 # Each nonempty ChangeLog line must start with a year number, or a TAB.
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
704 sc_changelog:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
705 @prohibit='^[^12 ]' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
706 in_vc_files='^ChangeLog$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
707 halt='found unexpected prefix in a ChangeLog' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
708 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
709
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
710 # Ensure that each .c file containing a "main" function also
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
711 # calls set_program_name.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
712 sc_program_name:
17724
8526f2f0b117 maint.mk: give projects more flexibilty in set_prog_name arguments
Pádraig Brady <P@draigBrady.com>
parents: 17715
diff changeset
713 @require='set_program_name *\(.*\);' \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
714 in_vc_files='\.c$$' \
13853
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
715 containing='\<main *(' \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
716 halt='the above files do not call set_program_name' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
717 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
718
13853
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
719 # Ensure that each .c file containing a "main" function also
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
720 # calls bindtextdomain.
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
721 sc_bindtextdomain:
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
722 @require='bindtextdomain *\(' \
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
723 in_vc_files='\.c$$' \
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
724 containing='\<main *(' \
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
725 halt='the above files do not call bindtextdomain' \
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
726 $(_sc_search_regexp)
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
727
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
728 # Require that the final line of each test-lib.sh-using test be this one:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
729 # Exit $fail
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
730 # Note: this test requires GNU grep's --label= option.
11646
fc7e7bde323e tests: maint.mk: make sc_require_test_exit_idiom more generic
Jim Meyering <meyering@redhat.com>
parents: 11575
diff changeset
731 Exit_witness_file ?= tests/test-lib.sh
fc7e7bde323e tests: maint.mk: make sc_require_test_exit_idiom more generic
Jim Meyering <meyering@redhat.com>
parents: 11575
diff changeset
732 Exit_base := $(notdir $(Exit_witness_file))
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
733 sc_require_test_exit_idiom:
11646
fc7e7bde323e tests: maint.mk: make sc_require_test_exit_idiom more generic
Jim Meyering <meyering@redhat.com>
parents: 11575
diff changeset
734 @if test -f $(srcdir)/$(Exit_witness_file); then \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
735 die=0; \
11646
fc7e7bde323e tests: maint.mk: make sc_require_test_exit_idiom more generic
Jim Meyering <meyering@redhat.com>
parents: 11575
diff changeset
736 for i in $$(grep -l -F 'srcdir/$(Exit_base)' \
fc7e7bde323e tests: maint.mk: make sc_require_test_exit_idiom more generic
Jim Meyering <meyering@redhat.com>
parents: 11575
diff changeset
737 $$($(VC_LIST) tests)); do \
fc7e7bde323e tests: maint.mk: make sc_require_test_exit_idiom more generic
Jim Meyering <meyering@redhat.com>
parents: 11575
diff changeset
738 tail -n1 $$i | grep '^Exit .' > /dev/null \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
739 && : || { die=1; echo $$i; } \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
740 done; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
741 test $$die = 1 && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
742 { echo 1>&2 '$(ME): the final line in each of the above is not:'; \
11646
fc7e7bde323e tests: maint.mk: make sc_require_test_exit_idiom more generic
Jim Meyering <meyering@redhat.com>
parents: 11575
diff changeset
743 echo 1>&2 'Exit something'; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
744 exit 1; } || :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
745 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
746
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
747 sc_trailing_blank:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
748 @prohibit='[ ]$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
749 halt='found trailing blank(s)' \
17090
4444e06d3a94 maint.mk: exempt trailing blanks found in "binary" files
Jim Meyering <meyering@redhat.com>
parents: 17089
diff changeset
750 exclude='^Binary file .* matches$$' \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
751 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
752
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
753 # Match lines like the following, but where there is only one space
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
754 # between the options and the description:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
755 # -D, --all-repeated[=delimit-method] print all duplicate lines\n
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
756 longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
757 sc_two_space_separator_in_usage:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
758 @prohibit='^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
759 halt='help2man requires at least two spaces between an option and its description'\
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
760 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
761
14864
93b21a56e926 maint.mk: sc_unmarked_diagnostics: don't hard-code "error"
Jim Meyering <meyering@redhat.com>
parents: 14855
diff changeset
762 # A regexp matching function names like "error" that may be used
93b21a56e926 maint.mk: sc_unmarked_diagnostics: don't hard-code "error"
Jim Meyering <meyering@redhat.com>
parents: 14855
diff changeset
763 # to emit translatable messages.
93b21a56e926 maint.mk: sc_unmarked_diagnostics: don't hard-code "error"
Jim Meyering <meyering@redhat.com>
parents: 14855
diff changeset
764 _gl_translatable_diag_func_re ?= error
93b21a56e926 maint.mk: sc_unmarked_diagnostics: don't hard-code "error"
Jim Meyering <meyering@redhat.com>
parents: 14855
diff changeset
765
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
766 # Look for diagnostics that aren't marked for translation.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
767 # This won't find any for which error's format string is on a separate line.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
768 sc_unmarked_diagnostics:
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
769 @prohibit='\<$(_gl_translatable_diag_func_re) *\([^"]*"[^"]*[a-z]{3}' \
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
770 exclude='(_|ngettext ?)\(' \
17055
672cf835d212 maint.mk: avoid redundant file name in message
Eric Blake <eblake@redhat.com>
parents: 17036
diff changeset
771 halt='found unmarked diagnostic(s)' \
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
772 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
773
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
774 # Avoid useless parentheses like those in this example:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
775 # #if defined (SYMBOL) || defined (SYM2)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
776 sc_useless_cpp_parens:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
777 @prohibit='^# *if .*defined *\(' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
778 halt='found useless parentheses in cpp directive' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
779 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
780
13275
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
781 # List headers for which HAVE_HEADER_H is always true, assuming you are
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
782 # using the appropriate gnulib module. CAUTION: for each "unnecessary"
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
783 # #if HAVE_HEADER_H that you remove, be sure that your project explicitly
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
784 # requires the gnulib module that guarantees the usability of that header.
13277
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
785 gl_assured_headers_ = \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
786 cd $(gnulib_dir)/lib && echo *.in.h|$(SED) 's/\.in\.h//g'
13275
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
787
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
788 # Convert the list of names to upper case, and replace each space with "|".
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
789 az_ = abcdefghijklmnopqrstuvwxyz
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
790 AZ_ = ABCDEFGHIJKLMNOPQRSTUVWXYZ
13277
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
791 gl_header_upper_case_or_ = \
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
792 $$($(gl_assured_headers_) \
13275
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
793 | tr $(az_)/.- $(AZ_)___ \
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
794 | tr -s ' ' '|' \
13277
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
795 )
13275
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
796 sc_prohibit_always_true_header_tests:
13277
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
797 @or=$(gl_header_upper_case_or_); \
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
798 re="HAVE_($$or)_H"; \
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
799 prohibit='\<'"$$re"'\>' \
13704
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
800 halt=$$(printf '%s\n' \
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
801 'do not test the above HAVE_<header>_H symbol(s);' \
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
802 ' with the corresponding gnulib module, they are always true') \
13275
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
803 $(_sc_search_regexp)
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
804
16988
ef9bd8b01585 maint.mk: new syntax check for HAVE_DECL checks
Eric Blake <eblake@redhat.com>
parents: 16979
diff changeset
805 sc_prohibit_defined_have_decl_tests:
17386
70c2a43965ef maint.mk: catch more abuse of HAVE_DECL in syntax-check
Eric Blake <eblake@redhat.com>
parents: 17249
diff changeset
806 @prohibit='(#[ ]*ifn?def|\<defined)\>[ (]+HAVE_DECL_' \
17055
672cf835d212 maint.mk: avoid redundant file name in message
Eric Blake <eblake@redhat.com>
parents: 17036
diff changeset
807 halt='HAVE_DECL macros are always defined' \
16988
ef9bd8b01585 maint.mk: new syntax check for HAVE_DECL checks
Eric Blake <eblake@redhat.com>
parents: 16979
diff changeset
808 $(_sc_search_regexp)
ef9bd8b01585 maint.mk: new syntax check for HAVE_DECL checks
Eric Blake <eblake@redhat.com>
parents: 16979
diff changeset
809
13329
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
810 # ==================================================================
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
811 gl_other_headers_ ?= \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
812 intprops.h \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
813 openat.h \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
814 stat-macros.h
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
815
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
816 # Perl -lne code to extract "significant" cpp-defined symbols from a
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
817 # gnulib header file, eliminating a few common false-positives.
15989
30a6c0b6ac8c maint.mk: exempt ENODATA from a syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 15966
diff changeset
818 # The exempted names below are defined only conditionally in gnulib,
30a6c0b6ac8c maint.mk: exempt ENODATA from a syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 15966
diff changeset
819 # and hence sometimes must/may be defined in application code.
13329
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
820 gl_extract_significant_defines_ = \
13337
23825f79a03a maint.mk: gnulib doesn't guarantee NSIG
Eric Blake <eblake@redhat.com>
parents: 13333
diff changeset
821 /^\# *define ([^_ (][^ (]*)(\s*\(|\s+\w+)/\
23825f79a03a maint.mk: gnulib doesn't guarantee NSIG
Eric Blake <eblake@redhat.com>
parents: 13333
diff changeset
822 && $$2 !~ /(?:rpl_|_used_without_)/\
15989
30a6c0b6ac8c maint.mk: exempt ENODATA from a syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 15966
diff changeset
823 && $$1 !~ /^(?:NSIG|ENODATA)$$/\
15478
206163b08a1f maint.mk: avoid sc_prohibit_always-defined_macros failure in coreutils
Jim Meyering <meyering@redhat.com>
parents: 15437
diff changeset
824 && $$1 !~ /^(?:SA_RESETHAND|SA_RESTART)$$/\
13329
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
825 and print $$1
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
826
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
827 # Create a list of regular expressions matching the names
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
828 # of macros that are guaranteed to be defined by parts of gnulib.
13333
dd75a1afe536 maint.mk: avoid using a temporary file in the always-defined-macros check
Jim Meyering <meyering@redhat.com>
parents: 13331
diff changeset
829 define def_sym_regex
dd75a1afe536 maint.mk: avoid using a temporary file in the always-defined-macros check
Jim Meyering <meyering@redhat.com>
parents: 13331
diff changeset
830 gen_h=$(gl_generated_headers_); \
13329
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
831 (cd $(gnulib_dir)/lib; \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
832 for f in *.in.h $(gl_other_headers_); do \
15660
d12c46223fa1 maint.mk: avoid warnings from perl about missing files
Martin von Gagern <Martin.vGagern@gmx.net>
parents: 15615
diff changeset
833 test -f $$f \
d12c46223fa1 maint.mk: avoid warnings from perl about missing files
Martin von Gagern <Martin.vGagern@gmx.net>
parents: 15615
diff changeset
834 && perl -lne '$(gl_extract_significant_defines_)' $$f; \
13329
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
835 done; \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
836 ) | sort -u \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
837 | $(SED) 's/^/^ *# *(define|undef) */;s/$$/\\>/'
13329
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
838 endef
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
839
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
840 # Don't define macros that we already get from gnulib header files.
13333
dd75a1afe536 maint.mk: avoid using a temporary file in the always-defined-macros check
Jim Meyering <meyering@redhat.com>
parents: 13331
diff changeset
841 sc_prohibit_always-defined_macros:
13329
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
842 @if test -d $(gnulib_dir); then \
13333
dd75a1afe536 maint.mk: avoid using a temporary file in the always-defined-macros check
Jim Meyering <meyering@redhat.com>
parents: 13331
diff changeset
843 case $$(echo all: | grep -l -f - Makefile) in Makefile);; *) \
dd75a1afe536 maint.mk: avoid using a temporary file in the always-defined-macros check
Jim Meyering <meyering@redhat.com>
parents: 13331
diff changeset
844 echo '$(ME): skipping $@: you lack GNU grep' 1>&2; exit 0;; \
dd75a1afe536 maint.mk: avoid using a temporary file in the always-defined-macros check
Jim Meyering <meyering@redhat.com>
parents: 13331
diff changeset
845 esac; \
13378
c4a059473950 maint.mk: also prohibit "#undef" of always-defined symbols
Jim Meyering <meyering@redhat.com>
parents: 13376
diff changeset
846 $(def_sym_regex) | grep -E -f - $$($(VC_LIST_EXCEPT)) \
13329
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
847 && { echo '$(ME): define the above via some gnulib .h file' \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
848 1>&2; exit 1; } || :; \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
849 fi
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
850 # ==================================================================
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
851
13253
51e653bb55dd top/maint.mk (sc_prohibit_backup_files): Prohibit checked in backup files.
Simon Josefsson <simon@josefsson.org>
parents: 13241
diff changeset
852 # Prohibit checked in backup files.
51e653bb55dd top/maint.mk (sc_prohibit_backup_files): Prohibit checked in backup files.
Simon Josefsson <simon@josefsson.org>
parents: 13241
diff changeset
853 sc_prohibit_backup_files:
51e653bb55dd top/maint.mk (sc_prohibit_backup_files): Prohibit checked in backup files.
Simon Josefsson <simon@josefsson.org>
parents: 13241
diff changeset
854 @$(VC_LIST) | grep '~$$' && \
51e653bb55dd top/maint.mk (sc_prohibit_backup_files): Prohibit checked in backup files.
Simon Josefsson <simon@josefsson.org>
parents: 13241
diff changeset
855 { echo '$(ME): found version controlled backup file' 1>&2; \
51e653bb55dd top/maint.mk (sc_prohibit_backup_files): Prohibit checked in backup files.
Simon Josefsson <simon@josefsson.org>
parents: 13241
diff changeset
856 exit 1; } || :
51e653bb55dd top/maint.mk (sc_prohibit_backup_files): Prohibit checked in backup files.
Simon Josefsson <simon@josefsson.org>
parents: 13241
diff changeset
857
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
858 # Require the latest GPL.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
859 sc_GPL_version:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
860 @prohibit='either ''version [^3]' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
861 halt='GPL vN, N!=3' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
862 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
863
12593
e8847ec6bc92 maint.mk: detect incorrect GFDL usage
Eric Blake <ebb9@byu.net>
parents: 12592
diff changeset
864 # Require the latest GFDL. Two regexp, since some .texi files end up
e8847ec6bc92 maint.mk: detect incorrect GFDL usage
Eric Blake <ebb9@byu.net>
parents: 12592
diff changeset
865 # line wrapping between 'Free Documentation License,' and 'Version'.
e8847ec6bc92 maint.mk: detect incorrect GFDL usage
Eric Blake <ebb9@byu.net>
parents: 12592
diff changeset
866 _GFDL_regexp = (Free ''Documentation.*Version 1\.[^3]|Version 1\.[^3] or any)
e8847ec6bc92 maint.mk: detect incorrect GFDL usage
Eric Blake <ebb9@byu.net>
parents: 12592
diff changeset
867 sc_GFDL_version:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
868 @prohibit='$(_GFDL_regexp)' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
869 halt='GFDL vN, N!=3' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
870 $(_sc_search_regexp)
12593
e8847ec6bc92 maint.mk: detect incorrect GFDL usage
Eric Blake <ebb9@byu.net>
parents: 12592
diff changeset
871
13880
fe3adfe381fa maint.mk: add a URL discussing the no-@acronym policy
Jim Meyering <meyering@redhat.com>
parents: 13871
diff changeset
872 # Don't use Texinfo's @acronym{}.
fe3adfe381fa maint.mk: add a URL discussing the no-@acronym policy
Jim Meyering <meyering@redhat.com>
parents: 13871
diff changeset
873 # http://lists.gnu.org/archive/html/bug-gnulib/2010-03/msg00321.html
13233
2376509f2722 maint.mk: texinfo_suffix_re_: correct the default regexp
Jim Meyering <meyering@redhat.com>
parents: 13232
diff changeset
874 texinfo_suffix_re_ ?= \.(txi|texi(nfo)?)$$
13045
04f53e0b1556 top/maint.mk (sc_texinfo_acronym): Add rule.
Simon Josefsson <simon@josefsson.org>
parents: 13029
diff changeset
875 sc_texinfo_acronym:
13232
80668c656e53 top/maint.mk (sc_texinfo_acronym): Improve filename regexp.
Simon Josefsson <simon@josefsson.org>
parents: 13221
diff changeset
876 @prohibit='@acronym\{' \
80668c656e53 top/maint.mk (sc_texinfo_acronym): Improve filename regexp.
Simon Josefsson <simon@josefsson.org>
parents: 13221
diff changeset
877 in_vc_files='$(texinfo_suffix_re_)' \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
878 halt='found use of Texinfo @acronym{}' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
879 $(_sc_search_regexp)
13045
04f53e0b1556 top/maint.mk (sc_texinfo_acronym): Add rule.
Simon Josefsson <simon@josefsson.org>
parents: 13029
diff changeset
880
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
881 cvs_keywords = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
882 Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
883
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
884 sc_prohibit_cvs_keyword:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
885 @prohibit='\$$($(cvs_keywords))\$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
886 halt='do not use CVS keyword expansion' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
887 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
888
13209
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
889 # This Perl code is slightly obfuscated. Not only is each "$" doubled
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
890 # because it's in a Makefile, but the $$c's are comments; we cannot
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
891 # use "#" due to the way the script ends up concatenated onto one line.
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
892 # It would be much more concise, and would produce better output (including
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
893 # counts) if written as:
13203
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
894 # perl -ln -0777 -e '/\n(\n+)$/ and print "$ARGV: ".length $1' ...
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
895 # but that would be far less efficient, reading the entire contents
13209
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
896 # of each file, rather than just the last two bytes of each.
14394
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
897 # In addition, while the code below detects both blank lines and a missing
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
898 # newline at EOF, the above detects only the former.
13203
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
899 #
13209
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
900 # This is a perl script that is expected to be the single-quoted argument
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
901 # to a command-line "-le". The remaining arguments are file names.
16261
0505376775c9 maint.mk: fix description in comment
Jim Meyering <meyering@redhat.com>
parents: 16235
diff changeset
902 # Print the name of each file that does not end in exactly one newline byte.
14394
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
903 # I.e., warn if there are blank lines (2 or more newlines), or if the
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
904 # last byte is not a newline. However, currently we don't complain
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
905 # about any file that contains exactly one byte.
13203
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
906 # Exit nonzero if at least one such file is found, otherwise, exit 0.
13209
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
907 # Warn about, but otherwise ignore open failure. Ignore seek/read failure.
13203
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
908 #
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
909 # Use this if you want to remove trailing empty lines from selected files:
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
910 # perl -pi -0777 -e 's/\n\n+$/\n/' files...
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
911 #
14394
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
912 require_exactly_one_NL_at_EOF_ = \
13241
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
913 foreach my $$f (@ARGV) \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
914 { \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
915 open F, "<", $$f or (warn "failed to open $$f: $$!\n"), next; \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
916 my $$p = sysseek (F, -2, 2); \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
917 my $$c = "seek failure probably means file has < 2 bytes; ignore"; \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
918 my $$last_two_bytes; \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
919 defined $$p and $$p = sysread F, $$last_two_bytes, 2; \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
920 close F; \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
921 $$c = "ignore read failure"; \
14394
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
922 $$p && ($$last_two_bytes eq "\n\n" \
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
923 || substr ($$last_two_bytes,1) ne "\n") \
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
924 and (print $$f), $$fail=1; \
13241
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
925 } \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
926 END { exit defined $$fail }
13203
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
927 sc_prohibit_empty_lines_at_EOF:
14394
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
928 @perl -le '$(require_exactly_one_NL_at_EOF_)' $$($(VC_LIST_EXCEPT)) \
14523
0ba2e3063130 maint.mk: Don't trigger sc_space_tab check.
Simon Josefsson <simon@josefsson.org>
parents: 14471
diff changeset
929 || { echo '$(ME): empty line(s) or no newline at EOF' \
14572
7eb49e79c178 maint.mk: remove useless semicolon and backslash
Jim Meyering <meyering@redhat.com>
parents: 14563
diff changeset
930 1>&2; exit 1; } || :
13203
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
931
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
932 # Make sure we don't use st_blocks. Use ST_NBLOCKS instead.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
933 # This is a bit of a kludge, since it prevents use of the string
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
934 # even in comments, but for now it does the job with no false positives.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
935 sc_prohibit_stat_st_blocks:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
936 @prohibit='[.>]st_blocks' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
937 halt='do not use st_blocks; use ST_NBLOCKS' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
938 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
939
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
940 # Make sure we don't define any S_IS* macros in src/*.c files.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
941 # They're already defined via gnulib's sys/stat.h replacement.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
942 sc_prohibit_S_IS_definition:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
943 @prohibit='^ *# *define *S_IS' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
944 halt='do not define S_IS* macros; include <sys/stat.h>' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
945 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
946
14724
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
947 # Perl block to convert a match to FILE_NAME:LINENO:TEST,
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
948 # that is shared by two definitions below.
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
949 perl_filename_lineno_text_ = \
14575
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
950 -e ' {' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
951 -e ' $$n = ($$` =~ tr/\n/\n/ + 1);' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
952 -e ' ($$v = $$&) =~ s/\n/\\n/g;' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
953 -e ' print "$$ARGV:$$n:$$v\n";' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
954 -e ' }'
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
955
14724
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
956 prohibit_doubled_word_RE_ ?= \
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
957 /\b(then?|[iao]n|i[fst]|but|f?or|at|and|[dt]o)\s+\1\b/gims
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
958 prohibit_doubled_word_ = \
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
959 -e 'while ($(prohibit_doubled_word_RE_))' \
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
960 $(perl_filename_lineno_text_)
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
961
14575
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
962 # Define this to a regular expression that matches
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
963 # any filename:dd:match lines you want to ignore.
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
964 # The default is to ignore no matches.
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
965 ignore_doubled_word_match_RE_ ?= ^$$
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
966
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
967 sc_prohibit_doubled_word:
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
968 @perl -n -0777 $(prohibit_doubled_word_) $$($(VC_LIST_EXCEPT)) \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
969 | grep -vE '$(ignore_doubled_word_match_RE_)' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
970 | grep . && { echo '$(ME): doubled words' 1>&2; exit 1; } || :
14563
4f85858b0e7f maint.mk: prohibit \<the the\>
Jim Meyering <meyering@redhat.com>
parents: 14560
diff changeset
971
14724
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
972 # A regular expression matching undesirable combinations of words like
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
973 # "can not"; this matches them even when the two words appear on different
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
974 # lines, but not when there is an intervening delimiter like "#" or "*".
16789
b05bc6bf8e60 maint.mk: expand syntax-check rule to catch @xref and @pxref abuse
Akim Demaille <akim@lrde.epita.fr>
parents: 16726
diff changeset
975 # Similarly undesirable, "See @xref{...}", since an @xref should start
b05bc6bf8e60 maint.mk: expand syntax-check rule to catch @xref and @pxref abuse
Akim Demaille <akim@lrde.epita.fr>
parents: 16726
diff changeset
976 # a sentence. Explicitly prohibit any prefix of "see" or "also".
b05bc6bf8e60 maint.mk: expand syntax-check rule to catch @xref and @pxref abuse
Akim Demaille <akim@lrde.epita.fr>
parents: 16726
diff changeset
977 # Also prohibit a prefix matching "\w+ +".
b05bc6bf8e60 maint.mk: expand syntax-check rule to catch @xref and @pxref abuse
Akim Demaille <akim@lrde.epita.fr>
parents: 16726
diff changeset
978 # @pxref gets the same see/also treatment and should be parenthesized;
b05bc6bf8e60 maint.mk: expand syntax-check rule to catch @xref and @pxref abuse
Akim Demaille <akim@lrde.epita.fr>
parents: 16726
diff changeset
979 # presume it must *not* start a sentence.
b05bc6bf8e60 maint.mk: expand syntax-check rule to catch @xref and @pxref abuse
Akim Demaille <akim@lrde.epita.fr>
parents: 16726
diff changeset
980 bad_xref_re_ ?= (?:[\w,:;] +|(?:see|also)\s+)\@xref\{
b05bc6bf8e60 maint.mk: expand syntax-check rule to catch @xref and @pxref abuse
Akim Demaille <akim@lrde.epita.fr>
parents: 16726
diff changeset
981 bad_pxref_re_ ?= (?:[.!?]|(?:see|also))\s+\@pxref\{
14725
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
982 prohibit_undesirable_word_seq_RE_ ?= \
16904
1a6a09e7b2f5 maint.mk: revert most of the previous change re "all these"
Jim Meyering <meyering@redhat.com>
parents: 16899
diff changeset
983 /(?:\bcan\s+not\b|$(bad_xref_re_)|$(bad_pxref_re_))/gims
14725
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
984 prohibit_undesirable_word_seq_ = \
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
985 -e 'while ($(prohibit_undesirable_word_seq_RE_))' \
14724
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
986 $(perl_filename_lineno_text_)
14725
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
987 # Define this to a regular expression that matches
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
988 # any filename:dd:match lines you want to ignore.
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
989 # The default is to ignore no matches.
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
990 ignore_undesirable_word_sequence_RE_ ?= ^$$
14724
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
991
14725
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
992 sc_prohibit_undesirable_word_seq:
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
993 @perl -n -0777 $(prohibit_undesirable_word_seq_) \
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
994 $$($(VC_LIST_EXCEPT)) \
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
995 | grep -vE '$(ignore_undesirable_word_sequence_RE_)' | grep . \
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
996 && { echo '$(ME): undesirable word sequence' >&2; exit 1; } || :
14560
ff63cf60e142 maint.mk: prohibit use of "can not"
Jim Meyering <meyering@redhat.com>
parents: 14523
diff changeset
997
17752
89ba0beadf6a maintainer-makefile: add syntax check for useless ';;'
Eric Blake <eblake@redhat.com>
parents: 17724
diff changeset
998 # Except for shell files and for loops, double semicolon is probably a mistake
89ba0beadf6a maintainer-makefile: add syntax check for useless ';;'
Eric Blake <eblake@redhat.com>
parents: 17724
diff changeset
999 sc_prohibit_double_semicolon:
89ba0beadf6a maintainer-makefile: add syntax check for useless ';;'
Eric Blake <eblake@redhat.com>
parents: 17724
diff changeset
1000 @prohibit='; *;[ {} \]*(/[/*]|$$)' \
89ba0beadf6a maintainer-makefile: add syntax check for useless ';;'
Eric Blake <eblake@redhat.com>
parents: 17724
diff changeset
1001 in_vc_files='\.[chly]$$' \
89ba0beadf6a maintainer-makefile: add syntax check for useless ';;'
Eric Blake <eblake@redhat.com>
parents: 17724
diff changeset
1002 exclude='\bfor *\(.*\)' \
89ba0beadf6a maintainer-makefile: add syntax check for useless ';;'
Eric Blake <eblake@redhat.com>
parents: 17724
diff changeset
1003 halt="Double semicolon detected" \
89ba0beadf6a maintainer-makefile: add syntax check for useless ';;'
Eric Blake <eblake@redhat.com>
parents: 17724
diff changeset
1004 $(_sc_search_regexp)
89ba0beadf6a maintainer-makefile: add syntax check for useless ';;'
Eric Blake <eblake@redhat.com>
parents: 17724
diff changeset
1005
13085
fb5165836aea maint.mk: prohibit use of test's -o and -a operators
Jim Meyering <meyering@redhat.com>
parents: 13058
diff changeset
1006 _ptm1 = use "test C1 && test C2", not "test C1 -''a C2"
fb5165836aea maint.mk: prohibit use of test's -o and -a operators
Jim Meyering <meyering@redhat.com>
parents: 13058
diff changeset
1007 _ptm2 = use "test C1 || test C2", not "test C1 -''o C2"
fb5165836aea maint.mk: prohibit use of test's -o and -a operators
Jim Meyering <meyering@redhat.com>
parents: 13058
diff changeset
1008 # Using test's -a and -o operators is not portable.
13101
8dad7d30953c maint.mk: check for [ as well as test
Eric Blake <eblake@redhat.com>
parents: 13098
diff changeset
1009 # We prefer test over [, since the latter is spelled [[ in configure.ac.
13085
fb5165836aea maint.mk: prohibit use of test's -o and -a operators
Jim Meyering <meyering@redhat.com>
parents: 13058
diff changeset
1010 sc_prohibit_test_minus_ao:
13104
3f4bdc04f3f1 maint.mk: fix some fallout
Eric Blake <eblake@redhat.com>
parents: 13103
diff changeset
1011 @prohibit='(\<test| \[+) .+ -[ao] ' \
3f4bdc04f3f1 maint.mk: fix some fallout
Eric Blake <eblake@redhat.com>
parents: 13103
diff changeset
1012 halt='$(_ptm1); $(_ptm2)' \
3f4bdc04f3f1 maint.mk: fix some fallout
Eric Blake <eblake@redhat.com>
parents: 13103
diff changeset
1013 $(_sc_search_regexp)
13085
fb5165836aea maint.mk: prohibit use of test's -o and -a operators
Jim Meyering <meyering@redhat.com>
parents: 13058
diff changeset
1014
13855
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1015 # Avoid a test bashism.
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1016 sc_prohibit_test_double_equal:
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1017 @prohibit='(\<test| \[+) .+ == ' \
13865
85922ab33c1c maintainer-makefile: cover a few more files
Eric Blake <eblake@redhat.com>
parents: 13858
diff changeset
1018 containing='#! */bin/[a-z]*sh' \
13855
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1019 halt='use "test x = x", not "test x =''= x"' \
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1020 $(_sc_search_regexp)
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1021
12608
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1022 # Each program that uses proper_name_utf8 must link with one of the
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1023 # ICONV libraries. Otherwise, some ICONV library must appear in LDADD.
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1024 # The perl -0777 invocation below extracts the possibly-multi-line
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1025 # definition of LDADD from the appropriate Makefile.am and exits 0
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1026 # when it contains "ICONV".
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1027 sc_proper_name_utf8_requires_ICONV:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1028 @progs=$$(grep -l 'proper_name_utf8 ''("' $$($(VC_LIST_EXCEPT)));\
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1029 if test "x$$progs" != x; then \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1030 fail=0; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1031 for p in $$progs; do \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1032 dir=$$(dirname "$$p"); \
12608
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1033 perl -0777 \
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1034 -ne 'exit !(/^LDADD =(.+?[^\\]\n)/ms && $$1 =~ /ICONV/)' \
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1035 $$dir/Makefile.am && continue; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1036 base=$$(basename "$$p" .c); \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1037 grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1038 || { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1039 done; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1040 test $$fail = 1 && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1041 { echo 1>&2 '$(ME): the above do not link with any ICONV library'; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1042 exit 1; } || :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1043 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1044
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1045 # Warn about "c0nst struct Foo const foo[]",
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1046 # but not about "char const *const foo" or "#define const const".
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1047 sc_redundant_const:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1048 @prohibit='\bconst\b[[:space:][:alnum:]]{2,}\bconst\b' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1049 halt='redundant "const" in declarations' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1050 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1051
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1052 sc_const_long_option:
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
1053 @prohibit='^ *static.*struct option ' \
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
1054 exclude='const struct option|struct option const' \
17055
672cf835d212 maint.mk: avoid redundant file name in message
Eric Blake <eblake@redhat.com>
parents: 17036
diff changeset
1055 halt='add "const" to the above declarations' \
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
1056 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1057
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1058 NEWS_hash = \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1059 $$($(SED) -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1060 $(srcdir)/NEWS \
12592
f46f6a6b078c maint.mk: ignore multi-line copyright in NEWS
Eric Blake <ebb9@byu.net>
parents: 12581
diff changeset
1061 | perl -0777 -pe \
f46f6a6b078c maint.mk: ignore multi-line copyright in NEWS
Eric Blake <ebb9@byu.net>
parents: 12581
diff changeset
1062 's/^Copyright.+?Free\sSoftware\sFoundation,\sInc\.\n//ms' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1063 | md5sum - \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1064 | $(SED) 's/ .*//')
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1065
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1066 # Ensure that we don't accidentally insert an entry into an old NEWS block.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1067 sc_immutable_NEWS:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1068 @if test -f $(srcdir)/NEWS; then \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1069 test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : || \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1070 { echo '$(ME): you have modified old NEWS' 1>&2; exit 1; }; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1071 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1072
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1073 # Update the hash stored above. Do this after each release and
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1074 # for any corrections to old entries.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1075 update-NEWS-hash: NEWS
11750
246d2e2f523d maint.mk: relax update-NEWS-hash to accept more syntax
Peter Simons <simons@cryp.to>
parents: 11736
diff changeset
1076 perl -pi -e 's/^(old_NEWS_hash[ \t]+:?=[ \t]+).*/$${1}'"$(NEWS_hash)/" \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1077 $(srcdir)/cfg.mk
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1078
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1079 # Ensure that we use only the standard $(VAR) notation,
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1080 # not @...@ in Makefile.am, now that we can rely on automake
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1081 # to emit a definition for each substituted variable.
14611
268395c9bfdf maint.mk: makefile_at_at_check extend and clean up
Jim Meyering <meyering@redhat.com>
parents: 14575
diff changeset
1082 # However, there is still one case in which @VAR@ use is not just
268395c9bfdf maint.mk: makefile_at_at_check extend and clean up
Jim Meyering <meyering@redhat.com>
parents: 14575
diff changeset
1083 # legitimate, but actually required: when augmenting an automake-defined
268395c9bfdf maint.mk: makefile_at_at_check extend and clean up
Jim Meyering <meyering@redhat.com>
parents: 14575
diff changeset
1084 # variable with a prefix. For example, gettext uses this:
268395c9bfdf maint.mk: makefile_at_at_check extend and clean up
Jim Meyering <meyering@redhat.com>
parents: 14575
diff changeset
1085 # MAKEINFO = env LANG= LC_MESSAGES= LC_ALL= LANGUAGE= @MAKEINFO@
268395c9bfdf maint.mk: makefile_at_at_check extend and clean up
Jim Meyering <meyering@redhat.com>
parents: 14575
diff changeset
1086 # otherwise, makeinfo would put German or French (current locale)
268395c9bfdf maint.mk: makefile_at_at_check extend and clean up
Jim Meyering <meyering@redhat.com>
parents: 14575
diff changeset
1087 # navigation hints in the otherwise-English documentation.
268395c9bfdf maint.mk: makefile_at_at_check extend and clean up
Jim Meyering <meyering@redhat.com>
parents: 14575
diff changeset
1088 #
12606
47c45341eca0 maint.mk: allow packages to add makefile @@ exceptions
Eric Blake <ebb9@byu.net>
parents: 12593
diff changeset
1089 # Allow the package to add exceptions via a hook in cfg.mk;
47c45341eca0 maint.mk: allow packages to add makefile @@ exceptions
Eric Blake <ebb9@byu.net>
parents: 12593
diff changeset
1090 # for example, @PRAGMA_SYSTEM_HEADER@ can be permitted by
47c45341eca0 maint.mk: allow packages to add makefile @@ exceptions
Eric Blake <ebb9@byu.net>
parents: 12593
diff changeset
1091 # setting this to ' && !/PRAGMA_SYSTEM_HEADER/'.
47c45341eca0 maint.mk: allow packages to add makefile @@ exceptions
Eric Blake <ebb9@byu.net>
parents: 12593
diff changeset
1092 _makefile_at_at_check_exceptions ?=
47c45341eca0 maint.mk: allow packages to add makefile @@ exceptions
Eric Blake <ebb9@byu.net>
parents: 12593
diff changeset
1093 sc_makefile_at_at_check:
16360
817d5933e56e maint.mk: also prohibit lower-case @var@
Eric Blake <eblake@redhat.com>
parents: 16331
diff changeset
1094 @perl -ne '/\@\w+\@/' \
817d5933e56e maint.mk: also prohibit lower-case @var@
Eric Blake <eblake@redhat.com>
parents: 16331
diff changeset
1095 -e ' && !/(\w+)\s+=.*\@\1\@$$/' \
14611
268395c9bfdf maint.mk: makefile_at_at_check extend and clean up
Jim Meyering <meyering@redhat.com>
parents: 14575
diff changeset
1096 -e ''$(_makefile_at_at_check_exceptions) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1097 -e 'and (print "$$ARGV:$$.: $$_"), $$m=1; END {exit !$$m}' \
14611
268395c9bfdf maint.mk: makefile_at_at_check extend and clean up
Jim Meyering <meyering@redhat.com>
parents: 14575
diff changeset
1098 $$($(VC_LIST_EXCEPT) | grep -E '(^|/)(Makefile\.am|[^/]+\.mk)$$') \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1099 && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1100
12384
8620ff59758a maint.mk: news-check: use grep -E
Jim Meyering <meyering@redhat.com>
parents: 12383
diff changeset
1101 news-check: NEWS
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1102 $(AM_V_GEN)if $(SED) -n $(news-check-lines-spec)p $< \
13393
50e9a2259a7d maint.mk: make the news-check rule more configurable
Peter Simons <simons@cryp.to>
parents: 13378
diff changeset
1103 | grep -E $(news-check-regexp) >/dev/null; then \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1104 :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1105 else \
12384
8620ff59758a maint.mk: news-check: use grep -E
Jim Meyering <meyering@redhat.com>
parents: 12383
diff changeset
1106 echo 'NEWS: $$(news-check-regexp) failed to match' 1>&2; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1107 exit 1; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1108 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1109
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1110 sc_makefile_TAB_only_indentation:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1111 @prohibit='^ [ ]{8}' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1112 in_vc_files='akefile|\.mk$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1113 halt='found TAB-8-space indentation' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1114 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1115
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1116 sc_m4_quote_check:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1117 @prohibit='(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1118 in_vc_files='(^configure\.ac|\.m4)$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1119 halt='quote the first arg to AC_DEF*' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1120 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1121
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1122 fix_po_file_diag = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1123 'you have changed the set of files with translatable diagnostics;\n\
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1124 apply the above patch\n'
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1125
17141
1070c9dd8d54 maint.mk: let packages tweak sc_po_check pattern
Eric Blake <eblake@redhat.com>
parents: 17109
diff changeset
1126 # Verify that all source files using _() (more specifically, files that
17143
78950b779f13 maint.mk: rename a new configurable variable
Jim Meyering <jim@meyering.net>
parents: 17141
diff changeset
1127 # match $(_gl_translatable_string_re)) are listed in po/POTFILES.in.
14433
00046711b6a6 maint.mk: let po check work in VPATH build
Eric Blake <eblake@redhat.com>
parents: 14432
diff changeset
1128 po_file ?= $(srcdir)/po/POTFILES.in
14704
0223f2067342 maintainer-makefile: make sc_po_check easier to tune
Eric Blake <eblake@redhat.com>
parents: 14699
diff changeset
1129 generated_files ?= $(srcdir)/lib/*.[ch]
17143
78950b779f13 maint.mk: rename a new configurable variable
Jim Meyering <jim@meyering.net>
parents: 17141
diff changeset
1130 _gl_translatable_string_re ?= \b(N?_|gettext *)\([^)"]*("|$$)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1131 sc_po_check:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1132 @if test -f $(po_file); then \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1133 grep -E -v '^(#|$$)' $(po_file) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1134 | grep -v '^src/false\.c$$' | sort > $@-1; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1135 files=; \
14704
0223f2067342 maintainer-makefile: make sc_po_check easier to tune
Eric Blake <eblake@redhat.com>
parents: 14699
diff changeset
1136 for file in $$($(VC_LIST_EXCEPT)) $(generated_files); do \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1137 test -r $$file || continue; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1138 case $$file in \
11710
e59c94826772 maint.mk: don't look for translatable strings in *.m4 or *.mk
Jim Meyering <meyering@redhat.com>
parents: 11646
diff changeset
1139 *.m4|*.mk) continue ;; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1140 *.?|*.??) ;; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1141 *) continue;; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1142 esac; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1143 case $$file in \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1144 *.[ch]) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1145 base=`expr " $$file" : ' \(.*\)\..'`; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1146 { test -f $$base.l || test -f $$base.y; } && continue;; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1147 esac; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1148 files="$$files $$file"; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1149 done; \
17143
78950b779f13 maint.mk: rename a new configurable variable
Jim Meyering <jim@meyering.net>
parents: 17141
diff changeset
1150 grep -E -l '$(_gl_translatable_string_re)' $$files \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1151 | $(SED) 's|^$(_dot_escaped_srcdir)/||' | sort -u > $@-2; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1152 diff -u -L $(po_file) -L $(po_file) $@-1 $@-2 \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1153 || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; }; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1154 rm -f $@-1 $@-2; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1155 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1156
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1157 # Sometimes it is useful to change the PATH environment variable
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1158 # in Makefiles. When doing so, it's better not to use the Unix-centric
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
1159 # path separator of ':', but rather the automake-provided '$(PATH_SEPARATOR)'.
17055
672cf835d212 maint.mk: avoid redundant file name in message
Eric Blake <eblake@redhat.com>
parents: 17036
diff changeset
1160 msg = 'Do not use ":" above; use $$(PATH_SEPARATOR) instead'
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1161 sc_makefile_path_separator_check:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1162 @prohibit='PATH[=].*:' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1163 in_vc_files='akefile|\.mk$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1164 halt=$(msg) \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1165 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1166
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
1167 # Check that 'make alpha' will not fail at the end of the process,
15811
bc3da814a8b3 maint.mk: adjust a release-related rule not to require use of gzip
Jim Meyering <meyering@redhat.com>
parents: 15660
diff changeset
1168 # i.e., when pkg-M.N.tar.xz already exists (either in "." or in ../release)
bc3da814a8b3 maint.mk: adjust a release-related rule not to require use of gzip
Jim Meyering <meyering@redhat.com>
parents: 15660
diff changeset
1169 # and is read-only.
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1170 writable-files:
17104
bcbe636cc12f maint.mk: silent rules
Akim Demaille <akim@lrde.epita.fr>
parents: 17091
diff changeset
1171 $(AM_V_GEN)if test -d $(release_archive_dir); then \
15811
bc3da814a8b3 maint.mk: adjust a release-related rule not to require use of gzip
Jim Meyering <meyering@redhat.com>
parents: 15660
diff changeset
1172 for file in $(DIST_ARCHIVES); do \
bc3da814a8b3 maint.mk: adjust a release-related rule not to require use of gzip
Jim Meyering <meyering@redhat.com>
parents: 15660
diff changeset
1173 for p in ./ $(release_archive_dir)/; do \
bc3da814a8b3 maint.mk: adjust a release-related rule not to require use of gzip
Jim Meyering <meyering@redhat.com>
parents: 15660
diff changeset
1174 test -e $$p$$file || continue; \
bc3da814a8b3 maint.mk: adjust a release-related rule not to require use of gzip
Jim Meyering <meyering@redhat.com>
parents: 15660
diff changeset
1175 test -w $$p$$file \
bc3da814a8b3 maint.mk: adjust a release-related rule not to require use of gzip
Jim Meyering <meyering@redhat.com>
parents: 15660
diff changeset
1176 || { echo ERROR: $$p$$file is not writable; fail=1; }; \
bc3da814a8b3 maint.mk: adjust a release-related rule not to require use of gzip
Jim Meyering <meyering@redhat.com>
parents: 15660
diff changeset
1177 done; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1178 done; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1179 test "$$fail" && exit 1 || : ; \
15811
bc3da814a8b3 maint.mk: adjust a release-related rule not to require use of gzip
Jim Meyering <meyering@redhat.com>
parents: 15660
diff changeset
1180 else :; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1181 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1182
13635
102e01a1ca93 maint.mk: avoid obscure sc_copyright_check failure in coreutils
Jim Meyering <meyering@redhat.com>
parents: 13393
diff changeset
1183 v_etc_file = $(gnulib_dir)/lib/version-etc.c
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1184 sample-test = tests/sample-test
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1185 texi = doc/$(PACKAGE).texi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1186 # Make sure that the copyright date in $(v_etc_file) is up to date.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1187 # Do the same for the $(sample-test) and the main doc/.texi file.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1188 sc_copyright_check:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1189 @require='enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1190 in_files=$(v_etc_file) \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1191 halt='out of date copyright in $(v_etc_file); update it' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1192 $(_sc_search_regexp)
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1193 @require='# Copyright \(C\) '$$(date +%Y)' Free' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1194 in_vc_files=$(sample-test) \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1195 halt='out of date copyright in $(sample-test); update it' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1196 $(_sc_search_regexp)
17649
eb299235d783 maint.mk: Relax the copyright check to cater for non FSF projects
Assaf Gordon <agordon@wi.mit.edu>
parents: 17613
diff changeset
1197 @require='Copyright @copyright\{\} .*'$$(date +%Y) \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1198 in_vc_files=$(texi) \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1199 halt='out of date copyright in $(texi); update it' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1200 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1201
13185
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1202 # If tests/help-version exists and seems to be new enough, assume that its
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1203 # use of init.sh and path_prepend_ is correct, and ensure that every other
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1204 # use of init.sh is identical.
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1205 # This is useful because help-version cross-checks prog --version
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1206 # with $(VERSION), which verifies that its path_prepend_ invocation
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1207 # sets PATH correctly. This is an inexpensive way to ensure that
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1208 # the other init.sh-using tests also get it right.
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1209 _hv_file ?= $(srcdir)/tests/help-version
13331
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1210 _hv_regex_weak ?= ^ *\. .*/init\.sh"
15315
94b3a0b47189 maint.mk: add syntax-check to avoid char[PATH_MAX]
Eric Blake <eblake@redhat.com>
parents: 14864
diff changeset
1211 # Fix syntax-highlighters "
13331
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1212 _hv_regex_strong ?= ^ *\. "\$${srcdir=\.}/init\.sh"
13185
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1213 sc_cross_check_PATH_usage_in_tests:
13192
ba35e9647b3b maint.mk: print better diagnostic when there is no $(_hv_file)
Jim Meyering <meyering@redhat.com>
parents: 13185
diff changeset
1214 @if test -f $(_hv_file); then \
13331
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1215 grep -l 'VERSION mismatch' $(_hv_file) >/dev/null \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1216 || { echo "$@: skipped: no such file: $(_hv_file)" 1>&2; \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1217 exit 0; }; \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1218 grep -lE '$(_hv_regex_strong)' $(_hv_file) >/dev/null \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1219 || { echo "$@: $(_hv_file) lacks conforming use of init.sh" 1>&2; \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1220 exit 1; }; \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1221 good=$$(grep -E '$(_hv_regex_strong)' $(_hv_file)); \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1222 grep -LFx "$$good" \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1223 $$(grep -lE '$(_hv_regex_weak)' $$($(VC_LIST_EXCEPT))) \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1224 | grep . && \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1225 { echo "$(ME): the above files use path_prepend_ inconsistently" \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1226 1>&2; exit 1; } || :; \
13185
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1227 fi
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1228
16134
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1229 # BRE regex of file contents to identify a test script.
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1230 _test_script_regex ?= \<init\.sh\>
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1231
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1232 # In tests, use "compare expected actual", not the reverse.
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1233 sc_prohibit_reversed_compare_failure:
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1234 @prohibit='\<compare [^ ]+ ([^ ]*exp|/dev/null)' \
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1235 containing='$(_test_script_regex)' \
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1236 halt='reversed compare arguments' \
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1237 $(_sc_search_regexp)
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1238
12816
7a4d2814715b syntax-check: detect incorrect boolean macro values in config.h
Pádraig Brady <P@draigBrady.com>
parents: 12773
diff changeset
1239 # #if HAVE_... will evaluate to false for any non numeric string.
7a4d2814715b syntax-check: detect incorrect boolean macro values in config.h
Pádraig Brady <P@draigBrady.com>
parents: 12773
diff changeset
1240 # That would be flagged by using -Wundef, however gnulib currently
7a4d2814715b syntax-check: detect incorrect boolean macro values in config.h
Pádraig Brady <P@draigBrady.com>
parents: 12773
diff changeset
1241 # tests many undefined macros, and so we can't enable that option.
7a4d2814715b syntax-check: detect incorrect boolean macro values in config.h
Pádraig Brady <P@draigBrady.com>
parents: 12773
diff changeset
1242 # So at least preclude common boolean strings as macro values.
7a4d2814715b syntax-check: detect incorrect boolean macro values in config.h
Pádraig Brady <P@draigBrady.com>
parents: 12773
diff changeset
1243 sc_Wundef_boolean:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1244 @prohibit='^#define.*(yes|no|true|false)$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1245 in_files='$(CONFIG_INCLUDE)' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1246 halt='Use 0 or 1 for macro values' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1247 $(_sc_search_regexp)
12816
7a4d2814715b syntax-check: detect incorrect boolean macro values in config.h
Pádraig Brady <P@draigBrady.com>
parents: 12773
diff changeset
1248
15315
94b3a0b47189 maint.mk: add syntax-check to avoid char[PATH_MAX]
Eric Blake <eblake@redhat.com>
parents: 14864
diff changeset
1249 # Even if you use pathmax.h to guarantee that PATH_MAX is defined, it might
15316
b62cfb73a10c maint.mk: test further PATH_MAX issues
Eric Blake <eblake@redhat.com>
parents: 15315
diff changeset
1250 # not be constant, or might overflow a stack. In general, use PATH_MAX as
b62cfb73a10c maint.mk: test further PATH_MAX issues
Eric Blake <eblake@redhat.com>
parents: 15315
diff changeset
1251 # a limit, not an array or alloca size.
b62cfb73a10c maint.mk: test further PATH_MAX issues
Eric Blake <eblake@redhat.com>
parents: 15315
diff changeset
1252 sc_prohibit_path_max_allocation:
17089
60234c636185 maint.mk: sc_prohibit_path_max_allocation: don't FP for UNIX_PATH_MAX
Jim Meyering <meyering@redhat.com>
parents: 17088
diff changeset
1253 @prohibit='(\balloca *\([^)]*|\[[^]]*)\bPATH_MAX' \
15316
b62cfb73a10c maint.mk: test further PATH_MAX issues
Eric Blake <eblake@redhat.com>
parents: 15315
diff changeset
1254 halt='Avoid stack allocations of size PATH_MAX' \
15315
94b3a0b47189 maint.mk: add syntax-check to avoid char[PATH_MAX]
Eric Blake <eblake@redhat.com>
parents: 14864
diff changeset
1255 $(_sc_search_regexp)
94b3a0b47189 maint.mk: add syntax-check to avoid char[PATH_MAX]
Eric Blake <eblake@redhat.com>
parents: 14864
diff changeset
1256
12827
d844fd639561 maint: add a syntax-check rule to check for vulnerable Makefile.in
Jim Meyering <meyering@redhat.com>
parents: 12816
diff changeset
1257 sc_vulnerable_makefile_CVE-2009-4029:
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1258 @prohibit='perm -777 -exec chmod a\+rwx|chmod 777 \$$\(distdir\)' \
17036
73562b8a8559 maintainer-makefile: Fix syntax error with dash.
Simon Josefsson <simon@josefsson.org>
parents: 17033
diff changeset
1259 in_files='(^|/)Makefile\.in$$' \
13704
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
1260 halt=$$(printf '%s\n' \
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
1261 'the above files are vulnerable; beware of running' \
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
1262 ' "make dist*" rules, and upgrade to fixed automake' \
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
1263 ' see http://bugzilla.redhat.com/542609 for details') \
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1264 $(_sc_search_regexp)
12827
d844fd639561 maint: add a syntax-check rule to check for vulnerable Makefile.in
Jim Meyering <meyering@redhat.com>
parents: 12816
diff changeset
1265
16979
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1266 sc_vulnerable_makefile_CVE-2012-3386:
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1267 @prohibit='chmod a\+w \$$\(distdir\)' \
17036
73562b8a8559 maintainer-makefile: Fix syntax error with dash.
Simon Josefsson <simon@josefsson.org>
parents: 17033
diff changeset
1268 in_files='(^|/)Makefile\.in$$' \
16979
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1269 halt=$$(printf '%s\n' \
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1270 'the above files are vulnerable; beware of running' \
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1271 ' "make distcheck", and upgrade to fixed automake' \
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1272 ' see http://bugzilla.redhat.com/CVE-2012-3386 for details') \
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1273 $(_sc_search_regexp)
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1274
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1275 vc-diff-check:
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1276 $(AM_V_GEN)(unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || :
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1277 $(AM_V_at)if test -s vc-diffs; then \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1278 cat vc-diffs; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1279 echo "Some files are locally modified:" 1>&2; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1280 exit 1; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1281 else \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1282 rm vc-diffs; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1283 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1284
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1285 rel-files = $(DIST_ARCHIVES)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1286
11575
cfe435cf936c maint.mk: allow gnulib_dir in VPATH build
Eric Blake <ebb9@byu.net>
parents: 11573
diff changeset
1287 gnulib_dir ?= $(srcdir)/gnulib
17529
5a97f701bcef maint.mk: restore functionality removed by recent change
Jim Meyering <meyering@fb.com>
parents: 17527
diff changeset
1288 gnulib-version = $$(cd $(gnulib_dir) \
5a97f701bcef maint.mk: restore functionality removed by recent change
Jim Meyering <meyering@fb.com>
parents: 17527
diff changeset
1289 && { git describe || git rev-parse --short=10 HEAD; } )
11501
5223ecd9ec17 maint.mk: import improvements from m4
Eric Blake <ebb9@byu.net>
parents: 11500
diff changeset
1290 bootstrap-tools ?= autoconf,automake,gnulib
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1291
17532
f5ce1e130606 maint.mk: prefer gpgv2 over gpgv
Jim Meyering <meyering@fb.com>
parents: 17529
diff changeset
1292 gpgv = $$(gpgv2 --version >/dev/null && echo gpgv2 || echo gpgv)
12539
dafd055586ef maint.mk: don't require explicit gpg_key_ID in cfg.mk
Jim Meyering <meyering@redhat.com>
parents: 12538
diff changeset
1293 # If it's not already specified, derive the GPG key ID from
dafd055586ef maint.mk: don't require explicit gpg_key_ID in cfg.mk
Jim Meyering <meyering@redhat.com>
parents: 12538
diff changeset
1294 # the signed tag we've just applied to mark this release.
17008
631997178451 maint.mk: absolute VPATH build fix
Akim Demaille <akim@lrde.epita.fr>
parents: 17005
diff changeset
1295 gpg_key_ID ?= \
631997178451 maint.mk: absolute VPATH build fix
Akim Demaille <akim@lrde.epita.fr>
parents: 17005
diff changeset
1296 $$(cd $(srcdir) \
631997178451 maint.mk: absolute VPATH build fix
Akim Demaille <akim@lrde.epita.fr>
parents: 17005
diff changeset
1297 && git cat-file tag v$(VERSION) \
17532
f5ce1e130606 maint.mk: prefer gpgv2 over gpgv
Jim Meyering <meyering@fb.com>
parents: 17529
diff changeset
1298 | $(gpgv) --status-fd 1 --keyring /dev/null - - 2>/dev/null \
17008
631997178451 maint.mk: absolute VPATH build fix
Akim Demaille <akim@lrde.epita.fr>
parents: 17005
diff changeset
1299 | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}')
12539
dafd055586ef maint.mk: don't require explicit gpg_key_ID in cfg.mk
Jim Meyering <meyering@redhat.com>
parents: 12538
diff changeset
1300
13306
3b72fc82a799 maint.mk, announce-gen: allow project-specific announcement mail headers
Jim Meyering <meyering@redhat.com>
parents: 13304
diff changeset
1301 translation_project_ ?= coordinator@translationproject.org
14699
6b83b217fcdd maint.mk: use info-gnu@ as the default only for a stable release
Jim Meyering <meyering@redhat.com>
parents: 14651
diff changeset
1302
6b83b217fcdd maint.mk: use info-gnu@ as the default only for a stable release
Jim Meyering <meyering@redhat.com>
parents: 14651
diff changeset
1303 # Make info-gnu the default only for a stable release.
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1304 announcement_Cc_stable = $(translation_project_), $(PACKAGE_BUGREPORT)
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1305 announcement_mail_headers_stable = \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1306 To: info-gnu@gnu.org \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1307 Cc: $(announcement_Cc_) \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1308 Mail-Followup-To: $(PACKAGE_BUGREPORT)
13306
3b72fc82a799 maint.mk, announce-gen: allow project-specific announcement mail headers
Jim Meyering <meyering@redhat.com>
parents: 13304
diff changeset
1309
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1310 announcement_Cc_alpha = $(translation_project_)
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1311 announcement_mail_headers_alpha = \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1312 To: $(PACKAGE_BUGREPORT) \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1313 Cc: $(announcement_Cc_)
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1314
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1315 announcement_mail_Cc_beta = $(announcement_mail_Cc_alpha)
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1316 announcement_mail_headers_beta = $(announcement_mail_headers_alpha)
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1317
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1318 announcement_mail_Cc_ ?= $(announcement_mail_Cc_$(release-type))
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1319 announcement_mail_headers_ ?= $(announcement_mail_headers_$(release-type))
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1320 announcement: NEWS ChangeLog $(rel-files)
17104
bcbe636cc12f maint.mk: silent rules
Akim Demaille <akim@lrde.epita.fr>
parents: 17091
diff changeset
1321 # Not $(AM_V_GEN) since the output of this command serves as
17202
5b730fea4cab maint.mk: typofix in comments
Stefano Lattarini <stefano.lattarini@gmail.com>
parents: 17201
diff changeset
1322 # announcement message: it would start with " GEN announcement".
17104
bcbe636cc12f maint.mk: silent rules
Akim Demaille <akim@lrde.epita.fr>
parents: 17091
diff changeset
1323 $(AM_V_at)$(srcdir)/$(_build-aux)/announce-gen \
13306
3b72fc82a799 maint.mk, announce-gen: allow project-specific announcement mail headers
Jim Meyering <meyering@redhat.com>
parents: 13304
diff changeset
1324 --mail-headers='$(announcement_mail_headers_)' \
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
1325 --release-type=$(release-type) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1326 --package=$(PACKAGE) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1327 --prev=$(PREV_VERSION) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1328 --curr=$(VERSION) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1329 --gpg-key-id=$(gpg_key_ID) \
16907
3cd0e20dcf8e announce-gen: VPATH issues
Akim Demaille <akim@lrde.epita.fr>
parents: 16904
diff changeset
1330 --srcdir=$(srcdir) \
12581
25232b487199 maint: support 'make announcement' from a VPATH build
Eric Blake <ebb9@byu.net>
parents: 12576
diff changeset
1331 --news=$(srcdir)/NEWS \
11501
5223ecd9ec17 maint.mk: import improvements from m4
Eric Blake <ebb9@byu.net>
parents: 11500
diff changeset
1332 --bootstrap-tools=$(bootstrap-tools) \
16554
dad9ad605e56 maint.mk: allow announcement for non-gnulib project
Eric Blake <eblake@redhat.com>
parents: 16553
diff changeset
1333 $$(case ,$(bootstrap-tools), in (*,gnulib,*) \
dad9ad605e56 maint.mk: allow announcement for non-gnulib project
Eric Blake <eblake@redhat.com>
parents: 16553
diff changeset
1334 echo --gnulib-version=$(gnulib-version);; esac) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1335 --no-print-checksums \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1336 $(addprefix --url-dir=, $(url_dir_list))
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1337
17021
37799b20257d maint.mk: a "release-commit" wrapper to do-release-commit-and-tag
Akim Demaille <akim@lrde.epita.fr>
parents: 17018
diff changeset
1338 .PHONY: release-commit
37799b20257d maint.mk: a "release-commit" wrapper to do-release-commit-and-tag
Akim Demaille <akim@lrde.epita.fr>
parents: 17018
diff changeset
1339 release-commit:
37799b20257d maint.mk: a "release-commit" wrapper to do-release-commit-and-tag
Akim Demaille <akim@lrde.epita.fr>
parents: 17018
diff changeset
1340 $(AM_V_GEN)cd $(srcdir) \
37799b20257d maint.mk: a "release-commit" wrapper to do-release-commit-and-tag
Akim Demaille <akim@lrde.epita.fr>
parents: 17018
diff changeset
1341 && $(_build-aux)/do-release-commit-and-tag \
37799b20257d maint.mk: a "release-commit" wrapper to do-release-commit-and-tag
Akim Demaille <akim@lrde.epita.fr>
parents: 17018
diff changeset
1342 -C $(abs_builddir) $(RELEASE)
37799b20257d maint.mk: a "release-commit" wrapper to do-release-commit-and-tag
Akim Demaille <akim@lrde.epita.fr>
parents: 17018
diff changeset
1343
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1344 ## ---------------- ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1345 ## Updating files. ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1346 ## ---------------- ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1347
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1348 ftp-gnu = ftp://ftp.gnu.org/gnu
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1349 www-gnu = http://www.gnu.org
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1350
12864
9ab78f8f0368 maint.mk: allow the default upload destination dir to be overridden
Jim Meyering <meyering@redhat.com>
parents: 12863
diff changeset
1351 upload_dest_dir_ ?= $(PACKAGE)
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1352 upload_command = \
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1353 $(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1354 --to $(gnu_rel_host):$(upload_dest_dir_) \
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1355 $(rel-files)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1356 emit_upload_commands:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1357 @echo =====================================
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1358 @echo =====================================
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1359 @echo '$(upload_command)'
12538
a8059f620e8f maint.mk: create announcement template in ~/, not in /tmp
Jim Meyering <meyering@redhat.com>
parents: 12443
diff changeset
1360 @echo '# send the ~/announce-$(my_distdir) e-mail'
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1361 @echo =====================================
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1362 @echo =====================================
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1363
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1364 .PHONY: upload
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1365 upload:
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1366 $(AM_V_GEN)$(upload_command)
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1367
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1368 define emit-commit-log
15587
a9fbdd1023d5 maint.mk: mark the post-release commit log with "maint: " prefix
Jim Meyering <meyering@redhat.com>
parents: 15493
diff changeset
1369 printf '%s\n' 'maint: post-release administrivia' '' \
a9fbdd1023d5 maint.mk: mark the post-release commit log with "maint: " prefix
Jim Meyering <meyering@redhat.com>
parents: 15493
diff changeset
1370 '* NEWS: Add header line for next release.' \
a9fbdd1023d5 maint.mk: mark the post-release commit log with "maint: " prefix
Jim Meyering <meyering@redhat.com>
parents: 15493
diff changeset
1371 '* .prev-version: Record previous version.' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1372 '* cfg.mk (old_NEWS_hash): Auto-update.'
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1373 endef
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1374
11534
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1375 .PHONY: no-submodule-changes
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1376 no-submodule-changes:
17244
3b0b0f3b01a6 maint.mk: handle missing git with more grace
Peter Rosin <peda@lysator.liu.se>
parents: 17202
diff changeset
1377 $(AM_V_GEN)if test -d $(srcdir)/.git \
3b0b0f3b01a6 maint.mk: handle missing git with more grace
Peter Rosin <peda@lysator.liu.se>
parents: 17202
diff changeset
1378 && git --version >/dev/null 2>&1; then \
11547
3f43faadaf9d maint: make the new no-submodule-changes rule VPATH-safe
Eric Blake <ebb9@byu.net>
parents: 11534
diff changeset
1379 diff=$$(cd $(srcdir) && git submodule -q foreach \
3f43faadaf9d maint: make the new no-submodule-changes rule VPATH-safe
Eric Blake <ebb9@byu.net>
parents: 11534
diff changeset
1380 git diff-index --name-only HEAD) \
11534
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1381 || exit 1; \
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1382 case $$diff in '') ;; \
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1383 *) echo '$(ME): submodule files are locally modified:'; \
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1384 echo "$$diff"; exit 1;; esac; \
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1385 else \
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1386 : ; \
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1387 fi
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1388
14137
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1389 submodule-checks ?= no-submodule-changes public-submodule-commit
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1390
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1391 # Ensure that each sub-module commit we're using is public.
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1392 # Without this, it is too easy to tag and release code that
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1393 # cannot be built from a fresh clone.
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1394 .PHONY: public-submodule-commit
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1395 public-submodule-commit:
17244
3b0b0f3b01a6 maint.mk: handle missing git with more grace
Peter Rosin <peda@lysator.liu.se>
parents: 17202
diff changeset
1396 $(AM_V_GEN)if test -d $(srcdir)/.git \
3b0b0f3b01a6 maint.mk: handle missing git with more grace
Peter Rosin <peda@lysator.liu.se>
parents: 17202
diff changeset
1397 && git --version >/dev/null 2>&1; then \
14190
6699cf2b13db maint.mk: improve the public-submodule-commit rule
Jim Meyering <meyering@redhat.com>
parents: 14140
diff changeset
1398 cd $(srcdir) && \
17162
f54c37d872ca maint.mk: avoid gratuitous failure
Theophile Ranquet <ranquet@lrde.epita.fr>
parents: 17143
diff changeset
1399 git submodule --quiet foreach \
17579
b8e838c6fffc maint: fix public-submodule-commit to work with newer git
Jim Meyering <meyering@fb.com>
parents: 17576
diff changeset
1400 'test "$$(git rev-parse "$$sha1")" \
b8e838c6fffc maint: fix public-submodule-commit to work with newer git
Jim Meyering <meyering@fb.com>
parents: 17576
diff changeset
1401 = "$$(git merge-base origin "$$sha1")"' \
14137
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1402 || { echo '$(ME): found non-public submodule commit' >&2; \
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1403 exit 1; }; \
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1404 else \
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1405 : ; \
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1406 fi
14199
d6780f2a0ebc maint.mk: make "check" depend on public-submodule-commit by default
Jim Meyering <meyering@redhat.com>
parents: 14190
diff changeset
1407 # This rule has a high enough utility/cost ratio that it should be a
d6780f2a0ebc maint.mk: make "check" depend on public-submodule-commit by default
Jim Meyering <meyering@redhat.com>
parents: 14190
diff changeset
1408 # dependent of "check" by default. However, some of us do occasionally
d6780f2a0ebc maint.mk: make "check" depend on public-submodule-commit by default
Jim Meyering <meyering@redhat.com>
parents: 14190
diff changeset
1409 # commit a temporary change that deliberately points to a non-public
d6780f2a0ebc maint.mk: make "check" depend on public-submodule-commit by default
Jim Meyering <meyering@redhat.com>
parents: 14190
diff changeset
1410 # submodule commit, and want to be able to use rules like "make check".
14201
0efdc4f3700e maint.mk: adjust variable name to be consistent with other gl_ vars
Jim Meyering <meyering@redhat.com>
parents: 14199
diff changeset
1411 # In that case, run e.g., "make check gl_public_submodule_commit="
14199
d6780f2a0ebc maint.mk: make "check" depend on public-submodule-commit by default
Jim Meyering <meyering@redhat.com>
parents: 14190
diff changeset
1412 # to disable this test.
14201
0efdc4f3700e maint.mk: adjust variable name to be consistent with other gl_ vars
Jim Meyering <meyering@redhat.com>
parents: 14199
diff changeset
1413 gl_public_submodule_commit ?= public-submodule-commit
0efdc4f3700e maint.mk: adjust variable name to be consistent with other gl_ vars
Jim Meyering <meyering@redhat.com>
parents: 14199
diff changeset
1414 check: $(gl_public_submodule_commit)
14137
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1415
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1416 .PHONY: alpha beta stable release
12083
b7b81ca175f4 maint.mk: requiring "make major" was annoying, for a "minor" release.
Jim Meyering <meyering@redhat.com>
parents: 12035
diff changeset
1417 ALL_RECURSIVE_TARGETS += alpha beta stable
14137
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1418 alpha beta stable: $(local-check) writable-files $(submodule-checks)
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1419 $(AM_V_GEN)test $@ = stable \
12083
b7b81ca175f4 maint.mk: requiring "make major" was annoying, for a "minor" release.
Jim Meyering <meyering@redhat.com>
parents: 12035
diff changeset
1420 && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1421 || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1422 || :
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1423 $(AM_V_at)$(MAKE) vc-diff-check
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1424 $(AM_V_at)$(MAKE) news-check
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1425 $(AM_V_at)$(MAKE) distcheck
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1426 $(AM_V_at)$(MAKE) dist
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1427 $(AM_V_at)$(MAKE) $(release-prep-hook) RELEASE_TYPE=$@
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1428 $(AM_V_at)$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
12443
3a97f22a64eb maint.mk: allow a project to override release-prep commands
Alfred M. Szmidt <ams@gnu.org>
parents: 12441
diff changeset
1429
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1430 release:
17527
909b44293f8e maint.mk: fix "release" target to build _version
Jim Meyering <meyering@fb.com>
parents: 17526
diff changeset
1431 $(AM_V_GEN)$(MAKE) _version
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1432 $(AM_V_GEN)$(MAKE) $(release-type)
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1433
12443
3a97f22a64eb maint.mk: allow a project to override release-prep commands
Alfred M. Szmidt <ams@gnu.org>
parents: 12441
diff changeset
1434 # Override this in cfg.mk if you follow different procedures.
3a97f22a64eb maint.mk: allow a project to override release-prep commands
Alfred M. Szmidt <ams@gnu.org>
parents: 12441
diff changeset
1435 release-prep-hook ?= release-prep
3a97f22a64eb maint.mk: allow a project to override release-prep commands
Alfred M. Szmidt <ams@gnu.org>
parents: 12441
diff changeset
1436
13871
8c865631b168 maint.mk: rename variable: s/noteworthy/gl_noteworthy_news_/
Jim Meyering <meyering@redhat.com>
parents: 13865
diff changeset
1437 gl_noteworthy_news_ = * Noteworthy changes in release ?.? (????-??-??) [?]
12443
3a97f22a64eb maint.mk: allow a project to override release-prep commands
Alfred M. Szmidt <ams@gnu.org>
parents: 12441
diff changeset
1438 .PHONY: release-prep
3a97f22a64eb maint.mk: allow a project to override release-prep commands
Alfred M. Szmidt <ams@gnu.org>
parents: 12441
diff changeset
1439 release-prep:
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
1440 $(AM_V_GEN)$(MAKE) --no-print-directory -s announcement \
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1441 > ~/announce-$(my_distdir)
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1442 $(AM_V_at)if test -d $(release_archive_dir); then \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1443 ln $(rel-files) $(release_archive_dir); \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1444 chmod a-w $(rel-files); \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1445 fi
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1446 $(AM_V_at)echo $(VERSION) > $(prev_version_file)
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1447 $(AM_V_at)$(MAKE) update-NEWS-hash
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1448 $(AM_V_at)perl -pi \
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1449 -e '$$. == 3 and print "$(gl_noteworthy_news_)\n\n\n"' \
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1450 $(srcdir)/NEWS
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1451 $(AM_V_at)msg=$$($(emit-commit-log)) || exit 1; \
17013
12eb56636194 maint.mk: avoid a sub-shell
Jim Meyering <meyering@redhat.com>
parents: 17012
diff changeset
1452 cd $(srcdir) && $(VC) commit -m "$$msg" -a
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1453
13309
eeb72cb4f562 maint.mk: allow to pass options to gendocs.sh
Jim Meyering <meyering@redhat.com>
parents: 13306
diff changeset
1454 # Override this with e.g., -s $(srcdir)/some_other_name.texi
eeb72cb4f562 maint.mk: allow to pass options to gendocs.sh
Jim Meyering <meyering@redhat.com>
parents: 13306
diff changeset
1455 # if the default $(PACKAGE)-derived name doesn't apply.
eeb72cb4f562 maint.mk: allow to pass options to gendocs.sh
Jim Meyering <meyering@redhat.com>
parents: 13306
diff changeset
1456 gendocs_options_ ?=
eeb72cb4f562 maint.mk: allow to pass options to gendocs.sh
Jim Meyering <meyering@redhat.com>
parents: 13306
diff changeset
1457
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1458 .PHONY: web-manual
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1459 web-manual:
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1460 $(AM_V_GEN)test -z "$(manual_title)" \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1461 && { echo define manual_title in cfg.mk 1>&2; exit 1; } || :
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1462 $(AM_V_at)cd '$(srcdir)/doc'; \
16000
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
1463 $(SHELL) ../$(_build-aux)/gendocs.sh $(gendocs_options_) \
13309
eeb72cb4f562 maint.mk: allow to pass options to gendocs.sh
Jim Meyering <meyering@redhat.com>
parents: 13306
diff changeset
1464 -o '$(abs_builddir)/doc/manual' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1465 --email $(PACKAGE_BUGREPORT) $(PACKAGE) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1466 "$(PACKAGE_NAME) - $(manual_title)"
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1467 $(AM_V_at)echo " *** Upload the doc/manual directory to web-cvs."
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1468
17017
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1469 .PHONY: web-manual-update
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1470 web-manual-update:
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1471 $(AM_V_GEN)cd $(srcdir) \
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1472 && $(_build-aux)/gnu-web-doc-update -C $(abs_builddir)
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1473
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1474
10738
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1475 # Code Coverage
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1476
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1477 init-coverage:
11406
ae9bcb808cfd maint.mk: really add $(AM_MAKEFLAGS)
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
parents: 11405
diff changeset
1478 $(MAKE) $(AM_MAKEFLAGS) clean
10738
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1479 lcov --directory . --zerocounters
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1480
10757
0affc3e42aa9 maint.mk: Use --coverage.
Simon Josefsson <simon@josefsson.org>
parents: 10738
diff changeset
1481 COVERAGE_CCOPTS ?= "-g --coverage"
10738
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1482 COVERAGE_OUT ?= doc/coverage
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1483
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1484 build-coverage:
11406
ae9bcb808cfd maint.mk: really add $(AM_MAKEFLAGS)
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
parents: 11405
diff changeset
1485 $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS)
ae9bcb808cfd maint.mk: really add $(AM_MAKEFLAGS)
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
parents: 11405
diff changeset
1486 $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) check
10738
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1487 mkdir -p $(COVERAGE_OUT)
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1488 lcov --directory . --output-file $(COVERAGE_OUT)/$(PACKAGE).info \
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1489 --capture
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1490
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1491 gen-coverage:
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1492 genhtml --output-directory $(COVERAGE_OUT) \
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1493 $(COVERAGE_OUT)/$(PACKAGE).info \
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1494 --highlight --frames --legend \
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1495 --title "$(PACKAGE_NAME)"
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1496
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1497 coverage: init-coverage build-coverage gen-coverage
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1498
17005
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1499 # Some projects carry local adjustments for gnulib modules via patches in
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1500 # a gnulib patch directory whose default name is gl/ (defined in bootstrap
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1501 # via local_gl_dir=gl). Those patches become stale as the originals evolve
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1502 # in gnulib. Use this rule to refresh any stale patches. It applies each
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1503 # patch to the original in $(gnulib_dir) and uses the temporary result to
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1504 # generate a fuzz-free .diff file. If you customize the name of your local
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1505 # gnulib patch directory via bootstrap.conf, this rule detects that name.
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1506 # Run this from a non-VPATH (i.e., srcdir) build directory.
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1507 .PHONY: refresh-gnulib-patches
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1508 refresh-gnulib-patches:
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1509 gl=gl; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1510 if test -f bootstrap.conf; then \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1511 t=$$(perl -lne '/^\s*local_gl_dir=(\S+)/ and $$d=$$1;' \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1512 -e 'END{defined $$d and print $$d}' bootstrap.conf); \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1513 test -n "$$t" && gl=$$t; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1514 fi; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1515 for diff in $$(cd $$gl; git ls-files | grep '\.diff$$'); do \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1516 b=$$(printf %s "$$diff"|$(SED) 's/\.diff$$//'); \
17005
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1517 VERSION_CONTROL=none \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1518 patch "$(gnulib_dir)/$$b" "$$gl/$$diff" || exit 1; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1519 ( cd $(gnulib_dir) || exit 1; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1520 git diff "$$b" > "../$$gl/$$diff"; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1521 git checkout $$b ) || exit 1; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1522 done
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1523
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1524 # Update gettext files.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1525 PACKAGE ?= $(shell basename $(PWD))
11484
489151a3b578 maintainer-makefile: (PO_DOMAIN): New variable, allows overriding of gettext domain.
Simon Josefsson <simon@josefsson.org>
parents: 11468
diff changeset
1526 PO_DOMAIN ?= $(PACKAGE)
489151a3b578 maintainer-makefile: (PO_DOMAIN): New variable, allows overriding of gettext domain.
Simon Josefsson <simon@josefsson.org>
parents: 11468
diff changeset
1527 POURL = http://translationproject.org/latest/$(PO_DOMAIN)/
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1528 PODIR ?= po
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1529 refresh-po:
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1530 rm -f $(PODIR)/*.po && \
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1531 echo "$(ME): getting translations into po (please ignore the robots.txt ERROR 404)..." && \
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1532 wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1533 echo 'en@boldquot' > $(PODIR)/LINGUAS && \
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1534 echo 'en@quot' >> $(PODIR)/LINGUAS && \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1535 ls $(PODIR)/*.po | $(SED) 's/\.po//;s,$(PODIR)/,,' | \
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1536 sort >> $(PODIR)/LINGUAS
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1537
13286
bacd8565eeaa top/maint.mk (indent): Run twice to produce idempotent results.
Simon Josefsson <simon@josefsson.org>
parents: 13278
diff changeset
1538 # Running indent once is not idempotent, but running it twice is.
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1539 INDENT_SOURCES ?= $(C_SOURCES)
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1540 .PHONY: indent
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1541 indent:
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1542 indent $(INDENT_SOURCES)
13286
bacd8565eeaa top/maint.mk (indent): Run twice to produce idempotent results.
Simon Josefsson <simon@josefsson.org>
parents: 13278
diff changeset
1543 indent $(INDENT_SOURCES)
11776
9deb84e458cb maint.mk: add a copyright-updating rule
Jim Meyering <meyering@redhat.com>
parents: 11750
diff changeset
1544
11834
5c2855361aa1 maint.mk: support update-copyright-env
Joel E. Denny <jdenny@clemson.edu>
parents: 11788
diff changeset
1545 # If you want to set UPDATE_COPYRIGHT_* environment variables,
5c2855361aa1 maint.mk: support update-copyright-env
Joel E. Denny <jdenny@clemson.edu>
parents: 11788
diff changeset
1546 # put the assignments in this variable.
5c2855361aa1 maint.mk: support update-copyright-env
Joel E. Denny <jdenny@clemson.edu>
parents: 11788
diff changeset
1547 update-copyright-env ?=
5c2855361aa1 maint.mk: support update-copyright-env
Joel E. Denny <jdenny@clemson.edu>
parents: 11788
diff changeset
1548
11776
9deb84e458cb maint.mk: add a copyright-updating rule
Jim Meyering <meyering@redhat.com>
parents: 11750
diff changeset
1549 # Run this rule once per year (usually early in January)
9deb84e458cb maint.mk: add a copyright-updating rule
Jim Meyering <meyering@redhat.com>
parents: 11750
diff changeset
1550 # to update all FSF copyright year lists in your project.
11836
4103ca3d0881 maint.mk: simplify update-copyright rule
Eric Blake <ebb9@byu.net>
parents: 11834
diff changeset
1551 # If you have an additional project-specific rule,
4103ca3d0881 maint.mk: simplify update-copyright rule
Eric Blake <ebb9@byu.net>
parents: 11834
diff changeset
1552 # add it in cfg.mk along with a line 'update-copyright: prereq'.
4103ca3d0881 maint.mk: simplify update-copyright rule
Eric Blake <ebb9@byu.net>
parents: 11834
diff changeset
1553 # By default, exclude all variants of COPYING; you can also
4103ca3d0881 maint.mk: simplify update-copyright rule
Eric Blake <ebb9@byu.net>
parents: 11834
diff changeset
1554 # add exemptions (such as ChangeLog..* for rotated change logs)
4103ca3d0881 maint.mk: simplify update-copyright rule
Eric Blake <ebb9@byu.net>
parents: 11834
diff changeset
1555 # in the file .x-update-copyright.
11776
9deb84e458cb maint.mk: add a copyright-updating rule
Jim Meyering <meyering@redhat.com>
parents: 11750
diff changeset
1556 .PHONY: update-copyright
11836
4103ca3d0881 maint.mk: simplify update-copyright rule
Eric Blake <ebb9@byu.net>
parents: 11834
diff changeset
1557 update-copyright:
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1558 $(AM_V_GEN)grep -l -w Copyright \
11847
5dd8e8cf05db maint.mk: give full control over update-copyright exclusions
Joel E. Denny <jdenny@clemson.edu>
parents: 11836
diff changeset
1559 $$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \
16000
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
1560 | $(update-copyright-env) xargs $(srcdir)/$(_build-aux)/$@
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1561
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1562 # This tight_scope test is skipped with a warning if $(_gl_TS_headers) is not
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1563 # overridden and $(_gl_TS_dir)/Makefile.am does not mention noinst_HEADERS.
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1564
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1565 # NOTE: to override any _gl_TS_* default value, you must
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1566 # define the variable(s) using "export" in cfg.mk.
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1567 _gl_TS_dir ?= src
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1568
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1569 ALL_RECURSIVE_TARGETS += sc_tight_scope
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1570 sc_tight_scope: tight-scope.mk
15615
79e8ec9a79db maint.mk: sc_tight_scope: propagate failure from sub-make
Jim Meyering <meyering@redhat.com>
parents: 15587
diff changeset
1571 @fail=0; \
79e8ec9a79db maint.mk: sc_tight_scope: propagate failure from sub-make
Jim Meyering <meyering@redhat.com>
parents: 15587
diff changeset
1572 if ! grep '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk \
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1573 > /dev/null \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1574 && ! grep -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1575 > /dev/null 2>&1; then \
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1576 echo '$(ME): skipping $@'; \
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1577 else \
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1578 $(MAKE) -s -C $(_gl_TS_dir) \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1579 -f Makefile \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1580 -f $(abs_top_srcdir)/cfg.mk \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1581 -f $(abs_top_builddir)/$< \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1582 _gl_tight_scope \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1583 || fail=1; \
15615
79e8ec9a79db maint.mk: sc_tight_scope: propagate failure from sub-make
Jim Meyering <meyering@redhat.com>
parents: 15587
diff changeset
1584 fi; \
79e8ec9a79db maint.mk: sc_tight_scope: propagate failure from sub-make
Jim Meyering <meyering@redhat.com>
parents: 15587
diff changeset
1585 rm -f $<; \
79e8ec9a79db maint.mk: sc_tight_scope: propagate failure from sub-make
Jim Meyering <meyering@redhat.com>
parents: 15587
diff changeset
1586 exit $$fail
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1587
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1588 tight-scope.mk: $(ME)
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1589 @rm -f $@ $@-t
16088
780e83599399 maint.mk: fix tight-scope.mk generation in VPATH builds.
Gary V. Vaughan <gary@gnu.org>
parents: 16055
diff changeset
1590 @perl -ne '/^# TS-start/.../^# TS-end/ and print' $(srcdir)/$(ME) > $@-t
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1591 @chmod a=r $@-t && mv $@-t $@
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1592
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1593 ifeq (a,b)
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1594 # TS-start
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1595
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1596 # Most functions should have static scope.
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
1597 # Any that don't must be marked with 'extern', but 'main'
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
1598 # and 'usage' are exceptions: they're always extern, but
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
1599 # do not need to be marked. Symbols matching '__.*' are
14754
1299c18d8f6a maint.mk: exclude compiler symbols from sc_tight_scope
Pádraig Brady <P@draigBrady.com>
parents: 14728
diff changeset
1600 # reserved by the compiler, so are automatically excluded below.
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1601 _gl_TS_unmarked_extern_functions ?= main usage
18135
a2239167f5f7 maint.mk: _gl_TS_function_match: fix "extern" name extracting regexp
Jim Meyering <meyering@fb.com>
parents: 18134
diff changeset
1602 _gl_TS_function_match ?= /^(?:$(_gl_TS_extern)) +.*?(\w+) *\(/
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1603
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1604 # If your project uses a macro like "XTERN", then put
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1605 # the following in cfg.mk to override this default:
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1606 # export _gl_TS_extern = extern|XTERN
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1607 _gl_TS_extern ?= extern
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1608
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
1609 # The second nm|grep checks for file-scope variables with 'extern' scope.
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1610 # Without gnulib's progname module, you might put program_name here.
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
1611 # Symbols matching '__.*' are reserved by the compiler,
14754
1299c18d8f6a maint.mk: exclude compiler symbols from sc_tight_scope
Pádraig Brady <P@draigBrady.com>
parents: 14728
diff changeset
1612 # so are automatically excluded below.
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1613 _gl_TS_unmarked_extern_vars ?=
14718
b952f928cb43 maint.mk: change semantics/name of tight_scope variables
Jim Meyering <meyering@redhat.com>
parents: 14717
diff changeset
1614
b952f928cb43 maint.mk: change semantics/name of tight_scope variables
Jim Meyering <meyering@redhat.com>
parents: 14717
diff changeset
1615 # NOTE: the _match variables are perl expressions -- not mere regular
b952f928cb43 maint.mk: change semantics/name of tight_scope variables
Jim Meyering <meyering@redhat.com>
parents: 14717
diff changeset
1616 # expressions -- so that you can extend them to match other patterns
b952f928cb43 maint.mk: change semantics/name of tight_scope variables
Jim Meyering <meyering@redhat.com>
parents: 14717
diff changeset
1617 # and easily extract matched variable names.
b952f928cb43 maint.mk: change semantics/name of tight_scope variables
Jim Meyering <meyering@redhat.com>
parents: 14717
diff changeset
1618 # For example, if your project declares some global variables via
b952f928cb43 maint.mk: change semantics/name of tight_scope variables
Jim Meyering <meyering@redhat.com>
parents: 14717
diff changeset
1619 # a macro like this: GLOBAL(type, var_name, initializer), then you
b952f928cb43 maint.mk: change semantics/name of tight_scope variables
Jim Meyering <meyering@redhat.com>
parents: 14717
diff changeset
1620 # can override this definition to automatically extract those names:
b952f928cb43 maint.mk: change semantics/name of tight_scope variables
Jim Meyering <meyering@redhat.com>
parents: 14717
diff changeset
1621 # export _gl_TS_var_match = \
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1622 # /^(?:$(_gl_TS_extern)) .*?\**(\w+)(\[.*?\])?;/ || /\bGLOBAL\(.*?,\s*(.*?),/
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1623 _gl_TS_var_match ?= /^(?:$(_gl_TS_extern)) .*?(\w+)(\[.*?\])?;/
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1624
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1625 # The names of object files in (or relative to) $(_gl_TS_dir).
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1626 _gl_TS_obj_files ?= *.$(OBJEXT)
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1627
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1628 # Files in which to search for the one-line style extern declarations.
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1629 # $(_gl_TS_dir)-relative.
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1630 _gl_TS_headers ?= $(noinst_HEADERS)
17091
ecace80c3b49 maint.mk: generalize _gl_tight_scope for non-recursive make
Jim Meyering <meyering@redhat.com>
parents: 17090
diff changeset
1631 _gl_TS_other_headers ?= *.h
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1632
14716
8cfc1daa9cff maint.mk: tweak new rule's name not to impinge
Jim Meyering <meyering@redhat.com>
parents: 14715
diff changeset
1633 .PHONY: _gl_tight_scope
8cfc1daa9cff maint.mk: tweak new rule's name not to impinge
Jim Meyering <meyering@redhat.com>
parents: 14715
diff changeset
1634 _gl_tight_scope: $(bin_PROGRAMS)
18134
4c7844c2aa58 maint.mk: sc_tight_scope: factor and support OS X
Jim Meyering <meyering@fb.com>
parents: 17866
diff changeset
1635 sed_wrap='s/^/^_?/;s/$$/$$/'; \
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1636 t=exceptions-$$$$; \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1637 trap 's=$$?; rm -f $$t; exit $$s' 0; \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1638 for sig in 1 2 3 13 15; do \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1639 eval "trap 'v=`expr $$sig + 128`; (exit $$v); exit $$v' $$sig"; \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1640 done; \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1641 src=`for f in $(SOURCES); do \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1642 test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`; \
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1643 hdr=`for f in $(_gl_TS_headers); do \
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1644 test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`; \
18134
4c7844c2aa58 maint.mk: sc_tight_scope: factor and support OS X
Jim Meyering <meyering@fb.com>
parents: 17866
diff changeset
1645 ( printf '%s\n' '__.*' $(_gl_TS_unmarked_extern_functions); \
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1646 grep -h -A1 '^extern .*[^;]$$' $$src \
18139
1393742e21f0 maint.mk: sc_tight_scope: remove extraneous expressions
Pádraig Brady <P@draigBrady.com>
parents: 18135
diff changeset
1647 | grep -vE '^(extern |--|#)' | $(SED) 's/ .*//; /^$$/d'; \
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1648 perl -lne \
18134
4c7844c2aa58 maint.mk: sc_tight_scope: factor and support OS X
Jim Meyering <meyering@fb.com>
parents: 17866
diff changeset
1649 '$(_gl_TS_function_match) and print $$1' $$hdr; \
4c7844c2aa58 maint.mk: sc_tight_scope: factor and support OS X
Jim Meyering <meyering@fb.com>
parents: 17866
diff changeset
1650 ) | sort -u | $(SED) "$$sed_wrap" > $$t; \
17866
0b202278c177 maint.mk: fix compatibility with OS X nm
Pádraig Brady <P@draigBrady.com>
parents: 17848
diff changeset
1651 nm -g $(_gl_TS_obj_files)|$(SED) -n 's/.* T //p'|grep -Ev -f $$t \
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1652 && { echo the above functions should have static scope >&2; \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1653 exit 1; } || : ; \
18134
4c7844c2aa58 maint.mk: sc_tight_scope: factor and support OS X
Jim Meyering <meyering@fb.com>
parents: 17866
diff changeset
1654 ( printf '%s\n' '__.*' main $(_gl_TS_unmarked_extern_vars); \
4c7844c2aa58 maint.mk: sc_tight_scope: factor and support OS X
Jim Meyering <meyering@fb.com>
parents: 17866
diff changeset
1655 perl -lne '$(_gl_TS_var_match) and print $$1' \
17091
ecace80c3b49 maint.mk: generalize _gl_tight_scope for non-recursive make
Jim Meyering <meyering@redhat.com>
parents: 17090
diff changeset
1656 $$hdr $(_gl_TS_other_headers) \
18134
4c7844c2aa58 maint.mk: sc_tight_scope: factor and support OS X
Jim Meyering <meyering@fb.com>
parents: 17866
diff changeset
1657 ) | sort -u | $(SED) "$$sed_wrap" > $$t; \
17866
0b202278c177 maint.mk: fix compatibility with OS X nm
Pádraig Brady <P@draigBrady.com>
parents: 17848
diff changeset
1658 nm -g $(_gl_TS_obj_files) | $(SED) -n 's/.* [BCDGRS] //p' \
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1659 | sort -u | grep -Ev -f $$t \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1660 && { echo the above variables should have static scope >&2; \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1661 exit 1; } || :
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1662 # TS-end
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1663 endif