diff --git a/meson.build b/meson.build index 2fa3f26877..5d8070a4a6 100644 --- a/meson.build +++ b/meson.build @@ -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())]) diff --git a/meson_options.txt b/meson_options.txt index 624979b621..6e565bcf76 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -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')