meson: Decouple linux/dma-buf.h and libdrm checks

Currently dmabuf_dep is found when the following conditions are met:
 - linux/dma-buf.h is present;
 - libdrm is found.

This is because Linux dmabuf support requires drm_fourcc.h which is part
of libdrm.

However, dmabuf_dep is used for two purposes:
 - define HAVE_DMABUF to state dmabuf support;
 - ensure the presence of drm_fourcc.h for gdk and for the
   media-gstreamer module.

Decouple this, unconditionally check for libdrm and require it on
Linux. Then, use libdrm_dep only to state the drm_fourcc.h presence.

Given that now we unconditionally require libdrm on Linux, HAVE_DMABUF
depends only on the linux/dma-buf.h presence.
This commit is contained in:
Alessandro Bono 2024-02-15 17:20:58 +01:00
parent eb34311c2c
commit b6767d2eef
4 changed files with 12 additions and 14 deletions

View File

@ -1,7 +1,7 @@
#pragma once
#include "config.h"
#ifdef HAVE_DMABUF
#ifdef HAVE_DRM_FOURCC_H
#include <drm_fourcc.h>
#endif

View File

@ -219,7 +219,7 @@ gdk_deps = [
platform_gio_dep,
pangocairo_dep,
vulkan_dep,
dmabuf_dep,
libdrm_dep,
png_dep,
tiff_dep,
jpeg_dep,

View File

@ -628,19 +628,17 @@ else
vulkan_pkg_found = false
endif
if cc.has_header('linux/dma-buf.h')
dmabuf_dep = dependency('libdrm',
required: os_linux)
else
if os_linux
error('OS is Linux, but linux/dma-buf.h not found.')
endif
dmabuf_dep = dependency('', required: false)
endif
cdata.set('HAVE_DMABUF', dmabuf_dep.found())
libdrm_dep = dependency('libdrm', required: os_linux)
# We only care about drm_fourcc.h for all the fourccs,
# but not about linking to libdrm
dmabuf_dep = dmabuf_dep.partial_dependency(includes: true, compile_args: true)
libdrm_dep = libdrm_dep.partial_dependency(includes: true, compile_args: true)
cdata.set('HAVE_DRM_FOURCC_H', libdrm_dep.found())
has_linux_dma_buf_h = cc.has_header('linux/dma-buf.h')
if os_linux and not has_linux_dma_buf_h
error('OS is Linux, but linux/dma-buf.h not found.')
endif
cdata.set('HAVE_DMABUF', has_linux_dma_buf_h)
cloudproviders_dep = dependency('cloudproviders',
required: get_option('cloudproviders'),

View File

@ -24,7 +24,7 @@ if gstplayer_dep.found() and gstgl_dep.found()
cdata.set('HAVE_GSTREAMER', 1)
media_gst_deps = [ libm, libgtk_dep, gstplayer_dep, gstgl_dep ]
if dmabuf_dep.found() and gstdrm_dep.found()
if libdrm_dep.found() and gstdrm_dep.found()
cdata.set('HAVE_GSTREAMER_DRM', 1)
media_gst_deps += [ gstdrm_dep ]
endif