annotate top/maint.mk @ 18623:4c11f0afa3b7

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