doc: Build documentation of hotdoc
authorThibault Saunier <tsaunier@igalia.com>
Fri, 19 Apr 2019 16:38:54 +0000 (12:38 -0400)
committerThibault Saunier <tsaunier@igalia.com>
Mon, 13 May 2019 23:06:28 +0000 (19:06 -0400)
docs/gst_plugins_cache.json [new file with mode: 0644]
docs/index.md [new file with mode: 0644]
docs/meson.build [new file with mode: 0644]
docs/sitemap.txt [new file with mode: 0644]
meson.build
meson_options.txt
omx/meson.build

diff --git a/docs/gst_plugins_cache.json b/docs/gst_plugins_cache.json
new file mode 100644 (file)
index 0000000..ce216d0
--- /dev/null
@@ -0,0 +1,11 @@
+{
+    "omx": {
+        "description": "GStreamer OpenMAX Plug-ins",
+        "elements": {},
+        "filename": "libgstomx.so",
+        "license": "LGPL",
+        "package": "GStreamer OpenMAX Plug-ins",
+        "source": "gst-omx",
+        "url": "Unknown package origin"
+    }
+}
\ No newline at end of file
diff --git a/docs/index.md b/docs/index.md
new file mode 100644 (file)
index 0000000..b5d574b
--- /dev/null
@@ -0,0 +1,3 @@
+---
+short-description: GStreamer plugins from OpenMax
+...
\ No newline at end of file
diff --git a/docs/meson.build b/docs/meson.build
new file mode 100644 (file)
index 0000000..908b4cf
--- /dev/null
@@ -0,0 +1,62 @@
+build_hotdoc = false
+
+if meson.is_cross_build()
+    if get_option('doc').enabled()
+        error('Documentation enabled but building the doc while cross building is not supported yet.')
+    endif
+
+    message('Documentation not built as building the docmentation while cross building is not supported yet.')
+    subdir_done()
+endif
+
+required_hotdoc_extensions = ['gst-extension']
+if gst_dep.type_name() == 'internal'
+    gst_proj = subproject('gstreamer')
+    plugins_cache_generator = gst_proj.get_variable('plugins_cache_generator')
+else
+    required_hotdoc_extensions += ['gst-extension']
+    plugins_cache_generator = find_program(join_paths(gst_dep.get_pkgconfig_variable('libexecdir'), 'gstreamer-' + api_version, 'gst-plugins-doc-cache-generator'),
+        required: false)
+endif
+
+plugins_cache = join_paths(meson.current_source_dir(), 'gst_plugins_cache.json')
+if plugins_cache_generator.found()
+    plugins_doc_dep = custom_target('omx-plugins-doc-cache',
+        command: [plugins_cache_generator, plugins_cache, '@OUTPUT@', '@INPUT@'],
+        input: plugins,
+        output: 'gst_plugins_cache.json',
+    )
+else
+    warning('GStreamer plugin inspector for documentation not found, can\'t update the cache')
+endif
+
+hotdoc_p = find_program('hotdoc', required: get_option('doc'))
+if not hotdoc_p.found()
+    message('Hotdoc not found, not building the documentation')
+    subdir_done()
+endif
+
+build_hotdoc = true
+hotdoc = import('hotdoc')
+if not hotdoc.has_extensions(required_hotdoc_extensions)
+    if get_option('doc').enabled()
+        error('Documentation enabled but gi-extension missing')
+    endif
+
+    message('@0@ extensions not found, not building documentation'.format(required_hotdoc_extensions))
+    subdir_done()
+endif
+
+message('Plugins: @0@'.format(plugins))
+libs_doc = []
+plugins_doc = [hotdoc.generate_doc('omx',
+    project_version: api_version,
+    sitemap: 'sitemap.txt',
+    index: 'index.md',
+    gst_index: 'index.md',
+    gst_smart_index: true,
+    gst_c_sources: ['../gst/*/*.[ch]',],
+    gst_cache_file: plugins_cache,
+    gst_plugin_name: 'omx',
+    dependencies: [gstomx],
+)]
diff --git a/docs/sitemap.txt b/docs/sitemap.txt
new file mode 100644 (file)
index 0000000..058a271
--- /dev/null
@@ -0,0 +1 @@
+gst-index
index 8528fda..1bd8a70 100644 (file)
@@ -399,6 +399,7 @@ endif
 if not get_option('tests').disabled() and gstcheck_dep.found()
   subdir('tests')
 endif
+subdir('docs')
 
 python3 = find_program('python3')
 run_command(python3, '-c', 'import shutil; shutil.copy("hooks/pre-commit.hook", ".git/hooks/pre-commit")')
index 75985ce..e18beb2 100644 (file)
@@ -11,3 +11,4 @@ option('struct_packing', type : 'combo',
 option('examples', type : 'feature', value : 'auto', yield : true)
 option('tests', type : 'feature', value : 'auto', yield : true)
 option('tools', type : 'feature', value : 'auto', yield : true)
+option('doc', type : 'feature', value : 'auto', yield : true)
index 1bcebf5..becb72f 100644 (file)
@@ -59,3 +59,5 @@ gstomx = library('gstomx',
   install : true,
   install_dir : plugins_install_dir,
 )
+
+plugins = [gstomx]
\ No newline at end of file