[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: AX_ADD_AM_MACRO creates circular dependencies
From: |
Allan Caffee |
Subject: |
Re: AX_ADD_AM_MACRO creates circular dependencies |
Date: |
Fri, 13 Feb 2009 10:43:55 -0500 |
On Thu, 12 Feb 2009, Ralf Wildenhues wrote:
> > I've noticed that a handful of the packages in the Autoconf archives
> > use the macros AX_ADD_AM_MACRO and AX_ADD_RECURSIVE_AM_MACRO. These
> > macros add targets and variable assignments to a generated file
> > $(top_srcdir)/aminclude.am. Users are then intended to add a line
> > like
> >
> > include $(top_srcdir)/aminclude.am
> >
> > to whichever Makefile.am needs the provided functionality. The
> > problem with this is that Makefile.in now depends on aminclude.am.
> > And aminclude.am is created by configure. And in turn configure
> > cannot be run (successfully) without Makefile.in. So in order to even
> > get a useable build system the developer has to touch aminclude.am.
>
> Hmm, ok.
Actually I've done a little more research here and it turns out that my initial
understanding was flawed, which brings me to one of your later points.
> In the other case, with ordinary makefile stuff only, I would include
> them in a way that is not visible to automake.
[...]
> In fact, reading the documentation at
> <http://autoconf-archive.cryp.to/ax_am_macros.html>,
> it recommends a method that uses such a substituted variable.
Right you are, the user is instead expected to place @INC_AMINCLUDE@ in the
Makefile.am. As you suggested this hides the inclusion from Automake.
AX_ADD_AM_MACRO does not create Automake rules as the name would suggest but
rather it creates _Make_ rules.
Of course relying on includes like this in turn makes the build system less
portible (as you mentioned). Ideally the macro archive would provide a way to
produce these rules in a way that they would be available for Automake to work
its magic. I'm working on a patch series that would allow macro developers
provide an Automake include-able file which will be available before Automake
is run. I'd be happy to CC this list if there is no objection.
<offtopic>
> Automake internally has a couple of substed variables for this, too.
> The respective statement looks like this:
> @am__include@ @address@hidden@am__quote@
Yes that's how Automake manages to provide dependencies as a side effect of
compilation, right? I remember abusing this at one point to get the Autotools
to make use of some automatic dependencies generated by a script of mine. :)
</offtopic>
Allan