mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-04-24 05:40:37 +02:00
Fix distcheck by dropping use of the now-obsolete gtkdoc-mktmpl. In preparation for the upcoming 1.16 release, I've made a few changes to get distcheck to pass. I also updated it to run on Ubuntu 18.04, but found that on newer distros distcheck won't run due to missing gtkdoc-mktmpl, which has been deprecated upstream for some time. The patch below disables everything that references it, and enables distcheck to finish successfully. Unfortunately, this probably regresses portions of our document generation, and thus will need some reimplementation work. Anyone got time to investigate a better solution for this?
173 lines
5.5 KiB
Text
173 lines
5.5 KiB
Text
# BEFORE MODIFYING THIS FILE:
|
|
#
|
|
# This file is a descendant of an old copy of gtk-doc.make, 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
|
|
# - Some other changed introduced in 7f114b781f5c530d57530e5f76402e41cdabac6b
|
|
#
|
|
# Before changing it, check to see if a newer gtk-doc.make has fixed the issue you are facing.
|
|
# From time to time, it would be nice to update this to the latest copy of gtk-doc.make, but
|
|
# please do review all the differences and port our modifications forward.
|
|
#
|
|
|
|
# -*- 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 sgml-build.stamp html-build.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
|
|
|
|
#### 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: $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(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=$(DOC_MODULE) --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)/xml
|
|
mkdir $(distdir)/html
|
|
-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
|