1 # Documentation is built with xmlto, but some of the recipes in here are 2 # leftovers from building with Publican (https://fedorahosted.org/publican/) 3 # 4 # How this build works: 5 # * the main target is Wayland, documentation ends up in $(builddir)/Wayland/ 6 # * hand-written chapters and CSS files are located in sources. These are 7 # copied into $(builddir)/en-US/ 8 # * ProtocolSpec.xml is generated from $(top_srcdir)/protocol/wayland.xml, 9 # changed into docbook via XSLT and saved in $(builddir)/en-US/ 10 # * ProtocolInterfaces.xml, same as above, uses a different XSLT 11 # * *API.xml is generated from the doxygen output and saved in 12 # $(builddir)/en-US 13 # * run xmlto on $(builddir)/en-US, output to $(builddir)/Wayland/en-US 14 15 doxydir := $(top_builddir)/doc/doxygen 16 html_destdir := $(builddir)/Wayland/en-US/html 17 18 publican_sources = \ 19 $(srcdir)/sources/Wayland.ent \ 20 $(srcdir)/sources/Wayland.xml \ 21 $(srcdir)/sources/Book_Info.xml \ 22 $(srcdir)/sources/Author_Group.xml \ 23 $(srcdir)/sources/Foreword.xml \ 24 $(srcdir)/sources/Preface.xml \ 25 $(srcdir)/sources/Revision_History.xml \ 26 $(srcdir)/sources/Protocol.xml \ 27 $(srcdir)/sources/Compositors.xml \ 28 $(srcdir)/sources/images/icon.svg \ 29 $(srcdir)/sources/images/wayland.png \ 30 $(srcdir)/sources/Client.xml \ 31 $(srcdir)/sources/Server.xml 32 33 processed_sources := \ 34 $(srcdir)/sources/Architecture.xml \ 35 $(srcdir)/sources/Introduction.xml 36 37 css_sources = \ 38 $(srcdir)/sources/css/brand.css \ 39 $(srcdir)/sources/css/common.css \ 40 $(srcdir)/sources/css/default.css \ 41 $(srcdir)/sources/css/epub.css \ 42 $(srcdir)/sources/css/print.css 43 44 img_sources = \ 45 $(srcdir)/sources/images/icon.svg \ 46 $(srcdir)/sources/images/wayland.png 47 48 doxygen_img_sources := \ 49 $(doxydir)/xml/wayland-architecture.png \ 50 $(doxydir)/xml/x-architecture.png 51 52 map_sources := \ 53 $(doxydir)/xml/x-architecture.map \ 54 $(doxydir)/xml/wayland-architecture.map 55 56 if HAVE_XMLTO 57 if HAVE_XSLTPROC 58 noinst_DATA = $(builddir)/Wayland $(publican_targets) 59 XMLTO_PARAM = \ 60 --skip-validation \ 61 --stringparam chunk.section.depth=0 \ 62 --stringparam toc.section.depth=1 \ 63 --stringparam html.stylesheet=css/default.css 64 65 # Listing various directories that might need to be created. 66 alldirs := $(builddir)/en-US $(builddir)/en-US/images $(html_destdir) $(html_destdir)/css $(html_destdir)/images 67 68 69 html_css_targets = $(addprefix $(html_destdir)/css/,$(notdir $(css_sources))) 70 html_img_targets = $(addprefix $(html_destdir)/images/,$(notdir $(img_sources))) 71 doxygen_img_targets := $(doxygen_img_sources:$(doxydir)/xml/%=$(html_destdir)/images/%) 72 map_targets := $(map_sources:$(doxydir)/xml/%=$(builddir)/en-US/images/%) 73 processed_targets := $(processed_sources:$(srcdir)/sources/%=$(builddir)/en-US/%) 74 75 $(builddir)/Wayland: $(publican_targets) $(html_css_targets) $(html_img_targets) $(processed_targets) $(doxygen_img_targets) | $(builddir)/en-US 76 $(AM_V_GEN)$(XMLTO) $(XMLTO_PARAM) html $(builddir)/en-US/Wayland.xml -o $(html_destdir) 77 @touch $@ 78 79 $(html_destdir)/css/%: $(srcdir)/sources/css/% | $(html_destdir)/css 80 $(AM_V_GEN)cp -f $< $@ 81 82 $(html_destdir)/images/%: $(srcdir)/sources/images/% | $(html_destdir)/images 83 $(AM_V_GEN)cp -f $< $@ 84 85 $(html_destdir)/images/%: $(doxydir)/xml/% | $(html_destdir)/images 86 $(AM_V_GEN)cp -f $< $@ 87 88 pubdir = $(docdir)/Wayland/en-US 89 90 publican_targets = $(publican_sources:$(srcdir)/sources/%=$(builddir)/en-US/%) \ 91 $(builddir)/en-US/ProtocolSpec.xml \ 92 $(builddir)/en-US/ProtocolInterfaces.xml \ 93 $(builddir)/en-US/ClientAPI.xml \ 94 $(builddir)/en-US/ServerAPI.xml 95 96 # The Protocol.xml is purely generated and required before running publican 97 $(builddir)/en-US/ProtocolSpec.xml: $(top_srcdir)/protocol/wayland.xml $(srcdir)/protocol-to-docbook.xsl | $(builddir)/en-US 98 $(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol-to-docbook.xsl \ 99 $(top_srcdir)/protocol/wayland.xml > $@ 100 101 $(builddir)/en-US/ProtocolInterfaces.xml: $(top_srcdir)/protocol/wayland.xml $(srcdir)/protocol-interfaces-to-docbook.xsl | $(builddir)/en-US 102 $(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol-interfaces-to-docbook.xsl \ 103 $(top_srcdir)/protocol/wayland.xml > $@ 104 105 # * use doxygen's combine.xslt to merge the xml files into one single file 106 # * pipe that through the doxygen-to-publican stylesheet 107 $(builddir)/en-US/%API.xml: $(doxydir)/xml/%/index.xml $(srcdir)/doxygen-to-publican.xsl | $(builddir)/en-US 108 $(AM_V_GEN)$(XSLTPROC) $(doxydir)/xml/$*/combine.xslt \ 109 $(doxydir)/xml/$*/index.xml | \ 110 $(XSLTPROC) --stringparam which $* \ 111 $(srcdir)/doxygen-to-publican.xsl - > $@ 112 113 # Copy the sources source files into en-US destination 114 # This is required for out-of-source-tree build as publican does not allow us 115 # to specify the location of the source code. 116 $(builddir)/en-US/%: $(srcdir)/sources/% $(publican_sources) | $(builddir)/en-US/images 117 $(AM_V_GEN)cp -f $< $@ 118 $(AM_V_at)chmod a+w $@ 119 120 $(builddir)/en-US/images/%: $(doxydir)/xml/% | $(builddir)/en-US/images 121 $(AM_V_GEN)cp -f $< $@ 122 $(AM_V_at)chmod a+w $@ 123 124 # More specific rule to override explicitly listed targets and perform xslt 125 # modifications on them. 126 # Note that we can't use $< as all targets must be there 127 $(processed_targets): $(processed_sources) $(map_targets) $(srcdir)/merge-mapcoords.xsl | $(builddir)/en-US/images 128 $(AM_V_GEN)$(XSLTPROC) --stringparam basedir $(builddir)/en-US \ 129 $(srcdir)/merge-mapcoords.xsl $(addprefix $(srcdir)/sources/,$(notdir $@)) > $@ 130 131 # general rule to create one of the listed directories. 132 $(alldirs): 133 $(AM_V_GEN)$(MKDIR_P) $@ 134 135 CLEANFILES = $(publican_targets) 136 137 clean-local: 138 $(AM_V_at)rm -fr $(builddir)/en-US 139 $(AM_V_at)rm -fr $(builddir)/Wayland 140 141 install-data-local: 142 test -z "$(pubdir)/html/css" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/css" 143 test -z "$(pubdir)/html/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/images" 144 list=`find $(builddir)/Wayland/en-US -type f`; \ 145 for p in $$list; do \ 146 echo " $(INSTALL_DATA) '$$p' '$(DESTDIR)$(docdir)/$$p'"; \ 147 $(INSTALL_DATA) "$$p" "$(DESTDIR)$(docdir)/$$p"; \ 148 done; 149 150 uninstall-local: 151 @if test -n $(DESTDIR)$(docdir); then \ 152 if test -d $(DESTDIR)$(docdir); then \ 153 echo " rm -fr $(DESTDIR)$(docdir)/Wayland;"; \ 154 rm -fr $(DESTDIR)$(docdir)/Wayland; \ 155 fi; \ 156 fi; 157 158 endif 159 endif 160 161 EXTRA_DIST = \ 162 $(publican_sources) $(processed_sources) $(css_sources) $(img_sources) \ 163 protocol-to-docbook.xsl \ 164 protocol-interfaces-to-docbook.xsl \ 165 doxygen-to-publican.xsl \ 166 merge-mapcoords.xsl 167