This file lists the major changes and differences between mainstream Automake and Automake-NG. Be aware that there is likely a plethora of other minor differences and incompatibilities *not* listed here. Automatic dependency tracking support ===================================== * The generated Makefile.in files use "-include", not "include", to read the '.Po' files containing automatically computed dependency information. * We unconditionally assume that the "include" and "-include" directives can be used in the generated Makefiles. Accordingly, the internal m4 macro 'AM_MAKE_INCLUDE' and AC_SUBST'd variables 'am__include' and 'am__quote' have been removed. * The makefile fragments files containing automatically computed dependency information are created at make runtime by Makefile recipes, not at configure time by config.status. Accordingly, the special config.status argument 'depfiles' is not supported anymore. Silent rules ============ * Support for silent rules is now always active in Makefiles generated by Automake-NG; so, although the verbose output is still the default, the user can now always use "./configure --enable-silent-rules" or "make V=0" to enable quieter output in the package he's building. * The silent-rules support unconditionally assumes that nested variables expansion are supported. Accordingly, the AC_SUBST'd variables '@AM_V@' and'@AM_DEFAULT_V@' have been removed, so that instead of using something like: pkg_verbose = $(pkg_verbose_@AM_V@) pkg_verbose_ = $(pkg_verbose_@AM_DEFAULT_V@) you should simply use: pkg_verbose = $(pkg_verbose_$(V)) pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY)) Warnings and diagnostic ======================= * Automake does not warn anymore about: - non-POSIX variable names, like "$(dash-separated)" or "$(stem/base)"; - nested variable expansions, like "$(foo$(V))"; - variable definitions with indirections, like "var$(i) = value"; - calls to make functions, whether built-in ones like "$(wildcard *.c)" or user-defined ones like "$(call my-func, arg1, arg2)". - pattern rules in GNU make style ("%.o: %.c"). - variable definitions with ":=", as in "foo := $(immediate-evaluation)". - some issues specific to BSD make. * The 'portability-recursive' warning category is obsolete, and has been removed. Parallel testsuite harness ========================== * Automake does not automatically generate the definition of 'LOG_COMPILE' variables anymore. These have always been meant for internal use only anyway. * The $(TESTS) and $(XFAIL_TESTS) variables are not anymore rewritten for $(EXEEXT) appending. The use of compiled programs in $(TESTS) still works as before though, even on systems where $(EXEEXT) is non-empty, thanks to a careful use of pattern rules. * The new implementation of the parallel-tests harness tries to defer as much as possible processing on the $(TESTS) variable at make, rather than doing it at automake time. This as some positive effects (FIXME: describe and quantify them), but also entails a minor annoyance. When automake runs, it cannot know anymore whether $(TESTS) contains or not any entry with no recognized test suffix; as a consequence, it always need the '$(LOG_DRIVER)' variable to be defined. If it's not, automake will define it to a proper invocation of the 'test-driver' auxiliary script, and require that script to be present in the config-aux directory (or bring it in if "--add-missing" is in use). If you know you package won't make use of suffix-less tests (thus, in particular, no use of compiled programs in $(TESTS)), you can avoid requiring the 'test-driver' script by adding this line to your configure.ac: AC_SUBST([LOG_DRIVER], ['unused but required by automake']) Miscellaneous ============= * Since GNU make is smart enough to correctly pass the values of macros redefined on the command line to sub-make invocations, the "special" variable $(AM_MAKEFLAGS) has been removed, and its content is no more passed to recursive make invocations. ----- Copyright (C) 2012 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 the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see .