-## Debian db2html outputs to stdout, so we collect stdout and use
-## it if we didn't get the proper output
-
-dbus-specification.html: dbus-specification.sgml
- rm -f $@ && \
- $(DB2HTML) -o . --nochunks $< > $@.stdout && \
- (test -e $@ && rm -f $@.stdout || mv $@.stdout $@) && \
- rm -rf $(srcdir)/dbus-specification/stylesheet-images && \
- (if test -d $(srcdir)/dbus-specification ; then \
- rmdir $(srcdir)/dbus-specification ; fi)
-
-dbus-test-plan.html: dbus-test-plan.sgml
- rm -f $@ && \
- $(DB2HTML) -o . --nochunks $< > $@.stdout && \
- (test -e $@ && rm -f $@.stdout || mv $@.stdout $@) && \
- rm -rf $(srcdir)/dbus-test-plan/stylesheet-images && \
- (if test -d $(srcdir)/dbus-test-plan ; then \
- rmdir $(srcdir)/dbus-test-plan ; fi)
-
-maintainer-clean-local:
- rm -f dbus-test-plan.html
- rm -rf dbus-test-plan/stylesheet-images
- test -d dbus-test-plan && rmdir dbus-test-plan
- rm -f dbus-specification.html
- rm -rf dbus-specification/stylesheet-images
- test -d dbus-specification && rmdir dbus-specification
+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.devhelp
+
+dbus.devhelp: $(srcdir)/doxygen_to_devhelp.xsl doxygen.stamp
+ $(XSLTPROC) -o $@ $< api/xml/index.xml
+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)
+
+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)/*.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)/HACKING \
+ $(top_srcdir)/AUTHORS \
+ $(top_srcdir)/NEWS \
+ $(top_srcdir)/COPYING \
+ $(top_srcdir)/ChangeLog
+
+dbus-docs: $(STATIC_DOCS) $(MAN_XML_FILES) $(dist_doc_DATA) $(dist_html_DATA) $(MAN_HTML_FILES) $(BONUS_FILES) doxygen.stamp $(XMLTO_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_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 $(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 $(DTDS) $(SPECIFICATION_SERVER):$(SPECIFICATION_PATH)/
+else
+maintainer-upload-docs:
+ @echo "Can't upload documentation! Re-run configure with"
+ @echo " --enable-doxygen-docs --enable-xml-docs"
+ @echo "and ensure that man2html is installed."
+ @false
+endif
+
+CLEANFILES = \
+ $(man1_MANS) \
+ $(MAN_XML_FILES) \
+ $(XMLTO_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