.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.c	\
	$(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/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.
alldirs := xml xml/Client xml/Server man/man3 html/Client html/Server

$(diagrams): $(diagramssrc)

$(diagram_maps):  $(diagramssrc)

xml/%/index.xml: $(top_srcdir)/src/scanner.c $(scanned_src_files_%) wayland.doxygen $(diagrams) $(diagram_maps) | 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) | 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 | 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 | xml
	$(AM_V_GEN)$(DOT) -Tpng -o$@ $<

xml/%.map: $(diagramsdir)/%.gv | 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)