| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Fixes (hopefully) automake bug https://bugs.gnu.org/61867.
* bin/automake.in: restore explicit per-directory pattern rules,
since evidently @D is not supported on BSD-derived makes,
whatever POSIX says. That is, revert this commit:
https://git.savannah.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=55f8fcfd08cbf15d65d61dd2db934b6c3171cf06
|
|
|
|
| |
This is needed for better treatment of high-res timestamps.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We can leverage $(@D) to generate a single pattern rule for all dirstamp
rules. This saves many lines in the output -- normally we create 2 rules
(or 6 lines) per subdir, and projects that use subdirs tend to use them
quite a bit.
In the most extreme & unlikely case (1 subdir, no depdir support), the
line count is the same. In every other case, it's always a win.
Looking at a few real world projects, the line deltas:
* GNU libgloss: +3 -66
* GNU newlib: +3 -714
* GNU sim: +3 -138
There shouldn't be any concerns about portability with $(@D) because:
(0) This has been in POSIX (and beyond) for decades,
(1) We only generate this rule iff we know the dirstamp is in a subdir
(so we'd never have a case where $(@D) would expand to the cwd, and
that is where a few implementations are known to be buggy),
(2) We already rely on $(@D) in our depdir code, and have since 2014
(the Automake 1.16 release).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We changed the depfiles logic to use >> (append) instead of > (truncate)
due to it being slightly faster & nicer to the disk. Do the same with
the dirstamp files as we only need the files to exist -- we don't care
about their content, and we never put anything in them ourselves. If
someone else were to, we clean them up normally with `make clean`.
Simple test case on my Linux 6.1 w/ext4 on SSD:
@: > foo.txt
for (i = 0; i < 1000000; ++i) close(open("foo.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666));
-> 769 msec
@: >>foo.txt
for (i = 0; i < 1000000; ++i) close(open("foo.txt", O_WRONLY|O_CREAT|O_APPEND, 0666));
-> 2 sec
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes automake bug https://bugs.gnu.org/10828.
Clean up a few more cases where we were doing `test ... || rm ...` to
avoid calling `rm -f` without arguments by leveraging am__rm_f. These
were harder to find in the source due to their constructed nature.
The clean programs rules in particular were much more complicated than
they needed to be. This logic boiled down to two things: delete the
list of programs, and then delete the list without the exeext suffix,
but only if the list of programs is non-empty.
The check-TESTS rule was converted to am__rm_f, but a simplification
was missed where the $list variable is inlined.
* bin/automake.in: Delete test -z logic and always call am__rm_f.
* contrib/check-html.am: Use $(am__rm_f) helper.
* doc/automake.texi: Update examples to match current behavior.
* lib/am/check.am: Inline $list variable.
* lib/am/progs.am: Rewrite rule to use $(am__rm_f).
|
| |
|
|
|
|
|
|
| |
* bin/aclocal.in (usage): check that envvars (ACLOCAL_AUTOMAKE_DIR,
ACLOCAL_PATH) are defined before printing values.
* HACKING: describe running scripts from checkout, et al.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes automake bug https://bugs.gnu.org/54063.
The function scanning for @setfilename will fall back to a default
value if the input doesn't have one defined. But we need to handle
the case where the file doesn't even exist before falling back.
* bin/automake.in: Scan /dev/null for @setfilename if input doesn't exist.
* t/list-of-tests.mk: Add txinfo-no-setfilename-no-inputs.sh.
* t/txinfo-no-setfilename-no-inputs.sh: New test.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes automake bug https://bugs.gnu.org/20300.
The internal method for caching path lookups expects the $filename to
only be a filename. If it's actually a subdir/file itself, then the
cache logic gets confused, and it never matches. This manifests as
AC_REQUIRE_AUX_FILE([subdir/file]) claiming that the subdir/file path
doesn't exist even when it does.
Before we process any required files, since we already construct the
full path locally, reset the dir & file inputs to the final values.
* bin/automake.in: Split dir & file name back out from the constructed
required file path.
* t/auxdir-subsubdir.sh: New test.
* t/list-of-tests.mk: Add t/auxdir-subsubdir.sh.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes automake bug https://bugs.gnu.org/23599.
When generating info/html pages, automake adds -I flags to source
dirs that contain the texi files, but it doesn't do this for dvi or
pdf formats. Instead, automake has been relying on texi2dvi to use
makeinfo for expanding macros, and it hasn't done that by default in
a long time.
Since adding --expand to the texi2dvi call is undesirable (due to bad
and unpredictable BEHAVIOR), pass those automatic -I flags directly
to TEXI2DVI & TEXI2PDF so they work regardless of --expand behavior.
We have to keep the MAKEINFO= setting around as texi2dvi might itself
fall back to it if the version of tex is old or broken.
* bin/automake.in: Add comment about $makeinfoflags usage.
* doc/automake.texi: Mention automatic -I subdir flags.
* lib/am/texibuild.am: Pass %MAKEINFOFLAGS% to TEXI2DVI & TEXI2PDF.
* t/txinfo-subdir-pr343.sh: Check for -I subdir usage.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Much like we have per-target support for _AR and _LINK, add an _RANLIB
override too. This allows selection of specific ranlib tools in case
a non-standard archiver tool was forced.
* bin/automake.in: Check for _RANLIB per-target settings.
* doc/automake.texi: Document _RANLIB override.
* lib/am/library.am: Change $(RANLIB) to $(%XLIBRARY%_RANLIB).
* t/list-of-tests.mk: Add ranlib_override.sh.
* t/ranlib_override.sh: New test.
* NEWS: Mention new feature.
|
|
|
|
|
|
|
|
|
|
| |
Add a short summary to --help of the current paths that will be
searched. Make sure to omit this from the man page when running
help2man since pre-inst-env specifically clears some and others
to the current build directory.
* bin/aclocal.in: Include m4 search paths in usage.
* doc/local.mk: Run help2man with AUTOMAKE_HELP2MAN=true.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Report and patch:
https://lists.gnu.org/archive/html/automake/2021-08/msg00016.html
* bin/automake.in (generate_makefile): depend on
install-libLTLIBRARIES for all PROGRAMS and LTLIBRARIES,
such as install-pkglibLTLIBRARIES.
* NEWS: mention this.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Patch posted:
https://lists.gnu.org/archive/html/automake-patches/2021-07/msg00010.html
* bin/automake.in (define_per_target_linker_variable): Use
AM_V_${target}_LINK if defined as the verbose variable name for
custom link commands.
* doc/automake.texi (Program and Library Variables): Document the new
variable.
* t/link_override.sh: Add extra checks for silent make rules.
* NEWS: Mention this.
* THANKS: new contributor.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* bin/automake.in (preprocess_file): Process new option here,
(handle_dist): ... not here.
* lib/Automake/Options.pm (_is_valid_easy_option):
Remove pure-dist.
* lib/am/distdir.am: Don't factor out the duplicate-looking
$(MAKE)... command. Otherwise, many dist-using tests would fail
for me, e.g., t/aclocal-amflags.sh.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes automake bug https://debbugs.gnu.org/49317.
* bin/automake.in: implement new option "no-dist-built-sources" to
omit the dependency of distdir on $(BUILT_SOURCES). (Allison's
original patch used the option name dist-pure; trivially renamed.)
* lib/am/distdir.am (distdir) [DIST_BUILT_SOURCES]: conditionalize
the dependency.
* lib/Automake/Options.pm (_is_valid_easy_option): list it.
* doc/automake.texi (List of Automake options): document it.
* NEWS: mention it.
* t/dist-no-built-sources.sh: test it.
* t/list-of-tests.mk (handwritten_TESTS): add it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change was suggested by madmurphy; some ideas were taken
from the patch he provided.
https://lists.gnu.org/archive/html/automake-patches/2021-06/msg00005.html
* bin/automake.in (@toplevelmd_ok): new global, listing the files
for which we will accept .md versions.
(@common_files): remove those files from there.
(handle_dist): check for .md if non-.md is absent.
(handle_minor_options): check for README-alpha.md.
(check_gnu_standards): accept .md version if present.
(check_gnits_standards): likewise.
(usage): output list of .md-accepted files.
* doc/automake.texi (Basics of Distribution): document.
* t/toplevelmd.sh: new test.
* t/list-of-tests.mk (handwritten_tests): add it.
* NEWS: mention new feature.
|
|
|
|
|
|
|
|
|
| |
This change fixes https://bugs.gnu.org/46744.
* bin/automake.in: sort keys, in: handle_LIBOBJS, handle_clean,
handle_factored_dependencies, scan_autoconf_traces,
lang_vala_finish.
* NEWS: mention this.
|
|
|
|
|
|
|
|
| |
This change updates https://bugs.gnu.org/44772.
* bin/automake.in (lang_vala_finish_target): comment that
we're checking "C file not older than Vala file", and the
log message misleadingly says "reversed".
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change somewhat ameliorates https://bugs.gnu.org/20699.
* bin/automake.in (handle_single_transform): change
forward-incompatibility message for subdir-objects to be
less draconian and less certain that the change will ever be made.
* t/subobj.sh: message text has changed.
* doc/automake.texi (Program and Library Variables): mention
the unfortunate fact that one directory can clean in a sibling,
subdir-objects notwithstanding.
|
|
|
|
|
|
|
|
| |
This change might fix https://bugs.gnu.org/44772.
* bin/automake.in (lang_val_finish_target): reverse -newer test
to handle files being created at the same time causing
spurious rebuilds.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change fixes https://bugs.gnu.org/13002.
* NEWS: mention these changes.
* bin/automake.in: generated C files go in builddir, not srcdir.
Distribute the header files generated from VAPI files.
* t/vala-libs-distcheck.sh: new test for `make distcheck' of a
Vala library.
* t/vala-libs-vpath.sh: new test for a VPATH build of a Vala library.
* t/vala-libs.sh: add local VAPIs used as external --package to test.
* t/vala-recursive-setup.sh: we need to make
maintainer-clean at one point to remove stamp files to avoid
confusing a VPATH build performed after a non-VPATH build.
* t/vala-non-recursive-setup.sh: likewise.
* t/vala-parallel.sh: some test paths need changing to take into
account that generated C files now go in builddir.
* t/vala-per-target-flags.sh: likewise.
* t/vala-recursive-setup.sh: likewise.
* t/vala-vpath.sh: likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
aclocal uses autom4te in trace mode to scan configure.ac for macros whose
definition is not yet available. It has a kludge to prevent this from
producing spurious warnings, but a cleaner, fully backward compatible, way to
get the same effect is to set WARNINGS=none in the environment and not pass
down any -W options. (This is better than passing -Wnone on the command line
because it automatically inherits to any subprocesses started by autom4te.)
Perl’s ‘local’ feature can be used to make the enviironment variable setting
temporary, reverting to the previous value when we exit the function.
automake also runs autom4te (technically autoconf) in trace mode; warnings
from this invocation will not be *spurious*, but in the common case where
the person running automake is going to run autoconf next, they will be
duplicated. Therefore, make the same change to automake.
* bin/aclocal.in (trace_used_macros)
* bin/automake.in (scan_autoconf_traces):
Use “local $ENV{WARNINGS}='none'” to suppress warnings from autom4te.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
automake and aclocal were processing ‘-W(no-)error’ whenever it
appeared on the command line, which means that
‘-Werror,something-strange’ would issue a hard error, but
‘-Wsomething-strange,error’ would only issue a warning.
It is not desirable for warnings about unknown warning categories ever to be
treated as a hard error; that leads to problems for driver scripts like
autoreconf, which would like to pass whatever -W options it got on its own
command line down to all the tools and not worry about which tools understand
which warning categories. Also, this sort of order dependence is confusing
for humans.
Change parse_warnings to take just one option, the _complete_ list of warning
categories seen on the command line, and to process -Werror / -Wno-error after
processing all other warnings options. Thus, unknown warnings categories will
always just be a plain warning. This does mean aclocal has to stop using
parse_warnings as a Getopt::Long callback, but that’s not a big deal.
Similarly, change parse_WARNINGS to record whether ‘error’ appeared in the
environment variable, but not activate warnings-are-errors mode itself.
parse_warnings picks up the record and honors it, unless it’s overridden by
the command line.
* lib/Automake/ChannelDefs.pm ($werror): New package global (not exported).
(parse_WARNINGS): Do not call switch_warning for ‘error’ / ‘no-error’;
just toggle the value of $werror.
(parse_warnings): Do not call switch_warning immediately for
‘error’ / ‘no-error’; toggle $werror instead. Call switch_warning ‘error’
at the very end if $werror is true. Remove unused $OPTION argument.
* bin/automake.in: parse_warnings now takes only one argument.
* bin/aclocal.in: Call parse_warnings after parse_options instead of
using it as a parse_options callback.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ChannelDefs.pm *ought* to be kept in sync between automake and autoconf,
because it defines the set of valid -W options, and autoreconf assumes
that it can pass arbitrary -W options to all of the tools it invokes.
However, it isn’t covered by either project’s ‘make fetch’ and it hasn’t
actually *been* in sync for more than 17 years.
This patch manually brings over all of the changes made on the autoconf side.
Most importantly, there is a new warnings channel ‘cross’, for warnings
related to cross-compilation. Also, the ‘usage’ function now *returns*
the text to be put into a usage message, instead of printing it itself.
(This is necessary on autoconf’s side.)
* lib/Automake/ChannelDefs.pm: Sync from autoconf.
(cross): New warnings channel.
(portability-recursive): Document.
(usage): Now returns the text to be printed, instead of printing it.
(parse_warnings): Second argument may now be a list.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Per thread at:
https://lists.gnu.org/archive/html/automake-patches/2020-08/msg00009.html
* bin/aclocal.in: use warnings instead of #!...-w;
consistent ordering of basic "use" directives,
then BEGIN block,
then standard modules in ASCII order,
then Automake:: modules (not sort),
finally use vars.
Also sort @ISA lists and use qw(...) in ASCII order.
* bin/automake.in: likewise.
* lib/Automake/ChannelDefs.pm: likewise.
* lib/Automake/Channels.pm: likewise.
* lib/Automake/Condition.pm: likewise.
* lib/Automake/Config.in: likewise.
* lib/Automake/Configure_ac.pm: likewise.
* lib/Automake/DisjConditions.pm: likewise.
* lib/Automake/FileUtils.pm: likewise.
* lib/Automake/General.pm: likewise.
* lib/Automake/Getopt.pm: likewise.
* lib/Automake/Item.pm: likewise.
* lib/Automake/ItemDef.pm: likewise.
* lib/Automake/Language.pm: likewise.
* lib/Automake/Location.pm: likewise.
* lib/Automake/Options.pm: likewise.
* lib/Automake/Rule.pm: likewise.
* lib/Automake/RuleDef.pm: likewise.
* lib/Automake/VarDef.pm: likewise.
* lib/Automake/Variable.pm: likewise.
* lib/Automake/Version.pm: likewise.
* lib/Automake/Wrap.pm: likewise.
* lib/Automake/XFile.pm: remove unnecessary imports of
Carp, DynaLoader, and File::Basename.
|
|
|
|
|
|
|
|
|
| |
This change fixes https://bugs.gnu.org/42635.
* bin/automake.in (handle_tests): do not use $test_suffixes[0]
if it does not exist.
* t/test-extensions-empty.sh: new test.
* t/list-of-tests.mk (handwritten_TESTS): add it.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem reported by Antoine Amarilli in:
https://lists.gnu.org/archive/html/automake/2019-01/msg00000.html
and followed up by Akim Demaille in:
https://lists.gnu.org/archive/html/bug-bison/2020-07/msg00040.html
* bin/automake.in: Add a comment about this.
* lib/install-sh: Ignore umask; just create directories mode 755
unless overridden via -m (for non-intermediate directories only).
Also, fix 'umask=$mkdir_umask' typo.
* lib/mkinstalldirs: Likewise.
|
|
|
|
|
|
|
| |
This change fixes https://bugs.gnu.org/32100.
* bin/aclocal.in (install_file): remove duplicate "the" in
"Using the real the destination file ...".
|
|
|
|
|
|
|
|
| |
This change fixes https://bugs.gnu.org/18734.
* bin/automake.in (lang_vala_finish_target): anchor option regexp
so that, e.g., an argument "vapi" does not match the option --vapi.
* NEWS: mention this (and preceding checklinkx change, sorry).
|
| |
|
|
|
|
|
|
|
|
| |
This change fixes automake bug#38139.
* bin/automake.in (handle_tags): Concatenate with space in " @config".
* t/tags-lisp-space.sh: New test.
* t/list-of-tests.mk (handwritten_TESTS): Add it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for using the zstd compression algorithm.
Use a default compression setting of -19, and ".zst" as the suffix.
* bin/automake.in (handle_dist): Add zstd to the list of known dist-
suffixes.
(preprocess_file): Map ZSTD to dist-zstd.
* doc/automake.texi: Document the new option.
* lib/Automake/Options.pm (_is_valid_easy_option): Add dist-zstd.
* lib/am/distdir.am (dist-zstd): New rule.
(?ZSTD?DIST_TARGETS): Add definition.
(distcheck): Add a case for *.tar.zst*.
* t/dist-formats.tap: Add tests.
* NEWS: Mention the change.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Texinfo no longer requires a @setfilename directive in each
.texi file, so automake now also relaxes its restriction.
* bin/automake.in (scan_texinfo_file): Derive name of info file from
name of input file if no @setfilename line occurs in the file.
* t/txinfo-no-setfilename.sh: New test.
* t/list-of-tests.mk: Add it.
* NEWS: Mention it.
Fixes automake bugs #36921 and #34201.
|
|
|
|
|
|
|
|
|
|
| |
Previously ‘automake’ and ‘aclocal’ were handling the case of being
interpreted as a Shell script by using a hack leveraging the fact that
Shell and Perl has a compatible syntax intersection allowing those
scripts to launch ‘perl’ from the shell.
* bin/aclocal.in: Remove cryptic launching hack.
* bin/automake.in: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change fixes automake bug#30631.
This removes the use of List::Util which is not supported by Perl 5.6,
by reimplementing the 'none' subroutine.
* lib/Automake/General.pm (none): New subroutine.
* bin/automake.in (handle_single_transform): Use it.
* t/pm/General.pl: New test.
* t/list-of-tests.mk (perl_TESTS): Add it.
* NEWS: Update.
|
|
|
|
|
|
|
| |
* bin/automake.in (register_language): Define default libtool tag to be
CC since CPPASCOMPILE is using CC to call assembler.
Copyright-paperwork-exempt: yes
|
|
|
|
| |
This update has been made with 'make update-copyright'.
|
|
|
|
|
|
|
|
|
|
|
| |
* bin/local.mk: Specify mode name in the first line.
* contrib/t/local.mk: Likewise.
* doc/local.mk: Likewise.
* lib/Automake/local.mk: Likewise.
* lib/am/local.mk: Likewise.
* lib/local.mk: Likewise.
* m4/local.mk: Likewise.
* t/local.mk: Likewise.
|
|
|
|
|
| |
* .dir-locals.el: New Emacs directory configuration file. All perl
files adapted.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In Gnulib, Emacs, etc. we are changing ftp: and http: URLs to use
https:, to discourage man-in-the-middle attacks when downloading
software. The attached patch propagates these changes upstream to
Automake. This patch does not affect files that Automake is
downstream of, which I'll patch separately.
Althouth the resources are not secret, plain HTTP is vulnerable to
malicious routers that tamper with responses from GNU servers,
and this sort of thing is all too common when people in some other
countries browse US-based websites. See, for example:
Aceto G, Botta A, Pescapé A, Awan MF, Ahmad T, Qaisar
S. Analyzing internet censorship in Pakistan. RTSI
2016. https://dx.doi.org/10.1109/RTSI.2016.7740626
HTTPS is not a complete solution here, but it can be a significant
help. The GNU project regularly serves up code to users, so we should
take some care here.
|
|
|
|
|
|
|
|
|
|
| |
This change fixes automake bug#27781.
* bin/automake.in: Add Makefile dependency on LIBOBJDIR/dirstamp for
each LIBOBJS/ALLOCA source file found.
* t/list-of-tests.mk (XFAIL_TESTS): Drop
t/libobj-no-dependency-tracking.sh.
* NEWS: Announce bug fix.
|
|
|
|
| |
This reverts commit 5521219348c55af354878583b99c5f9d66d6d38a.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is done to follow a convention used by a lot of GNU packages.
* bin/Makefile.inc: Rename to ...
* bin/local.mk: ... this.
* doc/Makefile.inc: Rename to ...
* doc/local.mk: ... this.
* lib/Automake/Makefile.inc: Rename to ...
* lib/Automake/local.mk: ... this.
* lib/am/Makefile.inc: Rename to ...
* lib/am/local.mk: ... this.
* lib/Makefile.inc: Rename to ...
* lib/local.mk: ... this.
* m4/Makefile.inc: Rename to ...
* m4/local.mk: ... this.
* contrib/t/Makefile.inc: Rename to ...
* contrib/t/local.mk: ... this.
* t/Makefile.inc: Rename to ...
* t/local.mk: ... this. Adapt.
* Makefile.am: Adapt.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prototypes allows us to avoid using the '&foo' invocation form when
invoking a subroutine before its definition. Previously those
prototypes were generated to prevent them from falling out-of-sync
with actual definitions. Now we provide a 'check-perl-protos' lint
script to ensure that this is not the case. This has the same
benefits as generating prototypes while simplifying the
bootstrap/build process.
* bin/gen-perl-protos: Remove.
* bin/Makefile.inc: Adapt.
* bootstrap: Likewise.
* bin/aclocal.in: Inline prototypes.
* bin/automake.in: Likewise.
* maintainer/check-perl-protos: New lint script.
* maintainer/syntax-checks.mk (sc_perl_protos): New target.
(syntax_check_rules): Add it.
|
|
|
|
|
|
|
|
|
|
| |
* configure.ac: Don't generate 'bin/aclocal-${APIVERSION}' and
'bin/automake-${APIVERSION}'.
* bin/wrap-aclocal.in: Delete.
* bin/wrap-automake.in: Likewise.
* bin/Makefile.inc (%D%/automake-$(APIVERSION))
(%D%/aclocal-$(APIVERSION)): New targets.
(CLEANFILES): Add them.
|