gtk-doc.make 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. # -*- mode: makefile -*-
  2. ####################################
  3. # Everything below here is generic #
  4. ####################################
  5. if GTK_DOC_USE_LIBTOOL
  6. GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
  7. GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
  8. else
  9. GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
  10. GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
  11. endif
  12. # We set GPATH here; this gives us semantics for GNU make
  13. # which are more like other make's VPATH, when it comes to
  14. # whether a source that is a target of one rule is then
  15. # searched for in VPATH/GPATH.
  16. #
  17. GPATH = $(srcdir)
  18. TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
  19. EXTRA_DIST = \
  20. $(content_files) \
  21. $(HTML_IMAGES) \
  22. $(DOC_MAIN_SGML_FILE) \
  23. $(DOC_MODULE)-sections.txt \
  24. $(DOC_MODULE)-overrides.txt
  25. DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
  26. $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
  27. SCANOBJ_FILES = \
  28. $(DOC_MODULE).args \
  29. $(DOC_MODULE).hierarchy \
  30. $(DOC_MODULE).interfaces \
  31. $(DOC_MODULE).prerequisites \
  32. $(DOC_MODULE).signals
  33. REPORT_FILES = \
  34. $(DOC_MODULE)-undocumented.txt \
  35. $(DOC_MODULE)-undeclared.txt \
  36. $(DOC_MODULE)-unused.txt
  37. CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
  38. if ENABLE_GTK_DOC
  39. all-local: html-build.stamp
  40. else
  41. all-local:
  42. endif
  43. docs: html-build.stamp
  44. #### scan ####
  45. scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
  46. @echo 'gtk-doc: Scanning header files'
  47. @-chmod -R u+w $(srcdir)
  48. cd $(srcdir) && \
  49. gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
  50. if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
  51. CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
  52. else \
  53. cd $(srcdir) ; \
  54. for i in $(SCANOBJ_FILES) ; do \
  55. test -f $$i || touch $$i ; \
  56. done \
  57. fi
  58. touch scan-build.stamp
  59. $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
  60. @true
  61. #### templates ####
  62. tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
  63. @echo 'gtk-doc: Rebuilding template files'
  64. @-chmod -R u+w $(srcdir)
  65. cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
  66. touch tmpl-build.stamp
  67. tmpl.stamp: tmpl-build.stamp
  68. @true
  69. tmpl/*.sgml:
  70. @true
  71. #### xml ####
  72. sgml-build.stamp: tmpl.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
  73. @echo 'gtk-doc: Building XML'
  74. @-chmod -R u+w $(srcdir)
  75. cd $(srcdir) && \
  76. gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
  77. touch sgml-build.stamp
  78. sgml.stamp: sgml-build.stamp
  79. @true
  80. #### html ####
  81. html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
  82. @echo 'gtk-doc: Building HTML'
  83. @-chmod -R u+w $(srcdir)
  84. rm -rf $(srcdir)/html
  85. mkdir $(srcdir)/html
  86. cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
  87. test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
  88. @echo 'gtk-doc: Fixing cross-references'
  89. cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
  90. touch html-build.stamp
  91. ##############
  92. clean-local:
  93. rm -f *~ *.bak
  94. rm -rf .libs
  95. distclean-local:
  96. cd $(srcdir) && \
  97. rm -rf xml $(REPORT_FILES) \
  98. $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
  99. maintainer-clean-local: clean
  100. cd $(srcdir) && rm -rf xml html
  101. install-data-local:
  102. -installfiles=`echo $(srcdir)/html/*`; \
  103. if test "$$installfiles" = '$(srcdir)/html/*'; \
  104. then echo '-- Nothing to install' ; \
  105. else \
  106. $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
  107. for i in $$installfiles; do \
  108. echo '-- Installing '$$i ; \
  109. $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
  110. done; \
  111. echo '-- Installing $(srcdir)/html/index.sgml' ; \
  112. $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
  113. which gtkdoc-rebase >/dev/null && \
  114. gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) ; \
  115. fi
  116. uninstall-local:
  117. rm -f $(DESTDIR)$(TARGET_DIR)/*
  118. #
  119. # Require gtk-doc when making dist
  120. #
  121. if ENABLE_GTK_DOC
  122. dist-check-gtkdoc:
  123. else
  124. dist-check-gtkdoc:
  125. @echo "*** gtk-doc must be installed and enabled in order to make dist"
  126. @false
  127. endif
  128. dist-hook: dist-check-gtkdoc dist-hook-local
  129. mkdir $(distdir)/tmpl
  130. mkdir $(distdir)/xml
  131. mkdir $(distdir)/html
  132. -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
  133. -cp $(srcdir)/xml/*.xml $(distdir)/xml
  134. cp $(srcdir)/html/* $(distdir)/html
  135. -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
  136. -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
  137. cd $(distdir) && rm -f $(DISTCLEANFILES)
  138. -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
  139. .PHONY : dist-hook-local docs