This is the mail archive of the
automake@gnu.org
mailing list for the automake project.
Re: automake -vs- huge projects
>>> "Thomas" == Thomas Fitzsimmons <fitzsim@redhat.com> writes:
[...]
Thomas> One specifc problem I noticed is that automake is
Thomas> generating three explicit rules for each target. For
Thomas> example, for one .java file, these rules are generated:
[...]
Thomas> I would only expect rules for .lo files, since we are
Thomas> generating libtool libraries. Getting rid of the other
Thomas> targets would cut out *a lot* of the bulk.
Indeed!
I think we can construct cases that will break if any of the .o
or .lo rules are left out, for instance
bin_PROGRAMS = foo
foo_SOURCES = a.c b.c
foo_LDADD = @MOREFOO@
lib_LTLIBRARIES = libbar.la
libbar_la_SOURCES = 1.c 2.c
libbar_la_LIBADD = @MOREBAR@
now think about @MOREFOO@ being substituted into 1.o or 2.o, and
@MOREBAR@ being replaced by a.la or b.la... However it seems
fair to require that the above snippet be rewritten as
bin_PROGRAMS = foo
foo_SOURCES = a.c b.c
foo_LDADD = @MOREFOO@
EXTRA_foo_SOURCES = 1.c 2.c
lib_LTLIBRARIES = libbar.la
libbar_la_SOURCES = 1.c 2.c
libbar_la_LDADD = @MOREBAR@
EXTRA_libbar_la_SOURCES = a.c b.c
like the manual says (oh well, I hope it says so). And in this
second example it is clear which rules Automake needs to output.
Furthermore, generally it does not work to compile both the .o
and .lo objects of a source file (in the last example Automake
is expected to warn that these files are being built both with
and without Libtool), so it sounds safe to remove the rules
which are not used.
--
Alexandre Duret-Lutz