annotate top/maint.mk @ 17613:c18fb7a002f4

maintainer-makefiles: use $(SED) for syntax check Roman Bogorodskiy reported that attempts to use 'make syntax-check' for libvirt on a BSD host was failing, due to libvirt's use of GNU sed constructs in cfg.mk. While libvirt could be patched to use only portable sed constructs, it is also worth making sed replaceable so that any maintainer can use a consistent sed program rather than being hardcoded to the first 'sed' on $PATH. * modules/maintainer-makefile (configure.ac): Check for sane sed. * top/maint.mk: Change sed to $(SED). Signed-off-by: Eric Blake <eblake@redhat.com>
author Eric Blake <eblake@redhat.com>
date Thu, 20 Feb 2014 06:56:42 -0700
parents 31d5dfacc483
children eb299235d783
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
17576
344018b6e5d7 maint: update copyright
Eric Blake <eblake@redhat.com>
parents: 17532
diff changeset
5 ## Copyright (C) 2001-2014 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
16000
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
24 # Diagnostic for continued use of deprecated variable.
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
25 # Remove in 2013
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
26 ifneq ($(build_aux),)
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
27 $(error "$(ME): \
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
28 set $$(_build-aux) relative to $$(srcdir) instead of $$(build_aux)")
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
29 endif
11563
861b812ba15f top/maint.mk: Make $(srcdir)/build-aux configurable.
Simon Josefsson <simon@josefsson.org>
parents: 11547
diff changeset
30
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
31 # Helper variables.
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
32 _empty =
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
33 _sp = $(_empty) $(_empty)
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
34
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
35 # _equal,S1,S2
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
36 # ------------
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
37 # 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
38 _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
39
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
40 # 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
41 # ----------------------------------
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
42 # 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
43 # 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
44 member-check = \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
45 $(strip \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
46 $(if $($(1)), \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
47 $(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
48 $(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
49 $(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
50 $(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
51 $(error $(1) undefined)))
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
52
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
53 # 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
54 # Use --rsyncable if available.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
55 gzip_rsyncable := \
13376
c22f7afc2eec maint.mk: avoid echo -e
Eric Blake <eblake@redhat.com>
parents: 13338
diff changeset
56 $(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
57 && printf %s --rsyncable)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
58 GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
59
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
60 GIT = git
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
61 VC = $(GIT)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
62
16000
79bbea2afc18 maint.mk: don't maintain a second build-aux variable.
Gary V. Vaughan <gary@gnu.org>
parents: 15990
diff changeset
63 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
64
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
65 # 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
66 # 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
67 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
68
12768
f12919d53a60 maint.mk: make VC_LIST_EXCEPT robustly handle a srcdir containing "."
Jim Meyering <meyering@redhat.com>
parents: 12767
diff changeset
69 # 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
70 # 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
71 # 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
72 _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
73
12773
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
74 # 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
75 # when $(srcdir) is not ".".
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
76 ifeq ($(srcdir),.)
17107
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
77 _prepend_srcdir_prefix =
12773
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
78 else
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
79 _prepend_srcdir_prefix = | $(SED) 's|^|$(srcdir)/|'
12773
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
80 endif
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
81
1fedbaac4fa9 maint.mk: do not prepend "./" after filtering
Jim Meyering <meyering@redhat.com>
parents: 12771
diff changeset
82 # 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
83 # (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
84 # 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
85 _sc_excl = \
16997
efd55e9041c8 maint.mk: minor simplification.
Akim Demaille <akim@lrde.epita.fr>
parents: 16990
diff changeset
86 $(or $(exclude_file_name_regexp--$@),^$$)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
87 VC_LIST_EXCEPT = \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
88 $(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
89 | 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
90 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
91 | 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
92 $(_prepend_srcdir_prefix)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
93
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
94 ifeq ($(origin prev_version_file), undefined)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
95 prev_version_file = $(srcdir)/.prev-version
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
96 endif
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
97
11736
9f4d092a26a4 maint.mk: avoid warnings about missing files
Jim Meyering <meyering@redhat.com>
parents: 11733
diff changeset
98 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
99 VERSION_REGEXP = $(subst .,\.,$(VERSION))
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
100 PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION))
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
101
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
102 ifeq ($(VC),$(GIT))
17107
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
103 this-vc-tag = v$(VERSION)
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
104 this-vc-tag-regexp = v$(VERSION_REGEXP)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
105 else
17107
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
106 tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
107 tag-this-version = $(subst .,_,$(VERSION))
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
108 this-vc-tag = $(tag-package)-$(tag-this-version)
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
109 this-vc-tag-regexp = $(this-vc-tag)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
110 endif
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
111 my_distdir = $(PACKAGE)-$(VERSION)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
112
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
113 # Old releases are stored here.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
114 release_archive_dir ?= ../release
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
115
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
116 # 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
117 # But overwrite VERSION.
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
118 ifdef RELEASE
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
119 VERSION := $(word 1, $(RELEASE))
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
120 RELEASE_TYPE ?= $(word 2, $(RELEASE))
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
121 endif
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
122
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
123 # 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
124 RELEASE_TYPES = alpha beta stable
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
125 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
126
12329
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
127 # 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
128 # 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
129 # Use ftp.gnu.org for stable releases.
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
130 gnu_ftp_host-alpha = alpha.gnu.org
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
131 gnu_ftp_host-beta = alpha.gnu.org
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
132 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
133 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
134
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
135 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
136 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
137 ftp://$(gnu_rel_host)/gnu/$(PACKAGE))
12329
1d8d8b72ddd8 build: mention ftp redirector in release announcements
Eric Blake <ebb9@byu.net>
parents: 12325
diff changeset
138
12383
a22f69c2029c maintainer-makefile: allow customization of NEWS entry format
Alfred M. Szmidt <ams@gnu.org>
parents: 12329
diff changeset
139 # 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
140 # NEWS file.
12384
8620ff59758a maint.mk: news-check: use grep -E
Jim Meyering <meyering@redhat.com>
parents: 12383
diff changeset
141 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
142
50e9a2259a7d maint.mk: make the news-check rule more configurable
Peter Simons <simons@cryp.to>
parents: 13378
diff changeset
143 # 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
144 # 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
145 # 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
146 # 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
147 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
148 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
149
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
150 # 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
151 # 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
152 export LC_ALL = C
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
153
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
154 ## --------------- ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
155 ## Sanity checks. ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
156 ## --------------- ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
157
17201
34b7c5b6a266 maint.mk: avoid extra forks
Stefano Lattarini <stefano.lattarini@gmail.com>
parents: 17162
diff changeset
158 _cfg_mk := $(wildcard $(srcdir)/cfg.mk)
11736
9f4d092a26a4 maint.mk: avoid warnings about missing files
Jim Meyering <meyering@redhat.com>
parents: 11733
diff changeset
159
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
160 # 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
161 syntax-check-rules := $(sort $(shell $(SED) -n \
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
162 '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
163 .PHONY: $(syntax-check-rules)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
164
14357
e52d28567d4e maintainer-makefile: make syntax-check a no-op from tarballs
Eric Blake <eblake@redhat.com>
parents: 14216
diff changeset
165 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
166 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
167 else
17107
b80255c1ec9d maint.mk: formatting changes
Akim Demaille <akim@lrde.epita.fr>
parents: 17106
diff changeset
168 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
169 no-vc-detected:
e52d28567d4e maintainer-makefile: make syntax-check a no-op from tarballs
Eric Blake <eblake@redhat.com>
parents: 14216
diff changeset
170 @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
171 endif
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
172 .PHONY: $(local-checks-available)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
173
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
174 # 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
175 $(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
176 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
177 .PHONY: $(sc_m_rules_)
bedb32c7fa1b maint.mk: mark syntax-check sc_*.m rules as .PHONY
Jim Meyering <meyering@redhat.com>
parents: 12865
diff changeset
178 $(sc_m_rules_):
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
179 @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
180 @date +%s.%N > .sc-start-$(basename $@)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
181
13208
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
182 # 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
183 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
184 .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
185 $(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
186 @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
187 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
188 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
189 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
190 '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
191
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
192 # 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
193 # 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
194 local-check := \
85be704c72eb maint.mk: print the elapsed time for each syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13207
diff changeset
195 $(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
196 $(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
197
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
198 syntax-check: $(local-check)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
199
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
200 # _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
201 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
202 # 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
203 # 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
204 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
205 # 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
206 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
207 # prohibit | require
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
208 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
209 # 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
210 # 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
211 #
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
212 # exclude
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
213 #
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
214 # 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
215 # 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
216 # 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
217 # 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
218 #
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
219 # 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
220 #
16978
8d1ddfdb8668 maint.mk: _sc_search_regexp, sc_vulnerable_makefile_CVE-2009-4029: fix
Jim Meyering <meyering@redhat.com>
parents: 16913
diff changeset
221 # 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
222 # 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
223 # 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
224 # 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
225 # 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
226 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
227 # 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
228 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
229 # 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
230 # 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
231 # precedence.
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
232 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
233 # 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
234 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
235 # 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
236 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
237 # ignore_case
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
238 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
239 # Ignore case.
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
240 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
241 # halt
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
242 #
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
243 # 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
244 #
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
245 # 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
246 # 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
247 # .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
248 #
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
249 # 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
250 #
dcc1567d7f4e maint.mk: allow fine-grained syntax-check exclusion via Make variables
Jim Meyering <meyering@redhat.com>
parents: 14415
diff changeset
251 # 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
252 # 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
253 # 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
254
16553
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
255 # 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
256 export require =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
257 export prohibit =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
258 export exclude =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
259 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
260 export in_files =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
261 export containing =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
262 export non_containing =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
263 export halt =
3542db992ebe maint.mk: avoid spurious failure of _sc_search_regexp-using tests
Jim Meyering <jim@meyering.net>
parents: 16552
diff changeset
264 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
265
13103
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
266 # 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
267 export ignore_case =
13376
c22f7afc2eec maint.mk: avoid echo -e
Eric Blake <eblake@redhat.com>
parents: 13338
diff changeset
268 _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
269
13103
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_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
271 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
272 { 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
273 endef
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
274
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
275 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
276 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
277 \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
278 : Check arguments; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
279 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
280 && { 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
281 $(_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
282 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
283 && { 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
284 $(_sc_say_and_exit) } || :; \
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
285 test -z "$$prohibit" && test -n "$$exclude" \
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
286 && { 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
287 $(_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
288 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
289 && { 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
290 $(_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
291 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
292 || { 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
293 \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
294 : 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
295 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
296 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
297 | 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
298 else \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
299 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
300 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
301 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
302 fi; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
303 fi; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
304 \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
305 : 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
306 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
307 && { 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
308 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
309 && { 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
310 \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
311 : 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
312 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
313 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
314 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
315 | 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
316 && { 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
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 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
319 | grep . \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
320 && { 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
321 fi \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
322 else :; \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
323 fi || :;
11468
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
324 endef
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
325
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
326 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
327 @$(srcdir)/$(_build-aux)/useless-if-before-free \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
328 $(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
329 $$($(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
330 { 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
331 exit 1; } || :
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
332
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
333 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
334 @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
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_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
338 @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
339 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
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_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
343 @prohibit='\*\) *alloca\>' \
16322
7256be967b3a maint.mk: use more readable (yet functionally equivalent) quoting
Jim Meyering <meyering@redhat.com>
parents: 16299
diff changeset
344 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
345 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
346
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
347 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
348 @prohibit='[ ] ' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
349 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
350 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
351
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
352 # 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
353 # They provide no error checking mechanism.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
354 # Instead, use strto* functions.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
355 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
356 @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
357 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
358 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
359
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
360 # 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
361 sp_ = strcmp *\(.+\)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
362 sc_prohibit_strcmp:
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
363 @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
364 exclude='# *define STRN?EQ\(' \
17055
672cf835d212 maint.mk: avoid redundant file name in message
Eric Blake <eblake@redhat.com>
parents: 17036
diff changeset
365 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
366 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
367
16880
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
368 # 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
369 # 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
370 # 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
371 sc_prohibit_strncpy:
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
372 @prohibit='\<strncpy *\(' \
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
373 halt='do not use strncpy, period' \
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
374 $(_sc_search_regexp)
cb54ca844f1c maint.mk: add strncpy-prohibiting syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 16878
diff changeset
375
12208
a377ab624fcc maint: detect usage(1) and other suspicious exits
Eric Blake <ebb9@byu.net>
parents: 12083
diff changeset
376 # 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
377 # 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
378 # git grep -l '\<exit *(1)' \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
379 # | 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
380 # | xargs --no-run-if-empty \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
381 # 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
382 # git grep -l '\<exit *(0)' \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
383 # | 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
384 # | xargs --no-run-if-empty \
444e305ec8cc maint.mk: improve sc_prohibit_magic_number_exit
Jim Meyering <meyering@redhat.com>
parents: 12287
diff changeset
385 # 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
386 sc_prohibit_magic_number_exit:
17001
47d115143a81 maint.mk: forbid exit(-1)
Eric Blake <eblake@redhat.com>
parents: 16997
diff changeset
387 @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
388 exclude='exit \(77\)|error ?\(((0|77),|[^,]*)' \
17001
47d115143a81 maint.mk: forbid exit(-1)
Eric Blake <eblake@redhat.com>
parents: 16997
diff changeset
389 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
390 $(_sc_search_regexp)
12208
a377ab624fcc maint: detect usage(1) and other suspicious exits
Eric Blake <ebb9@byu.net>
parents: 12083
diff changeset
391
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
392 # 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
393 # 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
394 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
395 @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
396 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
397 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
398 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
399
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
400 # "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
401 # "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
402 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
403 @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
404 | grep -E '"Warning|"Fatal|"fatal' && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
405 { echo '$(ME): use FATAL, WARNING or warning' 1>&2; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
406 exit 1; } || :
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
407
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
408 # Error messages should not start with a capital letter
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
409 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
410 @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
411 | grep -E '"[A-Z]' \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
412 | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
413 { echo '$(ME): found capitalized error message' 1>&2; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
414 exit 1; } || :
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
415
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
416 # Error messages should not end with a period
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
417 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
418 @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
419 | grep -E '[^."]\."' && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
420 { 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
421 exit 1; } || :
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
422
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
423 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
424 @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
425 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
426 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
427 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
428
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
429 # 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
430 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
431 @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
432 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
433 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
434
11519
49521800ab0c maint.mk: allow package-specific header to provide <config.h>
Eric Blake <ebb9@byu.net>
parents: 11518
diff changeset
435 # 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
436 # 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
437 # 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
438 config_h_header ?= <config\.h>
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
439 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
440 @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
441 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
442 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
443 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
444
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
445 # 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
446 # 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
447 sc_require_config_h_first:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
448 @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
449 fail=0; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
450 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
451 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
452 | grep -E '^# *include $(config_h_header)' > /dev/null \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
453 || { echo $$i; fail=1; }; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
454 done; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
455 test $$fail = 1 && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
456 { echo '$(ME): the above files include some other header' \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
457 'before <config.h>' 1>&2; exit 1; } || :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
458 else :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
459 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
460
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
461 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
462 @prohibit='\bHAVE_MBRTOWC\b' \
13202
69a6d1611d1b maint.mk: correct a diagnostic
Jim Meyering <meyering@redhat.com>
parents: 13192
diff changeset
463 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
464 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
465
11468
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
466 # 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
467 # 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
468 # 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
469 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
470 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
471 h_esc=`echo '[<"]'"$$h"'[">]'|$(SED) 's/\./\\\\./g'`; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
472 if $(VC_LIST_EXCEPT) | grep -l '\.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
473 files=$$(grep -l '^# *include '"$$h_esc" \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
474 $$($(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
475 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
476 { 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
477 1>&2; exit 1; } || :; \
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
478 else :; \
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
479 fi
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
480 endef
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
481
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
482 # 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
483 sc_prohibit_assert_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
484 @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
485
12245
86929e33bdad maint.mk: Prohibit inclusion of "close-stream.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12208
diff changeset
486 # 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
487 sc_prohibit_close_stream_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
488 @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
489
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
490 # 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
491 sc_prohibit_getopt_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
492 @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
493
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
494 # 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
495 sc_prohibit_quotearg_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
496 @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
497
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
498 # 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
499 sc_prohibit_quote_without_use:
16691
fcfa472825d5 quote: fix syntax-check
Akim Demaille <akim@lrde.epita.fr>
parents: 16556
diff changeset
500 @h='quote.h' re='\<quote((_n)? *\(|_quoting_options\>)' \
fcfa472825d5 quote: fix syntax-check
Akim Demaille <akim@lrde.epita.fr>
parents: 16556
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_long_options_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
505 @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
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.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
509 sc_prohibit_inttostr_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
510 @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
511 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
512
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
513 # 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
514 sc_prohibit_ignore_value_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
515 @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
516 $(_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
517
2afdfba76c99 maint.mk: prohibit inclusion of "ignore-value.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12827
diff changeset
518 # 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
519 sc_prohibit_error_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
520 @h='error.h' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
521 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
522 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
523
12287
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
524 # 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
525 # Consider these symbols:
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
526 # 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
527 # 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
528 # 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
529 # | sort | perl -MRegexp::Assemble -le \
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
530 # '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
531 # 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
532 # _xa1 = \
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
533 #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
534 # 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
535 # 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
536 # 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
537 # 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
538 # "char|[cmz]"
51b39cac47f1 maint.mk: include 4 more function names in alloca.h-checking regexp
Jim Meyering <meyering@redhat.com>
parents: 12559
diff changeset
539 # 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
540 _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
541 _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
542 sc_prohibit_xalloc_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
543 @h='xalloc.h' \
12287
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
544 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
545 $(_sc_header_without_use)
12287
0c467c7c0132 maint.mk: Prohibit inclusion of "xalloc.h" without use.
Jim Meyering <meyering@redhat.com>
parents: 12245
diff changeset
546
12863
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
547 # 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
548 # 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
549 _hash_re = \
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
550 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
551 _hash_fn = \<($(_hash_re)) *\(
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
552 _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
553 sc_prohibit_hash_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
554 @h='hash.h' \
12863
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
555 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
556 $(_sc_header_without_use)
12863
8fd1fe5e9683 maint.mk: prohibit inclusion of "hash.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12861
diff changeset
557
14855
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
558 sc_prohibit_cloexec_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
559 @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
560 $(_sc_header_without_use)
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
561
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
562 sc_prohibit_posixver_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
563 @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
564
d08e35db9bba maint.mk: add three prohibit-header-without-use rules
Jim Meyering <meyering@redhat.com>
parents: 14801
diff changeset
565 sc_prohibit_same_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
566 @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
567
12865
19a113553866 maint.mk: prohibit inclusion of "hash-pjw.h" without_use
Jim Meyering <meyering@redhat.com>
parents: 12864
diff changeset
568 sc_prohibit_hash_pjw_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
569 @h='hash-pjw.h' \
16299
1e8c74a6b668 maint: enable sc_prohibit_hash_pjw_without_use
Jim Meyering <meyering@redhat.com>
parents: 16261
diff changeset
570 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
571 $(_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
572
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
573 sc_prohibit_safe_read_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
574 @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
575 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
576
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
577 sc_prohibit_argmatch_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
578 @h='argmatch.h' \
15337
787a6021ecd5 maint.mk: correct omissions in prohibit_argmatch_without_use check
Jim Meyering <meyering@redhat.com>
parents: 15321
diff changeset
579 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
580 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
581
12035
2898ee238452 syntax-check: detect unnecessary inclusion of canonicalize.h
Jim Meyering <meyering@redhat.com>
parents: 11969
diff changeset
582 sc_prohibit_canonicalize_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
583 @h='canonicalize.h' \
16331
2f966fea20dc maint.mk: sc_prohibit_canonicalize_without_use: avoid false positive
Jim Meyering <meyering@redhat.com>
parents: 16322
diff changeset
584 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
585 $(_sc_header_without_use)
12035
2898ee238452 syntax-check: detect unnecessary inclusion of canonicalize.h
Jim Meyering <meyering@redhat.com>
parents: 11969
diff changeset
586
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
587 sc_prohibit_root_dev_ino_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
588 @h='root-dev-ino.h' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
589 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
590 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
591
11954
c2aabb82023d syntax-check: detect unnecessary inclusion of openat.h
Jim Meyering <meyering@redhat.com>
parents: 11927
diff changeset
592 sc_prohibit_openat_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
593 @h='openat.h' \
17585
31d5dfacc483 maint.mk: adapt openat.h-include-without-use test
Jim Meyering <meyering@fb.com>
parents: 17579
diff changeset
594 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
595 $(_sc_header_without_use)
11954
c2aabb82023d syntax-check: detect unnecessary inclusion of openat.h
Jim Meyering <meyering@redhat.com>
parents: 11927
diff changeset
596
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
597 # 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
598 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
599 |isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
600 sc_prohibit_c_ctype_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
601 @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
602 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
603
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
604 # The following list was generated by running:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
605 # 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
606 # | 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
607 _sig_functions = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
608 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
609 sigaddset sigaltstack sigdelset sigemptyset sigfillset sighold sigignore \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
610 siginterrupt sigismember signal sigpause sigpending sigprocmask sigqueue \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
611 sigrelse sigset sigsuspend sigtimedwait sigwait sigwaitinfo
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
612 _sig_function_re = $(subst $(_sp),|,$(strip $(_sig_functions)))
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
613 # The following were extracted from "man signal.h" manually.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
614 _sig_types_and_consts = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
615 MINSIGSTKSZ SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
616 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
617 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
618 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
619 sigstack sigval stack_t ucontext_t
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
620 # generated via this:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
621 # 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
622 _sig_names = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
623 SIGABRT SIGALRM SIGALRM1 SIGBUS SIGCANCEL SIGCHLD SIGCLD SIGCONT \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
624 SIGDANGER SIGDIL SIGEMT SIGFPE SIGFREEZE SIGGRANT SIGHUP SIGILL \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
625 SIGINFO SIGINT SIGIO SIGIOT SIGKAP SIGKILL SIGKILLTHR SIGLOST SIGLWP \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
626 SIGMIGRATE SIGMSG SIGPHONE SIGPIPE SIGPOLL SIGPRE SIGPROF SIGPWR \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
627 SIGQUIT SIGRETRACT SIGSAK SIGSEGV SIGSOUND SIGSTKFLT SIGSTOP SIGSYS \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
628 SIGTERM SIGTHAW SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGURG SIGUSR1 \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
629 SIGUSR2 SIGVIRT SIGVTALRM SIGWAITING SIGWINCH SIGWIND SIGWINDOW \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
630 SIGXCPU SIGXFSZ
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
631 _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
632
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
633 # 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
634 sc_prohibit_signal_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
635 @h='signal.h' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
636 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
637 $(_sc_header_without_use)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
638
14756
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
639 # 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
640 sc_prohibit_stdio--_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
641 @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
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
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
644 # 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
645 sc_prohibit_stdio-safer_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
646 @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
647 $(_sc_header_without_use)
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
648
13304
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
649 # 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
650 # 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
651 sc_prohibit_strings_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
652 @h='strings.h' \
13304
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
653 re='\<(strn?casecmp|ffs(ll)?)\>' \
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
654 $(_sc_header_without_use)
e5593199cd7e maint.mk: prohibit unwarranted use of <strings.h>
Jim Meyering <meyering@redhat.com>
parents: 13302
diff changeset
655
13029
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
656 # 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
657 # 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
658 _intprops_names = \
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
659 TYPE_IS_INTEGER TYPE_TWOS_COMPLEMENT TYPE_ONES_COMPLEMENT \
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
660 TYPE_SIGNED_MAGNITUDE 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
661 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
662 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
663 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
664 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
665 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
666 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
667 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
668 _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
669 # 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
670 sc_prohibit_intprops_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
671 @h='intprops.h' \
13029
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
672 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
673 $(_sc_header_without_use)
13029
44ae789f77b0 maint.mk: prohibit inclusion of "intprops.h" without use
Jim Meyering <meyering@redhat.com>
parents: 12866
diff changeset
674
14216
676f66180a36 maint.mk: add syntax-check rule: detect unnecessary #include <stddef.h>
Jim Meyering <meyering@redhat.com>
parents: 14210
diff changeset
675 _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
676 # 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
677 sc_prohibit_stddef_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
678 @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
679 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
680 $(_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
681
16035
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
682 _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
683 _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
684 _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
685 _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
686 # 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
687 sc_prohibit_dirent_without_use:
16053
48e53ddfb126 maint.mk: silence new syntax check
Eric Blake <eblake@redhat.com>
parents: 16035
diff changeset
688 @h='dirent.h' \
16035
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
689 re='\<($(_dirent_syms_re))\>' \
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
690 $(_sc_header_without_use)
88def2ddf509 maint.mk: also prohibit inclusion of dirent.h without use
Jim Meyering <meyering@redhat.com>
parents: 16000
diff changeset
691
15437
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
692 # 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
693 sc_prohibit_verify_without_use:
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
694 @h='verify.h' \
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
695 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
696 $(_sc_header_without_use)
055938f44a46 maint.mk: prohibit inclusion of "verify.h" without use
Jim Meyering <meyering@redhat.com>
parents: 15409
diff changeset
697
14756
b44f65e44220 maint.mk: three new prohibit_<HDR>_without_use rules
Jim Meyering <meyering@redhat.com>
parents: 14754
diff changeset
698 # 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
699 sc_prohibit_xfreopen_without_use:
15321
eada9764cc6a maint.mk: enhance useless header checks
Eric Blake <eblake@redhat.com>
parents: 15319
diff changeset
700 @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
701
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
702 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
703 @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
704 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
705 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
706
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
707 # 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
708
11468
65ab7e6dcafe maint.mk: import changes to syntax-check macros from coreutils
Reuben Thomas <rrt@sc3d.org>
parents: 11406
diff changeset
709 # 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
710 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
711 @prohibit='^[^12 ]' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
712 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
713 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
714 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
715
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
716 # 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
717 # calls set_program_name.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
718 sc_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
719 @require='set_program_name *\(m?argv\[0\]\);' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
720 in_vc_files='\.c$$' \
13853
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
721 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
722 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
723 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
724
13853
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
725 # 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
726 # calls bindtextdomain.
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
727 sc_bindtextdomain:
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
728 @require='bindtextdomain *\(' \
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
729 in_vc_files='\.c$$' \
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
730 containing='\<main *(' \
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
731 halt='the above files do not call bindtextdomain' \
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
732 $(_sc_search_regexp)
2f3dbd409322 maintainer-makefile: check for i18n setup
Eric Blake <eblake@redhat.com>
parents: 13704
diff changeset
733
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
734 # 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
735 # Exit $fail
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
736 # 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
737 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
738 Exit_base := $(notdir $(Exit_witness_file))
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
739 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
740 @if test -f $(srcdir)/$(Exit_witness_file); then \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
741 die=0; \
11646
fc7e7bde323e tests: maint.mk: make sc_require_test_exit_idiom more generic
Jim Meyering <meyering@redhat.com>
parents: 11575
diff changeset
742 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
743 $$($(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
744 tail -n1 $$i | grep '^Exit .' > /dev/null \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
745 && : || { die=1; echo $$i; } \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
746 done; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
747 test $$die = 1 && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
748 { 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
749 echo 1>&2 'Exit something'; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
750 exit 1; } || :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
751 fi
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 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
754 @prohibit='[ ]$$' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
755 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
756 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
757 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
758
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
759 # 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
760 # between the options and the description:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
761 # -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
762 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
763 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
764 @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
765 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
766 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
767
14864
93b21a56e926 maint.mk: sc_unmarked_diagnostics: don't hard-code "error"
Jim Meyering <meyering@redhat.com>
parents: 14855
diff changeset
768 # 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
769 # to emit translatable messages.
93b21a56e926 maint.mk: sc_unmarked_diagnostics: don't hard-code "error"
Jim Meyering <meyering@redhat.com>
parents: 14855
diff changeset
770 _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
771
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
772 # Look for diagnostics that aren't marked for translation.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
773 # 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
774 sc_unmarked_diagnostics:
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
775 @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
776 exclude='(_|ngettext ?)\(' \
17055
672cf835d212 maint.mk: avoid redundant file name in message
Eric Blake <eblake@redhat.com>
parents: 17036
diff changeset
777 halt='found unmarked diagnostic(s)' \
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
778 $(_sc_search_regexp)
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
779
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
780 # Avoid useless parentheses like those in this example:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
781 # #if defined (SYMBOL) || defined (SYM2)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
782 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
783 @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
784 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
785 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
786
13275
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
787 # 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
788 # 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
789 # #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
790 # 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
791 gl_assured_headers_ = \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
792 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
793
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
794 # 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
795 az_ = abcdefghijklmnopqrstuvwxyz
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
796 AZ_ = ABCDEFGHIJKLMNOPQRSTUVWXYZ
13277
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
797 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 $$($(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
799 | 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
800 | tr -s ' ' '|' \
13277
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
801 )
13275
2917aab6182c maint.mk: syntax-check: prohibit HAVE_<header>_H that are always true
Jim Meyering <meyering@redhat.com>
parents: 13253
diff changeset
802 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
803 @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
804 re="HAVE_($$or)_H"; \
b07571bc9838 maint.mk: avoid side-effect in latest syntax-check
Jim Meyering <meyering@redhat.com>
parents: 13275
diff changeset
805 prohibit='\<'"$$re"'\>' \
13704
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
806 halt=$$(printf '%s\n' \
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
807 '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
808 ' 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
809 $(_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
810
16988
ef9bd8b01585 maint.mk: new syntax check for HAVE_DECL checks
Eric Blake <eblake@redhat.com>
parents: 16979
diff changeset
811 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
812 @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
813 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
814 $(_sc_search_regexp)
ef9bd8b01585 maint.mk: new syntax check for HAVE_DECL checks
Eric Blake <eblake@redhat.com>
parents: 16979
diff changeset
815
13329
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
816 # ==================================================================
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
817 gl_other_headers_ ?= \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
818 intprops.h \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
819 openat.h \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
820 stat-macros.h
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
821
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
822 # 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
823 # 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
824 # 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
825 # 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
826 gl_extract_significant_defines_ = \
13337
23825f79a03a maint.mk: gnulib doesn't guarantee NSIG
Eric Blake <eblake@redhat.com>
parents: 13333
diff changeset
827 /^\# *define ([^_ (][^ (]*)(\s*\(|\s+\w+)/\
23825f79a03a maint.mk: gnulib doesn't guarantee NSIG
Eric Blake <eblake@redhat.com>
parents: 13333
diff changeset
828 && $$2 !~ /(?:rpl_|_used_without_)/\
15989
30a6c0b6ac8c maint.mk: exempt ENODATA from a syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 15966
diff changeset
829 && $$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
830 && $$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
831 and print $$1
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
832
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
833 # 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
834 # 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
835 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
836 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
837 (cd $(gnulib_dir)/lib; \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
838 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
839 test -f $$f \
d12c46223fa1 maint.mk: avoid warnings from perl about missing files
Martin von Gagern <Martin.vGagern@gmx.net>
parents: 15615
diff changeset
840 && 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
841 done; \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
842 ) | sort -u \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
843 | $(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
844 endef
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
845
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
846 # 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
847 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
848 @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
849 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
850 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
851 esac; \
13378
c4a059473950 maint.mk: also prohibit "#undef" of always-defined symbols
Jim Meyering <meyering@redhat.com>
parents: 13376
diff changeset
852 $(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
853 && { 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
854 1>&2; exit 1; } || :; \
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
855 fi
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
856 # ==================================================================
256d057c7f1f maint.mk: prohibit definition of symbols defined by gnulib
Jim Meyering <meyering@redhat.com>
parents: 13309
diff changeset
857
13253
51e653bb55dd top/maint.mk (sc_prohibit_backup_files): Prohibit checked in backup files.
Simon Josefsson <simon@josefsson.org>
parents: 13241
diff changeset
858 # 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
859 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
860 @$(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
861 { 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
862 exit 1; } || :
51e653bb55dd top/maint.mk (sc_prohibit_backup_files): Prohibit checked in backup files.
Simon Josefsson <simon@josefsson.org>
parents: 13241
diff changeset
863
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
864 # Require the latest GPL.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
865 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
866 @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
867 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
868 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
869
12593
e8847ec6bc92 maint.mk: detect incorrect GFDL usage
Eric Blake <ebb9@byu.net>
parents: 12592
diff changeset
870 # 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
871 # line wrapping between 'Free Documentation License,' and 'Version'.
e8847ec6bc92 maint.mk: detect incorrect GFDL usage
Eric Blake <ebb9@byu.net>
parents: 12592
diff changeset
872 _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
873 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
874 @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
875 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
876 $(_sc_search_regexp)
12593
e8847ec6bc92 maint.mk: detect incorrect GFDL usage
Eric Blake <ebb9@byu.net>
parents: 12592
diff changeset
877
13880
fe3adfe381fa maint.mk: add a URL discussing the no-@acronym policy
Jim Meyering <meyering@redhat.com>
parents: 13871
diff changeset
878 # 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
879 # 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
880 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
881 sc_texinfo_acronym:
13232
80668c656e53 top/maint.mk (sc_texinfo_acronym): Improve filename regexp.
Simon Josefsson <simon@josefsson.org>
parents: 13221
diff changeset
882 @prohibit='@acronym\{' \
80668c656e53 top/maint.mk (sc_texinfo_acronym): Improve filename regexp.
Simon Josefsson <simon@josefsson.org>
parents: 13221
diff changeset
883 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
884 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
885 $(_sc_search_regexp)
13045
04f53e0b1556 top/maint.mk (sc_texinfo_acronym): Add rule.
Simon Josefsson <simon@josefsson.org>
parents: 13029
diff changeset
886
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
887 cvs_keywords = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
888 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
889
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
890 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
891 @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
892 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
893 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
894
13209
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
895 # 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
896 # 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
897 # 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
898 # 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
899 # 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
900 # 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
901 # 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
902 # 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
903 # 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
904 # 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
905 #
13209
473dffe238d2 maint.mk: improve empty-line-at-EOF check
Jim Meyering <meyering@redhat.com>
parents: 13208
diff changeset
906 # 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
907 # 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
908 # 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
909 # 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
910 # 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
911 # 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
912 # 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
913 # 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
914 #
0f51b742ab58 maint.mk: new syntax-check rule: prohibit empty lines at end of file
Jim Meyering <meyering@redhat.com>
parents: 13202
diff changeset
915 # 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
916 # 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
917 #
14394
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
918 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
919 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
920 { \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
921 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
922 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
923 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
924 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
925 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
926 close F; \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
927 $$c = "ignore read failure"; \
14394
74d1558ae43f maint.mk: detect missing-NL-at-EOF, too
Jim Meyering <meyering@redhat.com>
parents: 14357
diff changeset
928 $$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
929 || 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
930 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
931 } \
cf12b14b472b maint.mk: use gnu-style indentation in an embedded perl script
Jim Meyering <meyering@redhat.com>
parents: 13233
diff changeset
932 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
933 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
934 @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
935 || { 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
936 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
937
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
938 # 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
939 # 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
940 # 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
941 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
942 @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
943 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
944 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
945
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
946 # 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
947 # 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
948 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
949 @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
950 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
951 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
952
14724
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
953 # 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
954 # 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
955 perl_filename_lineno_text_ = \
14575
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
956 -e ' {' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
957 -e ' $$n = ($$` =~ tr/\n/\n/ + 1);' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
958 -e ' ($$v = $$&) =~ s/\n/\\n/g;' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
959 -e ' print "$$ARGV:$$n:$$v\n";' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
960 -e ' }'
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
961
14724
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
962 prohibit_doubled_word_RE_ ?= \
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
963 /\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
964 prohibit_doubled_word_ = \
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
965 -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
966 $(perl_filename_lineno_text_)
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
967
14575
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
968 # Define this to a regular expression that matches
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
969 # any filename:dd:match lines you want to ignore.
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
970 # The default is to ignore no matches.
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
971 ignore_doubled_word_match_RE_ ?= ^$$
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
972
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
973 sc_prohibit_doubled_word:
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
974 @perl -n -0777 $(prohibit_doubled_word_) $$($(VC_LIST_EXCEPT)) \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
975 | grep -vE '$(ignore_doubled_word_match_RE_)' \
df394b4db95d maint.mk: prohibit doubled words
Jim Meyering <meyering@redhat.com>
parents: 14572
diff changeset
976 | 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
977
14724
ba27b43f49e7 maint.mk: improve "can not" detection and generalize rule name
Jim Meyering <meyering@redhat.com>
parents: 14718
diff changeset
978 # 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
979 # "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
980 # 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
981 # 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
982 # 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
983 # 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
984 # @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
985 # 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
986 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
987 bad_pxref_re_ ?= (?:[.!?]|(?:see|also))\s+\@pxref\{
14725
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
988 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
989 /(?:\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
990 prohibit_undesirable_word_seq_ = \
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
991 -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
992 $(perl_filename_lineno_text_)
14725
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
993 # Define this to a regular expression that matches
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
994 # any filename:dd:match lines you want to ignore.
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
995 # The default is to ignore no matches.
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
996 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
997
14725
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
998 sc_prohibit_undesirable_word_seq:
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
999 @perl -n -0777 $(prohibit_undesirable_word_seq_) \
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
1000 $$($(VC_LIST_EXCEPT)) \
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
1001 | grep -vE '$(ignore_undesirable_word_sequence_RE_)' | grep . \
d27620fb3331 maint.mk: adjust previous commit
Jim Meyering <meyering@redhat.com>
parents: 14724
diff changeset
1002 && { 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
1003
13085
fb5165836aea maint.mk: prohibit use of test's -o and -a operators
Jim Meyering <meyering@redhat.com>
parents: 13058
diff changeset
1004 _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
1005 _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
1006 # 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
1007 # 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
1008 sc_prohibit_test_minus_ao:
13104
3f4bdc04f3f1 maint.mk: fix some fallout
Eric Blake <eblake@redhat.com>
parents: 13103
diff changeset
1009 @prohibit='(\<test| \[+) .+ -[ao] ' \
3f4bdc04f3f1 maint.mk: fix some fallout
Eric Blake <eblake@redhat.com>
parents: 13103
diff changeset
1010 halt='$(_ptm1); $(_ptm2)' \
3f4bdc04f3f1 maint.mk: fix some fallout
Eric Blake <eblake@redhat.com>
parents: 13103
diff changeset
1011 $(_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
1012
13855
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1013 # Avoid a test bashism.
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1014 sc_prohibit_test_double_equal:
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1015 @prohibit='(\<test| \[+) .+ == ' \
13865
85922ab33c1c maintainer-makefile: cover a few more files
Eric Blake <eblake@redhat.com>
parents: 13858
diff changeset
1016 containing='#! */bin/[a-z]*sh' \
13855
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1017 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
1018 $(_sc_search_regexp)
78d646edb95c maintainer-makefile: prohibit test x == x
Eric Blake <eblake@redhat.com>
parents: 13853
diff changeset
1019
12608
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1020 # 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
1021 # 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
1022 # 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
1023 # 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
1024 # when it contains "ICONV".
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1025 sc_proper_name_utf8_requires_ICONV:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1026 @progs=$$(grep -l 'proper_name_utf8 ''("' $$($(VC_LIST_EXCEPT)));\
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1027 if test "x$$progs" != x; then \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1028 fail=0; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1029 for p in $$progs; do \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1030 dir=$$(dirname "$$p"); \
12608
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1031 perl -0777 \
d2cfa946257a maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
Jim Meyering <meyering@redhat.com>
parents: 12606
diff changeset
1032 -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
1033 $$dir/Makefile.am && continue; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1034 base=$$(basename "$$p" .c); \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1035 grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1036 || { 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
1037 done; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1038 test $$fail = 1 && \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1039 { 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
1040 exit 1; } || :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1041 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1042
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1043 # Warn about "c0nst struct Foo const foo[]",
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1044 # 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
1045 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
1046 @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
1047 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
1048 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1049
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1050 sc_const_long_option:
16552
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
1051 @prohibit='^ *static.*struct option ' \
b9f8d388ab96 maint.mk: add per-line exclusions to prohibitions
Eric Blake <eblake@redhat.com>
parents: 16386
diff changeset
1052 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
1053 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
1054 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1055
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1056 NEWS_hash = \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1057 $$($(SED) -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1058 $(srcdir)/NEWS \
12592
f46f6a6b078c maint.mk: ignore multi-line copyright in NEWS
Eric Blake <ebb9@byu.net>
parents: 12581
diff changeset
1059 | perl -0777 -pe \
f46f6a6b078c maint.mk: ignore multi-line copyright in NEWS
Eric Blake <ebb9@byu.net>
parents: 12581
diff changeset
1060 's/^Copyright.+?Free\sSoftware\sFoundation,\sInc\.\n//ms' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1061 | md5sum - \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1062 | $(SED) 's/ .*//')
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1063
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1064 # 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
1065 sc_immutable_NEWS:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1066 @if test -f $(srcdir)/NEWS; then \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1067 test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : || \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1068 { 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
1069 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1070
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1071 # 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
1072 # for any corrections to old entries.
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1073 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
1074 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
1075 $(srcdir)/cfg.mk
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1076
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1077 # Ensure that we use only the standard $(VAR) notation,
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1078 # 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
1079 # 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
1080 # 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
1081 # 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
1082 # 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
1083 # 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
1084 # 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
1085 # 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
1086 #
12606
47c45341eca0 maint.mk: allow packages to add makefile @@ exceptions
Eric Blake <ebb9@byu.net>
parents: 12593
diff changeset
1087 # 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
1088 # 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
1089 # setting this to ' && !/PRAGMA_SYSTEM_HEADER/'.
47c45341eca0 maint.mk: allow packages to add makefile @@ exceptions
Eric Blake <ebb9@byu.net>
parents: 12593
diff changeset
1090 _makefile_at_at_check_exceptions ?=
47c45341eca0 maint.mk: allow packages to add makefile @@ exceptions
Eric Blake <ebb9@byu.net>
parents: 12593
diff changeset
1091 sc_makefile_at_at_check:
16360
817d5933e56e maint.mk: also prohibit lower-case @var@
Eric Blake <eblake@redhat.com>
parents: 16331
diff changeset
1092 @perl -ne '/\@\w+\@/' \
817d5933e56e maint.mk: also prohibit lower-case @var@
Eric Blake <eblake@redhat.com>
parents: 16331
diff changeset
1093 -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
1094 -e ''$(_makefile_at_at_check_exceptions) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1095 -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
1096 $$($(VC_LIST_EXCEPT) | grep -E '(^|/)(Makefile\.am|[^/]+\.mk)$$') \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1097 && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1098
12384
8620ff59758a maint.mk: news-check: use grep -E
Jim Meyering <meyering@redhat.com>
parents: 12383
diff changeset
1099 news-check: NEWS
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1100 $(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
1101 | grep -E $(news-check-regexp) >/dev/null; then \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1102 :; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1103 else \
12384
8620ff59758a maint.mk: news-check: use grep -E
Jim Meyering <meyering@redhat.com>
parents: 12383
diff changeset
1104 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
1105 exit 1; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1106 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1107
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1108 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
1109 @prohibit='^ [ ]{8}' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1110 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
1111 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
1112 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1113
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1114 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
1115 @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
1116 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
1117 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
1118 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1119
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1120 fix_po_file_diag = \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1121 '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
1122 apply the above patch\n'
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1123
17141
1070c9dd8d54 maint.mk: let packages tweak sc_po_check pattern
Eric Blake <eblake@redhat.com>
parents: 17109
diff changeset
1124 # 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
1125 # 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
1126 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
1127 generated_files ?= $(srcdir)/lib/*.[ch]
17143
78950b779f13 maint.mk: rename a new configurable variable
Jim Meyering <jim@meyering.net>
parents: 17141
diff changeset
1128 _gl_translatable_string_re ?= \b(N?_|gettext *)\([^)"]*("|$$)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1129 sc_po_check:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1130 @if test -f $(po_file); then \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1131 grep -E -v '^(#|$$)' $(po_file) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1132 | grep -v '^src/false\.c$$' | sort > $@-1; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1133 files=; \
14704
0223f2067342 maintainer-makefile: make sc_po_check easier to tune
Eric Blake <eblake@redhat.com>
parents: 14699
diff changeset
1134 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
1135 test -r $$file || continue; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1136 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
1137 *.m4|*.mk) continue ;; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1138 *.?|*.??) ;; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1139 *) continue;; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1140 esac; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1141 case $$file in \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1142 *.[ch]) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1143 base=`expr " $$file" : ' \(.*\)\..'`; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1144 { test -f $$base.l || test -f $$base.y; } && continue;; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1145 esac; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1146 files="$$files $$file"; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1147 done; \
17143
78950b779f13 maint.mk: rename a new configurable variable
Jim Meyering <jim@meyering.net>
parents: 17141
diff changeset
1148 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
1149 | $(SED) 's|^$(_dot_escaped_srcdir)/||' | sort -u > $@-2; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1150 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
1151 || { 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
1152 rm -f $@-1 $@-2; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1153 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1154
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1155 # 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
1156 # 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
1157 # 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
1158 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
1159 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
1160 @prohibit='PATH[=].*:' \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1161 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
1162 halt=$(msg) \
3622812c3a89 maint.mk: _sc_search_regexp: generalize and rename from _prohibit_regexp
Jose E. Marchesi <jemarch@gnu.org>
parents: 13102
diff changeset
1163 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1164
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
1165 # 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
1166 # 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
1167 # and is read-only.
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1168 writable-files:
17104
bcbe636cc12f maint.mk: silent rules
Akim Demaille <akim@lrde.epita.fr>
parents: 17091
diff changeset
1169 $(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
1170 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
1171 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
1172 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
1173 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
1174 || { 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
1175 done; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1176 done; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1177 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
1178 else :; \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1179 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1180
13635
102e01a1ca93 maint.mk: avoid obscure sc_copyright_check failure in coreutils
Jim Meyering <meyering@redhat.com>
parents: 13393
diff changeset
1181 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
1182 sample-test = tests/sample-test
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1183 texi = doc/$(PACKAGE).texi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1184 # 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
1185 # 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
1186 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
1187 @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
1188 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
1189 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
1190 $(_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
1191 @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
1192 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
1193 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
1194 $(_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
1195 @require='Copyright @copyright\{\} .*'$$(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
1196 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
1197 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
1198 $(_sc_search_regexp)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1199
13185
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1200 # 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
1201 # 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
1202 # 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
1203 # 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
1204 # 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
1205 # 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
1206 # 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
1207 _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
1208 _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
1209 # Fix syntax-highlighters "
13331
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1210 _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
1211 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
1212 @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
1213 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
1214 || { 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
1215 exit 0; }; \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1216 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
1217 || { 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
1218 exit 1; }; \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1219 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
1220 grep -LFx "$$good" \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1221 $$(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
1222 | grep . && \
dc2c7e3048ec maint.mk: improve sc_cross_check_PATH_usage_in_tests
Jim Meyering <meyering@redhat.com>
parents: 13329
diff changeset
1223 { 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
1224 1>&2; exit 1; } || :; \
13185
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1225 fi
8845faccc61b maint.mk: add a PATH crosschecking syntax-check rule
Jim Meyering <meyering@redhat.com>
parents: 13126
diff changeset
1226
16134
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1227 # 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
1228 _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
1229
456f788a2768 maint.mk: add syntax check for use of compare from init.sh
Eric Blake <eblake@redhat.com>
parents: 16088
diff changeset
1230 # 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
1231 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
1232 @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
1233 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
1234 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
1235 $(_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
1236
12816
7a4d2814715b syntax-check: detect incorrect boolean macro values in config.h
Pádraig Brady <P@draigBrady.com>
parents: 12773
diff changeset
1237 # #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
1238 # 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
1239 # 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
1240 # 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
1241 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
1242 @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
1243 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
1244 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
1245 $(_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
1246
15315
94b3a0b47189 maint.mk: add syntax-check to avoid char[PATH_MAX]
Eric Blake <eblake@redhat.com>
parents: 14864
diff changeset
1247 # 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
1248 # 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
1249 # 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
1250 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
1251 @prohibit='(\balloca *\([^)]*|\[[^]]*)\bPATH_MAX' \
15316
b62cfb73a10c maint.mk: test further PATH_MAX issues
Eric Blake <eblake@redhat.com>
parents: 15315
diff changeset
1252 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
1253 $(_sc_search_regexp)
94b3a0b47189 maint.mk: add syntax-check to avoid char[PATH_MAX]
Eric Blake <eblake@redhat.com>
parents: 14864
diff changeset
1254
12827
d844fd639561 maint: add a syntax-check rule to check for vulnerable Makefile.in
Jim Meyering <meyering@redhat.com>
parents: 12816
diff changeset
1255 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
1256 @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
1257 in_files='(^|/)Makefile\.in$$' \
13704
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
1258 halt=$$(printf '%s\n' \
fe063c25c0ce maint.mk: avoid unexpanded \n in two diagnostics
Jim Meyering <meyering@redhat.com>
parents: 13635
diff changeset
1259 '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
1260 ' "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
1261 ' 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
1262 $(_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
1263
16979
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1264 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
1265 @prohibit='chmod a\+w \$$\(distdir\)' \
17036
73562b8a8559 maintainer-makefile: Fix syntax error with dash.
Simon Josefsson <simon@josefsson.org>
parents: 17033
diff changeset
1266 in_files='(^|/)Makefile\.in$$' \
16979
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1267 halt=$$(printf '%s\n' \
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1268 '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
1269 ' "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
1270 ' 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
1271 $(_sc_search_regexp)
1346cf3efb4d maint.mk: add sc_vulnerable_makefile_CVE-2012-3386
Jim Meyering <meyering@redhat.com>
parents: 16978
diff changeset
1272
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1273 vc-diff-check:
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1274 $(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
1275 $(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
1276 cat vc-diffs; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1277 echo "Some files are locally modified:" 1>&2; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1278 exit 1; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1279 else \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1280 rm vc-diffs; \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1281 fi
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1282
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1283 rel-files = $(DIST_ARCHIVES)
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1284
11575
cfe435cf936c maint.mk: allow gnulib_dir in VPATH build
Eric Blake <ebb9@byu.net>
parents: 11573
diff changeset
1285 gnulib_dir ?= $(srcdir)/gnulib
17529
5a97f701bcef maint.mk: restore functionality removed by recent change
Jim Meyering <meyering@fb.com>
parents: 17527
diff changeset
1286 gnulib-version = $$(cd $(gnulib_dir) \
5a97f701bcef maint.mk: restore functionality removed by recent change
Jim Meyering <meyering@fb.com>
parents: 17527
diff changeset
1287 && { 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
1288 bootstrap-tools ?= autoconf,automake,gnulib
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1289
17532
f5ce1e130606 maint.mk: prefer gpgv2 over gpgv
Jim Meyering <meyering@fb.com>
parents: 17529
diff changeset
1290 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
1291 # 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
1292 # 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
1293 gpg_key_ID ?= \
631997178451 maint.mk: absolute VPATH build fix
Akim Demaille <akim@lrde.epita.fr>
parents: 17005
diff changeset
1294 $$(cd $(srcdir) \
631997178451 maint.mk: absolute VPATH build fix
Akim Demaille <akim@lrde.epita.fr>
parents: 17005
diff changeset
1295 && git cat-file tag v$(VERSION) \
17532
f5ce1e130606 maint.mk: prefer gpgv2 over gpgv
Jim Meyering <meyering@fb.com>
parents: 17529
diff changeset
1296 | $(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
1297 | 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
1298
13306
3b72fc82a799 maint.mk, announce-gen: allow project-specific announcement mail headers
Jim Meyering <meyering@redhat.com>
parents: 13304
diff changeset
1299 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
1300
6b83b217fcdd maint.mk: use info-gnu@ as the default only for a stable release
Jim Meyering <meyering@redhat.com>
parents: 14651
diff changeset
1301 # 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
1302 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
1303 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
1304 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
1305 Cc: $(announcement_Cc_) \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1306 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
1307
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1308 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
1309 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
1310 To: $(PACKAGE_BUGREPORT) \
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1311 Cc: $(announcement_Cc_)
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1312
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1313 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
1314 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
1315
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1316 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
1317 announcement_mail_headers_ ?= $(announcement_mail_headers_$(release-type))
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1318 announcement: NEWS ChangeLog $(rel-files)
17104
bcbe636cc12f maint.mk: silent rules
Akim Demaille <akim@lrde.epita.fr>
parents: 17091
diff changeset
1319 # 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
1320 # announcement message: it would start with " GEN announcement".
17104
bcbe636cc12f maint.mk: silent rules
Akim Demaille <akim@lrde.epita.fr>
parents: 17091
diff changeset
1321 $(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
1322 --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
1323 --release-type=$(release-type) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1324 --package=$(PACKAGE) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1325 --prev=$(PREV_VERSION) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1326 --curr=$(VERSION) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1327 --gpg-key-id=$(gpg_key_ID) \
16907
3cd0e20dcf8e announce-gen: VPATH issues
Akim Demaille <akim@lrde.epita.fr>
parents: 16904
diff changeset
1328 --srcdir=$(srcdir) \
12581
25232b487199 maint: support 'make announcement' from a VPATH build
Eric Blake <ebb9@byu.net>
parents: 12576
diff changeset
1329 --news=$(srcdir)/NEWS \
11501
5223ecd9ec17 maint.mk: import improvements from m4
Eric Blake <ebb9@byu.net>
parents: 11500
diff changeset
1330 --bootstrap-tools=$(bootstrap-tools) \
16554
dad9ad605e56 maint.mk: allow announcement for non-gnulib project
Eric Blake <eblake@redhat.com>
parents: 16553
diff changeset
1331 $$(case ,$(bootstrap-tools), in (*,gnulib,*) \
dad9ad605e56 maint.mk: allow announcement for non-gnulib project
Eric Blake <eblake@redhat.com>
parents: 16553
diff changeset
1332 echo --gnulib-version=$(gnulib-version);; esac) \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1333 --no-print-checksums \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1334 $(addprefix --url-dir=, $(url_dir_list))
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1335
17021
37799b20257d maint.mk: a "release-commit" wrapper to do-release-commit-and-tag
Akim Demaille <akim@lrde.epita.fr>
parents: 17018
diff changeset
1336 .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
1337 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
1338 $(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
1339 && $(_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
1340 -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
1341
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1342 ## ---------------- ##
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1343 ## Updating files. ##
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
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1346 ftp-gnu = ftp://ftp.gnu.org/gnu
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1347 www-gnu = http://www.gnu.org
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1348
12864
9ab78f8f0368 maint.mk: allow the default upload destination dir to be overridden
Jim Meyering <meyering@redhat.com>
parents: 12863
diff changeset
1349 upload_dest_dir_ ?= $(PACKAGE)
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1350 upload_command = \
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1351 $(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1352 --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
1353 $(rel-files)
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1354 emit_upload_commands:
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1355 @echo =====================================
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1356 @echo =====================================
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1357 @echo '$(upload_command)'
12538
a8059f620e8f maint.mk: create announcement template in ~/, not in /tmp
Jim Meyering <meyering@redhat.com>
parents: 12443
diff changeset
1358 @echo '# send the ~/announce-$(my_distdir) e-mail'
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1359 @echo =====================================
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1360 @echo =====================================
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1361
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1362 .PHONY: upload
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1363 upload:
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1364 $(AM_V_GEN)$(upload_command)
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1365
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1366 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
1367 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
1368 '* 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
1369 '* .prev-version: Record previous version.' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1370 '* cfg.mk (old_NEWS_hash): Auto-update.'
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1371 endef
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1372
11534
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1373 .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
1374 no-submodule-changes:
17244
3b0b0f3b01a6 maint.mk: handle missing git with more grace
Peter Rosin <peda@lysator.liu.se>
parents: 17202
diff changeset
1375 $(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
1376 && 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
1377 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
1378 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
1379 || exit 1; \
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1380 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
1381 *) 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
1382 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
1383 else \
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1384 : ; \
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1385 fi
9f608fba8b1c build: ensure that a release build fails when a submodule is unclean
Jim Meyering <meyering@redhat.com>
parents: 11519
diff changeset
1386
14137
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1387 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
1388
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1389 # 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
1390 # 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
1391 # 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
1392 .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
1393 public-submodule-commit:
17244
3b0b0f3b01a6 maint.mk: handle missing git with more grace
Peter Rosin <peda@lysator.liu.se>
parents: 17202
diff changeset
1394 $(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
1395 && 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
1396 cd $(srcdir) && \
17162
f54c37d872ca maint.mk: avoid gratuitous failure
Theophile Ranquet <ranquet@lrde.epita.fr>
parents: 17143
diff changeset
1397 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
1398 '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
1399 = "$$(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
1400 || { 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
1401 exit 1; }; \
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1402 else \
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1403 : ; \
2dbfa19b11d0 maint.mk: add pre-release check to ensure submodule commits are public
Eric Blake <eblake@redhat.com>
parents: 14079
diff changeset
1404 fi
14199
d6780f2a0ebc maint.mk: make "check" depend on public-submodule-commit by default
Jim Meyering <meyering@redhat.com>
parents: 14190
diff changeset
1405 # 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
1406 # 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
1407 # 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
1408 # 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
1409 # 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
1410 # 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
1411 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
1412 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
1413
17106
e429e0d221f9 maint.mk: provide "make upload" to ease uploading
Akim Demaille <akim@lrde.epita.fr>
parents: 17105
diff changeset
1414 .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
1415 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
1416 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
1417 $(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
1418 && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1419 || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1420 || :
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1421 $(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
1422 $(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
1423 $(AM_V_at)$(MAKE) distcheck
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1424 $(AM_V_at)$(MAKE) dist
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1425 $(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
1426 $(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
1427
17109
58f466c59931 maint.mk: fix strict vs. lazy variable issues with RELEASE
Akim Demaille <akim@lrde.epita.fr>
parents: 17107
diff changeset
1428 release:
17527
909b44293f8e maint.mk: fix "release" target to build _version
Jim Meyering <meyering@fb.com>
parents: 17526
diff changeset
1429 $(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
1430 $(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
1431
12443
3a97f22a64eb maint.mk: allow a project to override release-prep commands
Alfred M. Szmidt <ams@gnu.org>
parents: 12441
diff changeset
1432 # 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
1433 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
1434
13871
8c865631b168 maint.mk: rename variable: s/noteworthy/gl_noteworthy_news_/
Jim Meyering <meyering@redhat.com>
parents: 13865
diff changeset
1435 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
1436 .PHONY: release-prep
3a97f22a64eb maint.mk: allow a project to override release-prep commands
Alfred M. Szmidt <ams@gnu.org>
parents: 12441
diff changeset
1437 release-prep:
17105
f8dcc5a28ca3 maint.mk: factor the validation of RELEASE_TYPE
Akim Demaille <akim@lrde.epita.fr>
parents: 17104
diff changeset
1438 $(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
1439 > ~/announce-$(my_distdir)
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1440 $(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
1441 ln $(rel-files) $(release_archive_dir); \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1442 chmod a-w $(rel-files); \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1443 fi
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1444 $(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
1445 $(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
1446 $(AM_V_at)perl -pi \
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1447 -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
1448 $(srcdir)/NEWS
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1449 $(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
1450 cd $(srcdir) && $(VC) commit -m "$$msg" -a
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1451
13309
eeb72cb4f562 maint.mk: allow to pass options to gendocs.sh
Jim Meyering <meyering@redhat.com>
parents: 13306
diff changeset
1452 # 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
1453 # 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
1454 gendocs_options_ ?=
eeb72cb4f562 maint.mk: allow to pass options to gendocs.sh
Jim Meyering <meyering@redhat.com>
parents: 13306
diff changeset
1455
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1456 .PHONY: web-manual
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1457 web-manual:
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1458 $(AM_V_GEN)test -z "$(manual_title)" \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1459 && { 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
1460 $(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
1461 $(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
1462 -o '$(abs_builddir)/doc/manual' \
11495
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1463 --email $(PACKAGE_BUGREPORT) $(PACKAGE) \
d88c5ec9288d Sync maint.mk with coreutils.
Simon Josefsson <simon@josefsson.org>
parents: 11484
diff changeset
1464 "$(PACKAGE_NAME) - $(manual_title)"
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1465 $(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
1466
17017
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1467 .PHONY: web-manual-update
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1468 web-manual-update:
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1469 $(AM_V_GEN)cd $(srcdir) \
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1470 && $(_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
1471
f8db24372e01 maint.mk: provide a web-manual-update target
Akim Demaille <akim@lrde.epita.fr>
parents: 17013
diff changeset
1472
10738
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1473 # Code Coverage
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1474
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1475 init-coverage:
11406
ae9bcb808cfd maint.mk: really add $(AM_MAKEFLAGS)
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
parents: 11405
diff changeset
1476 $(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
1477 lcov --directory . --zerocounters
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1478
10757
0affc3e42aa9 maint.mk: Use --coverage.
Simon Josefsson <simon@josefsson.org>
parents: 10738
diff changeset
1479 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
1480 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
1481
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1482 build-coverage:
11406
ae9bcb808cfd maint.mk: really add $(AM_MAKEFLAGS)
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
parents: 11405
diff changeset
1483 $(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
1484 $(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
1485 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
1486 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
1487 --capture
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1488
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1489 gen-coverage:
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1490 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
1491 $(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
1492 --highlight --frames --legend \
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1493 --title "$(PACKAGE_NAME)"
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1494
af888e12d10d top/maint.mk: Add coverage rules, inspired by scripts in gnupdf.
Simon Josefsson <simon@josefsson.org>
parents: 10368
diff changeset
1495 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
1496
17005
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1497 # 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
1498 # 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
1499 # 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
1500 # 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
1501 # 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
1502 # 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
1503 # 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
1504 # 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
1505 .PHONY: refresh-gnulib-patches
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1506 refresh-gnulib-patches:
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1507 gl=gl; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1508 if test -f bootstrap.conf; then \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1509 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
1510 -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
1511 test -n "$$t" && gl=$$t; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1512 fi; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1513 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
1514 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
1515 VERSION_CONTROL=none \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1516 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
1517 ( cd $(gnulib_dir) || exit 1; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1518 git diff "$$b" > "../$$gl/$$diff"; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1519 git checkout $$b ) || exit 1; \
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1520 done
f471a51b1369 maint.mk: new rule: refresh-gnulib-patches
Jim Meyering <meyering@redhat.com>
parents: 17001
diff changeset
1521
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1522 # Update gettext files.
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1523 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
1524 PO_DOMAIN ?= $(PACKAGE)
489151a3b578 maintainer-makefile: (PO_DOMAIN): New variable, allows overriding of gettext domain.
Simon Josefsson <simon@josefsson.org>
parents: 11468
diff changeset
1525 POURL = http://translationproject.org/latest/$(PO_DOMAIN)/
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1526 PODIR ?= po
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1527 refresh-po:
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1528 rm -f $(PODIR)/*.po && \
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1529 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
1530 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
1531 echo 'en@boldquot' > $(PODIR)/LINGUAS && \
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1532 echo 'en@quot' >> $(PODIR)/LINGUAS && \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1533 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
1534 sort >> $(PODIR)/LINGUAS
9811
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1535
13286
bacd8565eeaa top/maint.mk (indent): Run twice to produce idempotent results.
Simon Josefsson <simon@josefsson.org>
parents: 13278
diff changeset
1536 # 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
1537 INDENT_SOURCES ?= $(C_SOURCES)
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1538 .PHONY: indent
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1539 indent:
5f79eb63c21e Alter GNUmakefile to install into top directory.
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1540 indent $(INDENT_SOURCES)
13286
bacd8565eeaa top/maint.mk (indent): Run twice to produce idempotent results.
Simon Josefsson <simon@josefsson.org>
parents: 13278
diff changeset
1541 indent $(INDENT_SOURCES)
11776
9deb84e458cb maint.mk: add a copyright-updating rule
Jim Meyering <meyering@redhat.com>
parents: 11750
diff changeset
1542
11834
5c2855361aa1 maint.mk: support update-copyright-env
Joel E. Denny <jdenny@clemson.edu>
parents: 11788
diff changeset
1543 # 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
1544 # put the assignments in this variable.
5c2855361aa1 maint.mk: support update-copyright-env
Joel E. Denny <jdenny@clemson.edu>
parents: 11788
diff changeset
1545 update-copyright-env ?=
5c2855361aa1 maint.mk: support update-copyright-env
Joel E. Denny <jdenny@clemson.edu>
parents: 11788
diff changeset
1546
11776
9deb84e458cb maint.mk: add a copyright-updating rule
Jim Meyering <meyering@redhat.com>
parents: 11750
diff changeset
1547 # 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
1548 # 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
1549 # If you have an additional project-specific rule,
4103ca3d0881 maint.mk: simplify update-copyright rule
Eric Blake <ebb9@byu.net>
parents: 11834
diff changeset
1550 # 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
1551 # 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
1552 # 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
1553 # in the file .x-update-copyright.
11776
9deb84e458cb maint.mk: add a copyright-updating rule
Jim Meyering <meyering@redhat.com>
parents: 11750
diff changeset
1554 .PHONY: update-copyright
11836
4103ca3d0881 maint.mk: simplify update-copyright rule
Eric Blake <ebb9@byu.net>
parents: 11834
diff changeset
1555 update-copyright:
17018
5c9f5fd5fc49 maint.mk: use silent-rules support from Automake
Akim Demaille <akim@lrde.epita.fr>
parents: 17017
diff changeset
1556 $(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
1557 $$(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
1558 | $(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
1559
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1560 # 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
1561 # 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
1562
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1563 # 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
1564 # 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
1565 _gl_TS_dir ?= src
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1566
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1567 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
1568 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
1569 @fail=0; \
79e8ec9a79db maint.mk: sc_tight_scope: propagate failure from sub-make
Jim Meyering <meyering@redhat.com>
parents: 15587
diff changeset
1570 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
1571 > /dev/null \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1572 && ! 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
1573 > /dev/null 2>&1; then \
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1574 echo '$(ME): skipping $@'; \
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1575 else \
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1576 $(MAKE) -s -C $(_gl_TS_dir) \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1577 -f Makefile \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1578 -f $(abs_top_srcdir)/cfg.mk \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1579 -f $(abs_top_builddir)/$< \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1580 _gl_tight_scope \
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1581 || fail=1; \
15615
79e8ec9a79db maint.mk: sc_tight_scope: propagate failure from sub-make
Jim Meyering <meyering@redhat.com>
parents: 15587
diff changeset
1582 fi; \
79e8ec9a79db maint.mk: sc_tight_scope: propagate failure from sub-make
Jim Meyering <meyering@redhat.com>
parents: 15587
diff changeset
1583 rm -f $<; \
79e8ec9a79db maint.mk: sc_tight_scope: propagate failure from sub-make
Jim Meyering <meyering@redhat.com>
parents: 15587
diff changeset
1584 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
1585
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1586 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
1587 @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
1588 @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
1589 @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
1590
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1591 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
1592 # TS-start
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1593
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1594 # 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
1595 # 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
1596 # 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
1597 # 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
1598 # 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
1599 _gl_TS_unmarked_extern_functions ?= main usage
15493
1634a5da2f6e maint.mk: relax the default _gl_TS_function_match regexp
Jim Meyering <meyering@redhat.com>
parents: 15478
diff changeset
1600 _gl_TS_function_match ?= /^(?:$(_gl_TS_extern)) +.*?(\S+) *\(/
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1601
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1602 # 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
1603 # 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
1604 # export _gl_TS_extern = extern|XTERN
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1605 _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
1606
16235
18a38c9615f0 In commentary, do not use ` to quote.
Paul Eggert <eggert@cs.ucla.edu>
parents: 16212
diff changeset
1607 # 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
1608 # 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
1609 # 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
1610 # 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
1611 _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
1612
b952f928cb43 maint.mk: change semantics/name of tight_scope variables
Jim Meyering <meyering@redhat.com>
parents: 14717
diff changeset
1613 # 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
1614 # 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
1615 # 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
1616 # 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
1617 # 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
1618 # 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
1619 # export _gl_TS_var_match = \
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1620 # /^(?:$(_gl_TS_extern)) .*?\**(\w+)(\[.*?\])?;/ || /\bGLOBAL\(.*?,\s*(.*?),/
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1621 _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
1622
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1623 # 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
1624 _gl_TS_obj_files ?= *.$(OBJEXT)
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1625
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1626 # 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
1627 # $(_gl_TS_dir)-relative.
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1628 _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
1629 _gl_TS_other_headers ?= *.h
14801
60872968acd0 maint.mk: more tight_scope improvements
Jim Meyering <meyering@redhat.com>
parents: 14800
diff changeset
1630
14716
8cfc1daa9cff maint.mk: tweak new rule's name not to impinge
Jim Meyering <meyering@redhat.com>
parents: 14715
diff changeset
1631 .PHONY: _gl_tight_scope
8cfc1daa9cff maint.mk: tweak new rule's name not to impinge
Jim Meyering <meyering@redhat.com>
parents: 14715
diff changeset
1632 _gl_tight_scope: $(bin_PROGRAMS)
14715
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1633 t=exceptions-$$$$; \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1634 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
1635 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
1636 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
1637 done; \
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1638 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
1639 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
1640 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
1641 test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`; \
14754
1299c18d8f6a maint.mk: exclude compiler symbols from sc_tight_scope
Pádraig Brady <P@draigBrady.com>
parents: 14728
diff changeset
1642 ( 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
1643 grep -h -A1 '^extern .*[^;]$$' $$src \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1644 | grep -vE '^(extern |--)' | $(SED) 's/ .*//'; \
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1645 perl -lne \
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1646 '$(_gl_TS_function_match) and print "^$$1\$$"' $$hdr; \
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1647 ) | sort -u > $$t; \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1648 nm -e $(_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
1649 && { 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
1650 exit 1; } || : ; \
14754
1299c18d8f6a maint.mk: exclude compiler symbols from sc_tight_scope
Pádraig Brady <P@draigBrady.com>
parents: 14728
diff changeset
1651 ( printf '^%s$$\n' '__.*' $(_gl_TS_unmarked_extern_vars); \
17091
ecace80c3b49 maint.mk: generalize _gl_tight_scope for non-recursive make
Jim Meyering <meyering@redhat.com>
parents: 17090
diff changeset
1652 perl -lne '$(_gl_TS_var_match) and print "^$$1\$$"' \
ecace80c3b49 maint.mk: generalize _gl_tight_scope for non-recursive make
Jim Meyering <meyering@redhat.com>
parents: 17090
diff changeset
1653 $$hdr $(_gl_TS_other_headers) \
14800
a5a7a62228b6 maint.mk: generalize/improve the tight-scope rule
Jim Meyering <meyering@redhat.com>
parents: 14756
diff changeset
1654 ) | sort -u > $$t; \
17613
c18fb7a002f4 maintainer-makefiles: use $(SED) for syntax check
Eric Blake <eblake@redhat.com>
parents: 17585
diff changeset
1655 nm -e $(_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
1656 | 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
1657 && { 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
1658 exit 1; } || :
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1659 # TS-end
80242e285601 maint.mk: add a syntax-check rule to ensure tightly-scoped symbols
Jim Meyering <meyering@redhat.com>
parents: 14709
diff changeset
1660 endif