[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Installing (everything in) a generated directory
From: |
Braden McDaniel |
Subject: |
Re: Installing (everything in) a generated directory |
Date: |
Fri, 26 Nov 2004 00:13:06 -0500 |
On Thu, 2004-11-25 at 21:10 +0100, Alexandre Duret-Lutz wrote:
> >>> "Braden" == Braden McDaniel <address@hidden> writes:
>
> [...]
> >> > EXTRA_DIST = manual
> [...]
> >> > html: manual
> [...]
> >> > install-data-local: manual installdirs-local
> >> > $(INSTALL_DATA) ./manual/* $(DESTDIR)$(docdir)/manual
> [...]
> >> > manual:
> >> > $(DOXYGEN)
> >> >
> >> > When "make distcheck" runs "make install", I get this:
> [...]
> >> > /usr/bin/install -c -m 644 ./manual/*
> >> >
> /home/bmcdaniel/src/openvrml/openvrml/BUILD/openvrml-0.14.99/_inst/share/doc/openvrml-0.14.99/manual
> >> > /usr/bin/install: cannot stat `./manual/*': No such file or directory
> >>
> >> Where are the contents created? $top_srcdir/manual or
> >> $top_builddir/manual?
>
> Braden> $builddir/manual, which is the same as $top_builddir/doc/manual.
>
> Because the manual is distributed (EXTRA_DIST) there is a copy
> of it in $(srcdir)/manual at this point of distcheck. Because
> $(srcdir)/manual exists and we have VPATH=$(srcdir), the `manual'
> dependency of `install-data-local' is satisfied and the manual
> is not recreated (which is undoubtedly what you want, otherwise
> you wouldn't distribute it).
>
> Hence either the install rule is wrong in assuming that the manual is
> always in the build directory, or the build rule is wrong in building
> the manual in the build directory.
>
> I suggest you always build distributed files in the source
> directory. (BTW this is mandatory if you want to support VPATH
> builds with some non-GNU implementation of make.)
Fair enough; I initially had it in the srcdir, but I encountered
problems then. If I do this:
EXTRA_DIST = manual
DISTCLEANFILES = manual/*
html: manual/index.html
installdirs-local:
$(mkinstalldirs) $(DESTDIR)$(docdir)/manual
install-data-local: html installdirs-local
$(INSTALL_DATA) $(srcdir)/manual/* $(DESTDIR)$(docdir)/manual
uninstall-local:
rm -rf $(DESTDIR)$(docdir)/manual
manual/index.html: Doxyfile
$(DOXYGEN)
... then I run into problems in "make install":
Making install in doc
make[2]: Entering directory
`/home/braden/src/openvrml/openvrml/BUILD/openvrml-0.14.99/_build/doc'
make[3]: Entering directory
`/home/braden/src/openvrml/openvrml/BUILD/openvrml-0.14.99/_build/doc'
make[3]: Nothing to be done for `install-exec-am'.
/usr/bin/doxygen
GroupDef::insertMembers(): member `node_cast' with class scope
`openvrml::node' inserted in group scope `nodes'!
Warning: Cannot open file
/home/braden/src/openvrml/openvrml/BUILD/openvrml-0.14.99/_build/doc/../../doc/manual/doxygen.png
for writing
Warning: Cannot open file
/home/braden/src/openvrml/openvrml/BUILD/openvrml-0.14.99/_build/doc/../../doc/manual/Helvetica.ttf
for writing
Could not open file
/home/braden/src/openvrml/openvrml/BUILD/openvrml-0.14.99/_build/doc/../../doc/manual/doxygen.css
for writing
make[3]: *** [manual/index.html] Error 1
make[3]: Leaving directory
`/home/braden/src/openvrml/openvrml/BUILD/openvrml-0.14.99/_build/doc'
make[2]: *** [install-am] Error 2
make[2]: Leaving directory
`/home/braden/src/openvrml/openvrml/BUILD/openvrml-0.14.99/_build/doc'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory
`/home/braden/src/openvrml/openvrml/BUILD/openvrml-0.14.99/_build'
make: *** [distcheck] Error 2
Again, using dist-hook to copy the files instead of listing "manual" in
EXTRA_DIST circumvents this problem.
--
Braden McDaniel e-mail: <address@hidden>
<http://endoframe.com> Jabber: <address@hidden>