automake
[Top][All Lists]
Advanced

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

RE: Trying to improve our dependency tracking


From: James Willenbring
Subject: RE: Trying to improve our dependency tracking
Date: Fri, 16 May 2008 09:35:35 -0500

Ralf,

Thanks for your reply.  Based on your explanation, I think what we are
trying to do is probably not possible.  In your example below, 

if NEED_LIBA
libb_la_LIBADD += ../liba/liba.la
endif

We would want to replace ../liba/liba.la with another variable.  We have
multiple layers of dependencies and we only want each package to have to
know about its direct dependencies.  That way if liba.la's dependencies
change, libb doesn't have to care about it.

To show you exactly what we are trying, I have attached 4 files.

1) configure.ac (note that Makefile.export.teuchos.in is under the control
of a sibling configure process)
2) Makefile.include.am (could be a Makefile.am, not sure why it isn't - this
shows us attempting to use the EPETRA_DEPS value)
3) Makefile.export.epetra.in (sets the EPETRA_DEPS value conditional on
whether or not Teuchos is built -> note TEUCHOS_DEPS is unconditionally
listed in EPETRA_DEPS, but Makefile.export.teuchos.in is only conditionally
included in Makefile.export.epetra.in)
4) Makefile.export.teuchos.in (sets the TEUCHOS_DEPS value that is used in
the value of EPETRA_DEPS)

If I manually move the include directives in the generated Makefile's, this
works for me, but otherwise the *_DEPS values are resolved before the
inclusions are processed, and are therefore empty.

Thanks

Jim

-----Original Message-----
From: Ralf Wildenhues [mailto:address@hidden 
Sent: Monday, May 05, 2008 10:25 PM
To: Willenbring, James M
Cc: address@hidden
Subject: Re: Trying to improve our dependency tracking

Hello James,

* James Willenbring wrote on Thu, May 01, 2008 at 10:51:11PM CEST:
> When I add
>
> myexe_DEPENDENCIES = $(PACKAGEA_DEPENDENCIES)
>
> $(PACKAGEA_DEPENDENCIES) is not resolved before dependencies are checked.
> Despite the fact that I put the include directive at the top of the
> Makefile.am, it shows up at the bottom of the Makefile.  If I manually
move
> the include directive higher in the makefile (but below the definition of
> top_builddir), everything works as I would hope.

Can you show an example Makefile.am plus configure.ac that exposes this
problem?

> Does anyone have any suggestions for fixing this problem or for a
different
> approach I should take for dependency tracking?

In general, I try to let automake compute dependencies as much as
possible.  For example, it cannot "see" the dependency with this:

-- snip libb/configure.ac --
AC_SUBST([LIBA], [../liba/liba.la])

-- snip libb/Makefile.am --
libb_la_LIBADD = $(LIBA)
# next line needed because automake cannot see through substitution
libb_la_DEPENDENCIES = $(LIBA)


OTOH, it *can* compute the dependency with conditionals:

-- snip libb/configure.ac --
AM_CONDITIONAL([NEED_LIBA], [test -n "$need_liba"])

-- snip libb/Makefile.am --
if NEED_LIBA
libb_la_LIBADD += ../liba/liba.la
endif
# No *_DEPENDENCIES needed in this example.


Hope that helps.

Cheers,
Ralf

Attachment: Makefile.export.teuchos.in
Description: Binary data

Attachment: configure.ac
Description: Binary data

Attachment: Makefile.export.epetra.in
Description: Binary data

Attachment: Makefile.include.am
Description: Binary data


reply via email to

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