wayland/doc/doxygen/Makefile.am
Daniel Stone 8497144faa
build/doc: Ensure destination dir exists despite VPATH
Make considers a variable called VPATH when trying to satisfy
dependencies, e.g. for a target 'foo', it will consider the target
extant if VPATH is '../../bar' and '../../bar/foo' exists.

Part of the doc build, the '$(alldirs)' target, exists to create the
target directories if they do not exist. For example, before generating
xml/wayland-architecture.png, it will ensure the 'xml' target is
considered up-to-date thanks to the target dependency.

Creating $(srcdir)/doc/doxygen/xml thus means that the 'xml' dependency
will be satisfied, so we'll never create the output directory, and the
doc build will fail.

Change the alldirs target list to be absolute paths, so VPATH will not
be consulted and defeat the entire point of what we're trying to do.
This fixes the Meson build, where we later create
doc/doxygen/xml/meson.build.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2020-01-10 23:42:59 +01:00

104 lines
3.2 KiB
Makefile

.SUFFIXES = .gv .png .map
noinst_DATA = \
xml/Client/index.xml \
xml/Server/index.xml \
html/Client/index.html \
html/Server/index.html
dist_noinst_DATA = wayland.doxygen.in
scanned_src_files_shared = \
$(top_srcdir)/src/wayland-util.h
scanned_src_files_Client = \
$(scanned_src_files_shared) \
$(top_srcdir)/src/wayland-client.c \
$(top_srcdir)/src/wayland-client.h \
$(top_srcdir)/src/wayland-client-core.h
scanned_src_files_Server = \
$(scanned_src_files_shared) \
$(top_srcdir)/src/event-loop.c \
$(top_srcdir)/src/wayland-server.c \
$(top_srcdir)/src/wayland-server.h \
$(top_srcdir)/src/wayland-server-core.h \
$(top_srcdir)/src/wayland-shm.c
scanned_src_files_man = \
$(scanned_src_files_Server) \
$(top_srcdir)/src/wayland-client.c \
$(top_srcdir)/src/wayland-client.h \
$(top_srcdir)/src/wayland-client-core.h
extra_doxygen = \
mainpage.dox
extra_doxygen_Server = \
$(top_builddir)/protocol/wayland-server-protocol.h \
$(extra_doxygen)
extra_doxygen_Client = \
$(top_builddir)/protocol/wayland-client-protocol.h \
$(extra_doxygen)
diagramsdir := $(srcdir)/dot
diagramssrc := $(wildcard $(diagramsdir)/*.gv)
diagrams := $(patsubst $(diagramsdir)/%,xml/%,$(diagramssrc:.gv=.png))
diagram_maps := $(patsubst $(diagramsdir)/%,xml/%,$(diagramssrc:.gv=.map))
# find all man/man3/wl_foo.3 pages
# for this to work, we need to create them before the man target (hence
# all-local below)
dist_man3_MANS = $(shell test -d man && find man/man3 -name "wl_*.3" -printf "man/man3/%P\n")
# Listing various directories that might need to be created.
alldirsrel := xml xml/Client xml/Server man/man3 html/Client html/Server
alldirs := $(patsubst %,$(CURDIR)/%,$(alldirsrel))
$(diagrams): $(diagramssrc)
$(diagram_maps): $(diagramssrc)
xml/%/index.xml: $(top_srcdir)/src/scanner.c $(scanned_src_files_%) wayland.doxygen $(diagrams) $(diagram_maps) | $(CURDIR)/xml/%
$(AM_V_GEN)(cat wayland.doxygen; \
echo "GENERATE_XML=YES"; \
echo "XML_OUTPUT=xml/$*"; \
echo "INPUT= $(scanned_src_files_$*)"; \
) | $(DOXYGEN) -
html/%/index.html: $(scanned_src_files_%) wayland.doxygen $(diagrams) $(diagram_maps) | $(CURDIR)/html/%
$(AM_V_GEN)(cat wayland.doxygen; \
echo "PROJECT_NAME=\"Wayland $* API\""; \
echo "GENERATE_HTML=YES"; \
echo "HTML_OUTPUT=html/$*"; \
echo "INPUT= $(scanned_src_files_$*) $(extra_doxygen_$*)"; \
) | $(DOXYGEN) -
man/man3/wl_display.3: $(top_srcdir)/src/scanner.c $(scanned_src_files_man) wayland.doxygen | $(CURDIR)/man/man3
$(AM_V_GEN)(cat wayland.doxygen; \
echo "GENERATE_MAN=YES"; \
echo "MAN_OUTPUT=man"; \
echo "JAVADOC_AUTOBRIEF=NO"; \
echo "INPUT= $(scanned_src_files_man)"; \
) | $(DOXYGEN) -
xml/%.png: $(diagramsdir)/%.gv | $(CURDIR)/xml
$(AM_V_GEN)$(DOT) -Tpng -o$@ $<
xml/%.map: $(diagramsdir)/%.gv | $(CURDIR)/xml
$(AM_V_GEN)$(DOT) -Tcmapx_np -o$@ $<
# general rule to create one of the listed directories.
$(alldirs):
$(AM_V_GEN)$(MKDIR_P) $@
# there is no man-local
all-local: man/man3/wl_display.3
clean-local:
rm -rf xml/
rm -rf html/
rm -rf man/
EXTRA_DIST = $(diagramssrc)