mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-04-21 19:20:46 +02:00
This looks to be an ugly necessity to work-around the nasty issue that we currently gtkdoc expect to be run inside the source tree. I'm sure Behdad will be able to resolve this much more elegantly than this quick and fragile attempt.
181 lines
5.6 KiB
Text
181 lines
5.6 KiB
Text
# Modified for cairo minimally:
|
|
# - Moved to build/
|
|
# - Made it append to EXTRA_DIST and CLEANFILES
|
|
# - Instead of all-local, make "doc" build docs, and err if gtk-doc not enabled
|
|
|
|
# -*- mode: makefile -*-
|
|
|
|
####################################
|
|
# Everything below here is generic #
|
|
####################################
|
|
|
|
if GTK_DOC_USE_LIBTOOL
|
|
GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
|
|
else
|
|
GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
|
|
endif
|
|
|
|
# We set GPATH here; this gives us semantics for GNU make
|
|
# which are more like other make's VPATH, when it comes to
|
|
# whether a source that is a target of one rule is then
|
|
# searched for in VPATH/GPATH.
|
|
#
|
|
GPATH = $(srcdir)
|
|
|
|
TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
|
|
|
|
EXTRA_DIST += \
|
|
$(content_files) \
|
|
$(HTML_IMAGES) \
|
|
$(DOC_MAIN_SGML_FILE) \
|
|
$(DOC_MODULE)-sections.txt \
|
|
$(DOC_MODULE)-overrides.txt
|
|
|
|
DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
|
|
$(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
|
|
|
|
SCANOBJ_FILES = \
|
|
$(DOC_MODULE).args \
|
|
$(DOC_MODULE).hierarchy \
|
|
$(DOC_MODULE).interfaces \
|
|
$(DOC_MODULE).prerequisites \
|
|
$(DOC_MODULE).signals
|
|
|
|
REPORT_FILES = \
|
|
$(DOC_MODULE)-undocumented.txt \
|
|
$(DOC_MODULE)-undeclared.txt \
|
|
$(DOC_MODULE)-unused.txt
|
|
|
|
CLEANFILES += $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
|
|
|
|
if ENABLE_GTK_DOC
|
|
doc: html-build.stamp
|
|
else
|
|
doc:
|
|
@echo "*** gtk-doc must be installed (and --enable-gtk-doc) in order to make doc"
|
|
@false
|
|
endif
|
|
|
|
docs: html-build.stamp
|
|
|
|
#### scan ####
|
|
|
|
scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) $(EXTRA_HFILES)
|
|
@echo 'gtk-doc: Scanning header files'
|
|
@-chmod -R u+w $(srcdir)
|
|
gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES) --output-dir=$(srcdir)
|
|
if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
|
|
CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
|
|
else \
|
|
cd $(srcdir) ; \
|
|
for i in $(SCANOBJ_FILES) ; do \
|
|
test -f $$i || touch $$i ; \
|
|
done \
|
|
fi
|
|
touch scan-build.stamp
|
|
|
|
$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
|
|
@true
|
|
|
|
#### templates ####
|
|
|
|
tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
|
|
@echo 'gtk-doc: Rebuilding template files'
|
|
@-chmod -R u+w $(srcdir)
|
|
cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
|
|
touch tmpl-build.stamp
|
|
|
|
tmpl.stamp: tmpl-build.stamp
|
|
@true
|
|
|
|
tmpl/*.sgml:
|
|
@true
|
|
|
|
|
|
#### xml ####
|
|
|
|
# gtkdoc-mkdb is broken and requires a --root-dir=$(srcdir) option
|
|
# The _srcdir diversion is fragile but works for make check; make distcheck
|
|
sgml-build.stamp: tmpl.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
|
|
@echo 'gtk-doc: Building XML'
|
|
@-chmod -R u+w $(srcdir)
|
|
_srcdir="`pwd`/$(DOC_SOURCE_DIR)"; \
|
|
cd $(srcdir) && gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$$_srcdir --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
|
|
touch sgml-build.stamp
|
|
|
|
sgml.stamp: sgml-build.stamp
|
|
@true
|
|
|
|
#### html ####
|
|
|
|
html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
|
|
@echo 'gtk-doc: Building HTML'
|
|
@-chmod -R u+w $(srcdir)
|
|
rm -rf $(srcdir)/html
|
|
mkdir $(srcdir)/html
|
|
cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
|
|
test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
|
|
@echo 'gtk-doc: Fixing cross-references'
|
|
cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
|
|
touch html-build.stamp
|
|
|
|
##############
|
|
|
|
clean-local:
|
|
rm -f *~ *.bak
|
|
rm -rf .libs
|
|
|
|
distclean-local:
|
|
cd $(srcdir) && \
|
|
rm -rf xml $(REPORT_FILES) \
|
|
$(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
|
|
|
|
maintainer-clean-local: clean
|
|
cd $(srcdir) && rm -rf xml html
|
|
|
|
install-data-local:
|
|
-installfiles=`echo $(srcdir)/html/*`; \
|
|
if test "$$installfiles" = '$(srcdir)/html/*'; \
|
|
then echo '-- Nothing to install' ; \
|
|
else \
|
|
$(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
|
|
for i in $$installfiles; do \
|
|
echo '-- Installing '$$i ; \
|
|
$(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
|
|
done; \
|
|
echo '-- Installing $(srcdir)/html/index.sgml' ; \
|
|
$(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
|
|
which gtkdoc-rebase >/dev/null && \
|
|
gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) ; \
|
|
fi
|
|
|
|
|
|
uninstall-local:
|
|
rm -f $(DESTDIR)$(TARGET_DIR)/*
|
|
|
|
#
|
|
# Require gtk-doc when making dist
|
|
#
|
|
if ENABLE_GTK_DOC
|
|
dist-check-gtkdoc:
|
|
else
|
|
dist-check-gtkdoc:
|
|
@echo "*** gtk-doc must be installed (and --enable-gtk-doc) in order to make dist"
|
|
@false
|
|
endif
|
|
|
|
dist-hook: dist-check-gtkdoc dist-hook-local
|
|
mkdir $(distdir)/tmpl
|
|
mkdir $(distdir)/xml
|
|
mkdir $(distdir)/html
|
|
-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
|
|
-cp $(srcdir)/xml/*.xml $(distdir)/xml
|
|
cp $(srcdir)/html/* $(distdir)/html
|
|
-cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
|
|
-cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
|
|
cd $(distdir) && rm -f $(DISTCLEANFILES)
|
|
-gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
|
|
|
|
.PHONY : dist-hook-local docs
|