1# -*- mode: makefile -*- 2 3#################################### 4# Everything below here is generic # 5#################################### 6 7if GTK_DOC_USE_LIBTOOL 8GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 9GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) 10GTKDOC_RUN = $(LIBTOOL) --mode=execute 11else 12GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) 13GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) 14GTKDOC_RUN = 15endif 16 17# We set GPATH here; this gives us semantics for GNU make 18# which are more like other make's VPATH, when it comes to 19# whether a source that is a target of one rule is then 20# searched for in VPATH/GPATH. 21# 22GPATH = $(srcdir) 23 24TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) 25 26SETUP_FILES = \ 27 $(content_files) \ 28 $(DOC_MAIN_SGML_FILE) \ 29 $(DOC_MODULE)-sections.txt \ 30 $(DOC_MODULE)-overrides.txt 31 32EXTRA_DIST = \ 33 $(HTML_IMAGES) \ 34 $(SETUP_FILES) 35 36DOC_STAMPS=setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \ 37 html-build.stamp pdf-build.stamp \ 38 tmpl.stamp sgml.stamp html.stamp pdf.stamp 39 40SCANOBJ_FILES = \ 41 $(DOC_MODULE).args \ 42 $(DOC_MODULE).hierarchy \ 43 $(DOC_MODULE).interfaces \ 44 $(DOC_MODULE).prerequisites \ 45 $(DOC_MODULE).signals 46 47REPORT_FILES = \ 48 $(DOC_MODULE)-undocumented.txt \ 49 $(DOC_MODULE)-undeclared.txt \ 50 $(DOC_MODULE)-unused.txt 51 52CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) 53 54if ENABLE_GTK_DOC 55if GTK_DOC_BUILD_HTML 56HTML_BUILD_STAMP=html-build.stamp 57else 58HTML_BUILD_STAMP= 59endif 60if GTK_DOC_BUILD_PDF 61PDF_BUILD_STAMP=pdf-build.stamp 62else 63PDF_BUILD_STAMP= 64endif 65 66all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) 67else 68all-local: 69endif 70 71docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) 72 73$(REPORT_FILES): sgml-build.stamp 74 75#### setup #### 76 77GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) 78GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) 79GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; 80 81setup-build.stamp: 82 -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ 83 files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ 84 if test "x$$files" != "x" ; then \ 85 for file in $$files ; do \ 86 test -f $(abs_srcdir)/$$file && \ 87 cp -pu $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ 88 done; \ 89 fi; \ 90 test -d $(abs_srcdir)/tmpl && \ 91 { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \ 92 chmod -R u+w $(abs_builddir)/tmpl; } \ 93 fi 94 $(AM_V_at)touch setup-build.stamp 95 96#### scan #### 97 98GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) 99GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) 100GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; 101 102GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) 103GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) 104GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; 105 106scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) 107 $(GTK_DOC_V_SCAN)_source_dir='' ; \ 108 for i in $(DOC_SOURCE_DIR) ; do \ 109 _source_dir="$${_source_dir} --source-dir=$$i" ; \ 110 done ; \ 111 gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) 112 $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ 113 scanobj_options=""; \ 114 gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ 115 if test "$(?)" = "0"; then \ 116 if test "x$(V)" = "x1"; then \ 117 scanobj_options="--verbose"; \ 118 fi; \ 119 fi; \ 120 CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ 121 gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ 122 else \ 123 for i in $(SCANOBJ_FILES) ; do \ 124 test -f $$i || touch $$i ; \ 125 done \ 126 fi 127 $(AM_V_at)touch scan-build.stamp 128 129$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp 130 @true 131 132#### templates #### 133 134GTK_DOC_V_TMPL=$(GTK_DOC_V_TMPL_$(V)) 135GTK_DOC_V_TMPL_=$(GTK_DOC_V_TMPL_$(AM_DEFAULT_VERBOSITY)) 136GTK_DOC_V_TMPL_0=@echo " DOC Rebuilding template files"; 137 138tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt 139 $(GTK_DOC_V_TMPL)gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) 140 $(AM_V_at)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ 141 if test -w $(abs_srcdir) ; then \ 142 cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \ 143 fi \ 144 fi 145 $(AM_V_at)touch tmpl-build.stamp 146 147tmpl.stamp: tmpl-build.stamp 148 @true 149 150$(srcdir)/tmpl/*.sgml: 151 @true 152 153#### xml #### 154 155GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) 156GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) 157GTK_DOC_V_XML_0=@echo " DOC Building XML"; 158 159sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) 160 $(GTK_DOC_V_XML)-chmod -R u+w $(srcdir) && _source_dir='' ; \ 161 for i in $(DOC_SOURCE_DIR) ; do \ 162 _source_dir="$${_source_dir} --source-dir=$$i" ; \ 163 done ; \ 164 gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) 165 $(AM_V_at)touch sgml-build.stamp 166 167sgml.stamp: sgml-build.stamp 168 @true 169 170#### html #### 171 172GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) 173GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) 174GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; 175 176GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) 177GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) 178GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; 179 180html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) 181 $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ 182 mkhtml_options=""; \ 183 gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ 184 if test "$(?)" = "0"; then \ 185 if test "x$(V)" = "x1"; then \ 186 mkhtml_options="$$mkhtml_options --verbose"; \ 187 fi; \ 188 fi; \ 189 gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ 190 if test "$(?)" = "0"; then \ 191 mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ 192 fi; \ 193 cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) 194 -@test "x$(HTML_IMAGES)" = "x" || \ 195 for file in $(HTML_IMAGES) ; do \ 196 if test -f $(abs_srcdir)/$$file ; then \ 197 cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ 198 fi; \ 199 if test -f $(abs_builddir)/$$file ; then \ 200 cp $(abs_builddir)/$$file $(abs_builddir)/html; \ 201 fi; \ 202 done; 203 $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) 204 $(AM_V_at)touch html-build.stamp 205 206#### pdf #### 207 208GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) 209GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) 210GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; 211 212pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) 213 $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ 214 mkpdf_options=""; \ 215 gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ 216 if test "$(?)" = "0"; then \ 217 if test "x$(V)" = "x1"; then \ 218 mkpdf_options="$$mkpdf_options --verbose"; \ 219 fi; \ 220 fi; \ 221 if test "x$(HTML_IMAGES)" != "x"; then \ 222 for img in $(HTML_IMAGES); do \ 223 part=`dirname $$img`; \ 224 echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ 225 if test $$? != 0; then \ 226 mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ 227 fi; \ 228 done; \ 229 fi; \ 230 gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) 231 $(AM_V_at)touch pdf-build.stamp 232 233############## 234 235clean-local: 236 @rm -f *~ *.bak 237 @rm -rf .libs 238 239distclean-local: 240 @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ 241 $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt 242 @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ 243 rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ 244 rm -rf tmpl; \ 245 fi 246 247maintainer-clean-local: 248 @rm -rf xml html 249 250install-data-local: 251 @installfiles=`echo $(builddir)/html/*`; \ 252 if test "$$installfiles" = '$(builddir)/html/*'; \ 253 then echo 1>&2 'Nothing to install' ; \ 254 else \ 255 if test -n "$(DOC_MODULE_VERSION)"; then \ 256 installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ 257 else \ 258 installdir="$(DESTDIR)$(TARGET_DIR)"; \ 259 fi; \ 260 $(mkinstalldirs) $${installdir} ; \ 261 for i in $$installfiles; do \ 262 echo ' $(INSTALL_DATA) '$$i ; \ 263 $(INSTALL_DATA) $$i $${installdir}; \ 264 done; \ 265 if test -n "$(DOC_MODULE_VERSION)"; then \ 266 mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ 267 $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ 268 fi; \ 269 $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ 270 fi 271 272uninstall-local: 273 @if test -n "$(DOC_MODULE_VERSION)"; then \ 274 installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ 275 else \ 276 installdir="$(DESTDIR)$(TARGET_DIR)"; \ 277 fi; \ 278 rm -rf $${installdir} 279 280# 281# Require gtk-doc when making dist 282# 283if ENABLE_GTK_DOC 284dist-check-gtkdoc: docs 285else 286dist-check-gtkdoc: 287 @echo "*** gtk-doc must be installed and enabled in order to make dist" 288 @false 289endif 290 291dist-hook: dist-check-gtkdoc dist-hook-local 292 @mkdir $(distdir)/tmpl 293 @mkdir $(distdir)/html 294 @-cp ./tmpl/*.sgml $(distdir)/tmpl 295 @cp ./html/* $(distdir)/html 296 @-cp ./$(DOC_MODULE).pdf $(distdir)/ 297 @-cp ./$(DOC_MODULE).types $(distdir)/ 298 @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ 299 @cd $(distdir) && rm -f $(DISTCLEANFILES) 300 @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html 301 302.PHONY : dist-hook-local docs 303