Subject: subdir-objects breaks build which specifies sources relative to $(top_srcdir)
From: Diab Jerius <[email-masked]>
To: [email-masked]
Date: Mon, 6 Jan 2014 16:20:22 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

automake 1.14.1
autoconf 2.69

I have a project which has the unique feature of specifying all source
paths relative to $(top_srcdir), e.g.:

libdebug_la_SOURCES    =  $(top_srcdir)/debug.c

(The actual project is a recursive build with multiple nested source
directories, with paths like

   libYYY_la_SOURCES   = $(top_srcdir)/YYY/source.

 but this small sample elicits the undesired behavior described below.)

Without subdir-objects, automake complains about requiring
subdir-objects, but the project is built correctly.

With subdir-objects,  automake & autoconf conspire to generate code
which results in config.status creating a directory literally called
'$(top_srcdir)/.deps', and make dieing with the error

% make
Makefile:372: .deps/debug.Plo: No such file or directory
make: *** No rule to make target `.deps/debug.Plo'.  Stop.

In the complete project (which is recursive) each directory gets it's
own version of the '$(top_srcdir)' directory, .e.g, in
lists/Makefile.am,

  liblists_la_SOURCES = $(top_srcdir)/lists/foo.c

results in the creation of

  lists/$(top_srcdir)/lists/.deps

It is perhaps out of the ordinary to specify sources this way for a
recursive make, but it does actually work (and I'd like to be able to
continue with that idiom, as I have other tools which parse
Makefile.am and require this setup to work).

I've attached a tar file of the stripped down project with the results
of running

autoreconf -i >& autoreconf.log
./configure >& configure.log

Thanks!

Diab