* Ryan McDougall wrote on Fri, Sep 22, 2006 at 04:10:40AM CEST:
> 
> The problem with this is that with this method that I have to manually
> specify the dependencies, right?
> 
> A: foo
>         cd src/A && $(MAKE) $(AM_MAKEFLAGS) libA.la
> .PHONY: A
> 
> foo:
>       cd src/foo && $(MAKE) $(AM_MAKEFLAGS) libfoo.la
> .PHONY: foo

Yes, that would be a bit ugly (as you'd be specifying the same
information in more than one place).  You could put the dependency in
the makefile in src/A though:
  ../foo/libfoo.la:
          cd ../foo && $(MAKE) $(AM_MAKEFLAGS) libfoo.la
  .PHONY: ../foo/libfoo.la

(The phony qualifier is because the rule does not list the real
dependencies of libfoo.la).

Mind you though that this approach will cause more `make' instances to
be invoked than necessary; depending on the size of the foo/Makefile
this may be slowing down the build a bit.

Generally, there are always trade-offs between recursive and
nonrecursive make setups.  Both have their merits and their backdraws,
there's Peter Miller's classic paper "Recursive Make Considered Harmful"
and also some arguments for the other side in this thread
http://thread.gmane.org/gmane.comp.sysutils.automake.general/7250
(some of the arguments there are specific to Automake-generated portable
makefiles, as opposed to, say, hand-written makefiles for GNU make).

Cheers,
Ralf


Reply via email to