Automake generates rules for VALA files which try to create C output
in the source directory. This is pretty strange, but anyway the
build doesn't succeed even if the source directory is writable.

quoting Andrey Borzenkov in 
http://lists.gnu.org/archive/html/automake/2010-11/msg00036.html:

-------------------------------------------------------------------
I'm trying to rebuild systemd
(http://www.freedesktop.org/wiki/Software/systemd) from GIT. It is
using several programs built using vala; in-tree build is OK,
out-of-tree build fails:

{pts/0}% LC_ALL=C make
make  all-am
make[1]: Entering directory `/home/bor/build/systemd'
make[1]: *** No rule to make target
`/home/bor/src/systemd/systemadm_vala.stamp', needed by
`/home/bor/src/systemd/src/systemadm.c'.  Stop.
make[1]: Leaving directory `/home/bor/build/systemd'
make: *** [all] Error 2

Looking at Makefile.in, generated by automake, I cannot understand how
it is supposed to work:

$(srcdir)/src/systemadm.c: $(srcdir)/systemadm_vala.stamp
        @if test -f $@; then :; else \
          rm -f $(srcdir)/systemadm_vala.stamp; \
          $(am__cd) $(srcdir) && $(MAKE) $(AM_MAKEFLAGS) systemadm_vala.stamp; \
        fi
systemadm_vala.stamp: $(systemadm_SOURCES)
        $(AM_V_VALAC)$(VALAC) $(systemadm_VALAFLAGS) $(VALAFLAGS) -C
$(systemadm_SOURCES)
        $(AM_V_at)touch $@

In out-of-tree build $(srcdir)/systemadm_vala.stamp is not the same as
systemadm_vala.stamp, nor can it be. VPATH search does not apply here,
because path does not yet exist; so when it is rebuilt, file name is
used verbatim.
-------------------------------------------------------------------

Andrey didn't get a definite reply, but the problem seems to be still present.

Zbyszek



Reply via email to