Build documentation with hotdoc
authorThibault Saunier <tsaunier@igalia.com>
Sun, 28 Oct 2018 14:06:35 +0000 (14:06 +0000)
committerThibault Saunier <tsaunier@igalia.com>
Mon, 13 May 2019 15:42:15 +0000 (11:42 -0400)
meson.build
meson_options.txt

index 2fa3f26..5d8070a 100644 (file)
@@ -11,6 +11,7 @@ glib_req = '>= 2.40.0'
 build_system = build_machine.system()
 cc = meson.get_compiler('c')
 
+documented_projects = ''
 # Make it possible to use msys2 built zlib which fails
 # when not using the mingw toolchain as it uses unistd.h
 if not meson.is_subproject() and cc.get_id() == 'msvc'
@@ -32,19 +33,19 @@ endif
 
 # Ordered list of subprojects (dict has no ordering guarantees)
 subprojects = [
-  ['gstreamer', {}],
-  ['gst-plugins-base', {}],
-  ['gst-plugins-good', {}],
+  ['gstreamer', {'build-hotdoc': true}],
+  ['gst-plugins-base', {'build-hotdoc': true}],
+  ['gst-plugins-good', {'build-hotdoc': true}],
   ['libnice', { 'option': get_option('libnice'), 'match_gst_version': false}],
-  ['gst-plugins-bad', { 'option': get_option('bad') }],
-  ['gst-plugins-ugly', { 'option': get_option('ugly') }],
-  ['gst-libav', { 'option': get_option('libav') }],
-  ['gst-rtsp-server', { 'option': get_option('rtsp_server') }],
-  ['gst-devtools', { 'option': get_option('devtools')}],
+  ['gst-plugins-bad', { 'option': get_option('bad'), 'build-hotdoc': true }],
+  ['gst-plugins-ugly', { 'option': get_option('ugly'), 'build-hotdoc': true }],
+  ['gst-libav', { 'option': get_option('libav'), 'build-hotdoc': true }],
+  ['gst-rtsp-server', { 'option': get_option('rtsp_server'), 'build-hotdoc': true }],
+  ['gst-devtools', { 'option': get_option('devtools'), 'build-hotdoc': true }],
   ['gst-integration-testsuites', { 'option': get_option('devtools') }],
-  ['gst-editing-services', { 'option': get_option('ges') }],
-  ['gstreamer-vaapi', { 'option': get_option('vaapi') }],
-  ['gst-omx', { 'option': get_option('omx'), }],
+  ['gst-editing-services', { 'option': get_option('ges'), 'build-hotdoc': true }],
+  ['gstreamer-vaapi', { 'option': get_option('vaapi'), 'build-hotdoc': true }],
+  ['gst-omx', { 'option': get_option('omx'), 'build-hotdoc': true, }],
   ['gstreamer-sharp', { 'option': get_option('sharp') }],
   ['pygobject', { 'option': get_option('python'), 'match_gst_version': false }],
   ['gst-python', { 'option': get_option('python') }],
@@ -66,6 +67,7 @@ endif
 subproject('orc', required: get_option('orc'))
 
 subprojects_names = []
+all_plugins = []
 foreach sp : subprojects
   project_name = sp[0]
   build_infos = sp[1]
@@ -79,10 +81,22 @@ foreach sp : subprojects
   endif
 
   if subproj.found()
+    if build_infos.has_key('build-hotdoc', default: false)
+      foreach plugin: subproj.get_variable('plugins')
+        all_plugins += plugin.full_path()
+      endforeach
+      if documented_projects != ''
+        documented_projects += ','
+      endif
+
+      documented_projects += project_name
+    endif
+    documented_projects  += project_name
+
     subprojects_names += [project_name]
     cmdres = run_command(python3, '-c', symlink.format(project_name, meson.current_source_dir()))
     if cmdres.returncode() == 0
-        message('Created symlink to ' + project_name)
+      message('Created symlink to ' + project_name)
     endif
   endif
 endforeach
@@ -95,8 +109,21 @@ foreach custom_subproj: get_option('custom_subprojects').split(',')
     endif
 endforeach
 
-message('Building subprojects: ' + ', '.join(subprojects_names))
+if build_machine.system() == 'windows'
+  message('Disabling hotdoc while building on Windows')
+else
+  hotdoc_p = find_program('hotdoc', required : get_option('doc'))
+  if hotdoc_p.found()
+    if documented_projects != ''
+        subproject('gst-docs', default_options: 'built_subprojects=' + documented_projects)
+      message('Gst docs subprojects: ' + documented_projects)
+    endif
+  else
+    message('Not building documentation as hotdoc was not found')
+  endif
+endif
 
+message('Building subprojects: ' + ', '.join(subprojects_names))
 setenv = find_program('gst-uninstalled.py')
 run_target('uninstalled', command : [setenv, '--builddir=@0@'.format(meson.build_root()),
           '--srcdir=@0@'.format(meson.source_root())])
index 624979b..6e565bc 100644 (file)
@@ -13,7 +13,7 @@ option('custom_subprojects', type : 'string', value : '', description : 'Comma-s
 
 # Common options, automatically inherited by subprojects
 option('examples', type : 'feature', value : 'auto', description : 'Build examples')
-option('gtk_doc', type : 'feature', value : 'auto', description : 'Generate API documentation with gtk-doc')
 option('introspection', type : 'feature', value : 'auto', description : 'Generate introspection data')
 option('nls', type : 'feature', value : 'auto', description : 'Enable native language support (translations)')
 option('orc', type : 'feature', value : 'auto', description : 'Enable Optimized Inner Loop Runtime Compiler')
+option('doc', type : 'feature', value : 'auto', description : 'Generate API documentation with hotdoc')