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