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

@@ -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'),