mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-24 15:06:38 +00:00
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>
534 lines
18 KiB
Meson
534 lines
18 KiB
Meson
gstvulkan_dep = dependency('', required: false)
|
|
gstvulkanxcb_dep = dependency('', required: false)
|
|
gstvulkanwyland_dep = dependency('', required: false)
|
|
vulkan_windowing_opt = get_option('vulkan-windowing')
|
|
vulkan_opt = get_option('vulkan')
|
|
if vulkan_opt.disabled()
|
|
subdir_done()
|
|
endif
|
|
|
|
vulkan_sources = files(
|
|
'gstvkbuffermemory.c',
|
|
'gstvkbufferpool.c',
|
|
'gstvkcommandbuffer.c',
|
|
'gstvkcommandpool.c',
|
|
'gstvkdescriptorcache.c',
|
|
'gstvkdescriptorset.c',
|
|
'gstvkdescriptorpool.c',
|
|
'gstvkdevice.c',
|
|
'gstvkdebug.c',
|
|
'gstvkdisplay.c',
|
|
'gstvkerror.c',
|
|
'gstvkfence.c',
|
|
'gstvkformat.c',
|
|
'gstvkfullscreenquad.c',
|
|
'gstvkhandle.c',
|
|
'gstvkhandlepool.c',
|
|
'gstvkimagememory.c',
|
|
'gstvkimagebufferpool.c',
|
|
'gstvkimageview.c',
|
|
'gstvkinstance.c',
|
|
'gstvkmemory.c',
|
|
'gstvkoperation.c',
|
|
'gstvkphysicaldevice.c',
|
|
'gstvkqueue.c',
|
|
'gstvkswapper.c',
|
|
'gstvktrash.c',
|
|
'gstvkvideofilter.c',
|
|
'gstvkvideoutils.c',
|
|
'gstvkutils.c',
|
|
'gstvkwindow.c',
|
|
)
|
|
|
|
vulkan_headers = files(
|
|
'gstvkapi.h',
|
|
'gstvkbarrier.h',
|
|
'gstvkbuffermemory.h',
|
|
'gstvkbufferpool.h',
|
|
'gstvkcommandbuffer.h',
|
|
'gstvkcommandpool.h',
|
|
'gstvkdescriptorcache.h',
|
|
'gstvkdescriptorset.h',
|
|
'gstvkdescriptorpool.h',
|
|
'gstvkdebug.h',
|
|
'gstvkdevice.h',
|
|
'gstvkdisplay.h',
|
|
'gstvkerror.h',
|
|
'gstvkfence.h',
|
|
'gstvkformat.h',
|
|
'gstvkfullscreenquad.h',
|
|
'gstvkhandle.h',
|
|
'gstvkhandlepool.h',
|
|
'gstvkimagememory.h',
|
|
'gstvkimagebufferpool.h',
|
|
'gstvkimageview.h',
|
|
'gstvkinstance.h',
|
|
'gstvkmemory.h',
|
|
'gstvkoperation.h',
|
|
'gstvkphysicaldevice.h',
|
|
'gstvkqueue.h',
|
|
'gstvkswapper.h',
|
|
'gstvktrash.h',
|
|
'gstvkutils.h',
|
|
'gstvkvideofilter.h',
|
|
'gstvkvideoutils.h',
|
|
'gstvkwindow.h',
|
|
'vulkan-prelude.h',
|
|
'vulkan_fwd.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_xcb_sources = []
|
|
vulkan_xcb_headers = []
|
|
vulkan_wayland_sources = []
|
|
vulkan_wayland_headers = []
|
|
|
|
vulkan_windowing = false
|
|
vulkan_objc_args = []
|
|
vulkan_defines = []
|
|
optional_deps = []
|
|
has_vulkan_header = false
|
|
vulkan_dep = dependency('', required: false)
|
|
vulkan_inc_dir = ''
|
|
enabled_vulkan_winsys = []
|
|
|
|
vulkan_conf = configuration_data()
|
|
vulkan_conf_options = [
|
|
'GST_VULKAN_HAVE_WINDOW_XCB',
|
|
'GST_VULKAN_HAVE_WINDOW_WAYLAND',
|
|
'GST_VULKAN_HAVE_WINDOW_COCOA',
|
|
'GST_VULKAN_HAVE_WINDOW_IOS',
|
|
'GST_VULKAN_HAVE_WINDOW_WIN32',
|
|
'GST_VULKAN_HAVE_WINDOW_ANDROID',
|
|
'GST_VULKAN_HAVE_VIDEO_EXTENSIONS',
|
|
]
|
|
|
|
foreach option : vulkan_conf_options
|
|
vulkan_conf.set(option, 0)
|
|
endforeach
|
|
|
|
if ['ios', 'darwin'].contains(host_system)
|
|
vulkan_dep = dependency('vulkan', method: 'pkg-config', required : false)
|
|
if not vulkan_dep.found()
|
|
# - ios does not support the loader/validation layers
|
|
# - We need to link directly to MoltenVK to be able to use
|
|
# MoltenVK-specific functions that use dispatchable handles (like
|
|
# retrieving the metal device from the VkDevice) which is currently waiting
|
|
# on implementing a proper Metal extension for Vulkan
|
|
# https://github.com/KhronosGroup/MoltenVK/issues/492
|
|
objcpp = meson.get_compiler('objcpp')
|
|
vulkan_dep = objcpp.find_library('MoltenVK', required : vulkan_opt)
|
|
endif
|
|
elif host_system == 'windows'
|
|
vulkan_root = run_command(python3, '-c', 'import os; print(os.environ.get("VK_SDK_PATH"))', check: false).stdout().strip()
|
|
if vulkan_root != '' and vulkan_root != 'None'
|
|
vulkan_lib_dir = ''
|
|
if build_machine.cpu_family() == 'x86_64'
|
|
vulkan_lib_dir = join_paths(vulkan_root, 'Lib')
|
|
else
|
|
vulkan_lib_dir = join_paths(vulkan_root, 'Lib32')
|
|
endif
|
|
|
|
vulkan_lib = cc.find_library('vulkan-1', dirs: vulkan_lib_dir,
|
|
required : vulkan_opt)
|
|
|
|
vulkan_inc_dir = join_paths(vulkan_root, 'Include')
|
|
has_vulkan_header = cc.has_header('vulkan/vulkan_core.h',
|
|
args: '-I' + vulkan_inc_dir,
|
|
required: vulkan_opt)
|
|
|
|
if vulkan_lib.found() and has_vulkan_header
|
|
vulkan_dep = declare_dependency(include_directories: include_directories(vulkan_inc_dir),
|
|
dependencies: vulkan_lib)
|
|
endif
|
|
endif
|
|
else
|
|
vulkan_dep = dependency('vulkan', method: 'pkg-config', required: false)
|
|
if not vulkan_dep.found()
|
|
vulkan_dep = cc.find_library('vulkan', required: vulkan_opt)
|
|
endif
|
|
endif
|
|
|
|
if host_system != 'windows'
|
|
has_vulkan_header = cc.has_header('vulkan/vulkan_core.h', dependencies: vulkan_dep, required: vulkan_opt)
|
|
endif
|
|
|
|
if 'x11' in vulkan_windowing_opt or 'auto' in vulkan_windowing_opt
|
|
vulkan_xcb_required = vulkan_opt.enabled() and 'x11' in vulkan_windowing_opt
|
|
xcb_dep = dependency('xcb', version : '>=1.10', required: vulkan_xcb_required)
|
|
xkbcommon_dep = dependency('xkbcommon', required: vulkan_xcb_required)
|
|
xkbcommon_x11_dep = dependency('xkbcommon-x11', required: vulkan_xcb_required)
|
|
|
|
if xcb_dep.found() and xkbcommon_dep.found() and xkbcommon_x11_dep.found() and \
|
|
cc.has_header('vulkan/vulkan_xcb.h', dependencies : vulkan_dep, required: vulkan_xcb_required)
|
|
vulkan_priv_sources += files(
|
|
'xcb/gstvkwindow_xcb.c',
|
|
'xcb/xcb_event_source.c',
|
|
)
|
|
vulkan_xcb_sources += files(
|
|
'xcb/gstvkdisplay_xcb.c',
|
|
)
|
|
vulkan_xcb_headers += files(
|
|
'xcb/xcb.h',
|
|
'xcb/gstvkdisplay_xcb.h'
|
|
)
|
|
|
|
optional_deps += [xcb_dep, xkbcommon_dep, xkbcommon_x11_dep]
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_XCB', 1)
|
|
enabled_vulkan_winsys += ['xcb']
|
|
endif
|
|
endif
|
|
|
|
if 'wayland' in vulkan_windowing_opt or 'auto' in vulkan_windowing_opt
|
|
vulkan_wayland_required = vulkan_opt.enabled() and 'wayland' in vulkan_windowing_opt
|
|
wayland_client_dep = dependency('wayland-client', version : '>=1.4', required: vulkan_wayland_required)
|
|
wayland_protocols_dep = dependency('wayland-protocols', version : '>= 1.15', required: vulkan_wayland_required)
|
|
wayland_scanner = find_program('wayland-scanner', required: vulkan_wayland_required)
|
|
|
|
if wayland_client_dep.found() and wayland_protocols_dep.found() and wayland_scanner.found() and \
|
|
cc.has_header('vulkan/vulkan_wayland.h', dependencies: vulkan_dep, required: vulkan_wayland_required)
|
|
# Generate the XDG shell interface
|
|
wayland_protocols_basedir = wayland_protocols_dep.get_variable('pkgdatadir')
|
|
xdg_shell_xml_spec = join_paths(wayland_protocols_basedir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
|
xdg_shell_header = custom_target('xdg-shell-client-header',
|
|
command: [ wayland_scanner, 'client-header', '@INPUT@', '@OUTPUT@' ],
|
|
input: xdg_shell_xml_spec,
|
|
output: 'xdg-shell-client-protocol.h',
|
|
)
|
|
xdg_shell_code = custom_target('xdg-shell-client-code',
|
|
command: [ wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@' ],
|
|
input: xdg_shell_xml_spec,
|
|
output: 'xdg-shell-client-protocol.c',
|
|
)
|
|
|
|
vulkan_priv_sources += files(
|
|
'wayland/gstvkdisplay_wayland.c',
|
|
'wayland/gstvkwindow_wayland.c',
|
|
'wayland/wayland_event_source.c',
|
|
)
|
|
vulkan_priv_sources += [
|
|
xdg_shell_header,
|
|
xdg_shell_code,
|
|
]
|
|
vulkan_wayland_sources += files(
|
|
'wayland/gstvkdisplay_wayland.c',
|
|
)
|
|
vulkan_wayland_headers += files(
|
|
'wayland/wayland.h',
|
|
'wayland/gstvkdisplay_wayland.h'
|
|
)
|
|
|
|
optional_deps += wayland_client_dep
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_WAYLAND', 1)
|
|
enabled_vulkan_winsys += ['wayland']
|
|
endif
|
|
endif
|
|
|
|
if ['darwin', 'ios'].contains(host_system)
|
|
objc = meson.get_compiler('objc')
|
|
if not objc.has_argument('-fobjc-arc')
|
|
error('ARC is required for building')
|
|
endif
|
|
|
|
vulkan_objc_args += ['-fobjc-arc']
|
|
|
|
foundation_dep = dependency('appleframeworks', modules : ['Foundation'], required : vulkan_opt)
|
|
quartzcore_dep = dependency('appleframeworks', modules : ['QuartzCore'], required : vulkan_opt)
|
|
corefoundation_dep = dependency('appleframeworks', modules : ['CoreFoundation'], required : vulkan_opt)
|
|
if foundation_dep.found() and quartzcore_dep.found() and corefoundation_dep.found()
|
|
optional_deps += [foundation_dep, corefoundation_dep, quartzcore_dep]
|
|
endif
|
|
endif
|
|
|
|
if host_system == 'darwin'
|
|
cocoa_dep = dependency('appleframeworks', modules : ['Cocoa'], required : vulkan_opt)
|
|
|
|
if cocoa_dep.found() and cc.has_header('vulkan/vulkan_macos.h', dependencies: vulkan_dep, required: vulkan_opt)
|
|
vulkan_priv_sources += files(
|
|
'cocoa/gstvkdisplay_cocoa.m',
|
|
'cocoa/gstvkwindow_cocoa.m',
|
|
)
|
|
optional_deps += [cocoa_dep]
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_COCOA', 1)
|
|
enabled_vulkan_winsys += ['cocoa']
|
|
endif
|
|
endif
|
|
|
|
if host_system == 'ios'
|
|
uikit_dep = dependency('appleframeworks', modules : ['UIKit', 'IOSurface', 'CoreGraphics', 'Metal'], required : vulkan_opt)
|
|
|
|
if uikit_dep.found() and cc.has_header('vulkan/vulkan_ios.h', dependencies : vulkan_dep, required: vulkan_opt)
|
|
vulkan_priv_sources += files(
|
|
'ios/gstvkdisplay_ios.m',
|
|
'ios/gstvkwindow_ios.m',
|
|
)
|
|
optional_deps += [uikit_dep]
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_IOS', 1)
|
|
enabled_vulkan_winsys += ['ios']
|
|
endif
|
|
endif
|
|
|
|
if host_system == 'windows'
|
|
gdi_dep = cc.find_library('gdi32', required : vulkan_opt)
|
|
|
|
# Cannot use internal dependency object with cc.has_header()
|
|
if gdi_dep.found() and cc.has_header('vulkan/vulkan_win32.h', args: '-I' + vulkan_inc_dir, required: vulkan_opt)
|
|
vulkan_priv_sources += ['win32/gstvkwindow_win32.c']
|
|
optional_deps += [gdi_dep]
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_WIN32', 1)
|
|
enabled_vulkan_winsys += ['win32']
|
|
endif
|
|
endif
|
|
|
|
if host_system == 'android'
|
|
if cc.has_header('vulkan/vulkan_android.h', dependencies : vulkan_dep, required: vulkan_opt)
|
|
vulkan_priv_sources += files(
|
|
'android/gstvkdisplay_android.c',
|
|
'android/gstvkwindow_android.c',
|
|
)
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_ANDROID', 1)
|
|
enabled_vulkan_winsys += ['android']
|
|
endif
|
|
endif
|
|
|
|
if not vulkan_windowing
|
|
if vulkan_opt.enabled()
|
|
error('No Windowing system found. vulkansink will not work')
|
|
else
|
|
message('No Windowing system found. vulkansink will not work')
|
|
endif
|
|
endif
|
|
|
|
if not vulkan_dep.found() or not has_vulkan_header
|
|
subdir_done()
|
|
endif
|
|
|
|
if get_option('vulkan-video').allowed()
|
|
video_test = '''
|
|
#include <vulkan/vulkan.h>
|
|
|
|
#if !(defined(VK_VERSION_1_4) || (defined(VK_VERSION_1_3) && VK_HEADER_VERSION >= 275))
|
|
#error "Need at least Vulkan 1.3.275"
|
|
#endif
|
|
|
|
/* vk_video/vulkan_video_codec_h264std.h */
|
|
static StdVideoH264SequenceParameterSet h264_sps;
|
|
static StdVideoH264PictureParameterSet h264_pps;
|
|
|
|
/* vk_video/vulkan_video_codec_h265std.h */
|
|
static StdVideoH265SequenceParameterSet h265_sps;
|
|
static StdVideoH265PictureParameterSet h265_pps;
|
|
|
|
static VkVideoEncodeH264ProfileInfoKHR h264_profile;
|
|
static VkVideoEncodeH265ProfileInfoKHR h265_profile;
|
|
'''
|
|
|
|
if vulkan_inc_dir != ''
|
|
have_vk_video = cc.compiles(video_test, dependencies : vulkan_dep, args: '-I' + vulkan_inc_dir)
|
|
else
|
|
have_vk_video = cc.compiles(video_test, dependencies : vulkan_dep)
|
|
endif
|
|
if have_vk_video
|
|
vulkan_conf.set('GST_VULKAN_HAVE_VIDEO_EXTENSIONS', 1)
|
|
vulkan_priv_sources += files(
|
|
'gstvkvideo-private.c',
|
|
'gstvkdecoder-private.c',
|
|
'gstvkencoder-private.c',
|
|
)
|
|
elif get_option('vulkan-video').enabled()
|
|
error('Vulkan Video extensions headers not found')
|
|
endif
|
|
endif
|
|
|
|
gen_sources = []
|
|
|
|
install_headers(vulkan_headers, subdir : 'gstreamer-1.0/gst/vulkan')
|
|
|
|
configure_file(input : 'gstvkconfig.h.meson',
|
|
output : 'gstvkconfig.h',
|
|
install_dir : get_option('includedir') / 'gstreamer-1.0/gst/vulkan',
|
|
configuration : vulkan_conf)
|
|
|
|
glib_mkenums = find_program('glib-mkenums')
|
|
mkenums = find_program('vulkan_mkenum.py')
|
|
vulkan_enumtypes_h = custom_target('gstvulkanenum_h',
|
|
output : 'vulkan-enumtypes.h',
|
|
input : vulkan_headers,
|
|
install : true,
|
|
install_dir : get_option('includedir') / 'gstreamer-1.0/gst/vulkan',
|
|
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
|
|
|
|
vulkan_enumtypes_c = custom_target('gstvulkanenum_c',
|
|
output : 'vulkan-enumtypes.c',
|
|
input : vulkan_headers,
|
|
depends : [vulkan_enumtypes_h],
|
|
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
|
|
gen_sources += [vulkan_enumtypes_h]
|
|
|
|
# Disable warnings of dependencies
|
|
vulkan_args = cc.get_supported_arguments(['-Wno-aggregate-return'])
|
|
|
|
gstvulkan = library('gstvulkan-' + api_version,
|
|
vulkan_sources, vulkan_priv_sources, vulkan_wayland_sources, vulkan_xcb_sources, vulkan_enumtypes_c, vulkan_enumtypes_h,
|
|
c_args : gst_plugins_bad_args + vulkan_defines + vulkan_args + ['-DBUILDING_GST_VULKAN', '-DG_LOG_DOMAIN="GStreamer-Vulkan"'],
|
|
objc_args : gst_plugins_bad_args + vulkan_defines + vulkan_objc_args + ['-DBUILDING_GST_VULKAN', '-DG_LOG_DOMAIN="GStreamer-Vulkan"'],
|
|
include_directories : [configinc, libsinc],
|
|
version : libversion,
|
|
soversion : soversion,
|
|
darwin_versions : osxversion,
|
|
install : true,
|
|
dependencies : [gstbase_dep, gstvideo_dep, vulkan_dep] + optional_deps,
|
|
# don't confuse gst/vulkan/xcb/xcb.h with xcb/xcb.h
|
|
implicit_include_directories : false)
|
|
|
|
library_def = {'lib': gstvulkan}
|
|
pkg_name = 'gstreamer-vulkan-1.0'
|
|
pkgconfig.generate(gstvulkan,
|
|
libraries : [gst_dep, gstbase_dep, gstvideo_dep],
|
|
variables : pkgconfig_variables,
|
|
subdirs : pkgconfig_subdirs,
|
|
name : pkg_name,
|
|
description : 'GStreamer Vulkan support',
|
|
)
|
|
|
|
if build_gir
|
|
extra_gir_includes = []
|
|
gobject_introspection_dep = dependency('gobject-introspection-1.0')
|
|
if gobject_introspection_dep.version().version_compare('>=1.61.1')
|
|
# This is the first version that contains Vulkan-1.0.gir
|
|
extra_gir_includes += ['Vulkan-1.0']
|
|
endif
|
|
|
|
gir = {
|
|
'sources' : vulkan_sources + vulkan_headers + [vulkan_enumtypes_h, vulkan_enumtypes_c],
|
|
'namespace' : 'GstVulkan',
|
|
'nsversion' : api_version,
|
|
'identifier_prefix' : 'Gst',
|
|
'symbol_prefix' : 'gst',
|
|
'export_packages' : pkg_name,
|
|
'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'] + extra_gir_includes,
|
|
'install' : true,
|
|
'extra_args' : gir_init_section + ['--c-include=gst/vulkan/vulkan.h'],
|
|
'dependencies' : [gstvideo_dep, gst_dep, gstbase_dep] + optional_deps
|
|
}
|
|
|
|
library_def += {'gir': [gir]}
|
|
if not static_build
|
|
vulkan_gir = gnome.generate_gir(gstvulkan, kwargs: gir)
|
|
library_def += {'gir_targets': library_def.get('gir_targets', []) + [vulkan_gir]}
|
|
gen_sources += vulkan_gir
|
|
endif
|
|
endif
|
|
gst_libraries += [[pkg_name, library_def]]
|
|
|
|
gstvulkan_dep = declare_dependency(link_with : gstvulkan,
|
|
include_directories : [libsinc],
|
|
sources: gen_sources,
|
|
dependencies : [gstvideo_dep, gstbase_dep, vulkan_dep] + optional_deps)
|
|
|
|
meson.override_dependency(pkg_name, gstvulkan_dep)
|
|
|
|
if enabled_vulkan_winsys.contains('xcb')
|
|
install_headers(vulkan_xcb_headers, subdir : 'gstreamer-1.0/gst/vulkan/xcb')
|
|
pkgconfig.generate(
|
|
libraries : [gstvulkan],
|
|
requires : ['xcb'],
|
|
subdirs : pkgconfig_subdirs,
|
|
name : 'gstreamer-vulkan-xcb-1.0',
|
|
description : 'GStreamer Vulkan support (XCB Specifics)',
|
|
)
|
|
vulkan_xcb_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 = {
|
|
'sources' : vulkan_xcb_sources + vulkan_xcb_headers,
|
|
'namespace' : 'GstVulkanXCB',
|
|
'nsversion' : api_version,
|
|
'identifier_prefix' : 'Gst',
|
|
'symbol_prefix' : 'gst',
|
|
'export_packages' : 'gstreamer-vulkan-xcb-1.0',
|
|
'install' : true,
|
|
'extra_args' : gir_init_section + ['--c-include=gst/vulkan/xcb/xcb.h'],
|
|
'dependencies' : [gstvideo_dep, gst_dep, gstbase_dep] + optional_deps
|
|
}
|
|
|
|
if not static_build
|
|
gir += {'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', vulkan_gir[0]] + extra_gir_includes}
|
|
vulkan_xcb_gir = gnome.generate_gir(gstvulkan, kwargs: gir)
|
|
library_def += {'gir_targets': library_def.get('gir_targets', []) + [vulkan_xcb_gir]}
|
|
endif
|
|
|
|
gir += {'includes' :['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', 'GstVulkan-1.0'] + extra_gir_includes}
|
|
library_def += {'gir': library_def['gir'] + [gir]}
|
|
endif
|
|
gstvulkanxcb_dep = declare_dependency(dependencies : [gstvulkan_dep],
|
|
sources : vulkan_xcb_gir)
|
|
meson.override_dependency('gstreamer-vulkan-xcb-1.0', gstvulkanxcb_dep)
|
|
endif
|
|
|
|
if enabled_vulkan_winsys.contains('wayland')
|
|
install_headers(vulkan_wayland_headers, subdir : 'gstreamer-1.0/gst/vulkan/wayland')
|
|
pkgconfig.generate(
|
|
libraries : [gstvulkan],
|
|
requires : ['wayland-client'],
|
|
subdirs : pkgconfig_subdirs,
|
|
name : 'gstreamer-vulkan-wayland-1.0',
|
|
description : 'GStreamer Vulkan support (Wayland Specifics)',
|
|
)
|
|
vulkan_wayland_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 = {
|
|
'sources' : vulkan_wayland_sources + vulkan_wayland_headers,
|
|
'namespace' : 'GstVulkanWayland',
|
|
'nsversion' : api_version,
|
|
'identifier_prefix' : 'Gst',
|
|
'symbol_prefix' : 'gst',
|
|
'export_packages' : 'gstreamer-vulkan-wayland-1.0',
|
|
'install' : true,
|
|
'extra_args' : gir_init_section + ['--c-include=gst/vulkan/wayland/wayland.h'],
|
|
'dependencies' : [gstvideo_dep, gst_dep, gstbase_dep] + optional_deps
|
|
}
|
|
if not static_build
|
|
gir += {'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', vulkan_gir[0]] + extra_gir_includes}
|
|
vulkan_wayland_gir += gnome.generate_gir(gstvulkan, kwargs: gir)
|
|
library_def += {'gir_targets': library_def.get('gir_targets', []) + [vulkan_wayland_gir]}
|
|
endif
|
|
gir += {'includes' :['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', 'GstVulkan-1.0'] + extra_gir_includes}
|
|
library_def += {'gir': library_def['gir'] + [gir]}
|
|
endif
|
|
gstvulkanwayland_dep = declare_dependency(dependencies : [gstvulkan_dep],
|
|
sources : vulkan_wayland_gir)
|
|
meson.override_dependency('gstreamer-vulkan-wayland-1.0', gstvulkanwayland_dep)
|
|
endif
|