Hi,
I have this snippet in my 'Makefile.am'
include am/test_data.am
$(srcdir)/am/test_data.am: $(srcdir)/test/data.txt
$(srcdir)/am/test_data.am.in
cd $(srcdir) && $(SHELL) bootstrap am/test_data.am
It first includes (at Automake time) a snippet, which is generated while
bootstrapping. Now I forgot to include $(srcdir)/test/data.txt
$(srcdir)/am/test_data.am.in in the distball, which caused the embarrassing
make: *** No rule to make target `am/test_data.am.in', needed by
`am/test_data.am'. Stop.
The surprising thing is that distcheck does not detect this problem, but
'make distcheck' passes through without problem. The reason for this is
probably because while $(srcdir)/test/data.txt does not exist, make also
looks in $(srcdir)/$(srcdir)/test/data.txt and that file exists as it is
part of my development directory. If I change my Makefile.am to
$(srcdir)/am/test_data.am: test/data.txt am/test_data.am.in
cd $(srcdir) && $(SHELL) bootstrap am/test_data.am
'make distcheck' will detect the problem, but I have this habit of type
$(srcdir) for things that are supposed to be in $(srcdir). Is that a bad
habit?
A fix could be to let distcheck not work in $(distdir) but instead
create 'tmp_/$(distdir)', builddir 'tmp_/$(distdir)/$(builddir)', and
installdir 'tmp_/$(distdir)/inst_' which would hide the development
files from the distcheck. What do you think?
Thanks,
Peter
--
Peter Johansson