From 0e7dade55ac450a6c7d67a2e1afd9cf52910de98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Thu, 30 Sep 2021 17:42:19 +0200 Subject: [PATCH] build: Add libva dependency fallback. Then libva can be subproject and used by either gstreamer-vaapi, va and msdk in gst-plugins-bad. Part-of: --- .../gst-libs/gst/va/meson.build | 6 ++++-- .../gst-plugins-bad/sys/msdk/meson.build | 6 ++++-- subprojects/gstreamer-vaapi/meson.build | 18 +++++++++++------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/va/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/va/meson.build index 3ea0025944..d01f823c94 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/va/meson.build +++ b/subprojects/gst-plugins-bad/gst-libs/gst/va/meson.build @@ -23,8 +23,10 @@ if va_option.disabled() or host_system != 'linux' endif libva_req = ['>= 1.6'] -libva_dep = dependency('libva', version: libva_req, required: va_option) -libva_drm_dep = dependency('libva-drm', version: libva_req, required: va_option) +libva_dep = dependency('libva', version: libva_req, required: va_option, + fallback: ['libva', 'libva_dep']) +libva_drm_dep = dependency('libva-drm', version: libva_req, required: va_option, + fallback: ['libva', 'libva_drm_dep']) if not (libva_dep.found() and libva_drm_dep.found()) subdir_done() diff --git a/subprojects/gst-plugins-bad/sys/msdk/meson.build b/subprojects/gst-plugins-bad/sys/msdk/meson.build index 24aabc7612..d5e6fcc388 100644 --- a/subprojects/gst-plugins-bad/sys/msdk/meson.build +++ b/subprojects/gst-plugins-bad/sys/msdk/meson.build @@ -147,8 +147,10 @@ if host_machine.system() == 'windows' msdk_deps = declare_dependency(dependencies: [d3d11_dep, legacy_stdio_dep]) msdk_deps_found = d3d11_dep.found() and legacy_stdio_dep.found() and cc.get_id() == 'msvc' else - libva_dep = dependency('libva', required: get_option('msdk')) - libva_drm_dep = dependency('libva-drm', required: get_option('msdk')) + libva_dep = dependency('libva', required: get_option('msdk'), + fallback: ['libva', 'libva_dep']) + libva_drm_dep = dependency('libva-drm', required: get_option('msdk'), + fallback: ['libva', 'libva_drm_dep']) libdl_dep = cc.find_library('dl', required: get_option('msdk')) libgudev_dep = dependency('gudev-1.0', required: get_option('msdk')) libdrm_dep = dependency('libdrm', required: get_option('msdk')) diff --git a/subprojects/gstreamer-vaapi/meson.build b/subprojects/gstreamer-vaapi/meson.build index e27720bd49..d34040fb34 100644 --- a/subprojects/gstreamer-vaapi/meson.build +++ b/subprojects/gstreamer-vaapi/meson.build @@ -81,11 +81,15 @@ endif # Other deps gmodule_dep = dependency('gmodule-2.0', required: false) -libva_dep = dependency('libva', version: libva_req) +libva_dep = dependency('libva', version: libva_req, + fallback : ['libva', 'libva_dep']) -libva_drm_dep = dependency('libva-drm', version: libva_req, required: false) -libva_wayland_dep = dependency('libva-wayland', version: libva_req, required: false) -libva_x11_dep = dependency('libva-x11', version: libva_req, required: false) +libva_drm_dep = dependency('libva-drm', version: libva_req, + fallback : ['libva', 'libva_drm_dep'], required: false) +libva_wayland_dep = dependency('libva-wayland', version: libva_req, + fallback : ['libva', 'libva_wayland_dep'], required: false) +libva_x11_dep = dependency('libva-x11', version: libva_req, + fallback : ['libva', 'libva_x11_dep'], required: false) libdrm_dep = dependency('libdrm', version: libdrm_req, required: false, fallback: ['libdrm', 'ext_libdrm']) libudev_dep = dependency('libudev', required: false) @@ -119,8 +123,8 @@ if glesv2_dep.found() endif USE_ENCODERS = get_option('with_encoders') != 'no' -USE_VP9_ENCODER = USE_ENCODERS and cc.has_header('va/va_enc_vp9.h', dependencies: libva_dep, prefix: '#include ') -USE_AV1_DECODER = cc.has_header('va/va_dec_av1.h', dependencies: libva_dep, prefix: '#include ') +USE_VP9_ENCODER = USE_ENCODERS and libva_dep.version().version_compare('>= 0.40.0') +USE_AV1_DECODER = libva_dep.version().version_compare('>= 1.10') USE_DRM = libva_drm_dep.found() and libdrm_dep.found() and libudev_dep.found() and get_option('with_drm') != 'no' USE_EGL = gmodule_dep.found() and egl_dep.found() and GLES_VERSION_MASK != 0 and get_option('with_egl') != 'no' @@ -157,7 +161,7 @@ if gstgl_dep.found() endif endif -driverdir = libva_dep.get_variable('driverdir') +driverdir = libva_dep.get_variable('driverdir', default_value: '') if driverdir == '' driverdir = join_paths(get_option('prefix'), get_option('libdir'), 'dri') endif