* lib/autoconf/c.m4 (AC_C_VARARRAYS): Define __STDC_NO_VLA__ if
VLAs are not supported, as this is what C11 does. The old macro
HAVE_C_VARARRAYS is still defined if they are supported, but is
now obsolescent. Also, check for VLA bug in GCC 3.4.3.
* doc/autoconf.texi (C Compiler), NEWS: Document the above.
* doc/autoconf.texi: Specify @documentencoding UTF-8. Don't abuse
'`' to mean open quote, unless Texinfo already interprets it that
way. Be more careful about hyphen versus minus versus endash
versus emdash.
Dimitrios Apostolou reported getting a shell syntax error for
this construct in his configure.ac:
AM_CONDITIONAL([HAVE_LIBXML2],
[test "x$with_libxml2" != xno &&
test "x$ac_cv_lib_xml2_xmlFirstElementChild" = xyes]
)
He analyzed it to a root cause: his trailing newline, coupled
with an 'if $2; then' construct in the macro body, resulted in
configure containing:
if test ... xyes
; then
where the semicolon is a syntax error in shell; and proposed
a patch to automake to fix his use case.
While that macro is not under our control, it does highlight
the fact that the shell can use either ; or newline to
terminate a conditional prior to the next keyword in a compound
statement. If we use newline, we gain two benefits - the
configure file is slightly smaller (more lines, but fewer
bytes), and any user that doesn't realize that unquoted
trailing newlines in a macro argument are still significant
can still generate valid shell code when their argument is
used in a shell compound statement.
* lib/m4sugar/m4sh.m4 (AS_IF, _AS_IF, _AS_CLEAN_DIR): Prefer
newline over semicolon to end user-supplied conditionals.
* lib/autoconf/general.m4 (AC_CONFIG_AUX_DIRS): Likewise.
* lib/autoconf/libs.m4 (AC_SEARCH_LIBS): Likewise.
* lib/autoconf/programs.m4 (_AC_PATH_PROGS_FEATURE_CHECK):
Likewise.
* tests/m4sh.at (AS_IF and AS_CASE): Test it.
Signed-off-by: Eric Blake <eblake@redhat.com>
Changes:
configure: error: invalid feature name: debug
to
configure: error: invalid feature name: `debug '
to make it obvious if trailing space is the reason why a feature
name was rejected; similar to existing error messages elsewhere
about invalid shell variable names.
* lib/autoconf/general.m4 (_AC_INIT_PARSE_ENABLE2): Add quotes.
Reported by Noel Grandin.
Signed-off-by: Eric Blake <eblake@redhat.com>
This patch changes "main ()" to "main (void)" for C/C++.
See: http://lists.gnu.org/archive/html/bug-autoconf/2014-01/msg00005.html
On my machine, before this patch, 3 tests were failing:
38: tools.at:1329 autom4te cache locking
218: autotest.at:1893 C unit tests
ac_config_testdir at_tested autotest
219: autotest.at:1948 C unit tests (EXEEXT)
ac_config_testdir at_tested autotest
With this patch, 2 tests were failing:
218: autotest.at:1893 C unit tests
ac_config_testdir at_tested autotest
219: autotest.at:1948 C unit tests (EXEEXT)
ac_config_testdir at_tested autotest
(I suspect that 38 is unrelated.)
Signed-off-by: Vincent Lefevre <vincent@vinc17.net>
Copyright-paperwork-exempt: Yes
The autoconf manual doesn't mention any examples of actually
using m4_pattern_forbid. Yet this is the perfect macro for
avoiding the all-too-common failure mode of configure dying with:
checking if libxml2 is present... ./configure: line 11586: syntax
error
near unexpected token `LIBXML2,'
./configure: line 11586: `PKG_CHECK_MODULES(LIBXML2, libxml-2.0>=
2.6.19,'
for developers that forgot to install pkg-config. While we don't
necessarily advertise the use of PKG_CHECK_MODULES, it is a
common enough situation that the manual should make it easier to
help developers learn about missing third-party macros.
Based on a mailing list report by Daniel Pocock:
http://lists.gnu.org/archive/html/autoconf/2014-01/msg00030.html
* doc/autoconf.texi (Forbidden Patterns): Add examples.
Signed-off-by: Eric Blake <eblake@redhat.com>
Test 236 "configure directories" failed for me on 64-bit Fedora 20;
it boiled down to the system's config.site causing libdir to
default to /usr/lib64 instead of the autoconf default of /usr/lib.
* tests/base.at (configure directories): Neutralize any preinstalled
config.site from the system.
Signed-off-by: Eric Blake <eblake@redhat.com>
Fix syntax check warnings that are unrelated to the new copyright
year.
* lib/local.mk (lib/autoscan/autoscan.list): Reduce indent, to
avoid mix of tab and 8 spaces.
* bin/local.mk (bin/autoconf.in): Likewise.
* lib/autoconf/c.m4 (_AC_CXX_CXX98_TEST_BODY): Use consistent case
in message.
Signed-off-by: Eric Blake <eblake@redhat.com>
Done via 'make update-copyright', since all files are effectively
modified and distributed this year via public version control.
* all files: Update copyright year.
* lib/autoconf/functions.m4 (AC_FUNC_CHOWN): No need to check for unistd.h.
(_AC_LIBOBJ_FNMATCH): Use AC_CHECK_DECLS_ONCE and AC_CHECK_FUNCS_ONCE.
(_AC_LIBOBJ_GETLOADAVG): Use AC_CHECK_FUNCS_ONCE for setlocale.
(AC_FUNC_MMAP): Use AC_CHECK_FUNCS_ONCE for getpagesize.
(AC_FUNC_SELECT_ARGTYPES): Use AC_CHECK_HEADERS_ONCE for sys/select.h and
sys/socket.h.
(AC_FUNC_STRERROR_R): Use AC_CHECK_DECLS_ONCE + AC_CHECK_FUNCS_ONCE for
strerror_r.
(AC_FUNC_UTIME_NULL): Use AC_CHECK_HEADERS_ONCE for utime.h.
(AC_FUNC_FORK): Use AC_CHECK_HEADERS_ONCE and AC_CHECK_FUNCS_ONCE.
(AC_FUNC_VPRINTF): Use AC_CHECK_FUNCS_ONCE for vprintf (but not _doprnt).
* lib/autoconf/headers.m4 (AC_HEADER_TIME, AC_MEMORY_H): Use
AC_CHECK_HEADERS_ONCE.
* lib/autoconf/headers.m4 (AC_CHECK_HEADERS_ONCE): Divide into a public
macro that AC_REQUIREs _AC_INCLUDES_DEFAULT_REQUIREMENTS, and ...
(_AC_CHECK_HEADERS_ONCE): ... a private macro, that doesn't.
(_AC_HEADERS_EXPANSION): Use $ac_includes_default, not
AC_INCLUDES_DEFAULT.
(_AC_INCLUDES_DEFAULT_REQUIREMENTS): Use AC_CHECK_HEADERS_ONCE.
* lib/autoconf/headers.m4 (_AC_INCLUDES_DEFAULT_REQUIREMENTS):
Include stddef.h, stdlib.h, and string.h unconditionally.
Don't include memory.h at all.
Don't use AC_HEADER_STDC.
Don't check for stddef.h, stdlib.h, string.h, or memory.h.
For compatibility, unconditionally define STDC_HEADERS,
HAVE_STDLIB_H, and HAVE_STRING_H.
(AN_HEADER list): Remove C89 headers, and memory.h from list.
(AC_HEADER_STDC, AC_UNISTD_H): AU_DEFUN to trigger
_AC_INCLUDES_DEFAULT_REQUIREMENTS if it hasn't already happened,
and do nothing else.
(AC_HEADER_TIME): AU_DEFUN, and define TIME_WITH_SYS_TIME unconditionally
as long as sys/time.h is present.
(AC_USG, AC_MEMORY_H): Assume existence of string.h.
* lib/autoconf/functions.m4 (_AC_FUNC_MALLOC_IF, _AC_FUNC_REALLOC_IF):
Don't use AC_HEADER_STDC. Assume stdlib.h exists.
(AC_FUNC_MKTIME): Don't use AC_HEADER_TIME. Assume time.h exists.
(AC_FUNC_ALLOCA): Assume stdlib.h exists.
(_AC_LIBOBJ_FNMATCH): Assume wchar.h and wctype.h exist.
(_AC_LIBOBJ_GETLOADAVG): Assume locale.h exists.
(AC_FUNC_MMAP): Assume stdlib.h exists.
* tests/tools.at: Use AC_WORDS_BIGENDIAN instead of AC_STDC_HEADERS in
autoupdate test.
* NEWS, doc/autoconf.texi: Document changes. Remove obsolete advice.
* lib/autoconf/headers.m4 (AC_CHECK_HEADER): Use _AC_CHECK_HEADER_COMPILE
by default. Continue to use _AC_CHECK_HEADER_PREPROC if fourth arg is '-'.
(_AC_CHECK_HEADER_PREPROC): Issue a deprecation warning.
(_AC_CHECK_HEADER_MONGREL, _AC_CHECK_HEADER_MONGREL_BODY): Remove.
* tests/c.at, tests/semantics.at: Update uses of AC_CHECK_HEADER(S).
* doc/autoconf.texi, NEWS: Document change.
http://lwn.net/Articles/436012/ documents that many distros
are now preferring to use /run rather than /var/run for
storage of pid files and other per-process temporary files
that must not be cleaned out during arbitrary TMPDIR sweeps.
As such, the GNU Coding Standards were recently changed to
recommend a new configure option to make it easy to choose
this directory at configure time. This patch adds support
for the option to all configure scripts built by autoconf.
* general.m4 (_AC_INIT_PARSE_ARGS): Add new directory option.
(_AC_INIT_HELP): Document it.
* doc/autoconf.texi (Installation Directory Variables): Document
new option.
(Site Defaults): Mention typical use within a distro.
* NEWS: Mention the addition.
Signed-off-by: Eric Blake <eblake@redhat.com>
Jonathan Lebon reported an issue to me off-list about a regression
in libvirt's configure script, which I traced to a patch that
rearranged code that was checking $with_library compared to the
AC_ARG_WITH that actually set $with_library [1]. As the whole point
of the libvirt patch was to refactor code to make maintenance
easier by hiding the AC_ARG_WITH in a helper macro for a net
reduction in lines, it makes sense to actually document how to
check what value a variable has prior to the AC_ARG_WITH usage.
Alas, although the functionality for this has been present in
autoconf for ages, the documentation has been lacking.
[1] libvirt.org/git/?p=libvirt.git;a=commitdiff;h=654c709
* doc/autoconf.texi (Diversion support) <m4_divert_text>: Add
anchor.
(External Software) <AC_ARG_WITH>: Demonstrate how to use DEFAULTS
diversion, for earlier defaults.
(Package Options) <AC_ARG_ENABLE>: Likewise.
* THANKS: Add Jonathan Lebon.
Signed-off-by: Eric Blake <eblake@redhat.com>
* doc/autoconf.texi (Function Portability): Use plain 'static',
not 'static inline', in example. These days, 'static' is enough;
optimizing compilers can figure out the 'inline' on their own.
This reverts commit ce48964f. The extra code added by that commit was
planned to be used by future version of Automake, but the implementation
and future directions there have in the meantime be changed in a way
that makes the extra code in Autoconf superfluous. Just get rid of it.
* lib/autoconf/c.m4 (AC_PROG_CC): Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* build-aux/config.guess: This file.
* lib/Autom4te/Channels.pm: And this one.
* maint.mk: And this one.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* .gitignore: Here.
* Makefile.am (check-coverage-run): Use $(MKDIR_P) rather than
$(mkinstalldirs).
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* Makefile.am (SUBDIRS): Remove (its last component 'man' has just
been removed).
(SUFFIXES): New, defined to empty, to be updated later by included
files.
($(srcdir)/man/local.mk): Include this.
* configure.ac (AC_CONFIG_FILES): Drop 'man/Makefile'.
* lib/freeze.mk (SUFFIXES): Extend with '+=' rather than defining
with '='.
* man/Makefile.am: Rename ...
* man/local.mk: ... like this, and adjust throughout.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* Makefile.am (SUBDIRS): Drop 'tests'. Adjust comments.
(DISTCLEANFILES, MAINTAINERCLEANFILES): Define to empty, to be
updated later.
(MAINTAINERCLEANFILES): Adjust later definition to use '+='
rather than '='.
($(srcdir)/tests/local.mk): Include this.
* configure.ac (AC_CONFIG_FILES): Drop 'tests/Makefile'.
* lib/freeze.mk ($(AUTOM4TE_CFG)): Drop now-redundant remake rule.
($(build_libdir)/m4sugar/version.m4): Likewise.
* tests/Makefile.am: Rename ...
* tests/local.mk: ... like this, and adjust (quite heavily).
* tests/mktests.sh: Adjust to generate output files and temporary
files in the tests subdirectory rather than in the current
directory.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* Makefile.am (ETAGS_ARGS): Define to empty, to be updated later.
* bin/local.mk (ETAGS_ARGS): Append to it, rather than re-defining it.
* lib/local.mk (ETAGS_ARGS): Likewise. Also, do not bother appending
"--lang=perl" once again, as that is already done in 'bin/local.mk'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* Makefile.am (SUBDIRS): Drop 'lib'.
(edit): New, shared among the recipes in 'lib/local.mk' and
'bin/local.mk'.
(CLEANFILES): New, will be updated later in included files.
($(srcdir)/lib/local.mk): Include it.
($(srcdir)/lib/freeze.mk): Likewise.
* lib/Makefile.am: Rename ...
* lib/local.mk: .. like this, with several adjustments. In
particular ...
(edit): Drop this definition, subsumed by the one in the
top-level Makefile.am.
* bin/local.mk (edit): Drop definition, that is already present
in the top-level Makefile.am now.
($(srcdir)/lib/freeze.mk): Drop inclusion; that is already done
in the top-level Makefile.am now.
* doc/local.mk (CLEANFILES): Adjust: append to it, do not define
it.
* lib/freeze.mk ($(AUTOM4TE_CFG)): Adjust recipe.
* configure.ac (AC_CONFIG_FILES): Drop 'lib/Makefile'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Rather than reading it dynamically from the ChangeLog -- that,
remember, is only a dummy in a Git checkout! To avoid risking
the definition to get out-of-sync, let's enhance the maintainer
target 'update-copyright' to update it automatically (the same
way it's done in the Automake build system).
* configure.ac (RELEASE_YEAR): New AC_SUBST'd variable.
* cfg.mk (update-release-year): New maintainer-specific target
to automatically update the value of that variable.
(update-copyright): Depend on the new target.
* bin/local.mk (RELEASE_YEAR): Drop definition.
(edit): Simplify quoting of $(RELEASE_YEAR).
* lib/Makefile.am (RELEASE_YEAR): Drop definition.
(m4sugar/version.m4): Simplify quoting of $(RELEASE_YEAR).
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* lib/m4sugar/Makefile.am: Delete, its contents merged ...
* lib/Makefile.am: ... in here, with proper adjustments.
(SUBDIRS): Drop 'lib/m4sugar'.
Other related adjustments and re-organizations.
* configure.ac (AC_CONFIG_FILES): Drop 'lib/m4sugar/Makefile'.
* lib/freeze.mk ($(build_libdir)/m4sugar/version.m4): Adjust
recipe.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* lib/autotest/Makefile.am: Delete, its contents merged ...
* lib/Makefile.am: ... in here, with proper adjustments.
(SUBDIRS): Drop 'autotest'.
Other minor related modifications.
* configure.ac (AC_CONFIG_FILES): Drop 'lib/autotest/Makefile'.
* lib/freeze.mk (MY_AUTOM4TE): Small required adjustments.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* Makefile.am (MOSTLYCLEANFILES): New, to be extended later by
included files.
($(srcdir)/doc/local.mk): New include.
(SUBDIRS): Drop 'bin'. Adjust comments.
* bin/Makefile.am: Rename ...
* bin/local.mk: ... like this, and adjust.
* configure.ac (AC_CONFIG_FILES): Drop 'bin/Makefile'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* .gitignore: Adjust.
* Makefile.am ($(srcdir)/doc/local.mk): New include.
(SUBDIRS): Drop 'doc'.
(AM_MAKEINFOFLAGS): Rename ...
(custom_MAKEINFOFLAGS): ... like this, to avoid conflicting with
the AM_MAKEINFOFLAGS defined in the included 'doc/local.mk'
($(srcdir)/INSTALL): Adjust recipe.
* doc/Makefile.am: Rename ...
* doc/local.mk: ... like this, and adjust.
* configure.ac (AC_CONFIG_FILES): Drop 'doc/Makefile'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
It is automatically distributed by Automake, being included by
other Makefile.am files.
* lib/Makefile.am (EXTRA_DIST): Drop 'freeze.mk'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
I forgot one of the fixes Mr. Nakada reported for the 2013-03-08 fix.
* lib/autoconf/general.m4 (AC_EGREP_CPP):
Use rm -rf, not just rm -f, when removing conftest*.
When invoked with -y/--yacc, Bison warns when its extensions over
POSIX Yacc are used. Yet many packages requiring GNU Bison use
Autoconf/Automake's Yacc support, which passes -y to Bison. It
turns out that passing '-o y.tab.c' has exactly the desired
effect: generating not only y.tab.c but also y.tab.h with -d and
y.output with -v. See:
http://lists.gnu.org/archive/html/bison-patches/2013-02/msg00100.html
* lib/autoconf/programs.m4 (AC_PROG_YACC): Use bison -o y.tab.c.
* NEWS, doc/autoconf.texi: Document this change.