automake
[Top][All Lists]
Advanced

[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>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]