apidir = @htmldir@/api

man_pages = \
	dbus-cleanup-sockets.1 \
	dbus-daemon.1 \
	dbus-launch.1 \
	dbus-monitor.1 \
	dbus-run-session.1 \
	dbus-send.1 \
	dbus-test-tool.1 \
	dbus-update-activation-environment.1 \
	dbus-uuidgen.1 \
	$(NULL)

MAN_XML_FILES = $(patsubst %.1,%.1.xml,$(man_pages))

if DBUS_XML_DOCS_ENABLED
man1_MANS = $(man_pages)
endif

MAN_HTML_FILES = $(patsubst %.1,%.1.html,$(man_pages))

dtddir = $(datadir)/xml/dbus-1
dist_dtd_DATA = \
	busconfig.dtd \
	introspect.dtd

dist_doc_DATA = system-activation.txt

# uploaded and distributed, but not installed
STATIC_DOCS = \
	dbus-faq.xml \
	dbus-specification.xml \
	dbus-test-plan.xml \
	dbus-tutorial.xml \
	dbus-api-design.duck \
	dcop-howto.txt \
	introspect.xsl

EXTRA_DIST = \
	file-boilerplate.c \
	doxygen_to_devhelp.xsl \
	$(STATIC_DOCS)

html_DATA =

dist_html_DATA =

# diagram.png/diagram.svg aren't really HTML, but must go in the same
# directory as the HTML to avoid broken links
STATIC_HTML = \
	diagram.png \
	diagram.svg \
	$(NULL)

# Static HTML helper files generated by yelp-build.
YELP_STATIC_HTML = \
	yelp.js \
	C.css \
	highlight.pack.js \
	jquery.js \
	jquery.syntax.js \
	jquery.syntax.brush.html.js \
	jquery.syntax.core.js \
	jquery.syntax.layout.yelp.js \
	$(NULL)

dist_html_DATA += $(STATIC_HTML)

# Content HTML files generated by yelp-build.
YELP_HTML = \
	dbus-api-design.html \
	$(NULL)

XMLTO_HTML =					\
	dbus-faq.html				\
	dbus-specification.html			\
	dbus-test-plan.html			\
	dbus-tutorial.html			\
	$(MAN_HTML_FILES)			\
	$(NULL)

if DBUS_XML_DOCS_ENABLED
html_DATA += $(XMLTO_HTML)

%.html: %.xml
	$(XMLTO) html-nochunks $<

%.1: %.1.xml
	$(XMLTO) man $<
endif

if DBUS_DOXYGEN_DOCS_ENABLED
all-local:: doxygen.stamp

