Trevor Woerner wrote:

I have a project with source files in multiple subdirectories: src,
tests, cfg. Doxygen will generate code documentation based on special
hints in the comments of the code files themselves (like javadoc, if
you're familiar with that mechanism).

I could just blindly have Doxygen run each time I run "make [<something>]":
all-local:: doxygen/html/index.html

But it would be nice if it only ran as required, in other words, only
when one of the project's sources is modified. Previously I had all
the sources in one directory (src) so this was easy:
doxygen/html/index.html: $(SOURCES)
   $(DOXYGEN) Doxyfile

But if the sources are spread throughout the project is there any way
at any one location to dynamically know all the sources?
doxygen/html/index.html: $(SUBDIRS)/$(SOURCES)
   $(DOXYGEN) Doxyfile

The recursive behavior of automake makes this difficult. What you can do it alter Automake to provide in every Makefile (might be non-trivial):

.doxygen: $(SOURCES)
   touch $@

... then, at top-level, you could enumerate your subdirs:

doxygen: src/.doxygen doc/.doxygen
   doxygen ...

... with gnu-make, if you wanted to make the list of Doxygen dependents automatic, you could:

doxygen: $(addsuffix /.doxygen,$(DIST_SUBDIRS))
   doxygen ...


Alternatively, you could cause a filelist to be created from a dependency on the Makefiles -- $(addsuffix /Makefile.am,$(DIST_SUBDIRS)) -- or even generate a file to be included in the top-level Makefile. .. or just wimp out and:

doxygen: $(addsuffix /*.c,$(DIST_SUBDIRS)) $(addsuffix /*.h,$(DIST_SUBDIRS))
   doxygen ...


Lemme know if it works...

Allan


_______________________________________________
Autoconf mailing list
Autoconf@gnu.org
http://lists.gnu.org/mailman/listinfo/autoconf

Reply via email to