mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 15:08:53 +00:00
docs: generate hotdoc configs for libraries with our helper script
With this patch, configure time is identical no matter whether doc is enabled or not. The configuration files also now contain explicitly-listed sources with no wildcards. For the four libraries where hotdoc needs to use clang to generate the documentation (as opposed to the rest of the libraries where hotdoc uses the gir), the script will call pkg-config to determine the appropriate C flags. This means a side effect of this patch is that pkg-config files are now generated for the gstadaptivedemux and gstopencv libraries. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312>
This commit is contained in:
parent
17e53f8c95
commit
7983ecff1c
49 changed files with 901 additions and 551 deletions
|
@ -31,25 +31,15 @@ if not build_gir
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
hotdoc_p = find_program('hotdoc', required: get_option('doc'))
|
if gst_dep.type_name() == 'internal'
|
||||||
if not hotdoc_p.found()
|
gst_proj = subproject('gstreamer')
|
||||||
message('Hotdoc not found, not building the documentation')
|
plugins_cache_generator = gst_proj.get_variable('plugins_cache_generator')
|
||||||
subdir_done()
|
else
|
||||||
|
plugins_cache_generator = find_program('gst-plugins-doc-cache-generator',
|
||||||
|
dirs: [join_paths(gst_dep.get_variable('libexecdir', default_value: ''), 'gstreamer-' + api_version)],
|
||||||
|
required: false)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
required_hotdoc_extensions = ['gi-extension']
|
|
||||||
hotdoc = import('hotdoc')
|
|
||||||
foreach extension: required_hotdoc_extensions
|
|
||||||
if not hotdoc.has_extensions(extension)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but @0@ missing'.format(extension))
|
|
||||||
endif
|
|
||||||
|
|
||||||
message('@0@ extension not found, not building documentation'.format(extension))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
excludes = ['gettext.h',
|
excludes = ['gettext.h',
|
||||||
'gst-validate-internal.h',
|
'gst-validate-internal.h',
|
||||||
'gst-validate-i18n-lib.c'
|
'gst-validate-i18n-lib.c'
|
||||||
|
@ -62,18 +52,41 @@ foreach f: excludes
|
||||||
'validate', 'gst', 'validate', f)]
|
'validate', 'gst', 'validate', f)]
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
validate_sources = gstvalidate_headers + gstvalidate_sources
|
cdir = meson.current_source_dir()
|
||||||
hotdoc = import('hotdoc')
|
doc_sources = []
|
||||||
libs_doc = [hotdoc.generate_doc('gst-devtools',
|
foreach s: gstvalidate_headers + gstvalidate_sources
|
||||||
project_version: api_version,
|
doc_sources += s.full_path()
|
||||||
sitemap: 'sitemap.txt',
|
endforeach
|
||||||
index: 'index.md',
|
|
||||||
gi_c_sources: validate_sources,
|
lib_sources = {
|
||||||
gi_c_source_filters: validate_excludes,
|
'validate': pathsep.join(doc_sources)
|
||||||
gi_index: 'gi-index.md',
|
}
|
||||||
gi_smart_index: true,
|
|
||||||
gi_sources: [validate_gir[0].full_path()],
|
lib_doc_source_file = configure_file(
|
||||||
disable_incremental_build: true,
|
output: 'lib_doc_sources.json',
|
||||||
dependencies : [validate_dep],
|
configuration: lib_sources,
|
||||||
depends: validate_gir[0],
|
output_format: 'json')
|
||||||
)]
|
|
||||||
|
lib_doc_gi_source_file = configure_file(
|
||||||
|
output: 'lib_doc_gi_sources.json',
|
||||||
|
configuration: {'validate': validate_gir[0].full_path()},
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
lib_hotdoc_config = custom_target(
|
||||||
|
'build-gst-hotdoc-configs',
|
||||||
|
command: [
|
||||||
|
plugins_cache_generator,
|
||||||
|
'hotdoc-lib-config',
|
||||||
|
'--srcdir', cdir,
|
||||||
|
'--builddir', meson.current_build_dir(),
|
||||||
|
'--buildroot', meson.global_build_root(),
|
||||||
|
'--project_version', api_version,
|
||||||
|
'--gi_source_file', lib_doc_gi_source_file,
|
||||||
|
'--gi_c_source_file', lib_doc_source_file,
|
||||||
|
'--gi_c_source_filters', validate_excludes,
|
||||||
|
'--source_root', cdir,
|
||||||
|
'--gi_source_root', cdir / '..' / 'validate' / 'gst' / 'validate',
|
||||||
|
'--output', '@OUTPUT@',
|
||||||
|
],
|
||||||
|
output: 'hotdoc-lib-configs.json',
|
||||||
|
)
|
||||||
|
|
|
@ -62,6 +62,7 @@ plugins_doc = ''
|
||||||
deps = []
|
deps = []
|
||||||
plugins_sitemap = ''
|
plugins_sitemap = ''
|
||||||
plugin_configs = []
|
plugin_configs = []
|
||||||
|
libs_configs = []
|
||||||
if built_subprojects != ''
|
if built_subprojects != ''
|
||||||
foreach project_name: built_subprojects.split(',')
|
foreach project_name: built_subprojects.split(',')
|
||||||
sub = subproject(project_name)
|
sub = subproject(project_name)
|
||||||
|
@ -86,6 +87,10 @@ if built_subprojects != ''
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
plugin_configs += sub.get_variable('plugin_hotdoc_configs', [])
|
plugin_configs += sub.get_variable('plugin_hotdoc_configs', [])
|
||||||
|
|
||||||
|
# Handle the GStreamer special case with two custom targets
|
||||||
|
libs_configs += sub.get_variable('lib_hotdoc_config', [])
|
||||||
|
libs_configs += sub.get_variable('libs_hotdoc_configs', [])
|
||||||
else
|
else
|
||||||
message('@0@ did not build hotdoc documentation, can\'t build API doc'.format(project_name))
|
message('@0@ did not build hotdoc documentation, can\'t build API doc'.format(project_name))
|
||||||
endif
|
endif
|
||||||
|
@ -106,7 +111,8 @@ sitemap = custom_target(command: [
|
||||||
'--markdown-index', 'gi-index',
|
'--markdown-index', 'gi-index',
|
||||||
'--libs', libs,
|
'--libs', libs,
|
||||||
'--plugins', plugins_doc,
|
'--plugins', plugins_doc,
|
||||||
'--plugin-configs', plugin_configs],
|
'--plugin-configs', plugin_configs,
|
||||||
|
'--lib-configs', libs_configs],
|
||||||
input: 'sitemap.txt',
|
input: 'sitemap.txt',
|
||||||
output: 'sitemap.txt')
|
output: 'sitemap.txt')
|
||||||
deps += [sitemap]
|
deps += [sitemap]
|
||||||
|
|
|
@ -13,32 +13,44 @@ if __name__ == "__main__":
|
||||||
parser.add_argument('--libs', type=str)
|
parser.add_argument('--libs', type=str)
|
||||||
parser.add_argument('--plugins', type=str)
|
parser.add_argument('--plugins', type=str)
|
||||||
parser.add_argument('--plugin-configs', nargs='*', default=[])
|
parser.add_argument('--plugin-configs', nargs='*', default=[])
|
||||||
|
parser.add_argument('--lib-configs', nargs='*', default=[])
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
in_ = args.input_sitemap
|
in_ = args.input_sitemap
|
||||||
out = args.output_sitemap
|
out = args.output_sitemap
|
||||||
index_md = args.markdown_index
|
index_md = args.markdown_index
|
||||||
libs = args.libs
|
|
||||||
plugins = args.plugins
|
plugins = args.plugins
|
||||||
plugin_configs = args.plugin_configs
|
plugin_configs = args.plugin_configs
|
||||||
|
lib_configs = args.lib_configs
|
||||||
|
|
||||||
with open(in_) as f:
|
with open(in_) as f:
|
||||||
index = f.read()
|
index = f.read()
|
||||||
index = '\n'.join(line for line in index.splitlines())
|
index = '\n'.join(line for line in index.splitlines())
|
||||||
|
|
||||||
|
if args.libs is None:
|
||||||
|
libs = []
|
||||||
|
else:
|
||||||
|
libs = args.libs.split(os.pathsep)
|
||||||
|
for config in lib_configs:
|
||||||
|
with open(config) as f:
|
||||||
|
libs += json.load(f)
|
||||||
|
plugins = plugins.replace('\n', '').split(os.pathsep)
|
||||||
|
for config in plugin_configs:
|
||||||
|
with open(config) as f:
|
||||||
|
plugins += json.load(f)
|
||||||
|
plugins = sorted(plugins, key=lambda x: os.path.basename(x))
|
||||||
|
|
||||||
if libs:
|
if libs:
|
||||||
libs = libs.split(os.pathsep)
|
|
||||||
plugins = plugins.replace('\n', '').split(os.pathsep)
|
|
||||||
for config in plugin_configs:
|
|
||||||
with open(config) as f:
|
|
||||||
plugins += json.load(f)
|
|
||||||
plugins = sorted(plugins, key=lambda x: os.path.basename(x))
|
|
||||||
index += '\n\tlibs.md'
|
index += '\n\tlibs.md'
|
||||||
for lib in libs:
|
for lib in libs:
|
||||||
if not lib:
|
if not lib:
|
||||||
continue
|
continue
|
||||||
index += "\n\t\t" + lib + '.json'
|
name = lib
|
||||||
|
if not name.endswith('.json'):
|
||||||
|
name += '.json'
|
||||||
|
index += "\n\t\t" + name
|
||||||
|
if plugins:
|
||||||
index += '\n\tgst-index'
|
index += '\n\tgst-index'
|
||||||
for plugin in plugins:
|
for plugin in plugins:
|
||||||
if not plugin:
|
if not plugin:
|
||||||
|
|
|
@ -52,34 +52,6 @@ endif
|
||||||
if get_option('doc').disabled()
|
if get_option('doc').disabled()
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
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
|
|
||||||
|
|
||||||
hotdoc_req = '>= 0.11.0'
|
|
||||||
hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout()
|
|
||||||
if not hotdoc_version.version_compare(hotdoc_req)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
else
|
|
||||||
message('Hotdoc version @0@ not found, got @1@, not building documentation'.format(hotdoc_req, hotdoc_version))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
hotdoc = import('hotdoc')
|
|
||||||
required_hotdoc_extensions = ['gi-extension', 'gst-extension']
|
|
||||||
foreach extension: required_hotdoc_extensions
|
|
||||||
if not hotdoc.has_extensions(extension)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but gi-extension missing')
|
|
||||||
endif
|
|
||||||
|
|
||||||
message('@0@ extensions not found, not building documentation requiring it'.format(extension))
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
build_hotdoc = true
|
build_hotdoc = true
|
||||||
ges_excludes = []
|
ges_excludes = []
|
||||||
|
@ -98,23 +70,44 @@ foreach f: ['gesmarshal.*',
|
||||||
ges_excludes += [join_paths(meson.current_source_dir(), '..', '..', 'ges', f)]
|
ges_excludes += [join_paths(meson.current_source_dir(), '..', '..', 'ges', f)]
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
hotdoc = import('hotdoc')
|
cdir = meson.current_source_dir()
|
||||||
libs_doc = [hotdoc.generate_doc('gst-editing-services',
|
doc_sources = []
|
||||||
project_version: api_version,
|
foreach s: ges_headers + ges_sources
|
||||||
extra_assets: [join_paths(meson.current_source_dir(), 'images')],
|
doc_sources += s.full_path()
|
||||||
gi_c_sources: ges_sources + ges_headers,
|
endforeach
|
||||||
gi_c_source_roots: [join_paths(meson.current_source_dir(), '../ges/')],
|
|
||||||
gi_sources: [ges_gir[0].full_path()],
|
lib_sources = {
|
||||||
gi_c_source_filters: ges_excludes,
|
'ges': pathsep.join(doc_sources)
|
||||||
sitemap: 'sitemap.txt',
|
}
|
||||||
index: 'index.md',
|
|
||||||
gi_index: 'index.md',
|
lib_doc_source_file = configure_file(
|
||||||
gi_smart_index: true,
|
output: 'lib_doc_sources.json',
|
||||||
gi_order_generated_subpages: true,
|
configuration: lib_sources,
|
||||||
dependencies: [ges_dep],
|
output_format: 'json')
|
||||||
disable_incremental_build: true,
|
|
||||||
depends: ges_gir[0],
|
lib_doc_gi_source_file = configure_file(
|
||||||
)]
|
output: 'lib_doc_gi_sources.json',
|
||||||
|
configuration: {'ges': ges_gir[0].full_path()},
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
lib_hotdoc_config = custom_target(
|
||||||
|
'build-gst-hotdoc-configs',
|
||||||
|
command: [
|
||||||
|
plugins_cache_generator,
|
||||||
|
'hotdoc-lib-config',
|
||||||
|
'--srcdir', cdir,
|
||||||
|
'--builddir', meson.current_build_dir(),
|
||||||
|
'--buildroot', meson.global_build_root(),
|
||||||
|
'--project_version', api_version,
|
||||||
|
'--gi_source_file', lib_doc_gi_source_file,
|
||||||
|
'--gi_c_source_file', lib_doc_source_file,
|
||||||
|
'--gi_c_source_filters', ges_excludes,
|
||||||
|
'--source_root', cdir,
|
||||||
|
'--gi_source_root', cdir / '..' / 'ges',
|
||||||
|
'--output', '@OUTPUT@',
|
||||||
|
],
|
||||||
|
output: 'hotdoc-lib-configs.json',
|
||||||
|
)
|
||||||
|
|
||||||
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
||||||
|
|
||||||
|
|
|
@ -43,40 +43,7 @@ if get_option('doc').disabled()
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
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
|
|
||||||
|
|
||||||
hotdoc_req = '>= 0.11.0'
|
|
||||||
hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout()
|
|
||||||
if not hotdoc_version.version_compare(hotdoc_req)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
else
|
|
||||||
message('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
build_hotdoc = true
|
build_hotdoc = true
|
||||||
hotdoc = import('hotdoc')
|
|
||||||
docconf = configuration_data()
|
|
||||||
docconf.set('GST_API_VERSION', api_version)
|
|
||||||
|
|
||||||
required_hotdoc_extensions = ['gst-extension']
|
|
||||||
foreach extension: required_hotdoc_extensions
|
|
||||||
if not hotdoc.has_extensions(extension)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but gi-extension missing')
|
|
||||||
endif
|
|
||||||
|
|
||||||
message('@0@ extensions not found, not building documentation requiring it'.format(extension))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
||||||
|
|
||||||
|
|
|
@ -54,36 +54,6 @@ if get_option('doc').disabled()
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
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
|
|
||||||
|
|
||||||
hotdoc_req = '>= 0.11.0'
|
|
||||||
hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout()
|
|
||||||
if not hotdoc_version.version_compare(hotdoc_req)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
else
|
|
||||||
message('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
hotdoc = import('hotdoc')
|
|
||||||
required_hotdoc_extensions = ['gi-extension', 'c-extension', 'gst-extension']
|
|
||||||
foreach extension: required_hotdoc_extensions
|
|
||||||
if not hotdoc.has_extensions(extension)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but @0@ missing'.format(extension))
|
|
||||||
endif
|
|
||||||
|
|
||||||
message('@0@ extensions not found, not building documentation requiring it'.format(extension))
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
build_hotdoc = true
|
build_hotdoc = true
|
||||||
|
|
||||||
docconf = configuration_data()
|
docconf = configuration_data()
|
||||||
|
@ -124,125 +94,83 @@ foreach f: [
|
||||||
excludes += [join_paths(meson.current_source_dir(), root_rel, f)]
|
excludes += [join_paths(meson.current_source_dir(), root_rel, f)]
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
libs_doc_source_file = configure_file(
|
||||||
|
output: 'libs_doc_sources.json',
|
||||||
|
configuration: libs_sources,
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
libs_doc_c_source_file = configure_file(
|
||||||
|
output: 'libs_doc_c_sources.json',
|
||||||
|
configuration: libs_c_sources,
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
libs_doc_gi_conf = {}
|
||||||
|
|
||||||
libs = []
|
libs = []
|
||||||
if build_gir
|
if build_gir
|
||||||
libs = [
|
libs_doc_gi_conf += {
|
||||||
{'name': 'mpegts', 'gir': mpegts_gir, 'lib': gstmpegts_dep},
|
'mpegts': mpegts_gir[0].full_path(),
|
||||||
{'name': 'play', 'gir': play_gir, 'lib': gstplay_dep},
|
'play': play_gir[0].full_path(),
|
||||||
{'name': 'player', 'gir': player_gir, 'lib': gstplayer_dep},
|
'player': player_gir[0].full_path(),
|
||||||
{'name': 'insertbin', 'gir': insertbin_gir, 'lib': gstinsertbin_dep},
|
'insertbin': insertbin_gir[0].full_path(),
|
||||||
{'name': 'codecparsers', 'lib': gstcodecparsers_dep},
|
'basecamerabinsrc': basecamerabin_gir[0].full_path(),
|
||||||
{'name': 'adaptivedemux', 'lib': gstadaptivedemux_dep},
|
'webrtc': webrtc_gir[0].full_path(),
|
||||||
{'name': 'basecamerabinsrc', 'gir': basecamerabin_gir, 'lib': gstbasecamerabin_dep},
|
'audio': audio_gir[0].full_path(),
|
||||||
{'name': 'webrtc', 'gir': webrtc_gir, 'lib': gstwebrtc_dep, 'suffix': 'lib'},
|
'transcoder': transcoder_gir[0].full_path(),
|
||||||
{'name': 'audio', 'gir': audio_gir, 'lib': gstbadaudio_dep, 'prefix': 'bad-'},
|
'codecs': codecs_gir[0].full_path(),
|
||||||
{'name': 'transcoder', 'gir': transcoder_gir, 'lib': gst_transcoder_dep},
|
'dxva': dxva_gir[0].full_path(),
|
||||||
{'name': 'codecs', 'gir': codecs_gir, 'lib': gstcodecs_dep},
|
'mse': mse_gir[0].full_path(),
|
||||||
{'name': 'dxva', 'gir': dxva_gir, 'lib': gstdxva_dep, 'c_source_patterns': ['*.h', '*.cpp']},
|
'analytics': analytics_gir[0].full_path(),
|
||||||
{'name': 'mse', 'gir': mse_gir, 'lib': gstmse_dep, 'suffix': 'lib'},
|
}
|
||||||
{'name': 'analytics', 'gir': analytics_gir, 'lib': gstanalytics_dep},
|
|
||||||
]
|
|
||||||
|
|
||||||
if get_variable('gst_cuda_gir', []).length() > 0
|
if get_variable('gst_cuda_gir', []).length() > 0
|
||||||
libs += [{'name': 'cuda', 'gir': gst_cuda_gir, 'lib': gstcuda_dep, 'c_source_patterns': ['*.h', '*.cpp']}]
|
libs_doc_gi_conf += {'cuda': gst_cuda_gir[0].full_path()}
|
||||||
endif
|
|
||||||
|
|
||||||
if gstopencv_dep.found()
|
|
||||||
libs += [
|
|
||||||
{'name': 'opencv', 'lib': gstopencv_dep, 'c_source_patterns': ['*.h', '*.cpp'], 'extra_c_flags': ['-x c++']},
|
|
||||||
]
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if gstva_dep.found()
|
if gstva_dep.found()
|
||||||
libs += [{'name': 'va', 'gir': va_gir, 'lib': gstva_dep, 'suffix': 'lib'}]
|
libs_doc_gi_conf += {'va': va_gir[0].full_path()}
|
||||||
else
|
else
|
||||||
libs += [{'name': 'va', 'gir-file': join_paths(meson.global_source_root(), 'girs', 'GstVa-1.0.gir'), 'lib': []}]
|
libs_doc_gi_conf += {'va': join_paths(meson.global_source_root(), 'girs', 'GstVa-1.0.gir')}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if gstvulkan_dep.found()
|
if gstvulkan_dep.found()
|
||||||
libs += [
|
libs_doc_gi_conf += {'vulkan': vulkan_gir[0].full_path()}
|
||||||
{'name': 'vulkan', 'gir': vulkan_gir, 'lib': gstvulkan_dep, 'suffix': 'lib'},
|
|
||||||
]
|
|
||||||
if enabled_vulkan_winsys.contains('xcb')
|
if enabled_vulkan_winsys.contains('xcb')
|
||||||
libs += [
|
libs_doc_gi_conf += {'vulkan-xcb': vulkan_xcb_gir[0].full_path()}
|
||||||
{'name': 'vulkan-xcb', 'gir': vulkan_xcb_gir, 'lib': gstvulkanxcb_dep, 'extra_sources' : [
|
|
||||||
join_paths(root_rel, 'gst-libs/gst/vulkan/xcb/gstvkdisplay_xcb.[ch]'),
|
|
||||||
]},
|
|
||||||
]
|
|
||||||
endif
|
endif
|
||||||
if enabled_vulkan_winsys.contains('wayland')
|
if enabled_vulkan_winsys.contains('wayland')
|
||||||
libs += [
|
libs_doc_gi_conf += {'vulkan-wayland': vulkan_wayland_gir[0].full_path()}
|
||||||
{'name': 'vulkan-wayland', 'gir': vulkan_wayland_gir, 'lib': gstvulkanwayland_dep, 'extra_sources' : [
|
|
||||||
join_paths(root_rel, 'gst-libs/gst/vulkan/wayland/gstvkdisplay_wayland.[ch]'),
|
|
||||||
]},
|
|
||||||
]
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
has_gi_extension = hotdoc.has_extensions('gi-extension')
|
cdir = meson.current_source_dir()
|
||||||
has_c_extension = hotdoc.has_extensions('c-extension')
|
|
||||||
libs_doc = []
|
|
||||||
foreach lib_def: libs
|
|
||||||
name = lib_def['name']
|
|
||||||
lib = lib_def['lib']
|
|
||||||
extra_sources = lib_def.get('extra_sources', [])
|
|
||||||
|
|
||||||
c_source_patterns = lib_def.get('c_source_patterns', ['*.[hc]'])
|
libs_doc_gi_source_file = configure_file(
|
||||||
c_sources = []
|
output: 'libs_doc_gi_sources.json',
|
||||||
foreach pattern: c_source_patterns
|
configuration: libs_doc_gi_conf,
|
||||||
c_sources += join_paths(root_rel, 'gst-libs/gst', name, pattern)
|
output_format: 'json')
|
||||||
endforeach
|
|
||||||
c_sources += extra_sources
|
|
||||||
|
|
||||||
if lib_def.has_key('gir') or lib_def.has_key('gir-file')
|
libs_hotdoc_configs = custom_target(
|
||||||
if has_gi_extension
|
'build-libs-hotdoc-configs',
|
||||||
if lib_def.has_key('gir')
|
command: [
|
||||||
gir_targets = lib_def['gir']
|
plugins_cache_generator,
|
||||||
gir = gir_targets[0]
|
'hotdoc-lib-config',
|
||||||
gir_file = gir[0].full_path()
|
'--srcdir', cdir,
|
||||||
else
|
'--builddir', meson.current_build_dir(),
|
||||||
gir_targets = []
|
'--buildroot', meson.global_build_root(),
|
||||||
gir = []
|
'--project_version', api_version,
|
||||||
gir_file = lib_def['gir-file']
|
'--gi_source_file', libs_doc_gi_source_file,
|
||||||
endif
|
'--gi_c_source_file', libs_doc_source_file,
|
||||||
|
'--gi_c_source_filters', excludes,
|
||||||
prefix = lib_def.get('prefix', '')
|
'--c_source_filters', excludes,
|
||||||
suffix = lib_def.get('suffix', '')
|
'--c_source_file', libs_doc_c_source_file,
|
||||||
libs_doc += [hotdoc.generate_doc(prefix + name + suffix,
|
'--source_root', cdir / 'libs',
|
||||||
project_version: api_version,
|
'--gi_source_root', cdir / '..' / 'gst-libs' / 'gst',
|
||||||
gi_c_sources: c_sources,
|
'--output', '@OUTPUT@',
|
||||||
gi_sources: gir_file,
|
],
|
||||||
gi_c_source_filters: excludes,
|
output: 'hotdoc-libs-configs.json',
|
||||||
sitemap: join_paths('libs', name, 'sitemap.txt'),
|
)
|
||||||
index: join_paths('libs/', name, 'index.md'),
|
|
||||||
gi_index: join_paths('libs/', name, 'index.md'),
|
|
||||||
gi_smart_index: true,
|
|
||||||
gi_order_generated_subpages: true,
|
|
||||||
dependencies: [lib, gir_targets],
|
|
||||||
c_flags: '-DGST_USE_UNSTABLE_API',
|
|
||||||
install: false,
|
|
||||||
depends: gir,
|
|
||||||
)]
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
if has_c_extension
|
|
||||||
libs_doc += [hotdoc.generate_doc('gst-plugins-bad-' + name,
|
|
||||||
sitemap: join_paths('libs', name, 'sitemap.txt'),
|
|
||||||
index: join_paths('libs', name, 'index.md'),
|
|
||||||
project_version: api_version,
|
|
||||||
c_sources: c_sources,
|
|
||||||
c_source_filters: excludes,
|
|
||||||
c_index: join_paths('libs', name, 'index.md'),
|
|
||||||
c_smart_index: true,
|
|
||||||
c_order_generated_subpages: true,
|
|
||||||
extra_c_flags: ['-DGST_USE_UNSTABLE_API'] + lib_def.get('extra_c_flags', []),
|
|
||||||
dependencies: lib,
|
|
||||||
install: false,
|
|
||||||
)]
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,15 @@
|
||||||
adaptivedemux_sources = files('gstadaptivedemux.c')
|
adaptivedemux_sources = files('gstadaptivedemux.c')
|
||||||
adaptivedemux_headers = files('gstadaptivedemux.h')
|
adaptivedemux_headers = files('gstadaptivedemux.h')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: adaptivedemux_sources + adaptivedemux_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_c_sources += {
|
||||||
|
'adaptivedemux': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
pkg_name = 'gstreamer-adaptivedemux-1.0'
|
pkg_name = 'gstreamer-adaptivedemux-1.0'
|
||||||
gstadaptivedemux = library('gstadaptivedemux-' + api_version,
|
gstadaptivedemux = library('gstadaptivedemux-' + api_version,
|
||||||
adaptivedemux_sources,
|
adaptivedemux_sources,
|
||||||
|
@ -12,10 +21,11 @@ gstadaptivedemux = library('gstadaptivedemux-' + api_version,
|
||||||
install : true,
|
install : true,
|
||||||
dependencies : [gstbase_dep, gsturidownloader_dep],
|
dependencies : [gstbase_dep, gsturidownloader_dep],
|
||||||
)
|
)
|
||||||
|
|
||||||
gst_libraries += [[pkg_name, {'lib': gstadaptivedemux}]]
|
gst_libraries += [[pkg_name, {'lib': gstadaptivedemux}]]
|
||||||
|
|
||||||
gstadaptivedemux_dep = declare_dependency(link_with : gstadaptivedemux,
|
gstadaptivedemux_dep = declare_dependency(link_with : gstadaptivedemux,
|
||||||
include_directories : [libsinc],
|
include_directories : [libsinc],
|
||||||
dependencies : [gstbase_dep, gsturidownloader_dep])
|
dependencies : [gstbase_dep, gsturidownloader_dep])
|
||||||
|
|
||||||
meson.override_dependency(pkg_name, gstadaptivedemux_dep)
|
meson.override_dependency(pkg_name, gstadaptivedemux_dep)
|
||||||
|
|
|
@ -17,6 +17,15 @@ analytics_headers = files( 'analytics.h',
|
||||||
'gsttensor.h')
|
'gsttensor.h')
|
||||||
install_headers(analytics_headers, subdir : 'gstreamer-1.0/gst/analytics')
|
install_headers(analytics_headers, subdir : 'gstreamer-1.0/gst/analytics')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: analytics_sources + analytics_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'analytics': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
pkg_name = 'gstreamer-analytics-1.0'
|
pkg_name = 'gstreamer-analytics-1.0'
|
||||||
gstanalytics = library('gstanalytics-' + api_version,
|
gstanalytics = library('gstanalytics-' + api_version,
|
||||||
analytics_sources,
|
analytics_sources,
|
||||||
|
|
|
@ -2,6 +2,14 @@ badaudio_sources = files('gstnonstreamaudiodecoder.c', 'gstplanaraudioadapter.c'
|
||||||
badaudio_headers = files('gstnonstreamaudiodecoder.h', 'audio-bad-prelude.h', 'gstplanaraudioadapter.h')
|
badaudio_headers = files('gstnonstreamaudiodecoder.h', 'audio-bad-prelude.h', 'gstplanaraudioadapter.h')
|
||||||
install_headers(badaudio_headers, subdir : 'gstreamer-1.0/gst/audio')
|
install_headers(badaudio_headers, subdir : 'gstreamer-1.0/gst/audio')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: badaudio_sources + badaudio_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'audio': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gstbadaudio = library('gstbadaudio-' + api_version,
|
gstbadaudio = library('gstbadaudio-' + api_version,
|
||||||
badaudio_sources,
|
badaudio_sources,
|
||||||
|
|
|
@ -11,6 +11,15 @@ camerabin_headers = files(
|
||||||
)
|
)
|
||||||
install_headers(camerabin_headers, subdir : 'gstreamer-1.0/gst/basecamerabinsrc')
|
install_headers(camerabin_headers, subdir : 'gstreamer-1.0/gst/basecamerabinsrc')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: camerabin_sources + camerabin_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'basecamerabinsrc': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gstbasecamerabin = library('gstbasecamerabinsrc-' + api_version,
|
gstbasecamerabin = library('gstbasecamerabinsrc-' + api_version,
|
||||||
camerabin_sources,
|
camerabin_sources,
|
||||||
c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API', '-DBUILDING_GST_BASE_CAMERA_BIN_SRC', '-DG_LOG_DOMAIN="GStreamer-BaseCameraBinSrc"'],
|
c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API', '-DBUILDING_GST_BASE_CAMERA_BIN_SRC', '-DG_LOG_DOMAIN="GStreamer-BaseCameraBinSrc"'],
|
||||||
|
|
|
@ -24,7 +24,7 @@ codecparser_sources = files([
|
||||||
'gstjpegbitwriter.c',
|
'gstjpegbitwriter.c',
|
||||||
'gstlcevcmeta.c',
|
'gstlcevcmeta.c',
|
||||||
])
|
])
|
||||||
codecparser_headers = [
|
codecparser_headers = files([
|
||||||
'codecparsers-prelude.h',
|
'codecparsers-prelude.h',
|
||||||
'gstmpegvideoparser.h',
|
'gstmpegvideoparser.h',
|
||||||
'gsth264parser.h',
|
'gsth264parser.h',
|
||||||
|
@ -39,9 +39,19 @@ codecparser_headers = [
|
||||||
'gstvp9parser.h',
|
'gstvp9parser.h',
|
||||||
'gstav1parser.h',
|
'gstav1parser.h',
|
||||||
'gstlcevcmeta.h',
|
'gstlcevcmeta.h',
|
||||||
]
|
'gsth266parser.h',
|
||||||
|
])
|
||||||
install_headers(codecparser_headers, subdir : 'gstreamer-1.0/gst/codecparsers')
|
install_headers(codecparser_headers, subdir : 'gstreamer-1.0/gst/codecparsers')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: codecparser_sources + codecparser_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_c_sources += {
|
||||||
|
'codecparsers': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
cp_args = [
|
cp_args = [
|
||||||
'-DGST_USE_UNSTABLE_API',
|
'-DGST_USE_UNSTABLE_API',
|
||||||
'-DBUILDING_GST_CODEC_PARSERS',
|
'-DBUILDING_GST_CODEC_PARSERS',
|
||||||
|
|
|
@ -38,6 +38,15 @@ cp_args = [
|
||||||
'-DG_LOG_DOMAIN="GStreamer-Codecs"'
|
'-DG_LOG_DOMAIN="GStreamer-Codecs"'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: codecs_sources + codecs_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'codecs': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gstcodecs = library('gstcodecs-' + api_version,
|
gstcodecs = library('gstcodecs-' + api_version,
|
||||||
codecs_sources,
|
codecs_sources,
|
||||||
c_args : gst_plugins_bad_args + cp_args,
|
c_args : gst_plugins_bad_args + cp_args,
|
||||||
|
|
|
@ -23,6 +23,15 @@ cuda_headers = files([
|
||||||
'gstcudautils.h',
|
'gstcudautils.h',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: cuda_sources + cuda_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'cuda': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
extra_deps = []
|
extra_deps = []
|
||||||
gstcuda_dep = dependency('', required : false)
|
gstcuda_dep = dependency('', required : false)
|
||||||
cuda_stubinc = include_directories('./stub')
|
cuda_stubinc = include_directories('./stub')
|
||||||
|
|
|
@ -25,6 +25,15 @@ extra_args = [
|
||||||
'-DG_LOG_DOMAIN="GStreamer-Dxva"',
|
'-DG_LOG_DOMAIN="GStreamer-Dxva"',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: dxva_sources + dxva_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'dxva': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
if host_system != 'windows' and not build_gir
|
if host_system != 'windows' and not build_gir
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -2,6 +2,15 @@ insert_sources = files('gstinsertbin.c')
|
||||||
insert_headers = files('gstinsertbin.h')
|
insert_headers = files('gstinsertbin.h')
|
||||||
install_headers(insert_headers, subdir : 'gstreamer-1.0/gst/insertbin')
|
install_headers(insert_headers, subdir : 'gstreamer-1.0/gst/insertbin')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: insert_sources + insert_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'insertbin': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gstinsertbin = library('gstinsertbin-' + api_version,
|
gstinsertbin = library('gstinsertbin-' + api_version,
|
||||||
insert_sources,
|
insert_sources,
|
||||||
c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API', '-DBUILDING_GST_INSERT_BIN', '-DG_LOG_DOMAIN="GStreamer-InsertBin"'],
|
c_args : gst_plugins_bad_args + ['-DGST_USE_UNSTABLE_API', '-DBUILDING_GST_INSERT_BIN', '-DG_LOG_DOMAIN="GStreamer-InsertBin"'],
|
||||||
|
|
|
@ -23,6 +23,15 @@ mpegts_headers = files(
|
||||||
)
|
)
|
||||||
install_headers(mpegts_headers, subdir : 'gstreamer-1.0/gst/mpegts')
|
install_headers(mpegts_headers, subdir : 'gstreamer-1.0/gst/mpegts')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: mpegts_sources + mpegts_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'mpegts': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
mpegts_enums = gnome.mkenums_simple('gstmpegts-enumtypes',
|
mpegts_enums = gnome.mkenums_simple('gstmpegts-enumtypes',
|
||||||
sources : mpegts_headers,
|
sources : mpegts_headers,
|
||||||
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
||||||
|
|
|
@ -34,6 +34,15 @@ gstmse_sources_public = files(
|
||||||
'gstsourcebufferlist.c',
|
'gstsourcebufferlist.c',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gstmse_headers_private + gstmse_sources_private + gstmse_headers_public + gstmse_sources_public
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'mse': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gstmse_header_dir = 'gstreamer-' + api_version + '/gst/mse/'
|
gstmse_header_dir = 'gstreamer-' + api_version + '/gst/mse/'
|
||||||
|
|
||||||
gstmse_enums_private = gnome.mkenums_simple('mse-enumtypes-private',
|
gstmse_enums_private = gnome.mkenums_simple('mse-enumtypes-private',
|
||||||
|
|
|
@ -3,16 +3,16 @@ if get_option('opencv').disabled()
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
opencv_sources = [
|
opencv_sources = files([
|
||||||
'gstopencvutils.cpp',
|
'gstopencvutils.cpp',
|
||||||
'gstopencvvideofilter.cpp',
|
'gstopencvvideofilter.cpp',
|
||||||
]
|
])
|
||||||
|
|
||||||
opencv_headers = [
|
opencv_headers = files([
|
||||||
'opencv-prelude.h',
|
'opencv-prelude.h',
|
||||||
'gstopencvutils.h',
|
'gstopencvutils.h',
|
||||||
'gstopencvvideofilter.h',
|
'gstopencvvideofilter.h',
|
||||||
]
|
])
|
||||||
|
|
||||||
libopencv_headers = [
|
libopencv_headers = [
|
||||||
'opencv2/bgsegm.hpp',
|
'opencv2/bgsegm.hpp',
|
||||||
|
@ -25,6 +25,7 @@ libopencv_headers = [
|
||||||
'opencv2/tracking.hpp',
|
'opencv2/tracking.hpp',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
gstopencv_cargs = ['-DGST_HAAR_CASCADES_DIR="@0@"']
|
gstopencv_cargs = ['-DGST_HAAR_CASCADES_DIR="@0@"']
|
||||||
|
|
||||||
opencv_dep = dependency('opencv', version : ['>= 3.0.0', '< 3.5.0'], required : false)
|
opencv_dep = dependency('opencv', version : ['>= 3.0.0', '< 3.5.0'], required : false)
|
||||||
|
@ -88,6 +89,15 @@ if opencv_found
|
||||||
dependencies : [gstbase_dep, gstvideo_dep, opencv_dep],
|
dependencies : [gstbase_dep, gstvideo_dep, opencv_dep],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: opencv_sources + opencv_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_c_sources += {
|
||||||
|
'opencv': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gst_libraries += [[pkg_name, {'lib': gstopencv}]]
|
gst_libraries += [[pkg_name, {'lib': gstopencv}]]
|
||||||
gstopencv_dep = declare_dependency(link_with: gstopencv,
|
gstopencv_dep = declare_dependency(link_with: gstopencv,
|
||||||
include_directories : [libsinc],
|
include_directories : [libsinc],
|
||||||
|
|
|
@ -21,6 +21,15 @@ gstplay_headers = files(
|
||||||
|
|
||||||
install_headers(gstplay_headers, subdir : 'gstreamer-' + api_version + '/gst/play/')
|
install_headers(gstplay_headers, subdir : 'gstreamer-' + api_version + '/gst/play/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gstplay_sources + gstplay_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'play': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gstplay = library('gstplay-' + api_version,
|
gstplay = library('gstplay-' + api_version,
|
||||||
gstplay_sources,
|
gstplay_sources,
|
||||||
c_args : gst_plugins_bad_args + ['-DBUILDING_GST_PLAY', '-DG_LOG_DOMAIN="GStreamer-Play"'],
|
c_args : gst_plugins_bad_args + ['-DBUILDING_GST_PLAY', '-DG_LOG_DOMAIN="GStreamer-Play"'],
|
||||||
|
|
|
@ -24,6 +24,15 @@ gstplayer_headers = files([
|
||||||
|
|
||||||
install_headers(gstplayer_headers, subdir : 'gstreamer-' + api_version + '/gst/player/')
|
install_headers(gstplayer_headers, subdir : 'gstreamer-' + api_version + '/gst/player/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gstplayer_sources + gstplayer_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'player': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gstplayer = library('gstplayer-' + api_version,
|
gstplayer = library('gstplayer-' + api_version,
|
||||||
gstplayer_sources,
|
gstplayer_sources,
|
||||||
c_args : gst_plugins_bad_args + ['-DBUILDING_GST_PLAYER', '-DG_LOG_DOMAIN="GStreamer-Player"'],
|
c_args : gst_plugins_bad_args + ['-DBUILDING_GST_PLAYER', '-DG_LOG_DOMAIN="GStreamer-Player"'],
|
||||||
|
|
|
@ -3,6 +3,15 @@ headers = files(['gsttranscoder.h', 'transcoder-prelude.h', 'gsttranscoder-signa
|
||||||
|
|
||||||
install_headers(headers, subdir : 'gstreamer-' + api_version + '/gst/transcoder')
|
install_headers(headers, subdir : 'gstreamer-' + api_version + '/gst/transcoder')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: sources + headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'transcoder': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
transcoder_enums = gnome.mkenums_simple('transcoder-enumtypes',
|
transcoder_enums = gnome.mkenums_simple('transcoder-enumtypes',
|
||||||
sources : headers,
|
sources : headers,
|
||||||
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
||||||
|
|
|
@ -39,6 +39,15 @@ va_win32_headers = files(
|
||||||
'gstvadisplay_win32.h',
|
'gstvadisplay_win32.h',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: va_sources + va_sources_priv + va_headers + va_linux_sources + va_linux_headers + va_win32_sources + va_win32_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'va': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gstva_dep = dependency('', required : false)
|
gstva_dep = dependency('', required : false)
|
||||||
platform_deps = []
|
platform_deps = []
|
||||||
extra_args = ['-DGST_USE_UNSTABLE_API',
|
extra_args = ['-DGST_USE_UNSTABLE_API',
|
||||||
|
|
|
@ -77,6 +77,14 @@ vulkan_headers = files(
|
||||||
'vulkan_fwd.h',
|
'vulkan_fwd.h',
|
||||||
'vulkan.h',
|
'vulkan.h',
|
||||||
)
|
)
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: vulkan_sources + vulkan_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'vulkan': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
vulkan_priv_sources = []
|
vulkan_priv_sources = []
|
||||||
vulkan_xcb_sources = []
|
vulkan_xcb_sources = []
|
||||||
|
@ -446,6 +454,15 @@ if enabled_vulkan_winsys.contains('xcb')
|
||||||
)
|
)
|
||||||
vulkan_xcb_gir = []
|
vulkan_xcb_gir = []
|
||||||
if build_gir
|
if build_gir
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: vulkan_xcb_sources + vulkan_xcb_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'vulkan-xcb': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gir = {
|
gir = {
|
||||||
'sources' : vulkan_xcb_sources + vulkan_xcb_headers,
|
'sources' : vulkan_xcb_sources + vulkan_xcb_headers,
|
||||||
'namespace' : 'GstVulkanXCB',
|
'namespace' : 'GstVulkanXCB',
|
||||||
|
@ -483,6 +500,15 @@ if enabled_vulkan_winsys.contains('wayland')
|
||||||
)
|
)
|
||||||
vulkan_wayland_gir = []
|
vulkan_wayland_gir = []
|
||||||
if build_gir
|
if build_gir
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: vulkan_wayland_sources + vulkan_wayland_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'vulkan-wayland': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gir = {
|
gir = {
|
||||||
'sources' : vulkan_wayland_sources + vulkan_wayland_headers,
|
'sources' : vulkan_wayland_sources + vulkan_wayland_headers,
|
||||||
'namespace' : 'GstVulkanWayland',
|
'namespace' : 'GstVulkanWayland',
|
||||||
|
|
|
@ -36,6 +36,15 @@ webrtc_enumtypes_headers = files([
|
||||||
'webrtc_fwd.h',
|
'webrtc_fwd.h',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: webrtc_sources + webrtc_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'webrtc': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
webrtc_enums = gnome.mkenums_simple('webrtc-enumtypes',
|
webrtc_enums = gnome.mkenums_simple('webrtc-enumtypes',
|
||||||
sources : webrtc_enumtypes_headers,
|
sources : webrtc_enumtypes_headers,
|
||||||
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
||||||
|
|
|
@ -1 +1,4 @@
|
||||||
|
libs_sources = {}
|
||||||
|
libs_c_sources = {}
|
||||||
|
|
||||||
subdir('gst')
|
subdir('gst')
|
||||||
|
|
|
@ -56,37 +56,8 @@ if get_option('doc').disabled()
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
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
|
|
||||||
|
|
||||||
hotdoc_req = '>= 0.11.0'
|
|
||||||
hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout()
|
|
||||||
if not hotdoc_version.version_compare(hotdoc_req)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
else
|
|
||||||
message('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
hotdoc = import('hotdoc')
|
|
||||||
required_hotdoc_extensions = ['gi-extension', 'gst-extension']
|
|
||||||
foreach extension: required_hotdoc_extensions
|
|
||||||
if not hotdoc.has_extensions(extension)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but @0@ missing'.format(extension))
|
|
||||||
endif
|
|
||||||
|
|
||||||
message('@0@ extension not found, not building documentation'.format(extension))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
build_hotdoc = true
|
build_hotdoc = true
|
||||||
|
|
||||||
docconf = configuration_data()
|
docconf = configuration_data()
|
||||||
docconf.set('GST_API_VERSION', api_version)
|
docconf.set('GST_API_VERSION', api_version)
|
||||||
|
|
||||||
|
@ -108,97 +79,67 @@ foreach h: ['pbutils-private.h', 'gsttageditingprivate.h', 'id3v2.h',
|
||||||
libs_excludes += [join_paths(meson.current_source_dir(), '..', 'gst-libs/gst/*/', h)]
|
libs_excludes += [join_paths(meson.current_source_dir(), '..', 'gst-libs/gst/*/', h)]
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
libs = [
|
libs_doc_source_file = configure_file(
|
||||||
['allocators', allocators_gir, allocators_dep],
|
output: 'libs_doc_sources.json',
|
||||||
['app', app_gir, app_dep],
|
configuration: libs_sources,
|
||||||
['audio', audio_gir, audio_dep],
|
output_format: 'json')
|
||||||
# FIXME! ['fft', fft_gir, fft_dep],
|
|
||||||
['pbutils', pbutils_gir, pbutils_dep],
|
|
||||||
['rtp', rtp_gir, rtp_dep],
|
|
||||||
['rtsp', rtsp_gir, rtsp_dep],
|
|
||||||
['sdp', sdp_gir, sdp_dep],
|
|
||||||
['tag', tag_gir, tag_dep],
|
|
||||||
['video', video_gir, video_dep],
|
|
||||||
]
|
|
||||||
|
|
||||||
if build_gstgl
|
libs_doc_c_source_file = configure_file(
|
||||||
libs += [['gl', gl_gir, gstgl_dep]]
|
output: 'libs_doc_c_sources.json',
|
||||||
if enabled_gl_platforms.contains('egl')
|
configuration: libs_c_sources,
|
||||||
libs += [['gl-egl', gl_egl_gir, gstgl_dep, [
|
output_format: 'json')
|
||||||
join_paths('../gst-libs/gst', 'gl', 'egl', 'gstegl.[ch]'),
|
|
||||||
join_paths('../gst-libs/gst', 'gl', 'egl', 'gsteglimage.[ch]'),
|
|
||||||
join_paths('../gst-libs/gst', 'gl', 'egl', 'gstgldisplay_egl.[ch]'),
|
|
||||||
join_paths('../gst-libs/gst', 'gl', 'egl', 'gstgldisplay_egl_device.[ch]'),
|
|
||||||
join_paths('../gst-libs/gst', 'gl', 'egl', 'gstglmemoryegl.[ch]'),
|
|
||||||
]]]
|
|
||||||
endif
|
|
||||||
if enabled_gl_winsys.contains('x11')
|
|
||||||
libs += [['gl-x11', gl_x11_gir, gstgl_dep, [
|
|
||||||
join_paths('../gst-libs/gst', 'gl', 'x11', 'gstgldisplay_x11.[ch]'),
|
|
||||||
]]]
|
|
||||||
endif
|
|
||||||
if enabled_gl_winsys.contains('wayland')
|
|
||||||
libs += [['gl-wayland', gl_wayland_gir, gstgl_dep, [
|
|
||||||
join_paths('../gst-libs/gst', 'gl', 'wayland', 'gstgldisplay_wayland.[ch]'),
|
|
||||||
]]]
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Used to avoid conflicts with known plugin names
|
libs_doc_gi_conf = {
|
||||||
project_names = {
|
'allocators': allocators_gir[0].full_path(),
|
||||||
'app': 'applib',
|
'app': app_gir[0].full_path(),
|
||||||
'rtp': 'rtplib',
|
'audio': audio_gir[0].full_path(),
|
||||||
'rtsp': 'rtsplib',
|
'pbutils': pbutils_gir[0].full_path(),
|
||||||
|
'rtp': rtp_gir[0].full_path(),
|
||||||
|
'rtsp': rtsp_gir[0].full_path(),
|
||||||
|
'sdp': sdp_gir[0].full_path(),
|
||||||
|
'tag': tag_gir[0].full_path(),
|
||||||
|
'video': video_gir[0].full_path(),
|
||||||
}
|
}
|
||||||
|
|
||||||
libs_doc = []
|
if build_gstgl
|
||||||
foreach lib: libs
|
libs_doc_gi_conf += {'gl': gl_gir[0].full_path()}
|
||||||
name = lib[0]
|
if enabled_gl_platforms.contains('egl')
|
||||||
gir = lib[1]
|
libs_doc_gi_conf += {'gl-egl': gl_egl_gir[0].full_path()}
|
||||||
deps = [lib[2], gir]
|
endif
|
||||||
extra_sources = []
|
if enabled_gl_winsys.contains('x11')
|
||||||
if lib.length() >= 4
|
libs_doc_gi_conf += {'gl-x11': gl_x11_gir[0].full_path()}
|
||||||
extra_sources = lib[3]
|
endif
|
||||||
|
if enabled_gl_winsys.contains('wayland')
|
||||||
|
libs_doc_gi_conf += {'gl-wayland': gl_wayland_gir[0].full_path()}
|
||||||
endif
|
endif
|
||||||
project_name = project_names.get(name, name)
|
|
||||||
libs_doc += [hotdoc.generate_doc(project_name,
|
|
||||||
project_version: api_version,
|
|
||||||
gi_c_sources: [join_paths('../gst-libs/gst', name, '*.[hc]')] + extra_sources,
|
|
||||||
gi_sources: gir[0].full_path(),
|
|
||||||
gi_c_source_filters: libs_excludes,
|
|
||||||
gi_c_source_roots: [join_paths(meson.current_source_dir(), '../gst-libs/gst/' + name), ],
|
|
||||||
sitemap: 'libs/' + name + '/sitemap.txt',
|
|
||||||
index: 'libs/' + name + '/index.md',
|
|
||||||
gi_index: 'libs/' + name + '/index.md',
|
|
||||||
gi_smart_index: true,
|
|
||||||
gi_order_generated_subpages: true,
|
|
||||||
dependencies: deps,
|
|
||||||
install: false,
|
|
||||||
depends: gir[0],
|
|
||||||
)]
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
if not hotdoc.has_extensions('c-extension')
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but c-extension missing')
|
|
||||||
endif
|
|
||||||
message('c-extension not found, not building documentation')
|
|
||||||
else
|
|
||||||
libs_doc += [hotdoc.generate_doc('riff',
|
|
||||||
project_version: api_version,
|
|
||||||
c_sources: ['../gst-libs/gst/riff/*.[hc]'],
|
|
||||||
c_source_filters: libs_excludes,
|
|
||||||
sitemap: 'libs/riff/sitemap.txt',
|
|
||||||
index: 'libs/riff/index.md',
|
|
||||||
c_index: 'libs/riff/index.md',
|
|
||||||
c_smart_index: true,
|
|
||||||
c_order_generated_subpages: true,
|
|
||||||
dependencies: [gst_base_dep, riff_dep],
|
|
||||||
install: false,
|
|
||||||
disable_incremental_build: true,
|
|
||||||
)]
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
libs_doc_gi_source_file = configure_file(
|
||||||
|
output: 'libs_doc_gi_sources.json',
|
||||||
|
configuration: libs_doc_gi_conf,
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
libs_hotdoc_configs = custom_target(
|
||||||
|
'build-libs-hotdoc-configs',
|
||||||
|
command: [
|
||||||
|
plugins_cache_generator,
|
||||||
|
'hotdoc-lib-config',
|
||||||
|
'--srcdir', cdir,
|
||||||
|
'--builddir', meson.current_build_dir(),
|
||||||
|
'--buildroot', meson.global_build_root(),
|
||||||
|
'--project_version', api_version,
|
||||||
|
'--gi_source_file', libs_doc_gi_source_file,
|
||||||
|
'--gi_c_source_file', libs_doc_source_file,
|
||||||
|
'--gi_c_source_filters', libs_excludes,
|
||||||
|
'--c_source_filters', libs_excludes,
|
||||||
|
'--c_source_file', libs_doc_c_source_file,
|
||||||
|
'--source_root', cdir / 'libs',
|
||||||
|
'--gi_source_root', cdir / '..' / 'gst-libs' / 'gst',
|
||||||
|
'--output', '@OUTPUT@',
|
||||||
|
],
|
||||||
|
output: 'hotdoc-libs-configs.json',
|
||||||
|
)
|
||||||
|
|
||||||
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
||||||
|
|
||||||
plugin_libraries = {}
|
plugin_libraries = {}
|
||||||
|
|
|
@ -17,6 +17,15 @@ gst_allocators_sources = files([
|
||||||
'gstshmallocator.c',
|
'gstshmallocator.c',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gst_allocators_sources + gst_allocators_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'allocators': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gst_allocators_cargs = [
|
gst_allocators_cargs = [
|
||||||
gst_plugins_base_args,
|
gst_plugins_base_args,
|
||||||
'-DBUILDING_GST_ALLOCATORS',
|
'-DBUILDING_GST_ALLOCATORS',
|
||||||
|
|
|
@ -7,6 +7,15 @@ app_mkenum_headers = files([
|
||||||
app_headers = app_mkenum_headers + files([ 'app.h', 'app-prelude.h', 'gstappsrc.h', 'gstappsink.h' ])
|
app_headers = app_mkenum_headers + files([ 'app.h', 'app-prelude.h', 'gstappsrc.h', 'gstappsink.h' ])
|
||||||
install_headers(app_headers, subdir : 'gstreamer-1.0/gst/app/')
|
install_headers(app_headers, subdir : 'gstreamer-1.0/gst/app/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: app_sources + app_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'app': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
app_enums = gnome.mkenums_simple('app-enumtypes',
|
app_enums = gnome.mkenums_simple('app-enumtypes',
|
||||||
sources : app_mkenum_headers,
|
sources : app_mkenum_headers,
|
||||||
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
||||||
|
|
|
@ -66,6 +66,15 @@ audio_headers = audio_mkenum_headers + files([
|
||||||
])
|
])
|
||||||
install_headers(audio_headers, subdir : 'gstreamer-1.0/gst/audio/')
|
install_headers(audio_headers, subdir : 'gstreamer-1.0/gst/audio/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: audio_src + audio_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'audio': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
audio_enums = gnome.mkenums_simple('audio-enumtypes',
|
audio_enums = gnome.mkenums_simple('audio-enumtypes',
|
||||||
sources : audio_mkenum_headers,
|
sources : audio_mkenum_headers,
|
||||||
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
||||||
|
|
|
@ -90,6 +90,15 @@ gl_headers = gir_gl_headers + files([
|
||||||
'gstglfuncs.h',
|
'gstglfuncs.h',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gl_sources + gl_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'gl': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gl_prototype_headers = files([
|
gl_prototype_headers = files([
|
||||||
'glprototypes/all_functions.h',
|
'glprototypes/all_functions.h',
|
||||||
'glprototypes/base.h',
|
'glprototypes/base.h',
|
||||||
|
@ -565,6 +574,16 @@ if need_platform_egl != 'no'
|
||||||
'egl/gstglmemoryegl.h',
|
'egl/gstglmemoryegl.h',
|
||||||
'egl/gstgldisplay_egl_device.h',
|
'egl/gstgldisplay_egl_device.h',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gl_egl_sources + gl_egl_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'gl-egl': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gl_platform_deps += egl_dep
|
gl_platform_deps += egl_dep
|
||||||
glconf.set('GST_GL_HAVE_PLATFORM_EGL', 1)
|
glconf.set('GST_GL_HAVE_PLATFORM_EGL', 1)
|
||||||
|
|
||||||
|
@ -668,6 +687,7 @@ if need_win_wayland != 'no'
|
||||||
'wayland/wayland.h',
|
'wayland/wayland.h',
|
||||||
'wayland/gstgldisplay_wayland.h'
|
'wayland/gstgldisplay_wayland.h'
|
||||||
])
|
])
|
||||||
|
|
||||||
glconf.set('GST_GL_HAVE_WINDOW_WAYLAND', 1)
|
glconf.set('GST_GL_HAVE_WINDOW_WAYLAND', 1)
|
||||||
gl_winsys_deps += [wayland_client_dep, wayland_cursor_dep, wayland_egl_dep]
|
gl_winsys_deps += [wayland_client_dep, wayland_cursor_dep, wayland_egl_dep]
|
||||||
enabled_gl_winsys += 'wayland'
|
enabled_gl_winsys += 'wayland'
|
||||||
|
@ -707,6 +727,7 @@ if need_win_x11 != 'no'
|
||||||
'x11/x11.h',
|
'x11/x11.h',
|
||||||
'x11/gstgldisplay_x11.h',
|
'x11/gstgldisplay_x11.h',
|
||||||
])
|
])
|
||||||
|
|
||||||
glconf.set('GST_GL_HAVE_WINDOW_X11', 1)
|
glconf.set('GST_GL_HAVE_WINDOW_X11', 1)
|
||||||
gl_winsys_deps += [x11_dep, xcb_dep]
|
gl_winsys_deps += [x11_dep, xcb_dep]
|
||||||
enabled_gl_winsys += 'x11'
|
enabled_gl_winsys += 'x11'
|
||||||
|
@ -1187,6 +1208,16 @@ if build_gstgl
|
||||||
)
|
)
|
||||||
gl_x11_gir = []
|
gl_x11_gir = []
|
||||||
if build_gir
|
if build_gir
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gl_x11_sources + gl_x11_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'gl-x11': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gir = {
|
gir = {
|
||||||
'sources' : gl_x11_sources + gl_x11_headers,
|
'sources' : gl_x11_sources + gl_x11_headers,
|
||||||
'namespace' : 'GstGLX11',
|
'namespace' : 'GstGLX11',
|
||||||
|
@ -1224,6 +1255,15 @@ if build_gstgl
|
||||||
)
|
)
|
||||||
gl_wayland_gir = []
|
gl_wayland_gir = []
|
||||||
if build_gir
|
if build_gir
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gl_wayland_sources + gl_wayland_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'gl-wayland': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gir = {
|
gir = {
|
||||||
'sources' : gl_wayland_sources + gl_wayland_headers,
|
'sources' : gl_wayland_sources + gl_wayland_headers,
|
||||||
'namespace' : 'GstGLWayland',
|
'namespace' : 'GstGLWayland',
|
||||||
|
|
|
@ -36,6 +36,15 @@ pbutils_headers = files([
|
||||||
])
|
])
|
||||||
install_headers(pbutils_headers, subdir : 'gstreamer-1.0/gst/pbutils/')
|
install_headers(pbutils_headers, subdir : 'gstreamer-1.0/gst/pbutils/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: pbutils_sources + pbutils_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'pbutils': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
pbutils_mkenum_headers = pbutils_headers
|
pbutils_mkenum_headers = pbutils_headers
|
||||||
|
|
||||||
pbutils_enums = gnome.mkenums_simple('pbutils-enumtypes',
|
pbutils_enums = gnome.mkenums_simple('pbutils-enumtypes',
|
||||||
|
|
|
@ -1,18 +1,27 @@
|
||||||
riff_sources = [
|
riff_sources = files(
|
||||||
'riff.c',
|
'riff.c',
|
||||||
'riff-media.c',
|
'riff-media.c',
|
||||||
'riff-read.c',
|
'riff-read.c',
|
||||||
]
|
)
|
||||||
|
|
||||||
riff_headers = [
|
riff_headers = files(
|
||||||
'riff.h',
|
'riff.h',
|
||||||
'riff-prelude.h',
|
'riff-prelude.h',
|
||||||
'riff-ids.h',
|
'riff-ids.h',
|
||||||
'riff-media.h',
|
'riff-media.h',
|
||||||
'riff-read.h',
|
'riff-read.h',
|
||||||
]
|
)
|
||||||
install_headers(riff_headers, subdir : 'gstreamer-1.0/gst/riff/')
|
install_headers(riff_headers, subdir : 'gstreamer-1.0/gst/riff/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: riff_sources + riff_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_c_sources += {
|
||||||
|
'riff': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
riff_deps = [audio_dep, tag_dep]
|
riff_deps = [audio_dep, tag_dep]
|
||||||
gstriff = library('gstriff-@0@'.format(api_version),
|
gstriff = library('gstriff-@0@'.format(api_version),
|
||||||
riff_sources,
|
riff_sources,
|
||||||
|
|
|
@ -24,6 +24,15 @@ rtp_headers = files([
|
||||||
])
|
])
|
||||||
install_headers(rtp_headers, subdir : 'gstreamer-1.0/gst/rtp/')
|
install_headers(rtp_headers, subdir : 'gstreamer-1.0/gst/rtp/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: rtp_sources + rtp_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'rtp': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
rtp_enums = gnome.mkenums_simple('gstrtp-enumtypes',
|
rtp_enums = gnome.mkenums_simple('gstrtp-enumtypes',
|
||||||
sources : rtp_headers,
|
sources : rtp_headers,
|
||||||
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
||||||
|
|
|
@ -22,6 +22,15 @@ rtsp_headers = files([
|
||||||
])
|
])
|
||||||
install_headers(rtsp_headers, subdir : 'gstreamer-1.0/gst/rtsp/')
|
install_headers(rtsp_headers, subdir : 'gstreamer-1.0/gst/rtsp/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: rtsp_sources + rtsp_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'rtsp': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
rtsp_enums = gnome.mkenums_simple('gstrtsp-enumtypes',
|
rtsp_enums = gnome.mkenums_simple('gstrtsp-enumtypes',
|
||||||
sources : rtsp_headers,
|
sources : rtsp_headers,
|
||||||
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
||||||
|
|
|
@ -9,6 +9,16 @@ install_headers(gst_sdp_headers, subdir : 'gstreamer-1.0/gst/sdp/')
|
||||||
|
|
||||||
sdp_deps = [rtp_dep, gst_dep, gio_dep, pbutils_dep]
|
sdp_deps = [rtp_dep, gst_dep, gio_dep, pbutils_dep]
|
||||||
gst_sdp_sources = files(['gstsdpmessage.c', 'gstmikey.c'])
|
gst_sdp_sources = files(['gstsdpmessage.c', 'gstmikey.c'])
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gst_sdp_sources + gst_sdp_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'sdp': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gstsdp = library('gstsdp-@0@'.format(api_version),
|
gstsdp = library('gstsdp-@0@'.format(api_version),
|
||||||
gst_sdp_sources,
|
gst_sdp_sources,
|
||||||
c_args : gst_plugins_base_args + ['-DBUILDING_GST_SDP', '-DG_LOG_DOMAIN="GStreamer-SDP"'],
|
c_args : gst_plugins_base_args + ['-DBUILDING_GST_SDP', '-DG_LOG_DOMAIN="GStreamer-SDP"'],
|
||||||
|
|
|
@ -26,6 +26,15 @@ tag_headers = tag_mkenum_headers + files([
|
||||||
])
|
])
|
||||||
install_headers(tag_headers, subdir : 'gstreamer-1.0/gst/tag/')
|
install_headers(tag_headers, subdir : 'gstreamer-1.0/gst/tag/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: tag_sources + tag_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'tag': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
tag_enums = gnome.mkenums_simple('tag-enumtypes',
|
tag_enums = gnome.mkenums_simple('tag-enumtypes',
|
||||||
sources : tag_mkenum_headers,
|
sources : tag_mkenum_headers,
|
||||||
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
body_prefix : '#ifdef HAVE_CONFIG_H\n#include "config.h"\n#endif',
|
||||||
|
|
|
@ -80,6 +80,15 @@ video_headers = files([
|
||||||
])
|
])
|
||||||
install_headers(video_headers, subdir : 'gstreamer-1.0/gst/video/')
|
install_headers(video_headers, subdir : 'gstreamer-1.0/gst/video/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: video_sources + video_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'video': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
video_mkenum_headers = [
|
video_mkenum_headers = [
|
||||||
'video.h',
|
'video.h',
|
||||||
'video-anc.h',
|
'video-anc.h',
|
||||||
|
|
|
@ -1 +1,5 @@
|
||||||
|
libs_sources = {}
|
||||||
|
# For libraries with no gir, to be documented with hotdoc's C extension
|
||||||
|
libs_c_sources = {}
|
||||||
|
|
||||||
subdir('gst')
|
subdir('gst')
|
||||||
|
|
|
@ -45,43 +45,11 @@ if get_option('doc').disabled()
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
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
|
|
||||||
|
|
||||||
hotdoc_req = '>= 0.11.0'
|
|
||||||
hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout()
|
|
||||||
if not hotdoc_version.version_compare(hotdoc_req)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
else
|
|
||||||
message('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
hotdoc = import('hotdoc')
|
|
||||||
required_hotdoc_extensions = ['gst-extension']
|
|
||||||
foreach extension: required_hotdoc_extensions
|
|
||||||
if not hotdoc.has_extensions(extension)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but @0@ missing'.format(extension))
|
|
||||||
endif
|
|
||||||
|
|
||||||
message('@0@ extension not found, not building documentation'.format(extension))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
docconf = configuration_data()
|
docconf = configuration_data()
|
||||||
docconf.set('GST_API_VERSION', api_version)
|
docconf.set('GST_API_VERSION', api_version)
|
||||||
configure_file(input : 'gst_api_version.in',
|
configure_file(input : 'gst_api_version.in',
|
||||||
output : 'gst_api_version.md',
|
output : 'gst_api_version.md',
|
||||||
configuration : docconf)
|
configuration : docconf)
|
||||||
libs_doc = []
|
|
||||||
plugins_doc = []
|
|
||||||
excludes = []
|
excludes = []
|
||||||
build_hotdoc = true
|
build_hotdoc = true
|
||||||
foreach f: ['gstgdkpixbufplugin.c']
|
foreach f: ['gstgdkpixbufplugin.c']
|
||||||
|
|
|
@ -45,36 +45,6 @@ if get_option('doc').disabled()
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
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
|
|
||||||
|
|
||||||
hotdoc_req = '>= 0.11.0'
|
|
||||||
hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout()
|
|
||||||
if not hotdoc_version.version_compare(hotdoc_req)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
else
|
|
||||||
message('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
hotdoc = import('hotdoc')
|
|
||||||
required_hotdoc_extensions = ['gst-extension']
|
|
||||||
foreach extension: required_hotdoc_extensions
|
|
||||||
if not hotdoc.has_extensions(extension)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but @0@ missing'.format(extension))
|
|
||||||
endif
|
|
||||||
|
|
||||||
message('@0@ extension not found, not building documentation'.format(extension))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
build_hotdoc = true
|
build_hotdoc = true
|
||||||
docconf = configuration_data()
|
docconf = configuration_data()
|
||||||
docconf.set('GST_API_VERSION', api_version)
|
docconf.set('GST_API_VERSION', api_version)
|
||||||
|
|
|
@ -53,51 +53,45 @@ if get_option('doc').disabled()
|
||||||
subdir_done()
|
subdir_done()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
hotdoc_p = find_program('hotdoc', required: get_option('doc'))
|
build_hotdoc = true
|
||||||
if not hotdoc_p.found()
|
|
||||||
message('Hotdoc not found, not building the documentation')
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
|
|
||||||
hotdoc_req = '>= 0.11.0'
|
cdir = meson.current_source_dir()
|
||||||
hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout()
|
doc_sources = []
|
||||||
if not hotdoc_version.version_compare(hotdoc_req)
|
foreach s: rtsp_server_sources + rtsp_server_headers
|
||||||
if get_option('doc').enabled()
|
doc_sources += s.full_path()
|
||||||
error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
else
|
|
||||||
message('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
hotdoc = import('hotdoc')
|
|
||||||
required_hotdoc_extensions = ['gi-extension', 'gst-extension']
|
|
||||||
foreach extension: required_hotdoc_extensions
|
|
||||||
if not hotdoc.has_extensions(extension)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but @0@ missing'.format(extension))
|
|
||||||
endif
|
|
||||||
|
|
||||||
message('@0@ extension not found, not building documentation'.format(extension))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
build_hotdoc = true
|
lib_sources = {
|
||||||
hotdoc = import('hotdoc')
|
'rtspserver': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
libs_doc = [hotdoc.generate_doc('gst-rtsp-server',
|
lib_doc_source_file = configure_file(
|
||||||
project_version: api_version,
|
output: 'lib_doc_sources.json',
|
||||||
gi_c_sources: ['../gst/rtsp-server/*.[hc]'],
|
configuration: lib_sources,
|
||||||
gi_sources: rtsp_server_gir[0].full_path(),
|
output_format: 'json')
|
||||||
sitemap: 'sitemap.txt',
|
|
||||||
index: 'index.md',
|
|
||||||
gi_index: 'index.md',
|
|
||||||
gi_smart_index: true,
|
|
||||||
gi_order_generated_subpages: true,
|
|
||||||
depends: rtsp_server_gir[0],
|
|
||||||
)]
|
|
||||||
|
|
||||||
|
lib_doc_gi_source_file = configure_file(
|
||||||
|
output: 'lib_doc_gi_sources.json',
|
||||||
|
configuration: {'rtspserver': rtsp_server_gir[0].full_path()},
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
lib_hotdoc_config = custom_target(
|
||||||
|
'build-gst-hotdoc-configs',
|
||||||
|
command: [
|
||||||
|
plugins_cache_generator,
|
||||||
|
'hotdoc-lib-config',
|
||||||
|
'--srcdir', cdir,
|
||||||
|
'--builddir', meson.current_build_dir(),
|
||||||
|
'--buildroot', meson.global_build_root(),
|
||||||
|
'--project_version', api_version,
|
||||||
|
'--gi_source_file', lib_doc_gi_source_file,
|
||||||
|
'--gi_c_source_file', lib_doc_source_file,
|
||||||
|
'--source_root', cdir,
|
||||||
|
'--gi_source_root', cdir / '..' / 'gst' / 'rtsp-server',
|
||||||
|
'--output', '@OUTPUT@',
|
||||||
|
],
|
||||||
|
output: 'hotdoc-lib-configs.json',
|
||||||
|
)
|
||||||
|
|
||||||
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
||||||
|
|
||||||
|
@ -136,5 +130,3 @@ plugin_hotdoc_configs = custom_target(
|
||||||
input: plugins_cache,
|
input: plugins_cache,
|
||||||
output: 'hotdoc-configs.json',
|
output: 'hotdoc-configs.json',
|
||||||
)
|
)
|
||||||
|
|
||||||
doc = libs_doc[0]
|
|
||||||
|
|
|
@ -32,6 +32,198 @@ try:
|
||||||
except ImportError: # python <3.3
|
except ImportError: # python <3.3
|
||||||
from collections import Mapping
|
from collections import Mapping
|
||||||
|
|
||||||
|
# Some project names need to be amended, to avoid conflicts with plugins.
|
||||||
|
# We also map gst to gstreamer to preserve existing links
|
||||||
|
PROJECT_NAME_MAP = {
|
||||||
|
'gst': 'gstreamer',
|
||||||
|
'app': 'applib',
|
||||||
|
'rtp': 'rtplib',
|
||||||
|
'rtsp': 'rtsplib',
|
||||||
|
'webrtc': 'webrtclib',
|
||||||
|
'mse': 'mselib',
|
||||||
|
'va': 'valib',
|
||||||
|
'vulkan': 'vulkanlib',
|
||||||
|
'rtspserver': 'gst-rtsp-server',
|
||||||
|
'validate': 'gst-devtools',
|
||||||
|
'ges': 'gst-editing-services',
|
||||||
|
'opencv': 'opencvlib',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def get_c_flags(dep, buildroot, uninstalled=True):
|
||||||
|
env = {}
|
||||||
|
if uninstalled:
|
||||||
|
env['PKG_CONFIG_PATH'] = os.path.join(buildroot, 'meson-uninstalled')
|
||||||
|
res = subprocess.run(['pkg-config', '--cflags', dep], env = env, capture_output=True)
|
||||||
|
|
||||||
|
return [res.stdout.decode().strip()]
|
||||||
|
|
||||||
|
class GstLibsHotdocConfGen:
|
||||||
|
def __init__(self):
|
||||||
|
parser = ArgumentParser()
|
||||||
|
parser.add_argument('--srcdir', type=P)
|
||||||
|
parser.add_argument('--builddir', type=P)
|
||||||
|
parser.add_argument('--buildroot', type=P)
|
||||||
|
parser.add_argument('--source_root', type=P)
|
||||||
|
parser.add_argument('--gi_source_file', type=P)
|
||||||
|
parser.add_argument('--gi_c_source_file', type=P)
|
||||||
|
parser.add_argument('--gi_source_root', type=P)
|
||||||
|
parser.add_argument('--c_source_file', type=P)
|
||||||
|
parser.add_argument('--project_version')
|
||||||
|
parser.add_argument('--gi_c_source_filters', nargs='*', default=[])
|
||||||
|
parser.add_argument('--c_source_filters', nargs='*', default=[])
|
||||||
|
parser.add_argument('--output', type=P)
|
||||||
|
|
||||||
|
parser.parse_args(namespace=self, args=sys.argv[2:])
|
||||||
|
|
||||||
|
def generate_libs_configs(self):
|
||||||
|
conf_files = []
|
||||||
|
|
||||||
|
with self.gi_c_source_file.open() as fd:
|
||||||
|
gi_c_source_map = json.load(fd)
|
||||||
|
|
||||||
|
with self.gi_source_file.open() as fd:
|
||||||
|
gi_source_map = json.load(fd)
|
||||||
|
|
||||||
|
if self.c_source_file is not None:
|
||||||
|
with self.c_source_file.open() as fd:
|
||||||
|
c_source_map = json.load(fd)
|
||||||
|
else:
|
||||||
|
c_source_map = {}
|
||||||
|
|
||||||
|
for libname in gi_source_map.keys():
|
||||||
|
gi_c_sources = gi_c_source_map[libname].split(os.pathsep)
|
||||||
|
gi_sources = gi_source_map[libname].split(os.pathsep)
|
||||||
|
|
||||||
|
project_name = PROJECT_NAME_MAP.get(libname, libname)
|
||||||
|
|
||||||
|
if project_name == 'audio' and gi_sources[0].endswith('GstBadAudio-1.0.gir'):
|
||||||
|
project_name = 'bad-audio'
|
||||||
|
|
||||||
|
conf_path = self.builddir / f'{project_name}-doc.json'
|
||||||
|
conf_files.append(str(conf_path))
|
||||||
|
|
||||||
|
index_path = os.path.join(self.source_root, 'index.md')
|
||||||
|
if not os.path.exists(index_path):
|
||||||
|
index_path = os.path.join(self.source_root, libname, 'index.md')
|
||||||
|
sitemap_path = os.path.join(self.source_root, libname, 'sitemap.txt')
|
||||||
|
gi_index_path = os.path.join(self.source_root, libname, 'gi-index.md')
|
||||||
|
else:
|
||||||
|
sitemap_path = os.path.join(self.source_root, 'sitemap.txt')
|
||||||
|
gi_index_path = os.path.join(self.source_root, 'gi-index.md')
|
||||||
|
|
||||||
|
assert(os.path.exists(index_path))
|
||||||
|
assert(os.path.exists(sitemap_path))
|
||||||
|
if not os.path.exists(gi_index_path):
|
||||||
|
gi_index_path = index_path
|
||||||
|
|
||||||
|
gi_source_root = os.path.join(self.gi_source_root, libname)
|
||||||
|
if not os.path.exists(gi_source_root):
|
||||||
|
gi_source_root = os.path.join(self.gi_source_root)
|
||||||
|
|
||||||
|
conf = {
|
||||||
|
'sitemap': sitemap_path,
|
||||||
|
'index': index_path,
|
||||||
|
'gi_index': gi_index_path,
|
||||||
|
'output': f'{project_name}-doc',
|
||||||
|
'conf_file': str(conf_path),
|
||||||
|
'project_name': project_name,
|
||||||
|
'project_version': self.project_version,
|
||||||
|
'gi_smart_index': True,
|
||||||
|
'gi_order_generated_subpages': True,
|
||||||
|
'gi_c_sources': gi_c_sources,
|
||||||
|
'gi_c_source_roots': [
|
||||||
|
os.path.abspath(gi_source_root),
|
||||||
|
os.path.abspath(os.path.join(self.srcdir, '..',)),
|
||||||
|
os.path.abspath(os.path.join(self.builddir, '..',)),
|
||||||
|
],
|
||||||
|
'include_paths': [
|
||||||
|
os.path.join(self.builddir),
|
||||||
|
os.path.join(self.srcdir),
|
||||||
|
],
|
||||||
|
'gi_sources': gi_sources,
|
||||||
|
'gi_c_source_filters': [str(s) for s in self.gi_c_source_filters],
|
||||||
|
'extra_assets': os.path.join(self.srcdir, 'images'),
|
||||||
|
}
|
||||||
|
|
||||||
|
with conf_path.open('w') as f:
|
||||||
|
json.dump(conf, f, indent=4)
|
||||||
|
|
||||||
|
for libname in c_source_map.keys():
|
||||||
|
c_sources = c_source_map[libname].split(os.pathsep)
|
||||||
|
|
||||||
|
project_name = PROJECT_NAME_MAP.get(libname, libname)
|
||||||
|
|
||||||
|
conf_path = self.builddir / f'{project_name}-doc.json'
|
||||||
|
conf_files.append(str(conf_path))
|
||||||
|
|
||||||
|
index_path = os.path.join(self.source_root, 'index.md')
|
||||||
|
if not os.path.exists(index_path):
|
||||||
|
index_path = os.path.join(self.source_root, libname, 'index.md')
|
||||||
|
sitemap_path = os.path.join(self.source_root, libname, 'sitemap.txt')
|
||||||
|
c_index_path = os.path.join(self.source_root, libname, 'c-index.md')
|
||||||
|
else:
|
||||||
|
sitemap_path = os.path.join(self.source_root, 'sitemap.txt')
|
||||||
|
c_index_path = os.path.join(self.source_root, 'c-index.md')
|
||||||
|
|
||||||
|
assert(os.path.exists(index_path))
|
||||||
|
assert(os.path.exists(sitemap_path))
|
||||||
|
if not os.path.exists(c_index_path):
|
||||||
|
c_index_path = index_path
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
if libname == 'adaptivedemux':
|
||||||
|
c_flags = get_c_flags(f'gstreamer-base-{self.project_version}', self.buildroot)
|
||||||
|
c_flags += [f'-I{self.srcdir}/../gst-libs']
|
||||||
|
elif libname == 'opencv':
|
||||||
|
c_flags = get_c_flags(f'gstreamer-base-{self.project_version}', self.buildroot)
|
||||||
|
c_flags += get_c_flags(f'gstreamer-video-{self.project_version}', self.buildroot)
|
||||||
|
c_flags += get_c_flags(f'opencv', self.buildroot, uninstalled = True)
|
||||||
|
c_flags += [f'-I{self.srcdir}/../gst-libs']
|
||||||
|
else:
|
||||||
|
c_flags = get_c_flags(f'gstreamer-{libname}-{self.project_version}', self.buildroot)
|
||||||
|
except Exception as e:
|
||||||
|
print (f'Cannot document {libname}')
|
||||||
|
print (e)
|
||||||
|
continue
|
||||||
|
|
||||||
|
c_flags += ['-DGST_USE_UNSTABLE_API']
|
||||||
|
|
||||||
|
if libname == 'opencv':
|
||||||
|
c_flags += ['-x c++']
|
||||||
|
|
||||||
|
conf = {
|
||||||
|
'sitemap': sitemap_path,
|
||||||
|
'index': index_path,
|
||||||
|
'c_index': c_index_path,
|
||||||
|
'output': f'{project_name}-doc',
|
||||||
|
'conf_file': str(conf_path),
|
||||||
|
'project_name': project_name,
|
||||||
|
'project_version': self.project_version,
|
||||||
|
'c_smart_index': True,
|
||||||
|
'c_order_generated_subpages': True,
|
||||||
|
'c_sources': c_sources,
|
||||||
|
'include_paths': [
|
||||||
|
os.path.join(self.builddir),
|
||||||
|
os.path.join(self.srcdir),
|
||||||
|
],
|
||||||
|
'c_source_filters': [str(s) for s in self.c_source_filters],
|
||||||
|
'extra_assets': os.path.join(self.srcdir, 'images'),
|
||||||
|
'extra_c_flags': c_flags
|
||||||
|
}
|
||||||
|
|
||||||
|
with conf_path.open('w') as f:
|
||||||
|
json.dump(conf, f, indent=4)
|
||||||
|
|
||||||
|
|
||||||
|
if self.output is not None:
|
||||||
|
with self.output.open('w') as f:
|
||||||
|
json.dump(conf_files, f, indent=4)
|
||||||
|
|
||||||
|
return conf_files
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class GstPluginsHotdocConfGen:
|
class GstPluginsHotdocConfGen:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -159,6 +351,10 @@ if __name__ == "__main__":
|
||||||
fs = GstPluginsHotdocConfGen().generate_plugins_configs()
|
fs = GstPluginsHotdocConfGen().generate_plugins_configs()
|
||||||
print(os.pathsep.join(fs))
|
print(os.pathsep.join(fs))
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
elif sys.argv[1] == "hotdoc-lib-config":
|
||||||
|
fs = GstLibsHotdocConfGen().generate_libs_configs()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
cache_filename = sys.argv[1]
|
cache_filename = sys.argv[1]
|
||||||
output_filename = sys.argv[2]
|
output_filename = sys.argv[2]
|
||||||
|
|
|
@ -44,36 +44,6 @@ gst_plugins_doc_dep = custom_target('build-doc-cache',
|
||||||
build_always_stale: true,
|
build_always_stale: true,
|
||||||
)
|
)
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
hotdoc_req = '>= 0.11.0'
|
|
||||||
hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout()
|
|
||||||
if not hotdoc_version.version_compare(hotdoc_req)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
else
|
|
||||||
message('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
hotdoc = import('hotdoc')
|
|
||||||
required_hotdoc_extensions = ['gi-extension', 'gst-extension']
|
|
||||||
foreach extension: required_hotdoc_extensions
|
|
||||||
if not hotdoc.has_extensions(extension)
|
|
||||||
if get_option('doc').enabled()
|
|
||||||
error('Documentation enabled but @0@ missing'.format(extension))
|
|
||||||
endif
|
|
||||||
|
|
||||||
message('@0@ extension not found, not building documentation'.format(extension))
|
|
||||||
subdir_done()
|
|
||||||
endif
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
if static_build
|
if static_build
|
||||||
if get_option('doc').enabled()
|
if get_option('doc').enabled()
|
||||||
error('Documentation enabled but not supported when building statically.')
|
error('Documentation enabled but not supported when building statically.')
|
||||||
|
@ -121,50 +91,79 @@ foreach h: ['gettext.h', 'glib-compat-private.h', 'glib-compat.h',
|
||||||
gst_excludes += [join_paths(meson.current_source_dir(), '..', 'gst', h)]
|
gst_excludes += [join_paths(meson.current_source_dir(), '..', 'gst', h)]
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
libs_doc = [hotdoc.generate_doc('gstreamer',
|
cdir = meson.current_source_dir()
|
||||||
project_version: api_version,
|
|
||||||
gi_c_sources: gst_sources + gst_headers,
|
|
||||||
gi_sources: [gst_gir[0].full_path()],
|
|
||||||
gi_c_source_filters: gst_excludes,
|
|
||||||
sitemap: 'gst/sitemap.txt',
|
|
||||||
index: 'gst/index.md',
|
|
||||||
gi_index: 'gst/gi-index.md',
|
|
||||||
gi_smart_index: true,
|
|
||||||
gi_c_source_roots: [join_paths(meson.current_source_dir(), '../gst/'), ],
|
|
||||||
dependencies: [gst_dep, gmodule_dep],
|
|
||||||
extra_assets: [join_paths(meson.current_source_dir(), 'images')],
|
|
||||||
depends: gst_gir[0],
|
|
||||||
)]
|
|
||||||
|
|
||||||
libs = [
|
doc_sources = []
|
||||||
['base', gst_base_gir, gst_base_dep],
|
foreach s: gst_sources + gst_headers
|
||||||
['controller', gst_controller_gir, gst_controller_dep,],
|
doc_sources += s.full_path()
|
||||||
['net', gst_net_gir, gst_net_dep],
|
|
||||||
['check', gst_check_gir, gst_check_dep],
|
|
||||||
]
|
|
||||||
|
|
||||||
foreach lib: libs
|
|
||||||
name = lib[0]
|
|
||||||
gir = lib[1]
|
|
||||||
deps = [lib[2], gir]
|
|
||||||
libs_doc += [hotdoc.generate_doc(name,
|
|
||||||
project_version: api_version,
|
|
||||||
gi_c_sources: ['../libs/gst/' + name + '/*.[hc]'],
|
|
||||||
gi_c_source_filters: gst_excludes,
|
|
||||||
gi_sources: gir[0].full_path(),
|
|
||||||
gi_c_source_roots: [join_paths(meson.current_source_dir(), '../libs/gst/' + name), ],
|
|
||||||
sitemap: join_paths('libs', name, 'sitemap.txt'),
|
|
||||||
index: join_paths('libs/', name, 'index.md'),
|
|
||||||
gi_index: join_paths('libs/', name, 'index.md'),
|
|
||||||
gi_smart_index: true,
|
|
||||||
gi_order_generated_subpages: true,
|
|
||||||
dependencies: deps,
|
|
||||||
install: false,
|
|
||||||
depends: gir[0],
|
|
||||||
)]
|
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
cdir = meson.current_source_dir()
|
lib_sources = {
|
||||||
|
'gst': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
|
gst_doc_source_file = configure_file(
|
||||||
|
output: 'gst_doc_sources.json',
|
||||||
|
configuration: lib_sources,
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
gst_doc_gi_source_file = configure_file(
|
||||||
|
output: 'gst_doc_gi_sources.json',
|
||||||
|
configuration: {'gst': gst_gir[0].full_path()},
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
lib_hotdoc_config = custom_target(
|
||||||
|
'build-gst-hotdoc-configs',
|
||||||
|
command: [
|
||||||
|
plugins_cache_generator,
|
||||||
|
'hotdoc-lib-config',
|
||||||
|
'--srcdir', cdir,
|
||||||
|
'--builddir', meson.current_build_dir(),
|
||||||
|
'--buildroot', meson.global_build_root(),
|
||||||
|
'--project_version', api_version,
|
||||||
|
'--gi_source_file', gst_doc_gi_source_file,
|
||||||
|
'--gi_c_source_file', gst_doc_source_file,
|
||||||
|
'--gi_c_source_filters', gst_excludes,
|
||||||
|
'--source_root', cdir / 'gst',
|
||||||
|
'--gi_source_root', cdir / '..' / 'gst',
|
||||||
|
'--output', '@OUTPUT@',
|
||||||
|
],
|
||||||
|
output: 'hotdoc-gst-configs.json',
|
||||||
|
)
|
||||||
|
|
||||||
|
libs_doc_source_file = configure_file(
|
||||||
|
output: 'libs_doc_sources.json',
|
||||||
|
configuration: libs_sources,
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
libs_doc_gi_source_file = configure_file(
|
||||||
|
output: 'libs_doc_gi_sources.json',
|
||||||
|
configuration: {
|
||||||
|
'base': gst_base_gir[0].full_path(),
|
||||||
|
'controller': gst_controller_gir[0].full_path(),
|
||||||
|
'net': gst_net_gir[0].full_path(),
|
||||||
|
'check': gst_check_gir[0].full_path(),
|
||||||
|
},
|
||||||
|
output_format: 'json')
|
||||||
|
|
||||||
|
libs_hotdoc_configs = custom_target(
|
||||||
|
'build-libs-hotdoc-configs',
|
||||||
|
command: [
|
||||||
|
plugins_cache_generator,
|
||||||
|
'hotdoc-lib-config',
|
||||||
|
'--srcdir', cdir,
|
||||||
|
'--builddir', meson.current_build_dir(),
|
||||||
|
'--buildroot', meson.global_build_root(),
|
||||||
|
'--project_version', api_version,
|
||||||
|
'--gi_source_file', libs_doc_gi_source_file,
|
||||||
|
'--gi_c_source_file', libs_doc_source_file,
|
||||||
|
'--gi_c_source_filters', gst_excludes,
|
||||||
|
'--source_root', cdir / 'libs',
|
||||||
|
'--gi_source_root', cdir / '..' / 'libs' / 'gst',
|
||||||
|
'--output', '@OUTPUT@',
|
||||||
|
],
|
||||||
|
output: 'hotdoc-libs-configs.json',
|
||||||
|
)
|
||||||
|
|
||||||
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
|
||||||
|
|
||||||
|
|
|
@ -152,8 +152,8 @@ gst_headers = files(
|
||||||
'math-compat.h',
|
'math-compat.h',
|
||||||
)
|
)
|
||||||
if host_system == 'darwin'
|
if host_system == 'darwin'
|
||||||
gst_headers += 'gstmacos.h'
|
gst_headers += files('gstmacos.h')
|
||||||
gst_sources += 'gstmacos.m'
|
gst_sources += files('gstmacos.m')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
install_headers(gst_headers, subdir : 'gstreamer-1.0/gst')
|
install_headers(gst_headers, subdir : 'gstreamer-1.0/gst')
|
||||||
|
@ -166,7 +166,7 @@ endif
|
||||||
|
|
||||||
extra_deps = []
|
extra_deps = []
|
||||||
if host_system == 'android'
|
if host_system == 'android'
|
||||||
gst_sources += 'gstandroid.c'
|
gst_sources += files('gstandroid.c')
|
||||||
extra_deps += cc.find_library('log')
|
extra_deps += cc.find_library('log')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,22 @@ gst_base_headers = files(
|
||||||
'gsttypefindhelper.h',
|
'gsttypefindhelper.h',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
gst_base_doc_headers = files(
|
||||||
|
'gstbitreader-docs.h',
|
||||||
|
'gstbitwriter-docs.h',
|
||||||
|
'gstbytereader-docs.h',
|
||||||
|
'gstbytewriter-docs.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gst_base_sources + gst_base_headers + gst_base_doc_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'base': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gst_base = library('gstbase-@0@'.format(api_version),
|
gst_base = library('gstbase-@0@'.format(api_version),
|
||||||
gst_base_sources,
|
gst_base_sources,
|
||||||
c_args : gst_c_args + ['-DBUILDING_GST_BASE', '-DG_LOG_DOMAIN="GStreamer-Base"'],
|
c_args : gst_c_args + ['-DBUILDING_GST_BASE', '-DG_LOG_DOMAIN="GStreamer-Base"'],
|
||||||
|
|
|
@ -17,6 +17,15 @@ gst_check_headers = files(
|
||||||
)
|
)
|
||||||
install_headers(gst_check_headers, subdir : 'gstreamer-1.0/gst/check/')
|
install_headers(gst_check_headers, subdir : 'gstreamer-1.0/gst/check/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gst_check_sources + gst_check_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'check': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
check_cdata = configuration_data()
|
check_cdata = configuration_data()
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,16 @@ gst_controller_headers = controller_mkenum_headers + files(
|
||||||
)
|
)
|
||||||
install_headers(gst_controller_headers, subdir : 'gstreamer-1.0/gst/controller/')
|
install_headers(gst_controller_headers, subdir : 'gstreamer-1.0/gst/controller/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gst_controller_sources + gst_controller_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'controller': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
controller_enums = gnome.mkenums_simple('controller-enumtypes',
|
controller_enums = gnome.mkenums_simple('controller-enumtypes',
|
||||||
sources : controller_mkenum_headers,
|
sources : controller_mkenum_headers,
|
||||||
header_prefix : '#include <gst/controller/controller-prelude.h>',
|
header_prefix : '#include <gst/controller/controller-prelude.h>',
|
||||||
|
|
|
@ -23,6 +23,15 @@ gst_net_headers = files(
|
||||||
)
|
)
|
||||||
install_headers(gst_net_headers, subdir : 'gstreamer-1.0/gst/net/')
|
install_headers(gst_net_headers, subdir : 'gstreamer-1.0/gst/net/')
|
||||||
|
|
||||||
|
doc_sources = []
|
||||||
|
foreach s: gst_net_sources + gst_net_headers
|
||||||
|
doc_sources += s.full_path()
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
libs_sources += {
|
||||||
|
'net': pathsep.join(doc_sources)
|
||||||
|
}
|
||||||
|
|
||||||
gst_net_gen_sources = []
|
gst_net_gen_sources = []
|
||||||
gst_net = library('gstnet-@0@'.format(api_version),
|
gst_net = library('gstnet-@0@'.format(api_version),
|
||||||
gst_net_sources,
|
gst_net_sources,
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
|
libs_sources = {}
|
||||||
|
|
||||||
subdir('gst')
|
subdir('gst')
|
||||||
|
|
Loading…
Reference in a new issue