+2021-10-03 Jim Meyering <meyering@fb.com>
+
+ version 1.16.5
+
+ * configure.ac (AC_INIT): Bump version number to 1.16.5.
+ * m4/amversion.m4: Likewise (auto-updated by "make bootstrap").
+ * NEWS: Record release version.
+
+2021-10-03 Jim Meyering <meyering@fb.com>
+
+ maint: don't use obsolescent "egrep"
+
+ * maintainer/syntax-checks.mk (sc_perl_local): Use grep -E
+ in place of "egrep".
+
+2021-10-03 Jim Meyering <meyering@fb.com>
+
+ maint: remove trailing white space from a few files
+
+ * NEWS: Remove trailing white space.
+ * NEWS-2.0: Likewise.
+ * contrib/checklinkx: Likewise.
+ * doc/local.mk (chlx_args): Likewise.
+ * m4/python.m4: Likewise.
+ * t/test-extensions-empty.sh: Likewise.
+
+2021-09-28 Karl Berry <karl@freefriends.org>
+
+ doc: show "RUNNING: <testname>" example using [AM_]TESTS_ENVIRONMENT.
+
+ This change addresses https://bugs.gnu.org/49309.
+
+ * doc/automake.texi (Testsuite Environment Overrides): new
+ subsubsection, separating out [AM_]TESTS_ENVIRONMENT description.
+ Add example to get "RUNNING: <testname>" when a test starts.
+
+2021-09-28 Karl Berry <karl@freefriends.org>
+
+ doc: tweak Yacc/Lex text; subnode for the yacc linking hack.
+
+ * doc/automake.texi (Alternative): remove obsolete footnote.
+ (Yacc and Lex): tweak wording, more consistent capitalization.
+ (Linking Multiple Yacc Parsers): new subsection.
+
+ Also add @shortcontents.
+ Also update texinfo-master-menu (for the first time in ages).
+
+2021-09-26 Karl Berry <karl@freefriends.org>
+
+ maint: Update files from upstream with 'make fetch'.
+
+ * lib/config.sub: Update.
+
+2021-09-19 Jim Meyering <meyering@fb.com>
+
+ maint: Post-release administrivia
+
+ * configure.ac (AC_INIT): Bump version number to 1.16h.
+ * m4/amversion.m4: Likewise (auto-updated by "make bootstrap").
+
+2021-09-19 Jim Meyering <meyering@fb.com>
+
+ maint: adjust version for snapshot
+
+ * configure.ac (AC_INIT): Bump version number to 1.16g for snapshot.
+ * m4/amversion.m4: Likewise (auto-updated by "make bootstrap").
+
+2021-09-19 Karl Berry <karl@freefriends.org>
+
+ python: only use Python's sys.* values if the new option
+
+ --with-python-sys-prefix is specified; otherwise, return to
+ previous behavior of using the GNU ${prefix} and ${exec_prefix}.
+
+ * doc/automake.texi (Python): document the new behavior.
+ * m4/python.m4 (AM_PATH_PYTHON): conditionalize use of Python's
+ sys.* values on the new option --with-python-sys-prefix.
+ * t/python-prefix.sh: doc update.
+ * t/python-vars.sh: test both GNU and Python prefix values.
+ * NEWS: mention this.
+
+2021-09-18 Karl Berry <karl@freefriends.org>
+
+ doc: update NEWS for yyerror const arg; update THANKS.
+
+ * THANKS: update with missed recent committer.
+ * NEWS: mention yyerror decl in our tests now uses const.
+
+2021-09-11 Akim Demaille <akim@lrde.epita.fr>
+
+ tests: let yacc's yyerror take its argument as a const string
+
+ Some of yacc error messages are const strings; it makes no sense for
+ yyerror to take a 'char *', it should be a 'const char *' as POSIX now
+ requires.
+
+ Fixes all the failures reported by Kiyoshi Kanazawa.
+ <https://lists.gnu.org/r/bug-bison/2021-09/msg00005.html>
+ See bug#50469 <https://debbugs.gnu.org/50469>.
+
+ * t/cond35.sh, t/silent-many-languages.sh, t/silent-yacc-headers.sh,
+ * t/silent-yacc.sh, t/subpkg-yacc.sh, t/suffix10.tap, t/yacc-basic.sh,
+ * t/yacc-clean.sh, t/yacc-d-basic.sh, t/yacc-d-vpath.sh,
+ * t/yacc-deleted-headers.sh, t/yacc-depend.sh, t/yacc-depend2.sh,
+ * t/yacc-dist-nobuild-subdir.sh, t/yacc-dist-nobuild.sh, t/yacc-dry.sh,
+ * t/yacc-line.sh, t/yacc-misc.sh, t/yacc-mix-c-cxx.sh, t/yacc-nodist.sh,
+ * t/yacc-pr204.sh, t/yacc-subdir.sh, t/yacc-vpath.sh,
+ * t/yflags-cmdline-override.sh, t/yflags-force-override.sh
+ (yyerror): From 'char *' to 'const char *'.
+ Enforce consistency: prefer '{}' to '{ return; }'.
+
+2021-09-10 Jan Engelhardt <jengelh@inai.de>
+
+ automake: consistently depend on install-libLTLIBRARIES.
+
+ 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.
+
+2021-08-17 Nick Bowler <nbowler@draconx.ca>
+
+ automake: fatal error on second AM_INIT_AUTOMAKE.
+
+ This change addresses https://bugs.gnu.org/50046.
+ Patch posted:
+ https://lists.gnu.org/archive/html/automake-patches/2021-08/msg00000.html
+
+ * m4/init.m4: Make attempts to expand AM_INIT_AUTOMAKE more than
+ once a fatal error at m4 time.
+
+2021-08-08 Karl Berry <karl@freefriends.org>
+
+ maint: Update doc/help2man.
+
+ * doc/help2man: update to 1.48.24
+
+2021-08-07 Karl Berry <karl@freefriends.org>
+
+ maint: Update doc/help2man.
+
+ * doc/help2man: update to 1.48.2.
+
+2021-08-07 Dimitri Papadopoulos <dimitri.papadopoulos@gmail.com>
+
+ doc: typos from codespell.
+
+ * HACKING: typo from codespell.
+ * doc/local.mk: likewise.
+ * lib/am/header-vars.am: likewise.
+ * lib/am/lisp.am: likewise.
+ * t/cond24.sh: likewise.
+ * t/cond36.sh: likewise.
+ * t/dist-auxdir-many-subdirs.sh: likewise.
+ * t/link_override.sh: likewise.
+ * t/parallel-tests-console-output.sh: likewise.
+ * t/subobj11a.sh: likewise.
+ * t/subobj11b.sh: likewise.
+
+2021-07-26 Karl Berry <karl@freefriends.org>
+
+ cosmetics: py-compile consistently use test, not [ ... ]; indentation.
+
+ * lib/py-compile: consistently use test rather than [ ... ];
+ use consistent sh indentation; check exit status consistently.
+
+2021-07-26 Jim Meyering <meyering@fb.com>
+
+ maint: Post-release administrivia
+
+ * configure.ac (AC_INIT): Bump version number to 1.16f.
+ * m4/amversion.m4: Likewise (auto-updated by "make bootstrap").
+
2021-07-25 Jim Meyering <meyering@fb.com>
version 1.16.4
Here goes a more detailed explanation of why the commit is needed,
and a general overview of what it does, and how. This section
- should almost always be provided, possibly only with the expection
+ should almost always be provided, possibly only with the exception
of obvious fixes or very trivial changes.
And if the detailed explanation is quite long or detailed, you can
* To add tags "help" and "confirmed" to bug 12345, mail to
control@debbugs.gnu.org with a one-line body:
- tags 35322 + help confirmed
+ tags 12345 + help confirmed
* In general, all bug operations are done by mail. Reference information:
https://debbugs.gnu.org/server-control.html # dev info
-# Makefile.in generated by automake 1.16.4 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# - mailto urls, they are always forbidden.
# - vala, redirects to a Gnome subpage and returns 403 to us.
# - cfortran, forbidden by site's robots.txt.
-# - search.cpan.org, gets
+# - search.cpan.org, gets
# - debbugs.gnu.org/automake, forbidden by robots.txt.
# - autoconf.html, forbidden by robots.txt (since served from savannah).
# - https://fsf.org redirects to https://www.fsf.org and nothing to do
$(srcdir)/doc/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac
$(AM_V_GEN)tmp=amhello-output.tmp \
&& $(am__cd) $(srcdir)/doc/amhello \
- && : Make our aclocal and automake avaiable before system ones. \
+ && : Make our aclocal and automake available before system ones. \
&& $(setup_autotools_paths) \
&& ( \
{ $(AM_V_P) || exec 5>&2 >$$tmp 2>&1; } \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-New in ?.?.?:
+New in 1.16.5:
+
+* Bugs fixed
+
+ - PYTHON_PREFIX and PYTHON_EXEC_PREFIX are now set according to
+ Python's sys.* values only if the new configure option
+ --with-python-sys-prefix is specified. Otherwise, GNU default values
+ are used, as in the past. (The change in 1.16.3 was too incompatible.)
+
+ - consistently depend on install-libLTLIBRARIES.
+
+* Distribution
+
+ - use const for yyerror declaration in bison/yacc tests.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
certainty about this though: we'd first like to wait and see
whether future Autoconf versions will be enhanced to guarantee
that such a shell is always found and provided by the checks in
- ./configure.
-
+ ./configure.
+
In 2020, config.guess was changed by its then-maintainer to require
$(...); the ensuing bug reports and maintenance hassle
(unfortunately the changes have not been reverted) are a convincing
Dieter Jurzitza DJurzitza@harmanbecker.com
Дилян Палаузов dilyan.palauzov@aegee.org
Dirk Mueller josef.moellers@suse.com
+Dimitri Papadopoulos dimitri.papadopoulos@gmail.com
Dmitry Mikhin dmitrym@acres.com.au
Dmitry V. Levin ldv@altlinux.org
Doug Evans devans@cygnus.com
-# generated automatically by aclocal 1.16.4 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
# Copyright (C) 1996-2021 Free Software Foundation, Inc.
[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.16.4], [],
+m4_if([$1], [1.16.5], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.4])dnl
+[AM_AUTOMAKE_VERSION([1.16.5])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.65])dnl
+m4_ifdef([_$0_ALREADY_INIT],
+ [m4_fatal([$0 expanded multiple times
+]m4_defn([_$0_ALREADY_INIT]))],
+ [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
handle_all ($makefile);
# FIXME: Gross!
- if (var ('lib_LTLIBRARIES') && var ('bin_PROGRAMS'))
+ my $have_lt1 = !!var("lib_LTLIBRARIES");
+ my $have_lt2 = !!var("nobase_lib_LTLIBRARIES");
+ for my $var (variables("PROGRAMS"), variables("LTLIBRARIES"))
{
- $output_rules .= "install-binPROGRAMS: install-libLTLIBRARIES\n\n";
- }
- if (var ('nobase_lib_LTLIBRARIES') && var ('bin_PROGRAMS'))
- {
- $output_rules .= "install-binPROGRAMS: install-nobase_libLTLIBRARIES\n\n";
+ if ($var->name eq "lib_LTLIBRARIES"
+ || $var->name eq "nobase_lib_LTLIBRARIES"
+ || substr($var->name, 0, 7) eq "noinst_")
+ {
+ next;
+ }
+ my $shortname = $var->name;
+ $shortname =~ tr{_}{}d;
+ if ($have_lt1)
+ {
+ $output_rules .= "install-$shortname: install-libLTLIBRARIES\n\n";
+ }
+ if ($have_lt2)
+ {
+ $output_rules .= "install-$shortname: install-nobase_libLTLIBRARIES\n\n";
+ }
}
handle_install;
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for GNU Automake 1.16.4.
+# Generated by GNU Autoconf 2.71 for GNU Automake 1.16.5.
#
# Report bugs to <bug-automake@gnu.org>.
#
# Identity of this package.
PACKAGE_NAME='GNU Automake'
PACKAGE_TARNAME='automake'
-PACKAGE_VERSION='1.16.4'
-PACKAGE_STRING='GNU Automake 1.16.4'
+PACKAGE_VERSION='1.16.5'
+PACKAGE_STRING='GNU Automake 1.16.5'
PACKAGE_BUGREPORT='bug-automake@gnu.org'
PACKAGE_URL='https://www.gnu.org/software/automake/'
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GNU Automake 1.16.4 to adapt to many kinds of systems.
+\`configure' configures GNU Automake 1.16.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU Automake 1.16.4:";;
+ short | recursive ) echo "Configuration of GNU Automake 1.16.5:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GNU Automake configure 1.16.4
+GNU Automake configure 1.16.5
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GNU Automake $as_me 1.16.4, which was
+It was created by GNU Automake $as_me 1.16.5, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
# Define the identity of the package.
PACKAGE='automake'
- VERSION='1.16.4'
+ VERSION='1.16.5'
# Some tools Automake needs.
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GNU Automake $as_me 1.16.4, which was
+This file was extended by GNU Automake $as_me 1.16.5, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-GNU Automake config.status 1.16.4
+GNU Automake config.status 1.16.5
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
# along with this program. If not, see <https://www.gnu.org/licenses/>.
AC_PREREQ([2.69])
-AC_INIT([GNU Automake], [1.16.4], [bug-automake@gnu.org])
+AC_INIT([GNU Automake], [1.16.5], [bug-automake@gnu.org])
AC_CONFIG_SRCDIR([bin/automake.in])
AC_CONFIG_AUX_DIR([lib])
# was that string all along.
$Opts{Exclude} = $exclude_rx;
}
-
+
if ($Opts{Exclude_Url_File}) {
# The idea is that if the specified file exists, we read it and
# treat it as a list of excludes. If the file doesn't exist, we
# write it with all the urls that were successful. That way, we
# can avoid re-checking them on every run, and it can be removed
# externally (from cron) to get re-updated.
- #
+ #
# We distinguish the cases here, and either add to
# $Opts{Exclude} if reading, or setting Exclude_File_Write in
# %Opts if writing (even though it is not really an option,
This is automake.info, produced by makeinfo version 6.8 from
automake.texi.
-This manual is for GNU Automake (version 1.16.4, 16 July 2021), a
+This manual is for GNU Automake (version 1.16.5, 1 October 2021), a
program that creates GNU standards-compliant Makefiles from template
files.
\1f
Indirect:
-automake.info-1: 1081
-automake.info-2: 301558
+automake.info-1: 1083
+automake.info-2: 301994
\1f
Tag Table:
(Indirect)
-Node: Top\7f1081
-Node: Introduction\7f14332
-Ref: Introduction-Footnote-1\7f15741
-Node: Autotools Introduction\7f15900
-Node: GNU Build System\7f17282
-Node: Use Cases\7f20030
-Node: Basic Installation\7f22158
-Node: Standard Targets\7f25744
-Node: Standard Directory Variables\7f27347
-Node: Standard Configuration Variables\7f29204
-Node: config.site\7f30563
-Node: VPATH Builds\7f31989
-Node: Two-Part Install\7f36047
-Node: Cross-Compilation\7f38491
-Node: Renaming\7f41457
-Node: DESTDIR\7f42615
-Node: Preparing Distributions\7f44797
-Node: Dependency Tracking\7f47167
-Node: Nested Packages\7f49275
-Node: Why Autotools\7f50791
-Node: Hello World\7f52433
-Ref: amhello Explained\7f52855
-Node: Creating amhello\7f53027
-Node: amhello's configure.ac Setup Explained\7f58382
-Node: amhello's Makefile.am Setup Explained\7f63303
-Node: Generalities\7f67003
-Node: General Operation\7f67697
-Node: Strictness\7f71121
-Ref: Gnits\7f71255
-Node: Uniform\7f75155
-Node: Length Limitations\7f80052
-Node: Canonicalization\7f82363
-Node: User Variables\7f83435
-Node: Auxiliary Programs\7f84925
-Node: Examples\7f88862
-Node: Complete\7f89732
-Node: true\7f91837
-Node: automake Invocation\7f94328
-Ref: Invoking automake\7f94483
-Node: configure\7f103098
-Node: Requirements\7f104027
-Node: Optional\7f109265
-Node: aclocal Invocation\7f119008
-Ref: Invoking aclocal\7f119169
-Node: aclocal Options\7f122207
-Node: Macro Search Path\7f125917
-Ref: ACLOCAL_PATH\7f130291
-Node: Extending aclocal\7f131861
-Node: Local Macros\7f135560
-Node: Serials\7f139543
-Node: Future of aclocal\7f144763
-Node: Macros\7f147113
-Node: Public Macros\7f147654
-Ref: Modernize AM_INIT_AUTOMAKE invocation\7f149277
-Node: Obsolete Macros\7f153759
-Node: Private Macros\7f155101
-Node: Directories\7f156551
-Node: Subdirectories\7f158146
-Node: Conditional Subdirectories\7f161538
-Node: SUBDIRS vs DIST_SUBDIRS\7f163219
-Node: Subdirectories with AM_CONDITIONAL\7f164857
-Node: Subdirectories with AC_SUBST\7f166051
-Node: Unconfigured Subdirectories\7f166878
-Node: Alternative\7f170336
-Ref: Alternative-Footnote-1\7f172488
-Node: Subpackages\7f172613
-Node: Programs\7f175968
-Node: A Program\7f177510
-Node: Program Sources\7f178233
-Node: Linking\7f180138
-Node: Conditional Sources\7f183782
-Node: Conditional Programs\7f186710
-Node: A Library\7f188600
-Node: A Shared Library\7f191277
-Node: Libtool Concept\7f192281
-Node: Libtool Libraries\7f194371
-Node: Conditional Libtool Libraries\7f196105
-Node: Conditional Libtool Sources\7f198562
-Node: Libtool Convenience Libraries\7f199949
-Node: Libtool Modules\7f203376
-Node: Libtool Flags\7f204692
-Node: LTLIBOBJS\7f206603
-Node: Libtool Issues\7f207238
-Node: Error required file ltmain.sh not found\7f207579
-Node: Objects created both with libtool and without\7f208800
-Node: Program and Library Variables\7f210716
-Node: Default _SOURCES\7f222876
-Node: LIBOBJS\7f225353
-Node: Program Variables\7f230580
-Node: Yacc and Lex\7f234125
-Ref: Yacc and Lex-Footnote-1\7f239753
-Node: C++ Support\7f240016
-Node: Objective C Support\7f240878
-Node: Objective C++ Support\7f241834
-Node: Unified Parallel C Support\7f242839
-Node: Assembly Support\7f243817
-Node: Fortran 77 Support\7f244989
-Ref: Fortran 77 Support-Footnote-1\7f246656
-Node: Preprocessing Fortran 77\7f246859
-Node: Compiling Fortran 77 Files\7f247463
-Node: Mixing Fortran 77 With C and C++\7f248075
-Ref: Mixing Fortran 77 With C and C++-Footnote-1\7f250398
-Node: How the Linker is Chosen\7f250706
-Node: Fortran 9x Support\7f252245
-Node: Compiling Fortran 9x Files\7f253273
-Node: Java Support with gcj\7f253909
-Node: Vala Support\7f255390
-Node: Support for Other Languages\7f257663
-Node: Dependencies\7f258371
-Node: EXEEXT\7f260258
-Node: Other Objects\7f262498
-Node: Scripts\7f263080
-Node: Headers\7f265939
-Node: Data\7f267734
-Node: Sources\7f268419
-Node: Built Sources Example\7f271424
-Node: Other GNU Tools\7f278596
-Node: Emacs Lisp\7f279125
-Node: gettext\7f281222
-Node: Libtool\7f281910
-Node: Java\7f282169
-Node: Python\7f284828
-Node: Documentation\7f289863
-Node: Texinfo\7f290167
-Node: Man Pages\7f297352
-Node: Install\7f301558
-Node: Basics of Installation\7f302253
-Node: The Two Parts of Install\7f303783
-Node: Extending Installation\7f305323
-Node: Staged Installs\7f306087
-Node: Install Rules for the User\7f307500
-Node: Clean\7f308058
-Node: Dist\7f310230
-Node: Basics of Distribution\7f310734
-Node: Fine-grained Distribution Control\7f314907
-Node: The dist Hook\7f315834
-Node: Checking the Distribution\7f318364
-Node: The Types of Distributions\7f325671
-Node: Tests\7f328824
-Node: Generalities about Testing\7f330020
-Node: Simple Tests\7f332960
-Node: Scripts-based Testsuites\7f333341
-Ref: Testsuite progress on console\7f335714
-Ref: Simple tests and color-tests\7f337807
-Node: Serial Test Harness\7f341830
-Node: Parallel Test Harness\7f343920
-Ref: Basics of test metadata\7f344426
-Node: Custom Test Drivers\7f353519
-Node: Overview of Custom Test Drivers Support\7f353810
-Node: Declaring Custom Test Drivers\7f356862
-Node: API for Custom Test Drivers\7f358284
-Node: Command-line arguments for test drivers\7f359056
-Node: Log files generation and test results recording\7f361770
-Node: Testsuite progress output\7f365985
-Node: Using the TAP test protocol\7f367407
-Node: Introduction to TAP\7f367769
-Node: Use TAP with the Automake test harness\7f369553
-Node: Incompatibilities with other TAP parsers and drivers\7f374976
-Node: Links and external resources on TAP\7f376377
-Node: DejaGnu Tests\7f377969
-Node: Install Tests\7f380097
-Node: Rebuilding\7f380407
-Node: Options\7f384501
-Node: Options generalities\7f384802
-Node: List of Automake options\7f386583
-Ref: tar-formats\7f393990
-Node: Miscellaneous\7f397503
-Node: Tags\7f397848
-Node: Suffixes\7f401044
-Node: Include\7f402676
-Node: Conditionals\7f404411
-Node: Usage of Conditionals\7f405269
-Node: Limits of Conditionals\7f408627
-Node: Silencing Make\7f409812
-Node: Make verbosity\7f410168
-Ref: Make verbosity-Footnote-1\7f411490
-Node: Tricks For Silencing Make\7f411564
-Node: Automake Silent Rules\7f414071
-Node: Not Enough\7f421049
-Node: Extending\7f421505
-Node: Third-Party Makefiles\7f426539
-Node: Distributing\7f433598
-Node: API Versioning\7f434247
-Node: Upgrading\7f436952
-Node: FAQ\7f438997
-Node: CVS\7f440121
-Node: maintainer-mode\7f448557
-Node: Wildcards\7f452732
-Node: Limitations on File Names\7f456170
-Node: Errors with distclean\7f458800
-Node: Flag Variables Ordering\7f463742
-Node: Renamed Objects\7f471751
-Node: Per-Object Flags\7f473346
-Node: Multiple Outputs\7f476356
-Node: Hard-Coded Install Paths\7f488700
-Node: Debugging Make Rules\7f493844
-Ref: Debugging Make Rules-Footnote-1\7f495990
-Node: Reporting Bugs\7f496168
-Node: Copying This Manual\7f497806
-Node: GNU Free Documentation License\7f498036
-Node: Indices\7f523340
-Node: Macro Index\7f523629
-Node: Variable Index\7f529479
-Node: General Index\7f562289
+Node: Top\7f1083
+Node: Introduction\7f14520
+Ref: Introduction-Footnote-1\7f15929
+Node: Autotools Introduction\7f16088
+Node: GNU Build System\7f17470
+Node: Use Cases\7f20218
+Node: Basic Installation\7f22346
+Node: Standard Targets\7f25932
+Node: Standard Directory Variables\7f27535
+Node: Standard Configuration Variables\7f29392
+Node: config.site\7f30751
+Node: VPATH Builds\7f32177
+Node: Two-Part Install\7f36235
+Node: Cross-Compilation\7f38679
+Node: Renaming\7f41645
+Node: DESTDIR\7f42803
+Node: Preparing Distributions\7f44985
+Node: Dependency Tracking\7f47355
+Node: Nested Packages\7f49463
+Node: Why Autotools\7f50979
+Node: Hello World\7f52621
+Ref: amhello Explained\7f53043
+Node: Creating amhello\7f53215
+Node: amhello's configure.ac Setup Explained\7f58570
+Node: amhello's Makefile.am Setup Explained\7f63491
+Node: Generalities\7f67191
+Node: General Operation\7f67885
+Node: Strictness\7f71309
+Ref: Gnits\7f71443
+Node: Uniform\7f75343
+Node: Length Limitations\7f80240
+Node: Canonicalization\7f82551
+Node: User Variables\7f83623
+Node: Auxiliary Programs\7f85113
+Node: Examples\7f89050
+Node: Complete\7f89920
+Node: true\7f92025
+Node: automake Invocation\7f94516
+Ref: Invoking automake\7f94671
+Node: configure\7f103286
+Node: Requirements\7f104215
+Node: Optional\7f109453
+Node: aclocal Invocation\7f119196
+Ref: Invoking aclocal\7f119357
+Node: aclocal Options\7f122395
+Node: Macro Search Path\7f126105
+Ref: ACLOCAL_PATH\7f130479
+Node: Extending aclocal\7f132049
+Node: Local Macros\7f135748
+Node: Serials\7f139731
+Node: Future of aclocal\7f144951
+Node: Macros\7f147301
+Node: Public Macros\7f147842
+Ref: Modernize AM_INIT_AUTOMAKE invocation\7f149465
+Node: Obsolete Macros\7f153947
+Node: Private Macros\7f155289
+Node: Directories\7f156739
+Node: Subdirectories\7f158334
+Node: Conditional Subdirectories\7f161726
+Node: SUBDIRS vs DIST_SUBDIRS\7f163407
+Node: Subdirectories with AM_CONDITIONAL\7f165045
+Node: Subdirectories with AC_SUBST\7f166239
+Node: Unconfigured Subdirectories\7f167066
+Node: Alternative\7f170524
+Node: Subpackages\7f172711
+Node: Programs\7f176066
+Node: A Program\7f177608
+Node: Program Sources\7f178331
+Node: Linking\7f180236
+Node: Conditional Sources\7f183880
+Node: Conditional Programs\7f186808
+Node: A Library\7f188698
+Node: A Shared Library\7f191375
+Node: Libtool Concept\7f192379
+Node: Libtool Libraries\7f194469
+Node: Conditional Libtool Libraries\7f196203
+Node: Conditional Libtool Sources\7f198660
+Node: Libtool Convenience Libraries\7f200047
+Node: Libtool Modules\7f203474
+Node: Libtool Flags\7f204790
+Node: LTLIBOBJS\7f206701
+Node: Libtool Issues\7f207336
+Node: Error required file ltmain.sh not found\7f207677
+Node: Objects created both with libtool and without\7f208898
+Node: Program and Library Variables\7f210814
+Node: Default _SOURCES\7f222974
+Node: LIBOBJS\7f225451
+Node: Program Variables\7f230678
+Node: Yacc and Lex\7f234223
+Node: Linking Multiple Yacc Parsers\7f238439
+Node: C++ Support\7f240252
+Node: Objective C Support\7f241114
+Node: Objective C++ Support\7f242070
+Node: Unified Parallel C Support\7f243075
+Node: Assembly Support\7f244053
+Node: Fortran 77 Support\7f245225
+Ref: Fortran 77 Support-Footnote-1\7f246892
+Node: Preprocessing Fortran 77\7f247095
+Node: Compiling Fortran 77 Files\7f247699
+Node: Mixing Fortran 77 With C and C++\7f248311
+Ref: Mixing Fortran 77 With C and C++-Footnote-1\7f250634
+Node: How the Linker is Chosen\7f250942
+Node: Fortran 9x Support\7f252481
+Node: Compiling Fortran 9x Files\7f253509
+Node: Java Support with gcj\7f254145
+Node: Vala Support\7f255626
+Node: Support for Other Languages\7f257899
+Node: Dependencies\7f258607
+Node: EXEEXT\7f260494
+Node: Other Objects\7f262734
+Node: Scripts\7f263316
+Node: Headers\7f266175
+Node: Data\7f267970
+Node: Sources\7f268655
+Node: Built Sources Example\7f271660
+Node: Other GNU Tools\7f278832
+Node: Emacs Lisp\7f279361
+Node: gettext\7f281458
+Node: Libtool\7f282146
+Node: Java\7f282405
+Node: Python\7f285064
+Node: Documentation\7f290297
+Node: Texinfo\7f290601
+Node: Man Pages\7f297786
+Node: Install\7f301994
+Node: Basics of Installation\7f302689
+Node: The Two Parts of Install\7f304219
+Node: Extending Installation\7f305759
+Node: Staged Installs\7f306523
+Node: Install Rules for the User\7f307936
+Node: Clean\7f308494
+Node: Dist\7f310666
+Node: Basics of Distribution\7f311170
+Node: Fine-grained Distribution Control\7f315343
+Node: The dist Hook\7f316270
+Node: Checking the Distribution\7f318800
+Node: The Types of Distributions\7f326107
+Node: Tests\7f329260
+Node: Generalities about Testing\7f330456
+Node: Simple Tests\7f333396
+Node: Scripts-based Testsuites\7f333777
+Ref: Testsuite progress on console\7f336150
+Ref: Simple tests and color-tests\7f338243
+Node: Testsuite Environment Overrides\7f340365
+Node: Serial Test Harness\7f342964
+Node: Parallel Test Harness\7f345054
+Ref: Basics of test metadata\7f345560
+Node: Custom Test Drivers\7f354653
+Node: Overview of Custom Test Drivers Support\7f354944
+Node: Declaring Custom Test Drivers\7f357996
+Node: API for Custom Test Drivers\7f359418
+Node: Command-line arguments for test drivers\7f360190
+Node: Log files generation and test results recording\7f362904
+Node: Testsuite progress output\7f367119
+Node: Using the TAP test protocol\7f368541
+Node: Introduction to TAP\7f368903
+Node: Use TAP with the Automake test harness\7f370687
+Node: Incompatibilities with other TAP parsers and drivers\7f376110
+Node: Links and external resources on TAP\7f377511
+Node: DejaGnu Tests\7f379103
+Node: Install Tests\7f381231
+Node: Rebuilding\7f381541
+Node: Options\7f385635
+Node: Options generalities\7f385936
+Node: List of Automake options\7f387717
+Ref: tar-formats\7f395124
+Node: Miscellaneous\7f398637
+Node: Tags\7f398982
+Node: Suffixes\7f402178
+Node: Include\7f403810
+Node: Conditionals\7f405545
+Node: Usage of Conditionals\7f406403
+Node: Limits of Conditionals\7f409761
+Node: Silencing Make\7f410946
+Node: Make verbosity\7f411302
+Ref: Make verbosity-Footnote-1\7f412624
+Node: Tricks For Silencing Make\7f412698
+Node: Automake Silent Rules\7f415205
+Node: Not Enough\7f422183
+Node: Extending\7f422639
+Node: Third-Party Makefiles\7f427673
+Node: Distributing\7f434732
+Node: API Versioning\7f435381
+Node: Upgrading\7f438086
+Node: FAQ\7f440131
+Node: CVS\7f441255
+Node: maintainer-mode\7f449691
+Node: Wildcards\7f453866
+Node: Limitations on File Names\7f457304
+Node: Errors with distclean\7f459934
+Node: Flag Variables Ordering\7f464876
+Node: Renamed Objects\7f472885
+Node: Per-Object Flags\7f474480
+Node: Multiple Outputs\7f477490
+Node: Hard-Coded Install Paths\7f489834
+Node: Debugging Make Rules\7f494978
+Ref: Debugging Make Rules-Footnote-1\7f497124
+Node: Reporting Bugs\7f497302
+Node: Copying This Manual\7f498940
+Node: GNU Free Documentation License\7f499170
+Node: Indices\7f524474
+Node: Macro Index\7f524763
+Node: Variable Index\7f530613
+Node: General Index\7f563584
\1f
End Tag Table
This is automake.info, produced by makeinfo version 6.8 from
automake.texi.
-This manual is for GNU Automake (version 1.16.4, 16 July 2021), a
+This manual is for GNU Automake (version 1.16.5, 1 October 2021), a
program that creates GNU standards-compliant Makefiles from template
files.
GNU Automake
************
-This manual is for GNU Automake (version 1.16.4, 16 July 2021), a
+This manual is for GNU Automake (version 1.16.5, 1 October 2021), a
program that creates GNU standards-compliant Makefiles from template
files.
Autoconf macros supplied with Automake
* Public Macros:: Macros that you can use.
+* Obsolete Macros:: Macros that will soon be removed.
* Private Macros:: Macros that you should not use.
Directories
* Error required file ltmain.sh not found:: The need to run libtoolize
* Objects created both with libtool and without:: Avoid a specific build race
+Yacc and Lex support
+
+* Linking Multiple Yacc Parsers::
+
Fortran 77 Support
* Preprocessing Fortran 77:: Preprocessing Fortran 77 sources
Support for test suites
-* Generalities about Testing:: Generic concepts and terminology about testing
+* Generalities about Testing:: Concepts and terminology about testing
* Simple Tests:: Listing test scripts in ‘TESTS’
* Custom Test Drivers:: Writing and using custom test drivers
* Using the TAP test protocol:: Integrating test scripts that use the TAP protocol
* Serial Test Harness:: Older (and discouraged) serial test harness
* Parallel Test Harness:: Generic concurrent test harness
-Using the TAP test protocol
+Scripts-based Testsuites
-* Introduction to TAP::
-* Use TAP with the Automake test harness::
-* Incompatibilities with other TAP parsers and drivers::
-* Links and external resources on TAP::
+* Testsuite Environment Overrides::
Custom Test Drivers
* Log files generation and test results recording::
* Testsuite progress output::
+Using the TAP test protocol
+
+* Introduction to TAP::
+* Use TAP with the Automake test harness::
+* Incompatibilities with other TAP parsers and drivers::
+* Links and external resources on TAP::
+
Changing Automake’s Behavior
* Options generalities:: Semantics of Automake option
* Usage of Conditionals:: Declaring conditional content
* Limits of Conditionals:: Enclosing complete statements
-Silencing Make
+Silencing ‘make’
* Make verbosity:: Make is verbose by default
* Tricks For Silencing Make:: Standard and generic ways to silence make
paper, Miller’s main thesis is that recursive ‘make’ invocations are
both slow and error-prone.
- Automake provides sufficient cross-directory support (1) to enable
-you to write a single ‘Makefile.am’ for a complex multi-directory
-package.
+ Automake is intended to have sufficient cross-directory support to
+enable you to write a single ‘Makefile.am’ for a complex multi-directory
+package. (If it seems to be lacking, please report the issue as usual.)
By default an installable file specified in a subdirectory will have
its directory name stripped before installation. For instance, in this
rule, in that there is no particular installation order guarantee for an
otherwise equivalent set of variables without ‘nobase_’ prefix.
- ---------- Footnotes ----------
-
- (1) We believe. This work is new and there are probably warts.
-*Note Introduction::, for information on reporting bugs.
-
\1f
File: automake.info, Node: Subpackages, Prev: Alternative, Up: Directories
Automake has somewhat idiosyncratic support for Yacc and Lex.
- Automake assumes that the ‘.c’ file generated by ‘yacc’ (or ‘lex’)
+ Automake assumes that the ‘.c’ file generated by ‘yacc’ or ‘lex’
should be named using the basename of the input file. That is, for a
-yacc source file ‘foo.y’, Automake will cause the intermediate file to
+Yacc source file ‘foo.y’, Automake will cause the intermediate file to
be named ‘foo.c’ (as opposed to ‘y.tab.c’, which is more traditional).
- The extension of a yacc source file is used to determine the
-extension of the resulting C or C++ source and header files. Note that
-header files are generated only when the ‘-d’ Yacc option is used; see
-below for more information about this flag, and how to specify it.
-Files with the extension ‘.y’ will thus be turned into ‘.c’ sources and
-‘.h’ headers; likewise, ‘.yy’ will become ‘.cc’ and ‘.hh’, ‘.y++’ will
-become ‘c++’ and ‘h++’, ‘.yxx’ will become ‘.cxx’ and ‘.hxx’, and ‘.ypp’
-will become ‘.cpp’ and ‘.hpp’.
+ The extension of a Yacc source file is used to determine the
+extension of the resulting C or C++ source and header files. Be aware
+that header files are generated only when the option ‘-d’ is given to
+Yacc; see below for more information about this flag, and how to specify
+it. Files with the extension ‘.y’ will thus be turned into ‘.c’ sources
+and ‘.h’ headers; likewise, ‘.yy’ will become ‘.cc’ and ‘.hh’, ‘.y++’
+will become ‘c++’ and ‘h++’, ‘.yxx’ will become ‘.cxx’ and ‘.hxx’, and
+‘.ypp’ will become ‘.cpp’ and ‘.hpp’.
- Similarly, lex source files can be used to generate C or C++; the
+ Similarly, Lex source files can be used to generate C or C++; the
extensions ‘.l’, ‘.ll’, ‘.l++’, ‘.lxx’, and ‘.lpp’ are recognized.
You should never explicitly mention the intermediate (C or C++) file
included in any distribution that is made. That way the user doesn’t
need to have ‘yacc’ or ‘lex’.
- If a ‘yacc’ source file is seen, then your ‘configure.ac’ must define
+ If a Yacc source file is seen, then your ‘configure.ac’ must define
the variable ‘YACC’. This is most easily done by invoking the macro
‘AC_PROG_YACC’ (*note Particular Program Checks: (autoconf)Particular
Programs.).
‘AM_YFLAGS’ is usually used to pass the ‘-d’ option to ‘yacc’.
Automake knows what this means and will automatically adjust its rules
-to update and distribute the header file built by ‘yacc -d’(1). What
-Automake cannot guess, though, is where this header will be used: it is
-up to you to ensure the header gets built before it is first used.
-Typically this is necessary in order for dependency tracking to work
-when the header is included by another file. The common solution is
-listing the header file in ‘BUILT_SOURCES’ (*note Sources::) as follows.
+to update and distribute the header file built by ‘yacc -d’. Caveat:
+‘automake’ recognizes ‘-d’ in ‘AM_YFLAGS’ only if it is not clustered
+with other options; for example, it won’t be recognized if ‘AM_YFLAGS’
+is ‘-dt’, but it will be if ‘AM_YFLAGS’ is ‘-d -t’ or ‘-t -d’.
+
+ What Automake cannot guess, though, is where this header will be
+used: it is up to you to ensure the header gets built before it is first
+used. Typically this is necessary in order for dependency tracking to
+work when the header is included by another file. The common solution
+is listing the header file in ‘BUILT_SOURCES’ (*note Sources::) as
+follows.
BUILT_SOURCES = parser.h
AM_YFLAGS = -d
bin_PROGRAMS = foo
foo_SOURCES = ... parser.y ...
- If a ‘lex’ source file is seen, then your ‘configure.ac’ must define
+ If a Lex source file is seen, then your ‘configure.ac’ must define
the variable ‘LEX’. You can use ‘AC_PROG_LEX’ to do this (*note
Particular Program Checks: (autoconf)Particular Programs.), but using
the ‘AM_PROG_LEX’ macro (*note Macros::) is recommended.
latter is a user variable and the former is intended for the
‘Makefile.am’ author.
- When ‘AM_MAINTAINER_MODE’ (*note maintainer-mode::) is used, the
-rebuild rule for distributed Yacc and Lex sources are only used when
+ When ‘AM_MAINTAINER_MODE’ (*note maintainer-mode::) is in effect, the
+rebuild rules for distributed Yacc and Lex sources are only used when
‘maintainer-mode’ is enabled, or when the files have been erased.
- When ‘lex’ or ‘yacc’ sources are used, ‘automake -a’ automatically
+ When Yacc or Lex sources are used, ‘automake -a’ automatically
installs an auxiliary program called ‘ylwrap’ in your package (*note
Auxiliary Programs::). This program is used by the build rules to
rename the output of these tools, and makes it possible to include
-multiple ‘yacc’ (or ‘lex’) source files in a single directory. (This is
-necessary because yacc’s output file name is fixed, and a parallel make
-could conceivably invoke more than one instance of ‘yacc’
-simultaneously.)
+multiple ‘yacc’ (or ‘lex’) source files in a single directory. This is
+necessary because Yacc’s output file name is fixed, and a parallel make
+could invoke more than one instance of ‘yacc’ simultaneously.
+
+* Menu:
+
+* Linking Multiple Yacc Parsers::
+
+8.8.1 Linking Multiple Yacc Parsers
+-----------------------------------
+
+\1f
+File: automake.info, Node: Linking Multiple Yacc Parsers, Up: Yacc and Lex
- For ‘yacc’, simply managing locking is insufficient. The output of
-‘yacc’ always uses the same symbol names internally, so it isn’t
-possible to link two ‘yacc’ parsers into the same executable.
+For ‘yacc’, simply managing locking as with ‘ylwrap’ is insufficient.
+The output of ‘yacc’ always uses the same symbol names internally, so it
+isn’t possible to link two ‘yacc’ parsers into the same executable.
We recommend using the following renaming hack used in ‘gdb’:
#define yymaxdepth c_maxdepth
you find a parser generator that uses a symbol not covered here, please
report the new name so it can be added to the list.
- ---------- Footnotes ----------
-
- (1) Please note that ‘automake’ recognizes ‘-d’ in ‘AM_YFLAGS’ only
-if it is not clustered with other options; for example, it won’t be
-recognized if ‘AM_YFLAGS’ is ‘-dt’, but it will be if ‘AM_YFLAGS’ is ‘-d
--t’ or ‘-t -d’.
-
\1f
File: automake.info, Node: C++ Support, Next: Objective C Support, Prev: Yacc and Lex, Up: Programs
‘PYTHON_PREFIX’
‘PYTHON_EXEC_PREFIX’
- The value of Python’s ‘sys.prefix’ (resp. ‘sys.exec_prefix’)
- variable. Sometimes the same as the standard ‘${prefix}’
- (‘${exec_prefix}’), but differs on some platforms such as Mac OS x
- (where Python is usually installed as a Framework). Can be set
- explicitly with the ‘--with-python_prefix’
- (‘--with-python_exec_prefix’) ‘configure’ option.
+ With no special options given, these have values ‘${prefix}’ and
+ ‘${exec_prefix}’, respectively (unexpanded; see below).
+
+ The ‘configure’ options ‘--with-python_prefix’ and
+ ‘--with-python_exec_prefix’ set them to an explicit value.
+
+ The ‘configure’ option ‘--with-python-sys-prefix’ set them to the
+ values of Python’s ‘sys.prefix’ and ‘sys.exec_prefix’ variables.
+ These often differ from ‘${prefix}’ and ‘${exec_prefix}’, e.g., on
+ platforms such as Mac OS x (where Python is usually installed as a
+ Framework).
‘PYTHON_PLATFORM’
The canonical name used by Python to describe the operating system,
This is automake.info, produced by makeinfo version 6.8 from
automake.texi.
-This manual is for GNU Automake (version 1.16.4, 16 July 2021), a
+This manual is for GNU Automake (version 1.16.5, 1 October 2021), a
program that creates GNU standards-compliant Makefiles from template
files.
in particular for the ‘distcheck’ rule (*note Checking the
Distribution::).
- The ‘AM_TESTS_ENVIRONMENT’ and ‘TESTS_ENVIRONMENT’ variables can be
-used to run initialization code and set environment variables for the
-test scripts. The former variable is developer-reserved, and can be
-defined in the ‘Makefile.am’, while the latter is reserved for the user,
-which can employ it to extend or override the settings in the former;
-for this to work portably, however, the contents of a non-empty
+ Automake ensures that each file listed in ‘TESTS’ is built before it
+is run; you can list both source and derived programs (or scripts) in
+‘TESTS’; the generated rule will look both in ‘srcdir’ and ‘‘..’’. For
+instance, you might want to run a C program as a test. To do this you
+would list its name in ‘TESTS’ and also in ‘check_PROGRAMS’, and then
+specify it as you would any other program.
+
+ Programs listed in ‘check_PROGRAMS’ (and ‘check_LIBRARIES’,
+‘check_LTLIBRARIES’, ...) are only built during ‘make check’, not
+during ‘make all’. You should list there any program needed by your
+tests that does not need to be built by ‘make all’. The programs in
+‘check_PROGRAMS’ are _not_ automatically added to ‘TESTS’ because
+‘check_PROGRAMS’ usually lists programs used by the tests, not the tests
+themselves. If all your programs are in fact test cases, you can set
+‘TESTS = $(check_PROGRAMS)’.
+
+* Menu:
+
+* Testsuite Environment Overrides::
+
+\1f
+File: automake.info, Node: Testsuite Environment Overrides, Up: Scripts-based Testsuites
+
+15.2.1.1 Testsuite Environment Overrides
+........................................
+
+The ‘AM_TESTS_ENVIRONMENT’ and ‘TESTS_ENVIRONMENT’ variables can be used
+to run initialization code and set environment variables for the test
+scripts. The former variable is developer-reserved, and can be defined
+in the ‘Makefile.am’, while the latter is reserved for the user, which
+can employ it to extend or override the settings in the former; for this
+to work portably, however, the contents of a non-empty
‘AM_TESTS_ENVIRONMENT’ _must_ be terminated by a semicolon.
The ‘AM_TESTS_FD_REDIRECT’ variable can be used to define file
close-on-exec flag on file descriptors opened with the ‘exec’ builtin,
thus rendering an idiom like ‘AM_TESTS_ENVIRONMENT = exec 9>&2;’
ineffectual. This issue also affects some Bourne shells, such as the
-HP-UX’s ‘/bin/sh’,
+HP-UX’s ‘/bin/sh’.
AM_TESTS_ENVIRONMENT = \
## Some environment initializations are kept in a separate shell
if test -d /usr/xpg4/bin; then \
PATH=/usr/xpg4/bin:$$PATH; export PATH; \
fi;
+
## With this, the test scripts will be able to print diagnostic
## messages to the original standard error stream, even if the test
## driver redirects the stderr of the test scripts to a log file
## before executing them.
AM_TESTS_FD_REDIRECT = 9>&2
-Note however that ‘AM_TESTS_ENVIRONMENT’ is, for historical and
-implementation reasons, _not_ supported by the serial harness (*note
-Serial Test Harness::).
+ As another example, a notice that a test is starting can be emitted
+using ‘AM_TESTS_ENVIRONMENT’ (for package maintainers) or
+‘TESTS_ENVIRONMENT’ by users:
- Automake ensures that each file listed in ‘TESTS’ is built before it
-is run; you can list both source and derived programs (or scripts) in
-‘TESTS’; the generated rule will look both in ‘srcdir’ and ’‘..’’. For
-instance, you might want to run a C program as a test. To do this you
-would list its name in ‘TESTS’ and also in ‘check_PROGRAMS’, and then
-specify it as you would any other program.
+ make -j12 ... TESTS_ENVIRONMENT='echo RUNNING: "$$f";' check
- Programs listed in ‘check_PROGRAMS’ (and ‘check_LIBRARIES’,
-‘check_LTLIBRARIES’...) are only built during ‘make check’, not during
-‘make all’. You should list there any program needed by your tests that
-does not need to be built by ‘make all’. Note that ‘check_PROGRAMS’ are
-_not_ automatically added to ‘TESTS’ because ‘check_PROGRAMS’ usually
-lists programs used by the tests, not the tests themselves. Of course
-you can set ‘TESTS = $(check_PROGRAMS)’ if all your programs are test
-cases.
+The shell variable ‘$f’ contains the test name. (Although technically
+this is not guaranteed, in practice it is extremely unlikely to ever
+change.) This can be helpful to see when trying to debug test failures.
+
+ Notwithstanding these benefits, ‘AM_TESTS_ENVIRONMENT’ is, for
+historical and implementation reasons, _not_ supported by the serial
+harness (*note Serial Test Harness::).
\1f
File: automake.info, Node: Serial Test Harness, Next: Parallel Test Harness, Prev: Scripts-based Testsuites, Up: Simple Tests
-15.2.2 Older (and discouraged) serial test harness
+15.2.2 Older (and discouraged) Serial Test Harness
--------------------------------------------------
First, note that today the use of this harness is strongly discouraged
* AM_JAVACFLAGS: Java. (line 44)
* AM_LDFLAGS: Linking. (line 10)
* AM_LDFLAGS <1>: Program Variables. (line 59)
-* AM_LFLAGS: Yacc and Lex. (line 60)
+* AM_LFLAGS: Yacc and Lex. (line 65)
* AM_LIBTOOLFLAGS: Libtool Flags. (line 6)
* AM_LOG_DRIVER_FLAGS: Declaring Custom Test Drivers.
(line 6)
* AM_RUNTESTFLAGS: DejaGnu Tests. (line 24)
* AM_TESTSUITE_SUMMARY_HEADER: Scripts-based Testsuites.
(line 69)
-* AM_TESTS_ENVIRONMENT: Scripts-based Testsuites.
- (line 104)
-* AM_TESTS_FD_REDIRECT: Scripts-based Testsuites.
- (line 112)
+* AM_TESTS_ENVIRONMENT: Testsuite Environment Overrides.
+ (line 6)
+* AM_TESTS_FD_REDIRECT: Testsuite Environment Overrides.
+ (line 14)
* AM_UPCFLAGS: Unified Parallel C Support.
(line 21)
* AM_UPDATE_INFO_DIR: Texinfo. (line 92)
(line 6)
* check_PROGRAMS: Program Sources. (line 6)
* check_PROGRAMS <1>: Default _SOURCES. (line 28)
+* check_PROGRAMS <2>: Scripts-based Testsuites.
+ (line 111)
* check_SCRIPTS: Scripts. (line 18)
* CLASSPATH_ENV: Java. (line 53)
* CLEANFILES: Clean. (line 13)
* JAVAROOT: Java. (line 49)
* LDADD: Linking. (line 10)
* LDFLAGS: Program Variables. (line 12)
-* LFLAGS: Yacc and Lex. (line 60)
+* LFLAGS: Yacc and Lex. (line 65)
* libexec_PROGRAMS: Program Sources. (line 6)
* libexec_SCRIPTS: Scripts. (line 18)
* LIBOBJS: Optional. (line 75)
* pkglibexec_SCRIPTS: Scripts. (line 18)
* pkglib_LIBRARIES: A Library. (line 6)
* pkglib_LTLIBRARIES: Libtool Libraries. (line 6)
-* pkgpyexecdir: Python. (line 104)
-* pkgpythondir: Python. (line 90)
+* pkgpyexecdir: Python. (line 109)
+* pkgpythondir: Python. (line 95)
* PROGRAMS: Uniform. (line 17)
* PROGRAMS <1>: Uniform. (line 101)
-* pyexecdir: Python. (line 95)
+* pyexecdir: Python. (line 100)
* PYTHON: Uniform. (line 101)
* PYTHON <1>: Python. (line 56)
-* pythondir: Python. (line 86)
+* pythondir: Python. (line 91)
* PYTHON_EXEC_PREFIX: Python. (line 73)
-* PYTHON_PLATFORM: Python. (line 81)
+* PYTHON_PLATFORM: Python. (line 86)
* PYTHON_PREFIX: Python. (line 72)
* PYTHON_VERSION: Python. (line 68)
* RECHECK_LOGS: Parallel Test Harness.
(line 73)
* SUFFIXES: Suffixes. (line 6)
* sys.exec_prefix Python variable: Python. (line 74)
-* sys.platform Python variable: Python. (line 82)
+* sys.platform Python variable: Python. (line 87)
* sys.prefix Python variable: Python. (line 74)
* sys.version_info Python variable: Python. (line 69)
* sysconf_DATA: Data. (line 9)
(line 104)
* TESTS <1>: Parallel Test Harness.
(line 12)
-* TESTS_ENVIRONMENT: Scripts-based Testsuites.
- (line 104)
+* TESTS_ENVIRONMENT: Testsuite Environment Overrides.
+ (line 6)
* TEST_EXTENSIONS: Parallel Test Harness.
(line 34)
* TEST_LOGS: Parallel Test Harness.
* --warnings: automake Invocation. (line 133)
* --warnings <1>: aclocal Options. (line 80)
* --with-dmalloc: Public Macros. (line 122)
+* --with-python-sys-prefix: Python. (line 74)
* --with-python_exec_prefix: Python. (line 74)
* --with-python_prefix: Python. (line 74)
* -a: automake Invocation. (line 41)
* LDFLAGS and AM_LDFLAGS: Flag Variables Ordering.
(line 20)
* lex problems with HP-UX 10: Public Macros. (line 94)
-* lex, multiple lexers: Yacc and Lex. (line 68)
+* lex, multiple lexers: Yacc and Lex. (line 73)
* LFLAGS and AM_LFLAGS: Flag Variables Ordering.
(line 20)
* libltdl, introduction: Libtool Concept. (line 29)
* Limitations of automake parser: General Operation. (line 33)
* Linking Fortran 77 with C and C++: Mixing Fortran 77 With C and C++.
(line 6)
+* Linking multiple yacc parsers: Linking Multiple Yacc Parsers.
+ (line 3)
* LISP primary, defined: Emacs Lisp. (line 6)
* LN_S example: Extending. (line 86)
* local targets: Extending. (line 37)
* mostlyclean-local <1>: Extending. (line 41)
* multiple configurations, example: VPATH Builds. (line 48)
* Multiple configure.ac files: automake Invocation. (line 6)
-* Multiple lex lexers: Yacc and Lex. (line 68)
+* Multiple lex lexers: Yacc and Lex. (line 73)
* multiple outputs, rules with: Multiple Outputs. (line 6)
-* Multiple yacc parsers: Yacc and Lex. (line 68)
+* Multiple yacc parsers: Yacc and Lex. (line 73)
* Nested packages: Nested Packages. (line 6)
* Nesting packages: Subpackages. (line 6)
* no-define: Public Macros. (line 54)
* Overriding make variables: General Operation. (line 51)
* overriding rules: Extending. (line 26)
* overriding semantics: Extending. (line 26)
+* Overriding testsuite environment: Testsuite Environment Overrides.
+ (line 6)
* PACKAGE, directory: Uniform. (line 19)
* PACKAGE, prevent definition: Public Macros. (line 54)
* Packages, nested: Nested Packages. (line 6)
* Silent rules: Silencing Make. (line 6)
* silent rules and libtool: Automake Silent Rules.
(line 59)
-* site-packages Python directory: Python. (line 87)
+* site-packages Python directory: Python. (line 92)
* site.exp: DejaGnu Tests. (line 26)
* source tree and build tree: VPATH Builds. (line 6)
* source tree, read-only: VPATH Builds. (line 91)
* test-driver: Auxiliary Programs. (line 73)
* Tests, expected failure: Scripts-based Testsuites.
(line 32)
+* Testsuite environment overrides: Testsuite Environment Overrides.
+ (line 6)
* testsuite harness: Generalities about Testing.
(line 18)
* Testsuite progress on console: Scripts-based Testsuites.
(line 39)
* xz: The Types of Distributions.
(line 30)
-* yacc, multiple parsers: Yacc and Lex. (line 68)
+* yacc, multiple parsers: Yacc and Lex. (line 73)
* YFLAGS and AM_YFLAGS: Flag Variables Ordering.
(line 20)
* ylwrap: Auxiliary Programs. (line 85)
-* ylwrap <1>: Yacc and Lex. (line 68)
+* ylwrap <1>: Yacc and Lex. (line 73)
* zardoz example: Complete. (line 35)
* zip: The Types of Distributions.
(line 37)
@insertcopying
@end titlepage
+@shortcontents
@contents
@c We use the following macros to define indices:
Autoconf macros supplied with Automake
* Public Macros:: Macros that you can use.
+* Obsolete Macros:: Macros that will soon be removed.
* Private Macros:: Macros that you should not use.
Directories
* Error required file ltmain.sh not found:: The need to run libtoolize
* Objects created both with libtool and without:: Avoid a specific build race
+Yacc and Lex support
+
+* Linking Multiple Yacc Parsers::
+
Fortran 77 Support
* Preprocessing Fortran 77:: Preprocessing Fortran 77 sources
Support for test suites
-* Generalities about Testing:: Generic concepts and terminology about testing
+* Generalities about Testing:: Concepts and terminology about testing
* Simple Tests:: Listing test scripts in @code{TESTS}
* Custom Test Drivers:: Writing and using custom test drivers
* Using the TAP test protocol:: Integrating test scripts that use the TAP protocol
* Serial Test Harness:: Older (and discouraged) serial test harness
* Parallel Test Harness:: Generic concurrent test harness
-Using the TAP test protocol
+Scripts-based Testsuites
-* Introduction to TAP::
-* Use TAP with the Automake test harness::
-* Incompatibilities with other TAP parsers and drivers::
-* Links and external resources on TAP::
+* Testsuite Environment Overrides::
Custom Test Drivers
* Log files generation and test results recording::
* Testsuite progress output::
+Using the TAP test protocol
+
+* Introduction to TAP::
+* Use TAP with the Automake test harness::
+* Incompatibilities with other TAP parsers and drivers::
+* Links and external resources on TAP::
+
Changing Automake's Behavior
* Options generalities:: Semantics of Automake option
* Usage of Conditionals:: Declaring conditional content
* Limits of Conditionals:: Enclosing complete statements
-Silencing Make
+Silencing @command{make}
* Make verbosity:: Make is verbose by default
* Tricks For Silencing Make:: Standard and generic ways to silence make
haven't read the paper, Miller's main thesis is that recursive
@command{make} invocations are both slow and error-prone.
-Automake provides sufficient cross-directory support @footnote{We
-believe. This work is new and there are probably warts.
-@xref{Introduction}, for information on reporting bugs.} to enable you
-to write a single @file{Makefile.am} for a complex multi-directory
-package.
+Automake is intended to have sufficient cross-directory support to
+enable you to write a single @file{Makefile.am} for a complex
+multi-directory package. (If it seems to be lacking, please report
+the issue as usual.)
By default an installable file specified in a subdirectory will have its
directory name stripped before installation. For instance, in this
Automake has somewhat idiosyncratic support for Yacc and Lex.
Automake assumes that the @file{.c} file generated by @command{yacc}
-(or @command{lex}) should be named using the basename of the input
-file. That is, for a yacc source file @file{foo.y}, Automake will
+or @command{lex} should be named using the basename of the input
+file. That is, for a Yacc source file @file{foo.y}, Automake will
cause the intermediate file to be named @file{foo.c} (as opposed to
@file{y.tab.c}, which is more traditional).
-The extension of a yacc source file is used to determine the extension
-of the resulting C or C++ source and header files. Note that header
-files are generated only when the @option{-d} Yacc option is used; see
+The extension of a Yacc source file is used to determine the extension
+of the resulting C or C++ source and header files. Be aware that header
+files are generated only when the option @option{-d} is given to Yacc; see
below for more information about this flag, and how to specify it.
Files with the extension @file{.y} will thus be turned into @file{.c}
sources and @file{.h} headers; likewise, @file{.yy} will become
@file{h++}, @file{.yxx} will become @file{.cxx} and @file{.hxx},
and @file{.ypp} will become @file{.cpp} and @file{.hpp}.
-Similarly, lex source files can be used to generate C or C++; the
+Similarly, Lex source files can be used to generate C or C++; the
extensions @file{.l}, @file{.ll}, @file{.l++}, @file{.lxx}, and
@file{.lpp} are recognized.
will be included in any distribution that is made. That way the user
doesn't need to have @command{yacc} or @command{lex}.
-If a @command{yacc} source file is seen, then your @file{configure.ac} must
+If a Yacc source file is seen, then your @file{configure.ac} must
define the variable @code{YACC}. This is most easily done by invoking
-the macro @code{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
-Program Checks, autoconf, The Autoconf Manual}).
+the macro @code{AC_PROG_YACC} (@pxref{Particular Programs, ,
+Particular Program Checks, autoconf, The Autoconf Manual}).
@vindex YFLAGS
@vindex AM_YFLAGS
@code{AM_YFLAGS} is usually used to pass the @option{-d} option to
@command{yacc}. Automake knows what this means and will automatically
adjust its rules to update and distribute the header file built by
-@samp{yacc -d}@footnote{Please note that @command{automake} recognizes
-@option{-d} in @code{AM_YFLAGS} only if it is not clustered with other
-options; for example, it won't be recognized if @code{AM_YFLAGS} is
-@option{-dt}, but it will be if @code{AM_YFLAGS} is @option{-d -t} or
-@option{-t -d}.}.
-What Automake cannot guess, though, is where this
-header will be used: it is up to you to ensure the header gets built
-before it is first used. Typically this is necessary in order for
-dependency tracking to work when the header is included by another
-file. The common solution is listing the header file in
-@code{BUILT_SOURCES} (@pxref{Sources}) as follows.
+@samp{yacc -d}. Caveat: @command{automake} recognizes @option{-d} in
+@code{AM_YFLAGS} only if it is not clustered with other options; for
+example, it won't be recognized if @code{AM_YFLAGS} is @option{-dt},
+but it will be if @code{AM_YFLAGS} is @option{-d -t} or @option{-t
+-d}.
+
+What Automake cannot guess, though, is where this header will be used:
+it is up to you to ensure the header gets built before it is first
+used. Typically this is necessary in order for dependency tracking to
+work when the header is included by another file. The common solution
+is listing the header file in @code{BUILT_SOURCES} (@pxref{Sources})
+as follows.
@example
BUILT_SOURCES = parser.h
foo_SOURCES = @dots{} parser.y @dots{}
@end example
-If a @command{lex} source file is seen, then your @file{configure.ac}
-must define the variable @code{LEX}. You can use @code{AC_PROG_LEX}
-to do this (@pxref{Particular Programs, , Particular Program Checks,
-autoconf, The Autoconf Manual}), but using the @code{AM_PROG_LEX} macro
-(@pxref{Macros}) is recommended.
+If a Lex source file is seen, then your @file{configure.ac} must
+define the variable @code{LEX}. You can use @code{AC_PROG_LEX} to do
+this (@pxref{Particular Programs, , Particular Program Checks,
+autoconf, The Autoconf Manual}), but using the @code{AM_PROG_LEX}
+macro (@pxref{Macros}) is recommended.
@vindex LFLAGS
@vindex AM_LFLAGS
@code{LFLAGS}. The latter is a user variable and the former is
intended for the @file{Makefile.am} author.
-When @code{AM_MAINTAINER_MODE} (@pxref{maintainer-mode}) is used, the
-rebuild rule for distributed Yacc and Lex sources are only used when
-@code{maintainer-mode} is enabled, or when the files have been erased.
+When @code{AM_MAINTAINER_MODE} (@pxref{maintainer-mode}) is in effect,
+the rebuild rules for distributed Yacc and Lex sources are only used
+when @code{maintainer-mode} is enabled, or when the files have been
+erased.
@cindex @command{ylwrap}
@cindex @command{yacc}, multiple parsers
@cindex Multiple @command{lex} lexers
@cindex @command{lex}, multiple lexers
-When @command{lex} or @command{yacc} sources are used, @code{automake -a}
-automatically installs an auxiliary program called @command{ylwrap} in
-your package (@pxref{Auxiliary Programs}).
-This program is used by the build rules to rename the output of these
-tools, and makes it possible to include multiple @command{yacc} (or
-@command{lex}) source files in a single directory. (This is necessary
-because yacc's output file name is fixed, and a parallel make could
-conceivably invoke more than one instance of @command{yacc}
-simultaneously.)
+When Yacc or Lex sources are used, @code{automake -a} automatically
+installs an auxiliary program called @command{ylwrap} in your package
+(@pxref{Auxiliary Programs}). This program is used by the build rules
+to rename the output of these tools, and makes it possible to include
+multiple @command{yacc} (or @command{lex}) source files in a single
+directory. This is necessary because Yacc's output file name is
+fixed, and a parallel make could invoke more than one instance of
+@command{yacc} simultaneously.
-For @command{yacc}, simply managing locking is insufficient. The output of
-@command{yacc} always uses the same symbol names internally, so it isn't
-possible to link two @command{yacc} parsers into the same executable.
+@menu
+* Linking Multiple Yacc Parsers::
+@end menu
+
+@subsection Linking Multiple Yacc Parsers
+@node Linking Multiple Yacc Parsers
+
+@cindex Linking multiple @command{yacc} parsers
+
+For @command{yacc}, simply managing locking as with @code{ylwrap} is
+insufficient. The output of @command{yacc} always uses the same
+symbol names internally, so it isn't possible to link two
+@command{yacc} parsers into the same executable.
We recommend using the following renaming hack used in @command{gdb}:
@example
@item PYTHON_PREFIX
@itemx PYTHON_EXEC_PREFIX
+@opindex --with-python-sys-prefix
@opindex --with-python_prefix
@opindex --with-python_exec_prefix
@vindex sys.prefix @r{Python variable}
@vindex sys.exec_prefix @r{Python variable}
-The value of Python's @samp{sys.prefix} (resp.@:
-@samp{sys.exec_prefix}) variable. Sometimes the same as the standard
-@samp{$@{prefix@}} (@samp{$@{exec_prefix@}}), but differs on some
-platforms such as Mac@tie{}OS@tie{}x (where Python is usually
-installed as a Framework). Can be set explicitly with the
-@option{--with-python_prefix} (@option{--with-python_exec_prefix})
-@file{configure} option.
+With no special options given, these have values @samp{$@{prefix@}}
+and @samp{$@{exec_prefix@}}, respectively (unexpanded; see below).
+
+The @file{configure} options @option{--with-python_prefix}
+and @option{--with-python_exec_prefix} set them to an explicit value.
+
+The @file{configure} option @option{--with-python-sys-prefix} set them
+to the values of Python's @samp{sys.prefix} and @samp{sys.exec_prefix}
+variables. These often differ from @samp{$@{prefix@}} and
+@samp{$@{exec_prefix@}}, e.g., on platforms such as Mac@tie{}OS@tie{}x
+(where Python is usually installed as a Framework).
@item PYTHON_PLATFORM
@vindex sys.platform @r{Python variable}
(@pxref{Checking the Distribution}).
@vindex TESTS
+Automake ensures that each file listed in @code{TESTS} is built before
+it is run; you can list both source and derived programs (or scripts)
+in @code{TESTS}; the generated rule will look both in @code{srcdir} and
+`@file{..}'. For instance, you might want to run a C program as a test.
+To do this you would list its name in @code{TESTS} and also in
+@code{check_PROGRAMS}, and then specify it as you would any other
+program.
+
+@vindex check_PROGRAMS
+Programs listed in @code{check_PROGRAMS} (and @code{check_LIBRARIES},
+@code{check_LTLIBRARIES}, ...) are only built during @code{make
+check}, not during @code{make all}. You should list there any program
+needed by your tests that does not need to be built by @code{make
+all}. The programs in @code{check_PROGRAMS} are @emph{not}
+automatically added to @code{TESTS} because @code{check_PROGRAMS}
+usually lists programs used by the tests, not the tests themselves.
+If all your programs are in fact test cases, you can set @code{TESTS =
+$(check_PROGRAMS)}.
+
+@menu
+* Testsuite Environment Overrides::
+@end menu
+
+@node Testsuite Environment Overrides
+@subsubsection Testsuite Environment Overrides
+
+@cindex Testsuite environment overrides
+@cindex Overriding testsuite environment
+
@vindex TESTS_ENVIRONMENT
@vindex AM_TESTS_ENVIRONMENT
The @code{AM_TESTS_ENVIRONMENT} and @code{TESTS_ENVIRONMENT} variables can
flag on file descriptors opened with the @command{exec} builtin, thus
rendering an idiom like @code{AM_TESTS_ENVIRONMENT = exec 9>&2;}
ineffectual. This issue also affects some Bourne shells, such as the
-HP-UX's @command{/bin/sh},
+HP-UX's @command{/bin/sh}.
@c Keep in sync with tests-environment-backcompat.sh
@example
if test -d /usr/xpg4/bin; then \
PATH=/usr/xpg4/bin:$$PATH; export PATH; \
fi;
+
@c $$ restore font-lock
## With this, the test scripts will be able to print diagnostic
## messages to the original standard error stream, even if the test
AM_TESTS_FD_REDIRECT = 9>&2
@end example
-@noindent
-Note however that @code{AM_TESTS_ENVIRONMENT} is, for historical and
-implementation reasons, @emph{not} supported by the serial harness
-(@pxref{Serial Test Harness}).
+@c https://bugs.gnu.org/49309
+As another example, a notice that a test is starting can be emitted
+using @code{AM_TESTS_ENVIRONMENT} (for package maintainers) or
+@code{TESTS_ENVIRONMENT} by users:
-Automake ensures that each file listed in @code{TESTS} is built before
-it is run; you can list both source and derived programs (or scripts)
-in @code{TESTS}; the generated rule will look both in @code{srcdir} and
-'@file{..}'. For instance, you might want to run a C program as a test.
-To do this you would list its name in @code{TESTS} and also in
-@code{check_PROGRAMS}, and then specify it as you would any other
-program.
+@example
+make -j12 ... TESTS_ENVIRONMENT='echo RUNNING: "$$f";' check
+@end example
-Programs listed in @code{check_PROGRAMS} (and @code{check_LIBRARIES},
-@code{check_LTLIBRARIES}...) are only built during @code{make check},
-not during @code{make all}. You should list there any program needed
-by your tests that does not need to be built by @code{make all}. Note
-that @code{check_PROGRAMS} are @emph{not} automatically added to
-@code{TESTS} because @code{check_PROGRAMS} usually lists programs used
-by the tests, not the tests themselves. Of course you can set
-@code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
+@noindent
+The shell variable @code{$f} contains the test name. (Although
+technically this is not guaranteed, in practice it is extremely
+unlikely to ever change.) This can be helpful to see when trying to
+debug test failures.
+
+Notwithstanding these benefits, @code{AM_TESTS_ENVIRONMENT} is, for
+historical and implementation reasons, @emph{not} supported by the
+serial harness (@pxref{Serial Test Harness}).
@node Serial Test Harness
-@subsection Older (and discouraged) serial test harness
+@subsection Older (and discouraged) Serial Test Harness
@cindex @option{serial-tests}, Using
First, note that today the use of this harness is strongly discouraged in
#!/usr/bin/perl -w
# Generate a short man page from --help and --version output.
-# Copyright (C) 1997-2021 Free Software Foundation, Inc.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009,
+# 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2020, 2021 Free Software
+# Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
use POSIX qw(strftime setlocale LC_ALL);
my $this_program = 'help2man';
-my $this_version = '1.47.4';
+my $this_version = '1.48.4';
sub _ { $_[0] }
sub configure_locale
my $version_info = enc_user sprintf _(<<'EOT'), $this_program, $this_version;
GNU %s %s
-Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009, 2010,
-2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009,
+2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2020, 2021 Free Software
+Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$version_text ||= get_option_value $ARGV[0], $version_option;
# By default the generated manual pages will include the current date. This may
-# however be overriden by setting the environment variable $SOURCE_DATE_EPOCH
+# however be overridden by setting the environment variable $SOURCE_DATE_EPOCH
# to an integer value of the seconds since the UNIX epoch. This is primarily
# intended to support reproducible builds (wiki.debian.org/ReproducibleBuilds)
# and will additionally ensure that the output date string is UTC.
if (exists $ENV{SOURCE_DATE_EPOCH} and $ENV{SOURCE_DATE_EPOCH} =~ /^(\d+)$/)
{
$epoch_secs = $1;
- $ENV{TZ} = 'UTC';
+ $ENV{TZ} = 'UTC0';
}
# Translators: the following message is a strftime(3) format string, which in
# <version>
# <program> <version>
# {GNU,Free} <program> <version>
-# <program> ({GNU,Free} <package>) <version>
-# <program> - {GNU,Free} <package> <version>
+# <program> ({GNU,Free,} <package>) <version>
+# <program> - {GNU,Free,} <package> <version>
+# <program> - {GNU,Free,} <package> - <version>
#
# and separated from any copyright/author details by a blank line.
($_, $version_text) = ((split /\n+/, $version_text, 2), '');
-if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or
- /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/)
+if (/^(\S+) +\(((?:(?:GNU|Free) +)?[^)]+)\) +(\S.*)$/ or
+ /^(\S+) +- +((?:(?:GNU|Free) +)?\S.*) +- +(\S.*)$/ or
+ /^(\S+) +- +((?:(?:GNU|Free) +)?\S+) +(\S.*)$/)
{
$program = program_basename $1;
$package = $2;
$version = $3;
}
-elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/)
+elsif (/^((?:GNU|Free) +)?(\S+) +(\S.*)$/)
{
$program = program_basename $2;
$package = $1 ? "$1$program" : $program;
my $PROGRAM = uc $program;
# Set default page head/footers
-$source ||= "$program $version";
+$source ||= "$package $version";
unless ($manual)
{
for ($section)
# - mailto urls, they are always forbidden.
# - vala, redirects to a Gnome subpage and returns 403 to us.
# - cfortran, forbidden by site's robots.txt.
-# - search.cpan.org, gets
+# - search.cpan.org, gets
# - debbugs.gnu.org/automake, forbidden by robots.txt.
# - autoconf.html, forbidden by robots.txt (since served from savannah).
# - https://fsf.org redirects to https://www.fsf.org and nothing to do
$(srcdir)/%D%/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac
$(AM_V_GEN)tmp=amhello-output.tmp \
&& $(am__cd) $(srcdir)/%D%/amhello \
- && : Make our aclocal and automake avaiable before system ones. \
+ && : Make our aclocal and automake available before system ones. \
&& $(setup_autotools_paths) \
&& ( \
{ $(AM_V_P) || exec 5>&2 >$$tmp 2>&1; } \
-@set UPDATED 16 July 2021
-@set UPDATED-MONTH July 2021
-@set EDITION 1.16.4
-@set VERSION 1.16.4
+@set UPDATED 1 October 2021
+@set UPDATED-MONTH October 2021
+@set EDITION 1.16.5
+@set VERSION 1.16.5
-@set UPDATED 16 July 2021
-@set UPDATED-MONTH July 2021
-@set EDITION 1.16.4
-@set VERSION 1.16.4
+@set UPDATED 1 October 2021
+@set UPDATED-MONTH October 2021
+@set EDITION 1.16.5
+@set VERSION 1.16.5
## Why the this needs to be so convoluted?
##
## (1) We can't unconditionally use make functions or special variables
-## starting with a dot, as those cause non-GNU implmentations to
+## starting with a dot, as those cause non-GNU implementations to
## crash hard.
##
## (2) We can't use $(MAKE_VERSION) here, as it is also defined in some
## We prefer files from the build directory to those from the source
## directory, in true VPATH spirit.
## The destination file is normally determined by appending "c" to the
-## input (which would erronously put it in $(srcdir) in VPATH builds),
+## input (which would erroneously put it in $(srcdir) in VPATH builds),
## so we override that, too.
if test '$(EMACS)' != no; then \
am__dir=. am__subdir_includes=''; \
# shellcheck disable=SC2006,SC2268 # see below for rationale
-timestamp='2021-07-03'
+timestamp='2021-08-14'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# Split fields of configuration type
# shellcheck disable=SC2162
+saved_IFS=$IFS
IFS="-" read field1 field2 field3 field4 <<EOF
$1
EOF
+IFS=$saved_IFS
# Separate into logical components for further validation
case $1 in
basic_machine=$field1
basic_os=$field2
;;
+ zephyr*)
+ basic_machine=$field1-unknown
+ basic_os=$field2
+ ;;
# Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
*-*)
# shellcheck disable=SC2162
+ saved_IFS=$IFS
IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
+ IFS=$saved_IFS
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
;;
*-*)
# shellcheck disable=SC2162
+ saved_IFS=$IFS
IFS="-" read kernel os <<EOF
$basic_os
EOF
+ IFS=$saved_IFS
;;
# Default OS when just kernel was specified
nto*)
# Now, validate our (potentially fixed-up) OS.
case $os in
# Sometimes we do "kernel-libc", so those need to count as OSes.
- musl* | newlib* | uclibc*)
+ musl* | newlib* | relibc* | uclibc*)
;;
# Likewise for "kernel-abi"
eabi* | gnueabi*)
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
- | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr*)
;;
# This one is extra strict with allowed versions
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
# As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel.
case $kernel-$os in
- linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
+ | linux-musl* | linux-relibc* | linux-uclibc* )
;;
uclinux-uclibc* )
;;
- -dietlibc* | -newlib* | -musl* | -uclibc* )
+ -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
# These are just libc implementations, not actual OSes, and thus
# require a kernel.
echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
#!/bin/sh
# py-compile - Compile a Python program
-scriptversion=2020-02-19.23; # UTC
+scriptversion=2021-02-27.01; # UTC
# Copyright (C) 2000-2021 Free Software Foundation, Inc.
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
-if [ -z "$PYTHON" ]; then
+if test -z "$PYTHON"; then
PYTHON=python
fi
files=$*
if test -z "$files"; then
- usage_error "no files given"
+ usage_error "no files given"
fi
# if basedir was given, then it should be prepended to filenames before
# byte compilation.
-if [ -z "$basedir" ]; then
- pathtrans="path = file"
+if test -z "$basedir"; then
+ pathtrans="path = file"
else
- pathtrans="path = os.path.join('$basedir', file)"
+ pathtrans="path = os.path.join('$basedir', file)"
fi
# if destdir was given, then it needs to be prepended to the filename to
# byte compile but not go into the compiled file.
-if [ -z "$destdir" ]; then
- filetrans="filepath = path"
+if test -z "$destdir"; then
+ filetrans="filepath = path"
else
- filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)"
+ filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)"
fi
python_major=`$PYTHON -V 2>&1 | sed -e 's/.* //;s/\..*$//;1q'`
py_compile.compile(filepath, $import_call(filepath$import_arg2), path)
else:
py_compile.compile(filepath, filepath + 'o', path)
-sys.stdout.write('\n')" 2>/dev/null || :
+sys.stdout.write('\n')" 2>/dev/null || exit $?
# Local Variables:
# mode: shell-script
[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.16.4], [],
+m4_if([$1], [1.16.5], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.4])dnl
+[AM_AUTOMAKE_VERSION([1.16.5])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.65])dnl
+m4_ifdef([_$0_ALREADY_INIT],
+ [m4_fatal([$0 expanded multiple times
+]m4_defn([_$0_ALREADY_INIT]))],
+ [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
])
if test "$PYTHON" = :; then
- dnl Run any user-specified action, or abort.
+ dnl Run any user-specified action, or abort.
m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
else
dnl trailing zero was eliminated. So now we output just the major
dnl and minor version numbers, as numbers. Apparently the tertiary
dnl version is not of interest.
-
+ dnl
AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
[am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[[:2]])"`])
AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
- dnl Use the values of sys.prefix and sys.exec_prefix for the corresponding
- dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
- dnl distinct variables so they can be overridden if need be. However,
- dnl general consensus is that you shouldn't need this ability.
- dnl Also allow directly setting the prefixes via configure args.
+ dnl At times, e.g., when building shared libraries, you may want
+ dnl to know which OS platform Python thinks this is.
+ dnl
+ AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
+ [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
+ AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
- if test "x$prefix" = xNONE
- then
- am__usable_prefix=$ac_default_prefix
+ dnl emacs-page
+ dnl If --with-python-sys-prefix is given, use the values of sys.prefix
+ dnl and sys.exec_prefix for the corresponding values of PYTHON_PREFIX
+ dnl and PYTHON_EXEC_PREFIX. Otherwise, use the GNU ${prefix} and
+ dnl ${exec_prefix} variables.
+ dnl
+ dnl The two are made distinct variables so they can be overridden if
+ dnl need be, although general consensus is that you shouldn't need
+ dnl this separation.
+ dnl
+ dnl Also allow directly setting the prefixes via configure options,
+ dnl overriding any default.
+ dnl
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
else
- am__usable_prefix=$prefix
+ am__usable_prefix=$prefix
fi
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+ AC_ARG_WITH([python-sys-prefix],
+ [AS_HELP_STRING([--with-python-sys-prefix],
+ [use Python's sys.prefix and sys.exec_prefix values])],
+ [am_use_python_sys=:],
+ [am_use_python_sys=false])
+
+ # Allow user to override whatever the default Python prefix is.
AC_ARG_WITH([python_prefix],
[AS_HELP_STRING([--with-python_prefix],
- [override the default PYTHON_PREFIX])],
- [ am_python_prefix_subst="$withval"
- am_cv_python_prefix="$withval"
- AC_MSG_CHECKING([for $am_display_PYTHON prefix])
+ [override the default PYTHON_PREFIX])],
+ [am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ AC_MSG_CHECKING([for explicit $am_display_PYTHON prefix])
AC_MSG_RESULT([$am_cv_python_prefix])],
[
- AC_CACHE_CHECK([for $am_display_PYTHON prefix], [am_cv_python_prefix],
- [am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`])
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ AC_CACHE_CHECK([for python default $am_display_PYTHON prefix],
+ [am_cv_python_prefix],
+ [am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`])
- dnl If sys.prefix is a subdir of $prefix, replace the literal value of $prefix
- dnl with a variable reference so it can be overridden.
- case $am_cv_python_prefix in
+ dnl If sys.prefix is a subdir of $prefix, replace the literal value of
+ dnl $prefix with a variable reference so it can be overridden.
+ case $am_cv_python_prefix in
$am__usable_prefix*)
am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
*)
am_python_prefix_subst=$am_cv_python_prefix
;;
- esac
- ])
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ AC_MSG_CHECKING([for GNU default $am_display_PYTHON prefix])
+ AC_MSG_RESULT([$am_python_prefix])
+ fi])
+ # Substituting python_prefix_subst value.
AC_SUBST([PYTHON_PREFIX], [$am_python_prefix_subst])
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
AC_ARG_WITH([python_exec_prefix],
[AS_HELP_STRING([--with-python_exec_prefix],
- [override the default PYTHON_EXEC_PREFIX])],
- [ am_python_exec_prefix_subst="$withval"
- am_cv_python_exec_prefix="$withval"
- AC_MSG_CHECKING([for $am_display_PYTHON exec_prefix])
+ [override the default PYTHON_EXEC_PREFIX])],
+ [am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ AC_MSG_CHECKING([for explicit $am_display_PYTHON exec_prefix])
AC_MSG_RESULT([$am_cv_python_exec_prefix])],
[
- dnl --with-python_prefix was given - use its value for python_exec_prefix too
- AS_IF([test -n "$with_python_prefix"], [am_python_exec_prefix_subst="$with_python_prefix"
- am_cv_python_exec_prefix="$with_python_prefix"
- AC_MSG_CHECKING([for $am_display_PYTHON exec_prefix])
- AC_MSG_RESULT([$am_cv_python_exec_prefix])],
- [
- AC_CACHE_CHECK([for $am_display_PYTHON exec_prefix], [am_cv_python_exec_prefix],
- [am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`])
- dnl If sys.exec_prefix is a subdir of $exec_prefix, replace the
- dnl literal value of $exec_prefix with a variable reference so it can
- dnl be overridden.
- if test "x$exec_prefix" = xNONE
- then
- am__usable_exec_prefix=$am__usable_prefix
- else
- am__usable_exec_prefix=$exec_prefix
- fi
- case $am_cv_python_exec_prefix in
- $am__usable_exec_prefix*)
- am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
- am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
- ;;
- *)
- am_python_exec_prefix_subst=$am_cv_python_exec_prefix
- ;;
- esac
- ])])
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ AS_IF([test -n "$with_python_prefix"],
+ [am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ AC_MSG_CHECKING([for python_prefix-given $am_display_PYTHON exec_prefix])
+ AC_MSG_RESULT([$am_cv_python_exec_prefix])],
+ [
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ AC_CACHE_CHECK([for python default $am_display_PYTHON exec_prefix],
+ [am_cv_python_exec_prefix],
+ [am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`])
+ dnl If sys.exec_prefix is a subdir of $exec_prefix, replace the
+ dnl literal value of $exec_prefix with a variable reference so it can
+ dnl be overridden.
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ AC_MSG_CHECKING([for GNU default $am_display_PYTHON exec_prefix])
+ AC_MSG_RESULT([$am_python_exec_prefix])
+ fi])])
+ # Substituting python_exec_prefix_subst.
AC_SUBST([PYTHON_EXEC_PREFIX], [$am_python_exec_prefix_subst])
- dnl At times (like when building shared libraries) you may want
- dnl to know which OS platform Python thinks this is.
-
- AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
- [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
- AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
-
- # Just factor out some code duplication.
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
except ImportError:
pass"
- dnl Set up 4 directories:
+ dnl emacs-page Set up 4 directories:
- dnl pythondir -- where to install python scripts. This is the
- dnl site-packages directory, not the python standard library
- dnl directory like in previous automake betas. This behavior
- dnl is more consistent with lispdir.m4 for example.
+ dnl 1. pythondir: where to install python scripts. This is the
+ dnl site-packages directory, not the python standard library
+ dnl directory like in previous automake betas. This behavior
+ dnl is more consistent with lispdir.m4 for example.
dnl Query distutils for this directory.
- AC_CACHE_CHECK([for $am_display_PYTHON script directory],
- [am_cv_python_pythondir],
- [if test "x$am_cv_python_prefix" = x
- then
- am_py_prefix=$am__usable_prefix
- else
- am_py_prefix=$am_cv_python_prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ dnl
+ AC_CACHE_CHECK([for $am_display_PYTHON script directory (pythondir)],
+ [am_cv_python_pythondir],
+ [if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
- ])
+ ;;
+ esac
+ ])
AC_SUBST([pythondir], [$am_cv_python_pythondir])
- dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
- dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
- dnl more consistent with the rest of automake.
-
+ dnl 2. pkgpythondir: $PACKAGE directory under pythondir. Was
+ dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
+ dnl more consistent with the rest of automake.
+ dnl
AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
- dnl pyexecdir -- directory for installing python extension modules
- dnl (shared libraries)
+ dnl 3. pyexecdir: directory for installing python extension modules
+ dnl (shared libraries).
dnl Query distutils for this directory.
- AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
- [am_cv_python_pyexecdir],
- [if test "x$am_cv_python_exec_prefix" = x
- then
- am_py_exec_prefix=$am__usable_exec_prefix
- else
- am_py_exec_prefix=$am_cv_python_exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ dnl
+ AC_CACHE_CHECK([for $am_display_PYTHON extension module directory (pyexecdir)],
+ [am_cv_python_pyexecdir],
+ [if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
- ])
+ ;;
+ esac
+ ])
AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
- dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
-
+ dnl 4. pkgpyexecdir: $(pyexecdir)/$(PACKAGE)
+ dnl
AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
dnl Run any user-specified action.
$2
fi
-
])
## Allow only few variables to be localized in automake and aclocal.
sc_perl_local:
- @if egrep -v '^[ \t]*local \$$[_~]( *=|;)' \
+ @if grep -Ev '^[ \t]*local \$$[_~]( *=|;)' \
$(automake_in) $(aclocal_in) | \
grep '^[ \t]*local [^*]'; then \
echo "Please avoid 'local'." 1>&2; \
cat >Makefile.am <<EOF
if COND
-## A dummy comment to change line numer.
+## A dummy comment to change line number.
foo = baz
endif
EOF
cat > tparse.y << 'END'
%{
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%token EOF
%%
$ACLOCAL
-# Presently Automake doesn't fully support partially overriden rules
+# Presently Automake doesn't fully support partially overridden rules
# and should complain.
AUTOMAKE_fails --add-missing
grep 'tparse\.h.*already defined' stderr
else
for f in $required_files; do
cp "$am_scriptdir"/$f $auxdir/$f \
- || fatal_ "faild to fetch auxiliary script '$f'"
+ || fatal_ "failed to fetch auxiliary script '$f'"
# See comments above.
chmod a-w $auxdir/$f
done
grep '^ *bar_LINK *=.*bar_LDFLAGS' Makefile.in && exit 1
grep '.\$(bar_LINK).*bar' Makefile.in
-# Silent make rules should use AM_V_GEN unless overriden.
+# Silent make rules should use AM_V_GEN unless overridden.
grep '.\$(AM_V_GEN)\$(foo_LINK)' Makefile.in
grep '.\$(AM_V_baz_LINK)\$(baz_LINK)' Makefile.in
grep '.\$(AM_V_GEN)\$(baz_LINK)' Makefile.in && exit 1
#!/bin/sh
# The sleep should ensure expected execution order of tests
# even when make is run in parallel mode.
-# Creative quoting below to plase maintainer-check.
+# Creative quoting below to please maintainer-check.
sleep '10'
exit 1
END
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Test configure options --with-python_prefix and --with-python_exec_prefix.
-# We can't test with no prefixes specified, since the default is to
-# install in Python's sys.prefix and sys.exec_prefix directories.
required=python
. test-init.sh
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Check that AM_PATH_PYTHON correctly sets all the output variables
-# advertised in the manual.
+# advertised in the manual, both with the GNU prefix values and the
+# Python sys.* prefix values.
required=python
. test-init.sh
.PHONY: test-in test-am
test-in:
+ @echo "> doing test-in"
+ @echo ">> contents of pythondir:"
cat pythondir
case `cat pythondir` in '$${PYTHON_PREFIX}'/*);; *) exit 1;; esac
+ @echo ">> contents of pyexecdir:"
cat pyexecdir
case `cat pyexecdir` in '$${PYTHON_EXEC_PREFIX}'/*);; *) exit 1;; esac
+ @echo ">> contents of vars-exp:"
cat $(srcdir)/vars-exp
+ @echo ">> contents of vars-got:"
cat $(builddir)/vars-got
diff $(srcdir)/vars-exp $(builddir)/vars-got
## Note: this target's rules will be extended in the "for" loop below.
test-am:
+ @echo "> doing test-am"
case '$(pythondir)' in '$(PYTHON_PREFIX)'/*);; *) exit 1;; esac
case '$(pyexecdir)' in '$(PYTHON_EXEC_PREFIX)'/*);; *) exit 1;; esac
END
echo @pythondir@ > pythondir.in
echo @pyexecdir@ > pyexecdir.in
-: > vars-exp
-: > vars-got.in
-
-for var in $pyvars; do
- eval val=\$$var
- echo "var=$val" >> vars-exp
- echo "var=@$var@" >> vars-got.in
- echo "${tab}test x'\$($var)' = x'$val' || test \"\$NO_CHECK_PYTHON_PREFIX\"" >> Makefile.am
-done
-
-cat Makefile.am
-cat vars-got.in
+# This depends on whether we're doing GNU or Python values, per arg.
+setup_vars_file ()
+{
+ vartype=$1
+ : > vars-exp
+ : > vars-got.in
+
+ for var in $pyvars; do
+ if test x"$vartype" = xgnu; then
+ # when not using Python sys.* values, PYTHON_*PREFIX will vary;
+ # the computed value will be (something like) "/usr",
+ # but the expected value will be "${prefix}".
+ if test x"$var" = xPYTHON_PREFIX \
+ || test x"$var" = xPYTHON_EXEC_PREFIX; then
+ continue
+ fi
+ fi
+ eval val=\$$var
+ echo "var=$val #$var" >> vars-exp
+ echo "var=@$var@ #$var" >> vars-got.in
+ echo "${tab}test x'\$($var)' = x'$val' || test \"\$NO_CHECK_PYTHON_PREFIX\"" >> Makefile.am
+ done
+}
+
+setup_vars_file gnu
$ACLOCAL
$AUTOMAKE --add-missing
+# some debugging output.
for var in pythondir pyexecdir $pyvars; do
grep "^$var *=" Makefile.in
done
-instdir=$(pwd)/inst
-
$AUTOCONF
-./configure --prefix="$instdir" PYTHON="$PYTHON"
+# Do GNU values.
+./configure PYTHON="$PYTHON"
$MAKE test-in test-am
+run_make distcheck
+
+# Do Python values.
+setup_vars_file python
+instdir=$(pwd)/inst
+./configure PYTHON="$PYTHON" --with-python-sys-prefix --prefix="$instdir"
+$MAKE test-in test-am
+#
# This tries to install to $PYTHON_PREFIX, which may not be writable.
# Override it to something safe, but then of course we have to skip
# checking that it is what we originally set it to.
-run_make distcheck PYTHON_PREFIX="$instdir" NO_CHECK_PYTHON_PREFIX=1
+run_make distcheck \
+ PYTHON_PREFIX="$instdir" \
+ NO_CHECK_PYTHON_PREFIX=1 \
+ AM_DISTCHECK_CONFIGURE_FLAGS=--with-python-sys-prefix
:
cat > foo6.y <<'EOF'
%{
extern int yylex (void);
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%token EOF
%%
cat > parse.y <<'EOF'
%{
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
int yylex (void) { return 0; }
int main (void) { return 0; }
%}
cat > foo.y <<'EOF'
%{
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
int yylex (void) { return 0; }
int main (void) { return 0; }
%}
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Test that automake works around a bug of Solaris Make. The bug is the
-# following. If we have a Makefile containg a file inclusion like this:
+# following. If we have a Makefile containing a file inclusion like this:
# include .//foo.mk
# Solaris make fails with a message like:
# make: ... can't find '/foo.mk': No such file or directory
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Test that automake works around a bug of Solaris Make. The bug is the
-# following. If we have a Makefile containg a file inclusion like this:
+# following. If we have a Makefile containing a file inclusion like this:
# include .//foo.mk
# Solaris make fails with a message like:
# make: ... can't find '/foo.mk': No such file or directory
cat > lib/foo.y << 'END'
%{
int yylex (void) { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
:; { echo '/* autogenerated */' \
&& echo '%{' \
&& echo 'int yylex () {return 0;}' \
- && echo 'void yyerror (char *s) {}' \
+ && echo 'void yyerror (const char *s) {}' \
&& echo '%}' \
&& echo '%%' \
&& echo "foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};" \
touch foo.test
-autoreconf -fi >reconf.out 2>&1
+autoreconf -fi >reconf.out 2>&1
grep 'uninitialized value' reconf.out && exit 1
# What we're trying to avoid:
#include <stdio.h>
#include <stdlib.h>
int yylex () { return getchar (); }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
a : 'a' { exit(0); };
foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
%%
int yylex () { return 0; }
-void yyerror (const char *s) { return; }
+void yyerror (const char *s) {}
END
cat > foo.c << 'END'
#include <cstdio>
// "std::" qualification required by Sun C++ 5.9.
int yylex (void) { return std::getchar (); }
-void yyerror (const char *s) { return; }
+void yyerror (const char *s) {}
%}
%%
x : 'x' { };
cat > sub1/parse.y << 'END'
%{
int yylex () { return (getchar ()); }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
x : 'x' { };
#include <cstdlib>
// "std::" qualification required by Sun C++ 5.9.
int yylex (void) { return std::getchar (); }
-void yyerror (const char *s) { return; }
+void yyerror (const char *s) {}
%}
%%
a : 'a' { exit(0); };
%{
#include "parse.h"
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
x : 'x' {};
cat > parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%token FOOBAR
%%
cat > ../parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%token FUBAR
%%
cat > ../parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%token MAUDE
%%
%{
#include "parse1.h"
int yylex () { return 0; }
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
%}
%token ZARDOZ
%%
cat > parse4.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
%}
%%
x : 'x' {};
cat > foo.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
%}
%token TOKEN
%%
cat > foo.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
%}
%token TOKEN
%%
cat > sub/parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
%}
%%
x : 'x' {};
cat > parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
cat > parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
cat > zardoz.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
%}
%%
x : 'x' {};
cat > parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
cat > bar.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
fubar : 'f' 'o' 'o' 'b' 'a' 'r' {};
cat > p.y <<'END'
%{
int yylex (void) { int new = 0; return new; }
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
%}
%token ZARDOZ
%%
#include <cstdlib>
#include "parse.hh"
int yylex (void) { return 0; }
-void yyerror (const char *s) { return; }
+void yyerror (const char *s) {}
%}
%token FOOBAR
%%
%{
#include <cstdlib>
int yylex (void) { return 0; }
-void yyerror (const char *s) { return; }
+void yyerror (const char *s) {}
%}
%%
x : 'x' {};
:; { : \
&& echo "%{" \
&& echo "int yylex () { return 0; }" \
- && echo "void yyerror (char *s) {}" \
+ && echo "void yyerror (const char *s) {}" \
&& echo "%}" \
&& echo "%%" \
&& echo "maude : 'm' 'a' 'u' 'd' 'e' {}"; \
cat > parse.y << 'END'
%{
int yylex () {return 0;}
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
maude : 'm' 'a' 'u' 'd' 'e' {};
cat > foo/parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
cat > parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
cat > ../parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
fubar : 'f' 'o' 'o' 'b' 'a' 'r' {};
cat > ../parse.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) {}
+void yyerror (const char *s) {}
%}
%%
maude : 'm' 'a' 'u' 'd' 'e' {};
cat > foo.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
int main () { return 0; }
%}
%%
cat > foo.y << 'END'
%{
int yylex () { return 0; }
-void yyerror (char *s) { return; }
+void yyerror (const char *s) {}
int main () { return 0; }
%}
%%