* doc/automake.texi (Complete, Extending aclocal, Public macros)
[platform/upstream/automake.git] / NEWS
diff --git a/NEWS b/NEWS
index a2c828f..ae0120c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,422 @@
-New in 1.7a:
+New in 1.9a:
+
+  - Autoconf 2.59a is required.
+
+  - Perl 5.6 or greater is required.
+
+  - The new AC_REQUIRE_AUX_FILE Autoconf macro is supported.
+
+  - The rebuild rules for distributed Yacc and Lex output will avoid
+    overwriting existing files if AM_MAINTAINER_MODE and maintainer-mode
+    is not enabled.
+
+  - Preprocessed assembler (*.S) compilation now honnors CPPFLAGS,
+    AM_CPPFLAGS and per-target _CPPFLAGS, and supports dependency
+    tracking, unlike non-preprocessed assembler (*.s).
+
+  - Libtool generic flags (those that go before the --mode=MODE option)
+    can be specified using AM_LIBTOOLFLAGS and target_LIBTOOLFLAGS.
+
+  - aclocal now also supports -Wmumble and -Wno-mumble options.
+
+  - aclocal supports an --install option, that will cause system-wide
+    third-party macros to be installed in the local directory
+    specified with the first -I flag.  This option also uses #serial
+    lines in M4 files to upgrade local macros.
+
+    The new aclocal options --dry-run and --diff help to review changes
+    before they are installed.
+
+  - Per-target flags are now correctly handled in link rules.
+
+    For instance maude_CFLAGS correctly overrides AM_CFLAGS; likewise
+    for maude_LDFLAGS and AM_LDFLAGS.  Previous versions bogusly
+    preferred AM_CFLAGS over maude_CFLAGS while linking, and they
+    used both AM_LDFLAGS and maude_LDFLAGS on the same link command.
+
+    The fix for compiler flags (i.e., using maude_CFLAGS instead of
+    AM_CFLAGS) should not hurt any package since that is how _CFLAGS
+    is expected to work (and actually works during compilation).
+
+    However using maude_LDFLAGS "instead of" AM_LDFLAGS rather than
+    "in addition to" breaks backward compatibility with older versions.
+    If your package used both variables, as in
+
+      AM_LDFLAGS = common flags
+      bin_PROGRAMS = a b c
+      a_LDFLAGS = more flags
+      ...
+
+    and assumed *_LDFLAGS would sum up, you should rewrite it as
+
+      AM_LDFLAGS = common flags
+      bin_PROGRAMS = a b c
+      a_LDFLAGS = $(AM_LDFLAGS) more flags
+      ...
+
+    This new behavior of *_LDFLAGS is more coherent with other
+    per-target variables, and the way *_LDFLAGS variables were
+    considered internally.
+
+  - New targets mandated by GNU Coding Standards:
+      install-dvi
+      install-html
+      install-ps
+      install-pdf
+    By default they will only install Texinfo manuals.
+    You can customize them with *-local variants:
+      install-dvi-local
+      install-html-local
+      install-ps-local
+      install-pdf-local
+
+  - The undocumented recursive target `uninstall-info' no longer exists.
+    (`uninstall' is in charge of removing all possible documentation
+    flavors, including optional formats such as dvi, ps, or info even
+    when `no-installinfo' is used.)
+
+  - Automake no longer complains if input files for AC_CONFIG_FILES
+    are specified using shell variables.
+
+  - clean, distribution, or rebuild rules are normally disabled for
+    inputs and outputs of AC_CONFIG_FILES, AC_CONFIG_HEADERS, and
+    AC_CONFIG_LINK specified using shell variable.  However if these
+    variables are used as ${VAR}, and AC_SUBSTed, then Automake will
+    be able to output rules anyway.
+    (See the Automake documentation for AC_CONFIG_FILES.)
+
+  - If `subdir-objects' is set, and AC_CONFIG_LIBOBJ_DIR is specified,
+    $(LIBOBJS), $(LTLIBOBJS), $(ALLOCA), and $(LTALLOCA) can be used
+    in different directories.
+
+  - $(EXEEXT) is automatically appended to filenames of TESTS and
+    that have been declared as programs in the same Makefile.
+    This is mostly useful when some check_PROGRAMS are listed in TESTS.
+
+\f
+New in 1.9:
+
+* Makefile.in bloat reduction:
+
+  - Inference rules are used to compile sources in subdirectories when
+    the `subdir-objects' option is used and no per-target flags are
+    used.  This should reduce the size of some projects a lot, because
+    Automake used to output an explicit rule for each such object in
+    the past.
+
+  - Automake no longer outputs three rules (.o, .obj, .lo) for each
+    object that must be built with explicit rules.  It just outputs
+    the rules required to build the kind of object considered: either
+    the two .o and .obj rules for usual objects, or the .lo rule for
+    libtool objects.
+
+* Change to Libtool support:
+
+  - Libtool tags are used with libtool versions that support them.
+    (I.e., with Libtool 1.5 or greater.)
+
+  - Automake is now able to handle setups where a libtool library is
+    conditionally installed in different directories, as in
+
+      if COND
+        lib_LTLIBRARIES = liba.la
+      else
+        pkglib_LTLIBRARIES = liba.la
+      endif
+      liba_la_SOURCES = ...
+
+* Changes to aclocal:
+
+  - aclocal now ensures that AC_DEFUNs and AU_DEFUNs it discovers are
+    really evaluated, before it decides to include them in aclocal.m4.
+    This solves nasty problems with conditional redefinitions of
+    Autoconf macros in /usr/share/aclocal/*.m4 files causing extraneous
+    *.m4 files to be included in any project using these macros.
+    (Calls to AC_PROG_EGREP causing libtool.m4 to be included is the
+    most famous instance of this bug.)
+
+  - Do not complain about missing conditionally AC_REQUIREd macros
+    that are not actually used.  In 1.8.x aclocal would correctly
+    determine which of these macros were really needed (and include
+    only these in the package); unfortunately it would also require
+    all of them to be present in order to run.  This created
+    situations were aclocal would not work on a tarball distributing
+    all the macros it uses.  For instance running aclocal on a project
+    containing only the subset of the Gettext macros in use by the
+    project did not work, because gettext conditionally requires other
+    macros.
+
+* Portability improvements:
+
+  - Tar format can be chosen with the new options tar-v7, tar-ustar, and
+    tar-pax.  The new option filename-length-max=99 helps diagnosing
+    filenames that are too long for tar-v7.  (PR/414)
+
+  - Variables aumented with `+=' are now automatically flattened (i.e.,
+    trailing backslashes removed) and then wrapped around 80 colummns
+    (adding trailing backslashes).  In previous versions, a long series
+    of
+      VAR += value1
+      VAR += value2
+      VAR += value3
+      ...
+    would result in a single-line definition of VAR that could possibly
+    exceed the maximum line length of some make implementations.
+
+    Non-augmented variables are still output as they are defined in
+    the Makefile.am.
+
+* Miscellaneous:
+
+  - Support Fortran 90/95 with the new "fc" and "ppfc" languages.
+    Works the same as the old Fortran 77 implementation; just replace
+    F77 with FC everywhere (exception: FFLAGS becomes FCFLAGS).
+    Requires a version of autoconf which provides AC_PROG_FC (>=2.59).
+
+  - Support for conditional _LISP.
+
+  - Support for conditional -hook and -local rules (PR/428).
+
+  - Diagnose AC_CONFIG_AUX_DIR calls following AM_INIT_AUTOMAKE. (PR/49)
+
+  - Automake will not write any Makefile.ins after the first error it
+    encounters.  The previous Makefile.ins (if any) will be left in
+    place.  (Warnings will not prevent output, but remember they can
+    be turned into errors with -Werror.)
+
+  - The restriction that SUBDIRS must contain direct children is gone.
+    Do not abuse.
+
+  - The manual tells more about SUBDIRS vs. DIST_SUBDIRS.
+    It also gives an example of nested packages using AC_CONFIG_SUBDIRS.
+\f
+Bugs fixed in 1.8.5:
+
+* Long standing bugs:
+
+  - Define DIST_SUBDIRS even when the `no-dist' or `cygnus' options are used
+    so that `make distclean' and `make maintainer-clean' can work.
+
+  - Define AR and ARFLAGS even when only EXTRA_LIBRARIES are defined.
+
+  - Fix many rules to please FreeBSD make, which runs commands with `sh -e'.
+
+  - Polish diagnostic when no input file is found.
+\f
+Bugs fixed in 1.8.4:
+
+* Long standing bugs:
+
+  - Fix AM_PATH_PYTHON to correctly display $PYTHON when it has been
+    overridden by the user.
+
+  - Honor PATH_SEPARATOR in various places of the Automake package, for
+    the sake of OS/2.
+
+  - Adjust dependency tracking mode detection to ICC 8.0's new output.
+    (PR/416)
+
+  - Fix install-sh so it can install the `mv' binary... using `mv'.
+
+  - Fix tru64 dependency tracking for libtool objects.
+
+  - Work around Exuberant Ctags when creating a TAGS files in a directory
+    without files to scan but with subdirectories to include.
+
+* Bugs introduced by 1.8:
+
+  - Fix an "internal error" when @LIBOBJS@ is used in a variable that is
+    not defined in the same conditions as the _LDADD that uses it.
+
+  - Do not warn when JAVAROOT is overridden, this is legitimate.
+\f
+Bugs fixed in 1.8.3:
+
+* Long standing bugs:
+
+  - Quote filenames in installation rules, in case $DESTDIR, $prefix,
+    or any of the other *dir variables contain a space.
+
+    Please note that Automake does not and cannot support spaces in
+    filenames that are involved during the build.  This change affects
+    only installation paths, so that `make install' does not bomb out
+    in packages configured with
+      ./configure --prefix '/c/Program Files'
+
+  - Fix the depfiles output so it works with GNU sed (<4.1) even when
+    POSIXLY_CORRECT is set.
+
+  - Do not AC_SUBST(LIBOBJS) in AM_WITH_REGEX.  This macro was unusable
+    since Autoconf 2.54, which defines LIBOBJS itself.
+
+  - Fix a potential (but unlikely) race condition in parallel elisp
+    builds.  (Introduced in 1.7.3.)
+
+  - Do not assume that users override _DEPENDENCIES in all conditions
+    where Automake will try to define them.
+
+  - Do not use `mkdir -p' in mkinstalldirs, unless this is GNU mkdir.
+    Solaris 8's `mkdir -p' is not thread-safe and can break parallel
+    builds.
+
+    This fix also affects the $(mkdir_p) variable defined since
+    Automake 1.8.  It will be set to `mkdir -p' only if mkdir is GNU
+    mkdir, and to `mkinstalldirs' or `install-sh -d' otherwise.
+
+  - Secure temporary directory creation in `make distcheck'. (PR/413)
+
+  - Do not generate two build rules for `parser.h' when the
+    parser appears in two different conditionals.
+
+  - Work around a Solaris 8 /bin/sh bug in the test for dependency
+    checking.  Usually ./configure will not pick this shell; so this
+    fix only helps cases where the shell is forced to /bin/sh.
+
+* Bugs introduced by 1.8:
+
+  - In some situations (hand-written `m4_include's), aclocal would
+    call the `File::Spec->rel2abs' method, which was only introduced
+    in Perl 5.6.  This new version reestablish support Perl 5.005.
+
+    It is likely that the next major Automake releases will require at
+    least Perl 5.6.  Consider upgrading your development environment
+    if you are still using the five-year-old Perl 5.005.
+
+  - Automake would sometimes fail to define rules for targets listed
+    in variables defined in multiple conditions.  For instance on
+      if C1
+       bin_PROGRAMS = a
+      else
+       bin_PROGRAMS = b
+      endif
+    it would define only the `a.$(OBJEXT): a.c' rule and omit the
+    `b.$(OBJEXT): b.c' rule.
+
+* New sections in manual:
+
+  - Third-Party Makefiles: how to interface third party Makefiles.
+  - Upgrading: upgrading packages to newer Automake versions.
+  - Multiple Outputs: handling tools that produce many outputs.
+\f
+Bug fixed in 1.8.2:
+
+* A (well known) portability bug slipped in the changes made to
+  install-sh in Automake 1.8.1.  The broken install-sh would refuse to
+  install anything on Tru64.
+
+* Fix install rules for conditionally built python files.  (This never
+  really worked.)
+\f
+Bug fixed in 1.8.1:
+
+* Bugs introduced by 1.8:
+
+  - Fix Config.pm import error with old Perl versions (at least
+    5.005_03).  One symptom is that aclocal could not find its macro
+    directory.
+
+  - Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+    created by `make install' are always world readable, even if the
+    installer happens to have an overly restrictive umask (e.g. 077).
+    This was a mistake and has been reverted.  There are at least two
+    reasons why we must not use `-m 0755':
+      - it causes special bits like SGID to be ignored,
+      - it may be too restrictive (some setups expect 775 directories).
+
+  - Fix aclocal to honor definitions located in files which have been
+    m4_included manually.  aclocal 1.8 had been updated to check
+    m4_included files for new requirements, but forgot that these
+    m4_included files can also provide new definitions.
+
+    Note that if you have such a setup, we recommend you get rid of
+    it.  In the past, there was a reason to m4_include files manually:
+    aclocal used to duplicate entire M4 files into aclocal.m4, even
+    files that were distributed.  Some packages were therefore
+    m4_including the distributed file directly, and playing some
+    tricks to ensure aclocal would not copy that file to aclocal.m4,
+    in order to limit the amount of duplication.  Since aclocal 1.8.x
+    will precisely output m4_includes for local M4 files, we recommend
+    that you clean up your setup, removing all manual m4_includes and
+    letting aclocal output them.
+
+  - Output detailed menus in the Info version if the Automake manual,
+    so that Emacs can locate the indexes.
+
+  - configure.ac and configure were listed twice in DIST_COMMON (an
+    internal variable where Automake lists configury files to
+    distribute).  This was harmless, but unaesthetic.
+
+  - Use `chmod a-w' instead of `chmod -w' as the latter honors umask.
+    This was an issue only in the Automake package itself, not in
+    its output.
+
+  - Automake assumed that all AC_CONFIG_LINKS arguments had the form
+    DEST:SRC.  This was wrong, as some packages do
+    AC_CONFIG_LINKS($computedlinks).  This version no longer abort in
+    that situation.
+
+  - Contrary to mkinstalldirs, $(mkdir_p) was expecting exactly one
+    argument.  This caused two kinds of failures:
+      - Rules installing data in a conditionally defined directory
+        failed when that directory was undefined.  In this case no
+        argument was supplied.
+      - `make installdirs' failed, because several directories were
+        passed to $(mkdir_p).  This was an issue only on platform
+        were $(mkdir_p) is implemented with `install-sh -d'.
+    $(mkdir_p) as been changed to accept 0 or more arguments, as
+    mkinstalldirs did.
+
+* Long-standing bugs:
+
+  - Fix an unexpected diagnostic occurring when users attempt
+    to override some internal variables that Automake appends to.
+
+  - aclocal now scans configure.ac for macro definitions (PR/319).
+
+  - Fix a portability issue with OSF1/Tru64 Make.  If a directory
+    distributes files which are outside itself (this usually occurs
+    when using AC_CONFIG_AUX_DIR([../dir]) to use auxiliary files
+    from a parent package), then `make distcheck' fails due to an
+    optimization performed by OSF1/Tru64 Make in its VPATH handling.
+    (tests/subpkg2.test failure)
+
+  - Fix another portability issue with Sun and OSF1/Tru64 Make.
+    In a VPATH-build configuration, `make install' would install
+    nobase_ files to wrong locations.
+
+  - Fix a Perl `uninitialized value' diagnostic occurring when
+    automake complains that a Texinfo file does not have a
+    @setfilename statement.
+
+  - Erase config.status.lineno during `make distclean'.  This file
+    can be created by config.status.  Automake already knew about
+    configure.lineno, but forgot config.status.lineno.
+
+  - Distribute all files, even those which are built and installed
+    conditionally.  This change affects files listed in conditionally
+    defined *_HEADERS and *_PYTHON variable (unless they are nodist_*)
+    as well as those listed in conditionally defined dist_*_DATA,
+    dist_*_JAVA, dist_*_LISP, and dist_*_SCRIPTS variables.
+
+  - Fix AM_PATH_LISPDIR to avoid \? in sed regular expressions; it
+    doesn't conform to POSIX.
+
+  - Normalize help strings for configure variables and options added
+    by Automake macros.
+
+* Anticipation:
+
+  - Check for python2.4 in AM_PATH_PYTHON.
+
+* Spurious failures in test suite:
+
+  - tests/libtool5.test, tests/ltcond.test, tests/ltcond2.test,
+    tests/ltconv.test: fix failures with CVS Libtool.
+  - tests/aclocal6.test: fix failure if autom4te.cache is disabled.
+  - tests/txinfo24.test, tests/txinfo25.test, tests/txinfo28.test:
+    fix failures with old Texinfo versions.
+\f
+New in 1.8:
 
 * Meta-News
 
@@ -10,6 +428,18 @@ New in 1.7a:
 
 * New features
 
+  - Default source file names in the absence of a _SOURCES declaration
+    are made by removing any target extension before appending `.c', so
+    to make the libtool module `foo.la' from `foo.c', you only need to
+    do this:
+
+       lib_LTLIBRARIES = foo.la
+       foo_la_LDFLAGS  = -module
+
+    For backward compatibility, foo_la.c will be used instead of
+    foo.c if this file exists or is the explicit target of a rule.
+    However -Wobsolete will warn about this deprecated naming.
+
   - AR's `cru' flags are now set in a global ARFLAGS variable instead
     of being hard-coded in each $(AR) invocation, so they can be
     substituted from configure.ac.  This has been requested by people
@@ -54,10 +484,10 @@ New in 1.7a:
   - For similar reasons, the rules to rebuild configure,
     config.status, and aclocal.m4 are now defined in all directories.
     Note that if you were using the CONFIG_STATUS_DEPENDENCIES and
-    CONFIGURE_DEPENDENCIES (undocumented) variables, you should better
-    define them in all directories.  This is easily done using an
-    AC_SUBST (make sure you prefix these dependencies with
-    $(abs_top_srcdir) since this variable will appear at different
+    CONFIGURE_DEPENDENCIES (formerly undocumented) variables, you
+    should better define them in all directories.  This is easily done
+    using an AC_SUBST (make sure you prefix these dependencies with
+    $(top_srcdir) since this variable will appear at different
     levels of the build tree).
 
   - aclocal will now use `m4_include' instead of copying local m4
@@ -123,7 +553,7 @@ New in 1.7a:
     installs it, and if you remove mkinstalldirs from your package,
     automake will define $(mkinstalldirs) as an alias for $(mkdir_p).
 
-    Gettext 1.12.1 still requires mkinstalldirs.  Fortunately
+    Gettext 0.12.1 still requires mkinstalldirs.  Fortunately
     gettextize and autopoint will install it when needed.  Automake
     will continue to define the $(mkinstalldirs) and to distribute
     mkinstalldirs when this script is in the source tree.
@@ -206,6 +636,41 @@ New in 1.7a:
     install it once for all in your source tree (and in your code
     management system).
 
+  - Fix ylwrap so that it does not overwrite header files that haven't
+    changed, as the inline rule already does.
+
+  - User-defined rules override automake-defined rules for the same
+    targets, even when rules do not have commands.  This is not new
+    (and was documented), however some of the automake-generated
+    rules have escaped this principle in former Automake versions.
+    Rules for the following targets are affected by this fix:
+
+       clean, clean-am, dist-all, distclean, distclean-am, dvi, dvi-am,
+       info, info-am, install-data-am, install-exec-am, install-info,
+       install-info-am, install-man, installcheck-am, maintainer-clean,
+       maintainer-clean-am, mostlyclean, mostlyclean-am, pdf, pdf-am,
+       ps, ps-am, uninstall-am, uninstall-info, uninstall-man
+
+    Practically it means that an attempt to supplement the dependencies
+    of some target, as in
+
+       clean: my-clean-rule
+
+    will now *silently override* the automake definition of the
+    rule for this target.  Running `automake -Woverride' will diagnose
+    all such overriding definitions.
+
+    It should be noted that almost all these targets support a *-local
+    variant that is meant to supplement the automake-defined rule
+    (See node `Extending' in the manual).  The above rule should
+    be rewritten as
+
+      clean-local: my-clean-rule
+
+    These *-local targets have been documented since at least
+    Automake 1.2, so you should not fear the change if you have
+    to support multiple automake versions.
+
 * Miscellaneous
 
   - The Automake manual is now distributed under the terms of the GNU FDL.
@@ -230,6 +695,10 @@ New in 1.7a:
     on the command line.  The old behavior, where these variables were
     defined empty in each Makefile, can be obtained by AC_SUBSTing or
     AC_ARG_VARing each variable from configure.ac.
+
+  - CONFIGURE_DEPENDENCIES and CONFIG_STATUS_DEPENDENCIES are now
+    documented.  (The is not a new feature, these variables have
+    been there since at least Automake 1.4.)
 \f
 Bugs fixed in 1.7.9:
 * Fix install-strip to work with nobase_ binaries.
@@ -690,8 +1159,8 @@ New in 0.20:
 
 -----
 
-Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+2004, 2005  Free Software Foundation, Inc.
 
 This file is part of GNU Automake.
 
@@ -707,5 +1176,5 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Automake; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.