diff --git a/Makefile.am b/Makefile.am
index 733050f6db..5f1e34875b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
# Point to our macro directory and pick up user flags from the environment
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-SUBDIRS = data js src tests po man files
+SUBDIRS = data js src tests po man files docs
EXTRA_DIST = \
.project \
diff --git a/configure.ac b/configure.ac
index 86e02425e5..f89081400c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -221,10 +221,17 @@ AC_SUBST(CINNAMON_SYSTEM_CA_FILE,["$with_ca_certificates"])
BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
+GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
AC_CONFIG_FILES([
Makefile
data/Makefile
data/icons/Makefile
+ docs/Makefile
+ docs/reference/Makefile
+ docs/reference/cinnamon/Makefile
+ docs/reference/cinnamon/cinnamon-docs.sgml
+ docs/reference/st/Makefile
+ docs/reference/st/st-docs.sgml
js/Makefile
js/misc/config.js
src/Makefile
diff --git a/debian/cinnamon-doc.install b/debian/cinnamon-doc.install
new file mode 100644
index 0000000000..e0ba7d7773
--- /dev/null
+++ b/debian/cinnamon-doc.install
@@ -0,0 +1 @@
+/usr/share/gtk-doc
diff --git a/debian/control b/debian/control
index 503c98a0d5..97c618b4a5 100644
--- a/debian/control
+++ b/debian/control
@@ -38,7 +38,8 @@ Build-Depends: debhelper (>= 8),
libxss-dev,
libpulse-dev,
libpolkit-agent-1-dev (>= 0.100),
- libjson-glib-dev (>= 0.13.2)
+ libjson-glib-dev (>= 0.13.2),
+ gtk-doc-tools
Standards-Version: 3.9.1
Homepage: http://cinnamon.linuxmint.com
@@ -121,3 +122,12 @@ Description: Cinnamon desktop (Common data files)
Cinnamon is a modern Linux desktop which provides advanced innovative features and a traditional user experience. It's easy to use, powerful and flexible.
.
This package contains the architecture independent files needed by Cinnamon
+
+Package: cinnamon-doc
+Section: doc
+Architecture: all
+Depends: ${misc:Depends}, devhelp
+Description: Cinnamon documentation
+ Cinnamon is a modern Linux desktop which provides advanced innovative features and a traditional user experience. It's easy to use, powerful and flexible.
+ .
+ This package contains the code documentation for various Cinnamon components.
diff --git a/debian/rules b/debian/rules
index fc7307eeb4..7b6e9b075d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -29,7 +29,8 @@ override_dh_autoreconf:
override_dh_auto_configure:
dh_auto_configure -- --enable-compile-warnings=yes \
- --disable-schemas-install
+ --disable-schemas-install\
+ --enable-gtk-doc
# Disable checks since they are not functional for the moment
override_dh_auto_test:
diff --git a/docs/Makefile.am b/docs/Makefile.am
new file mode 100644
index 0000000000..f3ddc22ddc
--- /dev/null
+++ b/docs/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = reference
diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am
new file mode 100644
index 0000000000..1185c640c4
--- /dev/null
+++ b/docs/reference/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = cinnamon st
diff --git a/docs/reference/cinnamon/Makefile.am b/docs/reference/cinnamon/Makefile.am
new file mode 100644
index 0000000000..cda9434f41
--- /dev/null
+++ b/docs/reference/cinnamon/Makefile.am
@@ -0,0 +1,114 @@
+## Process this file with automake to produce Makefile.in
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE=cinnamon
+
+# 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.
+DOC_SOURCE_DIR=$(top_srcdir)/src
+
+# 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-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=$(top_srcdir)/src/*.h
+CFILE_GLOB=$(top_srcdir)/src/*.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= \
+ calendar-server \
+ gvc \
+ hotplug-sniffer \
+ st \
+ tray \
+ gactionmuxer.h \
+ gactionobservable.h \
+ gactionobserver.h \
+ cinnamon-network-agent.h \
+ cinnamon-recorder-src.h
+
+if !BUILD_RECORDER
+IGNORE_HFILES += cinnamon-recorder.h
+endif
+
+# Images to copy into HTML directory.
+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
+HTML_IMAGES=
+
+# 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=$(GNOME_SHELL_CFLAGS)
+GTKDOC_LIBS=$(GNOME_SHELL_LIBS) $(top_builddir)/src/libcinnamon.la
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+include $(top_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 = $(DOC_MODULES).types
+
+# Comment this out if you want 'make check' to test you 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/docs/reference/cinnamon/cinnamon-docs.sgml.in b/docs/reference/cinnamon/cinnamon-docs.sgml.in
new file mode 100644
index 0000000000..4b94f8a380
--- /dev/null
+++ b/docs/reference/cinnamon/cinnamon-docs.sgml.in
@@ -0,0 +1,62 @@
+
+
+]>
+
+
+ Cinnamon Reference Manual
+
+ for Cinnamon @VERSION@.
+
+
+
+
+ Actors
+
+
+
+
+
+ Application tracking
+
+
+
+
+ Search
+
+
+
+ Tray Icons
+
+
+
+
+
+
+ Recorder
+
+
+
+ Integration helpers and utilities
+
+
+
+
+
+
+ Object Hierarchy
+
+
+
+ API Index
+
+
+
+ Index of deprecated API
+
+
+
+
+
diff --git a/docs/reference/st/Makefile.am b/docs/reference/st/Makefile.am
new file mode 100644
index 0000000000..9a5efd045c
--- /dev/null
+++ b/docs/reference/st/Makefile.am
@@ -0,0 +1,104 @@
+## Process this file with automake to produce Makefile.in
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE=st
+
+# 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.
+DOC_SOURCE_DIR=$(top_srcdir)/src/st
+
+# 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-types --rebuild-sections
+
+# 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=$(top_srcdir)/src/st/*.h
+CFILE_GLOB=$(top_srcdir)/src/st/*.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=st-private.h st-theme-node-private.h
+
+# 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=
+GTKDOC_LIBS=$(top_builddir)/src/libst-1.0.la
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+include $(top_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 = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt
+
+# Comment this out if you want 'make check' to test you 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/docs/reference/st/st-docs.sgml.in b/docs/reference/st/st-docs.sgml.in
new file mode 100644
index 0000000000..22d1db444c
--- /dev/null
+++ b/docs/reference/st/st-docs.sgml.in
@@ -0,0 +1,64 @@
+
+
+]>
+
+
+ St Reference Manual
+
+ for St @VERSION@.
+
+
+
+
+
+ API reference
+
+ Abstract classes and Interfaces
+
+
+
+
+
+ Widgets
+
+
+
+
+
+
+
+ Containers
+
+
+
+
+
+
+
+ Styling
+
+
+
+
+
+
+
+
+ Object Hierarchy
+
+
+
+ API Index
+
+
+
+ Index of deprecated API
+
+
+
+
+