1 # Make coreutils documentation. -*-Makefile-*-
2 # This is included by the top-level Makefile.am.
4 # Copyright (C) 1995-2024 Free Software Foundation, Inc.
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <https://www.gnu.org/licenses/>.
19 info_TEXINFOS
= doc
/coreutils.texi
21 doc_coreutils_TEXINFOS
= \
23 doc
/parse-datetime.texi \
28 # The customization variable CHECK_NORMAL_MENU_STRUCTURE is necessary with
29 # makeinfo versions ≥ 6.8.
30 MAKEINFO
= @MAKEINFO@
-c CHECK_NORMAL_MENU_STRUCTURE
=1
32 # The following is necessary if the package name is 8 characters or longer.
33 # If the info documentation would be split into 10 or more separate files,
34 # then this is necessary even if the package name is 7 characters long.
36 # Tell makeinfo to put everything in a single info file: <package>.info.
37 # Otherwise, it would also generate files with names like <package>.info-[123],
38 # and those names all map to one 14-byte name (<package>.info-) on some crufty
40 AM_MAKEINFOFLAGS
= --no-split
42 doc
/constants.texi
: $(top_srcdir
)/src
/tail.c
$(top_srcdir
)/src
/shred.c
43 $(AM_V_GEN
)LC_ALL
=C
; export LC_ALL
; \
45 { sed
-n
-e
's/^#define \(DEFAULT_MAX[_A-Z]*\) \(.*\)/@set \1 \2/p' \
46 $(top_srcdir
)/src
/tail.c
&& \
48 's/.*\(DEFAULT_PASSES\)[ =]* \([0-9]*\).*/@set SHRED_\1 \2/p'\
49 $(top_srcdir
)/src
/shred.c
; } > $@
-t \
50 && { cmp
$@
-t
$@
>/dev
/null
2>&1 || mv
$@
-t
$@
; rm -f
$@
-t
; }
52 MAINTAINERCLEANFILES
+= doc
/constants.texi
54 # Extended regular expressions to match word starts and ends.
55 _W
= (^|
[^A-Za-z0-9_
])
56 W_
= ([^A-Za-z0-9_
]|
$$)
65 sc-exponent-grouping \
68 texi_files
= $(srcdir)/doc
/*.texi
70 .PHONY
: $(syntax_checks
) check-texinfo
72 # List words/regexps here that should not appear in the texinfo documentation.
73 check-texinfo
: $(syntax_checks
)
75 grep
'@url{' $(texi_files
) && fail
=1; \
76 grep
'\$$@"' $(texi_files
) && fail
=1; \
77 grep
-n
'[^[:punct:]]@footnote' $(texi_files
) && fail
=1; \
78 grep
-n filename
$(texi_files
) \
79 |
$(EGREP
) -v
'setfilename|[{]filename[}]' \
84 $(AM_V_GEN
)$(EGREP
) -i
'$(_W)builtins?$(W_)' $(texi_files
) \
89 $(EGREP
) -i
'$(_W)path(name)?s?$(W_)' $(texi_files
) \
91 'PATH=|path search|search path|@vindex PATH$$|@env[{]PATH[}]' \
95 # Use "time zone", not "timezone".
97 $(AM_V_GEN
)$(EGREP
) timezone
$(texi_files
) && exit
1 ||
:
99 # Check for insufficient exponent grouping, e.g.,
100 # @math{2^64} should be @math{2^{64}}.
101 sc-exponent-grouping
:
102 $(AM_V_GEN
)$(EGREP
) '\{.*\^[0-9][0-9]' $(texi_files
) && exit
1 ||
:
106 $(AM_V_GEN
)$(EGREP
) '$(_W)IO$(W_)' $(texi_files
) && exit
1 ||
:
108 # I prefer nonzero over non-zero.
110 $(AM_V_GEN
)$(EGREP
) non-zero
$(texi_files
) && exit
1 ||
:
112 # Use "zeros", not "zeroes" (nothing wrong with "zeroes"; just be consistent).
114 $(AM_V_GEN
)$(EGREP
) -i
'$(_W)zeroes$(W_)' $(texi_files
) \
117 # The quantity inside @var{...} should not contain upper case letters.
118 # The leading backslash exemption is to permit in-macro uses like
119 # @var{\varName\} where the upper case letter is part of a parameter name.
120 find_upper_case_var
= \
121 '/\@var\{/ or next; \
122 while (/\@var\{(.+?)}/g) \
125 $$v =~ /[A-Z]/ && $$v !~ /^\\/ and (print "$$ARGV:$$.:$$_"), $$m = 1 \
127 END {$$m and (warn "$@: do not use upper case in \@var{...}\n"), exit 1}'
129 $(AM_V_GEN
)$(PERL
) -e
1 ||
{ echo
$@
: skipping
test; exit
0; }; \
130 $(PERL
) -lne
$(find_upper_case_var
) $(texi_files
)
132 check-local
: check-texinfo