doxygen.stamp: $(wildcard $(top_srcdir)/dbus/*.[ch])
	$(AM_V_GEN)cd $(top_builddir) && doxygen Doxyfile
	@touch $@

if DBUS_HAVE_XSLTPROC
html_DATA += dbus.devhelp2

dbus.devhelp2: $(srcdir)/doxygen_to_devhelp.xsl doxygen.stamp
	$(XSLTPROC) -o $@ $< api/xml/index.xml
endif

if DBUS_DUCKTYPE_DOCS_ENABLED
html_DATA += $(YELP_HTML)

%.page: %.duck
	$(DUCKTYPE) -o $@ $<
%.html: %.page
	$(YELP_BUILD) html $<
$(YELP_STATIC_HTML): $(YELP_HTML)
endif

# this assumes CREATE_SUBDIRS isn't set to YES in Doxyfile
# (which it isn't currently)
install-data-local:: doxygen.stamp
	$(MKDIR_P) $(DESTDIR)$(apidir)
	$(INSTALL_DATA) api/html/* $(DESTDIR)$(apidir)
if DBUS_DUCKTYPE_DOCS_ENABLED
	$(AM_V_at)for x in $(YELP_STATIC_HTML); do \
		if test -e "$$x"; then \
			$(INSTALL_DATA) "$$x" $(DESTDIR)$(htmldir); \
		fi; \
	done
endif

uninstall-local::
	rm -f $(DESTDIR)$(apidir)/*.html
	rm -f $(DESTDIR)$(apidir)/*.png
	rm -f $(DESTDIR)$(apidir)/*.css
	rm -f $(DESTDIR)$(apidir)/*.js
	rm -f $(DESTDIR)$(htmldir)/*.css
	rm -f $(DESTDIR)$(htmldir)/*.js
	rm -f $(DESTDIR)$(htmldir)/*.html
	rm -f $(DESTDIR)$(docdir)/*.txt
	rm -f $(DESTDIR)$(htmldir)/*.png
	rm -f $(DESTDIR)$(htmldir)/*.svg
	rmdir --ignore-fail-on-non-empty $(DESTDIR)$(apidir) || \
		rmdir $(DESTDIR)$(apidir)
endif

if DBUS_CAN_UPLOAD_DOCS
BONUS_FILES = \
	$(top_srcdir)/README \
	$(top_srcdir)/CONTRIBUTING.md \
	$(top_srcdir)/AUTHORS \
	$(top_srcdir)/NEWS \
	$(top_srcdir)/COPYING \
	$(top_srcdir)/ChangeLog

dbus-docs: $(STATIC_DOCS) $(dist_dtd_DATA) $(MAN_XML_FILES) $(dist_doc_DATA) $(dist_html_DATA) $(MAN_HTML_FILES) $(BONUS_FILES) doxygen.stamp $(XMLTO_HTML) $(YELP_HTML)
	$(AM_V_at)rm -rf $@ $@.tmp
	$(AM_V_GEN)$(MKDIR_P) $@.tmp/api
	$(AM_V_at)cd $(srcdir) && cp $(STATIC_DOCS) @abs_builddir@/$@.tmp
	$(AM_V_at)cd $(srcdir) && cp $(dist_dtd_DATA) @abs_builddir@/$@.tmp
	$(AM_V_at)cd $(srcdir) && cp $(dist_doc_DATA) @abs_builddir@/$@.tmp
	$(AM_V_at)cd $(srcdir) && cp $(STATIC_HTML) @abs_builddir@/$@.tmp
	$(AM_V_at)cp $(XMLTO_HTML) @abs_builddir@/$@.tmp
	$(AM_V_at)cp $(YELP_HTML) @abs_builddir@/$@.tmp
	$(AM_V_at)for x in $(YELP_STATIC_HTML); do \
		if test -e "$$x"; then \
			cp "$$x" @abs_builddir@/$@.tmp; \
		fi; \
	done
	$(AM_V_at)cp $(MAN_HTML_FILES) @abs_builddir@/$@.tmp
	$(AM_V_at)cp $(MAN_XML_FILES) @abs_builddir@/$@.tmp
	$(AM_V_at)cp $(BONUS_FILES) @abs_builddir@/$@.tmp
	$(AM_V_at)cp -r api/html @abs_builddir@/$@.tmp/api
	$(AM_V_at)mv $@.tmp $@

dbus-docs.tar.gz: dbus-docs
	$(AM_V_GEN)tar czf $@ $<

DOC_SERVER = dbus.freedesktop.org
DOC_WWW_DIR = /srv/dbus.freedesktop.org/www

SPECIFICATION_SERVER = specifications.freedesktop.org
SPECIFICATION_PATH = /srv/specifications.freedesktop.org/www/dbus/1.0

maintainer-upload-docs: dbus-docs.tar.gz dbus-docs
	scp dbus-docs.tar.gz $(DOC_SERVER):$(DOC_WWW_DIR)/
	rsync -rpvzP --chmod=Dg+s,ug+rwX,o=rX \
		dbus-docs/ $(DOC_SERVER):$(DOC_WWW_DIR)/doc/
	cd $(srcdir) && scp -p $(dist_dtd_DATA) $(SPECIFICATION_SERVER):$(SPECIFICATION_PATH)/
else
maintainer-upload-docs:
	@echo "Can't upload documentation! Re-run configure with"
	@echo "  --enable-doxygen-docs --enable-xml-docs --enable-ducktype-docs"
	@false
endif

CLEANFILES = \
	$(man1_MANS) \
	$(MAN_XML_FILES) \
	$(XMLTO_HTML) \
	$(YELP_HTML) \
	$(YELP_STATIC_HTML) \
	$(NULL)

clean-local:
	rm -f $(html_DATA)
	rm -rf api
	rm -rf dbus-docs dbus-docs.tmp
	rm -f *.1.html
	rm -f doxygen.stamp
