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() build_system = build_machine.system()
cc = meson.get_compiler('c') cc = meson.get_compiler('c')
documented_projects = ''
# Make it possible to use msys2 built zlib which fails # Make it possible to use msys2 built zlib which fails
# when not using the mingw toolchain as it uses unistd.h # when not using the mingw toolchain as it uses unistd.h
if not meson.is_subproject() and cc.get_id() == 'msvc' if not meson.is_subproject() and cc.get_id() == 'msvc'
@ -32,19 +33,19 @@ endif
# Ordered list of subprojects (dict has no ordering guarantees) # Ordered list of subprojects (dict has no ordering guarantees)
subprojects = [ subprojects = [
['gstreamer', {}], ['gstreamer', {'build-hotdoc': true}],
['gst-plugins-base', {}], ['gst-plugins-base', {'build-hotdoc': true}],
['gst-plugins-good', {}], ['gst-plugins-good', {'build-hotdoc': true}],
['libnice', { 'option': get_option('libnice'), 'match_gst_version': false}], ['libnice', { 'option': get_option('libnice'), 'match_gst_version': false}],
['gst-plugins-bad', { 'option': get_option('bad') }], ['gst-plugins-bad', { 'option': get_option('bad'), 'build-hotdoc': true }],
['gst-plugins-ugly', { 'option': get_option('ugly') }], ['gst-plugins-ugly', { 'option': get_option('ugly'), 'build-hotdoc': true }],
['gst-libav', { 'option': get_option('libav') }], ['gst-libav', { 'option': get_option('libav'), 'build-hotdoc': true }],
['gst-rtsp-server', { 'option': get_option('rtsp_server') }], ['gst-rtsp-server', { 'option': get_option('rtsp_server'), 'build-hotdoc': true }],
['gst-devtools', { 'option': get_option('devtools')}], ['gst-devtools', { 'option': get_option('devtools'), 'build-hotdoc': true }],
['gst-integration-testsuites', { 'option': get_option('devtools') }], ['gst-integration-testsuites', { 'option': get_option('devtools') }],
['gst-editing-services', { 'option': get_option('ges') }], ['gst-editing-services', { 'option': get_option('ges'), 'build-hotdoc': true }],
['gstreamer-vaapi', { 'option': get_option('vaapi') }], ['gstreamer-vaapi', { 'option': get_option('vaapi'), 'build-hotdoc': true }],
['gst-omx', { 'option': get_option('omx'), }], ['gst-omx', { 'option': get_option('omx'), 'build-hotdoc': true, }],
['gstreamer-sharp', { 'option': get_option('sharp') }], ['gstreamer-sharp', { 'option': get_option('sharp') }],
['pygobject', { 'option': get_option('python'), 'match_gst_version': false }], ['pygobject', { 'option': get_option('python'), 'match_gst_version': false }],
['gst-python', { 'option': get_option('python') }], ['gst-python', { 'option': get_option('python') }],
@ -66,6 +67,7 @@ endif
subproject('orc', required: get_option('orc')) subproject('orc', required: get_option('orc'))
subprojects_names = [] subprojects_names = []
all_plugins = []
foreach sp : subprojects foreach sp : subprojects
project_name = sp[0] project_name = sp[0]
build_infos = sp[1] build_infos = sp[1]
@ -79,10 +81,22 @@ foreach sp : subprojects
endif endif
if subproj.found() 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] subprojects_names += [project_name]
cmdres = run_command(python3, '-c', symlink.format(project_name, meson.current_source_dir())) cmdres = run_command(python3, '-c', symlink.format(project_name, meson.current_source_dir()))
if cmdres.returncode() == 0 if cmdres.returncode() == 0
message('Created symlink to ' + project_name) message('Created symlink to ' + project_name)
endif endif
endif endif
endforeach endforeach
@ -95,8 +109,21 @@ foreach custom_subproj: get_option('custom_subprojects').split(',')
endif endif
endforeach 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') setenv = find_program('gst-uninstalled.py')
run_target('uninstalled', command : [setenv, '--builddir=@0@'.format(meson.build_root()), run_target('uninstalled', command : [setenv, '--builddir=@0@'.format(meson.build_root()),
'--srcdir=@0@'.format(meson.source_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 # Common options, automatically inherited by subprojects
option('examples', type : 'feature', value : 'auto', description : 'Build examples') 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('introspection', type : 'feature', value : 'auto', description : 'Generate introspection data')
option('nls', type : 'feature', value : 'auto', description : 'Enable native language support (translations)') 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('orc', type : 'feature', value : 'auto', description : 'Enable Optimized Inner Loop Runtime Compiler')
option('doc', type : 'feature', value : 'auto', description : 'Generate API documentation with hotdoc')