Build documentation with hotdoc

This commit is contained in:
Thibault Saunier 2018-10-28 14:06:35 +00:00
parent dde1b6ef3c
commit 3d24de2f24
2 changed files with 41 additions and 14 deletions

View 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())])

View 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')