[Libguestfs] [PATCH] gobject: Add infrastructure to build gtk-doc

Richard W.M. Jones rjones at redhat.com
Tue Mar 27 16:20:58 UTC 2012


On Tue, Mar 27, 2012 at 04:48:21PM +0100, Matthew Booth wrote:
> ---
>  configure.ac                      |   22 ++-
>  gobject/Makefile.am               |    2 +
>  gobject/docs/.gitignore           |   24 ++
>  gobject/docs/Makefile.am          |  111 ++++++
>  gobject/docs/gtk-doc.make         |    1 +
>  gobject/docs/guestfs-docs.sgml.in |   38 ++
>  gobject/docs/guestfs-sections.txt |  689 +++++++++++++++++++++++++++++++++++++
>  m4/gtk-doc.m4                     |    1 +
>  8 files changed, 887 insertions(+), 1 deletions(-)
>  create mode 100644 gobject/docs/.gitignore
>  create mode 100644 gobject/docs/Makefile.am
>  create mode 120000 gobject/docs/gtk-doc.make
>  create mode 100644 gobject/docs/guestfs-docs.sgml.in
>  create mode 100644 gobject/docs/guestfs-sections.txt
>  create mode 120000 m4/gtk-doc.m4
> 
> diff --git a/configure.ac b/configure.ac
> index 1214107..8561d67 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1086,9 +1086,20 @@ AS_IF(
>        ],
>        [AC_MSG_WARN([gobject library not found, gobject binding will be disabled])]
>      )
> +
> +    PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26.0],
> +      [
> +        AC_SUBST([GIO_CFLAGS])
> +        AC_SUBST([GIO_LIBS])
> +        AC_DEFINE([HAVE_GIO],[1],
> +                  [gio library found at compile time.])
> +      ],
> +      [AC_MSG_WARN([gio library not found, gobject binding will be disabled])]
> +    )
>    ]
>  )
> -AM_CONDITIONAL([HAVE_GOBJECT],[test "x$GOBJECT_LIBS" != "x"])
> +AM_CONDITIONAL([HAVE_GOBJECT],
> +               [test "x$GOBJECT_LIBS" != "x" -a "x$GIO_LIBS" != "x"])
>  
>  AC_CHECK_PROG([GJS],[gjs],[gjs])
>  AS_IF(
> @@ -1107,6 +1118,13 @@ AM_CONDITIONAL([HAVE_INTROSPECTION],
>                 [test "x$HAVE_INTROSPECTION_TRUE" = "x" &&
>                  test "x$HAVE_GOBJECT_TRUE" = "x"])
>  
> +# check for gtk-doc
> +m4_ifdef([GTK_DOC_CHECK], [
> +GTK_DOC_CHECK([1.14],[--flavour no-tmpl])
> +],[
> +AM_CONDITIONAL([ENABLE_GTK_DOC], false)
> +])
> +
>  dnl Library versioning.
>  MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
>  AC_SUBST(MAX_PROC_NR)
> @@ -1146,6 +1164,8 @@ AC_CONFIG_FILES([Makefile
>                   gnulib/lib/Makefile
>                   gnulib/tests/Makefile
>                   gobject/Makefile
> +                 gobject/docs/Makefile
> +                 gobject/docs/guestfs-docs.sgml
>                   haskell/Makefile
>                   inspector/Makefile
>                   java/Makefile
> diff --git a/gobject/Makefile.am b/gobject/Makefile.am
> index 7f0a8ef..bc479ac 100644
> --- a/gobject/Makefile.am
> +++ b/gobject/Makefile.am
> @@ -15,6 +15,8 @@
>  # along with this program; if not, write to the Free Software
>  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>  
> +SUBDIRS = . docs
> +
>  BUILT_SOURCES = \
>  	guestfs-gobject.h \
>  	guestfs-gobject.c \
> diff --git a/gobject/docs/.gitignore b/gobject/docs/.gitignore
> new file mode 100644
> index 0000000..735fd55
> --- /dev/null
> +++ b/gobject/docs/.gitignore
> @@ -0,0 +1,24 @@
> +/guestfs.args
> +/guestfs-decl-list.txt
> +/guestfs-decl.txt
> +/guestfs-docs.sgml
> +/guestfs.hierarchy
> +/guestfs.interfaces
> +/guestfs-overrides.txt
> +/guestfs.prerequisites
> +/guestfs.signals
> +/guestfs.types
> +/guestfs-undeclared.txt
> +/guestfs-undocumented.txt
> +/guestfs-unused.txt
> +/html/
> +/html-build.stamp
> +/html.stamp
> +/scan-build.stamp
> +/setup-build.stamp
> +/sgml-build.stamp
> +/sgml.stamp
> +/tmpl/
> +/tmpl-build.stamp
> +/tmpl.stamp
> +/xml/
> diff --git a/gobject/docs/Makefile.am b/gobject/docs/Makefile.am
> new file mode 100644
> index 0000000..94b7a2a
> --- /dev/null
> +++ b/gobject/docs/Makefile.am
> @@ -0,0 +1,111 @@
> +# libguestfs
> +# Copyright (C) 2012 Red Hat Inc.
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> +
> +# The name of the module, e.g. 'glib'.
> +DOC_MODULE=guestfs
> +
> +# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
> +#DOC_MODULE_VERSION=2
> +
> +# The top-level SGML file. You can change this if you want to.
> +DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
> +
> +# Directories containing the source code.
> +# gtk-doc will search all .c and .h files beneath these paths
> +# for inline comments documenting functions and macros.
> +# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk
> +DOC_SOURCE_DIR=$(srcdir)/..
> +
> +# Extra options to pass to gtkdoc-scangobj. Not normally needed.
> +SCANGOBJ_OPTIONS=
> +
> +# Extra options to supply to gtkdoc-scan.
> +# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
> +SCAN_OPTIONS=--rebuild-sections --rebuild-types
> +
> +# Extra options to supply to gtkdoc-mkdb.
> +# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
> +MKDB_OPTIONS=--xml-mode --output-format=xml
> +
> +# Extra options to supply to gtkdoc-mktmpl
> +# e.g. MKTMPL_OPTIONS=--only-section-tmpl
> +MKTMPL_OPTIONS=
> +
> +# Extra options to supply to gtkdoc-mkhtml
> +MKHTML_OPTIONS=
> +
> +# Extra options to supply to gtkdoc-fixref. Not normally needed.
> +# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
> +FIXXREF_OPTIONS=
> +
> +# Used for dependencies. The docs will be rebuilt if any of these change.
> +# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
> +# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
> +HFILE_GLOB=$(srcdir)/../*.h
> +CFILE_GLOB=$(srcdir)/../*.c
> +
> +# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
> +# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
> +EXTRA_HFILES=
> +
> +# Header files or dirs to ignore when scanning. Use base file/dir names
> +# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
> +IGNORE_HFILES=
> +
> +# Images to copy into HTML directory.
> +# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
> +HTML_IMAGES=
> +
> +# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
> +# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
> +content_files=
> +
> +# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
> +# These files must be listed here *and* in content_files
> +# e.g. expand_content_files=running.sgml
> +expand_content_files=
> +
> +# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
> +# Only needed if you are using gtkdoc-scangobj to dynamically query widget
> +# signals and properties.
> +# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
> +# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
> +GTKDOC_CFLAGS=$(GOBJECT_CFLAGS) $(GIO_CFLAGS)
> +GTKDOC_LIBS=$(GOBJECT_LIBS) $(GIO_LIBS) $(builddir)/../libguestfs-gobject-1.0.la
> +
> +# This includes the standard gtk-doc make rules, copied by gtkdocize.
> +include $(srcdir)/gtk-doc.make
> +
> +# Other files to distribute
> +# e.g. EXTRA_DIST += version.xml.in
> +EXTRA_DIST +=
> +
> +# Files not to distribute
> +# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
> +# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
> +#DISTCLEANFILES +=
> +
> +# Comment this out if you want 'make check' to test doc status
> +# and run some sanity checks
> +if ENABLE_GTK_DOC
> +TESTS_ENVIRONMENT = cd $(srcdir) && \
> +  DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
> +  SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
> +#TESTS = $(GTKDOC_CHECK)
> +endif
> +
> +-include $(top_srcdir)/git.mk
> diff --git a/gobject/docs/gtk-doc.make b/gobject/docs/gtk-doc.make
> new file mode 120000
> index 0000000..0870846
> --- /dev/null
> +++ b/gobject/docs/gtk-doc.make
> @@ -0,0 +1 @@
> +/usr/share/gtk-doc/data/gtk-doc.make
> \ No newline at end of file
> diff --git a/gobject/docs/guestfs-docs.sgml.in b/gobject/docs/guestfs-docs.sgml.in
> new file mode 100644
> index 0000000..0037864
> --- /dev/null
> +++ b/gobject/docs/guestfs-docs.sgml.in
> @@ -0,0 +1,38 @@
> +<?xml version="1.0"?>
> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
> +               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
> +[
> +  <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
> +]>
> +<book id="index">
> +  <bookinfo>
> +    <title>Libguestfs GObject Bindings Reference Manual</title>
> +    <releaseinfo>
> +      for libguestfs @VERSION at .
> +      <!--
> +      The latest version of this documentation can be found on-line at
> +      <ulink role="online-location" url="http://[SERVER]/guestfs/index.html">http://[SERVER]/guestfs/</ulink>.
> +      -->
> +    </releaseinfo>
> +  </bookinfo>
> +
> +  <chapter>
> +    <title>Libguestfs GObject Bindings</title>
> +        <xi:include href="xml/guestfs-gobject.xml"/>
> +
> +  </chapter>
> +  <chapter id="object-tree">
> +    <title>Object Hierarchy</title>
> +     <xi:include href="xml/tree_index.sgml"/>
> +  </chapter>
> +  <index id="api-index-full">
> +    <title>API Index</title>
> +    <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
> +  </index>
> +  <index id="deprecated-api-index" role="deprecated">
> +    <title>Index of deprecated API</title>
> +    <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
> +  </index>
> +
> +  <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
> +</book>
> diff --git a/gobject/docs/guestfs-sections.txt b/gobject/docs/guestfs-sections.txt
> new file mode 100644
> index 0000000..19b0de8
> --- /dev/null
> +++ b/gobject/docs/guestfs-sections.txt
> @@ -0,0 +1,689 @@
> +<SECTION>
> +<FILE>guestfs-gobject</FILE>
> +<TITLE>GuestfsAddDomain</TITLE>
> +<TITLE>GuestfsAddDriveOpts</TITLE>

Apart from this last file, the patch is OK.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org




More information about the Libguestfs mailing list