automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

automake 1.7d feedback


From: Bruno Haible
Subject: automake 1.7d feedback
Date: Mon, 24 Nov 2003 12:46:06 +0100
User-agent: KMail/1.5

Hi Alexandre et al.,

automake-1.7d is fine for me: I cannot find anything wrong with it.

However, there is an important change in behaviour that IMO should be
mentioned in the NEWS file (or maybe even undone): While it was possible
to add dependencies to automake targets in automake-1.7.x, such dependencies
are now interpreted as *overriding* the automake definition. In usual
Makefiles, when I write

   target: dependencies
        RULES

then it overrides the original target definition if and only if the
RULES section is nonempty. This is a pitfall for users: While the
syntax of Makefile.am is the same as the syntax of Makefiles,
writing a line like

   target: dependencies

doesn't mean the same thing.

To reproduce:

$ mkdir testdir
$ cd testdir
$ cat > configure.ac <<EOF
> AC_INIT
> AM_INIT_AUTOMAKE(gettext-runtime, 0.12.2)
> AC_CONFIG_FILES([Makefile])
> AC_OUTPUT
> EOF
$ cat > Makefile.am <<\EOF
bin_SCRIPTS = foo

install-exec-am: install-exec-clean
install-exec-clean:
        rm -f $(bindir)/foo
EOF
$ touch foo NEWS README AUTHORS ChangeLog

With automake-1.7.8:

$ aclocal
$ autoconf
$ automake -a -c Makefile
$ ./configure --prefix=/tmp/prefix
$ make
$ make -n install
make  install-exec-am install-data-am
make[1]: Entering directory `/tmp/testdir'
:
/bin/sh ./../mkinstalldirs /tmp/prefix/bin
list='foo'; for p in $list; do \
  if test -f "$p"; then d=; else d="./"; fi; \
  if test -f $d$p; then \
    f=`echo "$p" | sed 's|^.*/||;s,x,x,'`; \
    echo " /packages/gnu/bin/install -c $d$p /tmp/prefix/bin/$f"; \
    /packages/gnu/bin/install -c $d$p /tmp/prefix/bin/$f; \
  else :; fi; \
done
rm -f /tmp/prefix/bin/foo
make[1]: Für das Ziel »install-data-am« ist nichts zu tun.
make[1]: Leaving directory `/tmp/testdir'

With automake-1.7d:

$ aclocal
$ autoconf
$ automake -a -c Makefile
$ ./configure --prefix=/tmp/prefix
$ make
$ make -n install
make  install-exec-am install-data-am
make[1]: Entering directory `/tmp/testdir'
rm -f /tmp/prefix/bin/foo
make[1]: Für das Ziel »install-data-am« ist nichts zu tun.
make[1]: Leaving directory `/tmp/testdir'

Bruno





reply via email to

[Prev in Thread] Current Thread [Next in Thread]