rework the libdrm include paths and configure scripts to account for the fact that the libdrm header files are in a different place on BSD distributions

This commit is contained in:
Joseph Crowell
2026-02-09 09:03:28 +10:00
parent 55fc628b5a
commit 2dc57435b7
4 changed files with 38 additions and 3 deletions

View File

@@ -68,6 +68,24 @@ PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.121])
PKG_CHECK_MODULES(LIBDRM_AMDGPU, [libdrm_amdgpu >= 2.4.121]) PKG_CHECK_MODULES(LIBDRM_AMDGPU, [libdrm_amdgpu >= 2.4.121])
PKG_CHECK_MODULES(GBM, [gbm]) PKG_CHECK_MODULES(GBM, [gbm])
# Check for DRM header location (Linux uses drm/ subdirectory, BSD may not)
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $LIBDRM_CFLAGS $LIBDRM_AMDGPU_CFLAGS"
# Check for headers with and without drm/ subdirectory
AC_CHECK_HEADERS([drm_fourcc.h amdgpu_drm.h],
[found_drm_headers=yes],
[found_drm_headers=no])
if test "x$found_drm_headers" = "xno"; then
# Fallback: check in drm/ subdirectory
AC_CHECK_HEADERS([drm/drm_fourcc.h drm/amdgpu_drm.h],
[found_drm_headers=yes
# Need to add -I flag for drm/ subdirectory
drm_incdir="-I\${includedir}/drm"
AC_SUBST(DRM_SUBDIR_INCDIR, ["$drm_incdir"])],
[AC_MSG_ERROR([libdrm headers not found - libdrm required])])
fi
CPPFLAGS="$SAVE_CPPFLAGS"
# Obtain compiler/linker options for the driver dependencies # Obtain compiler/linker options for the driver dependencies
PKG_CHECK_MODULES(XORG, [xorg-server >= 25.0.0 xproto fontsproto xf86driproto randrproto renderproto xextproto >= 7.0.99.1 $REQUIRED_MODULES]) PKG_CHECK_MODULES(XORG, [xorg-server >= 25.0.0 xproto fontsproto xf86driproto randrproto renderproto xextproto >= 7.0.99.1 $REQUIRED_MODULES])

View File

@@ -34,8 +34,10 @@ AMDGPU_KMS_SRCS=amdgpu_bo_helper.c amdgpu_dri2.c amdgpu_dri3.c amdgpu_drm_queue.
AM_CFLAGS = \ AM_CFLAGS = \
@GBM_CFLAGS@ \ @GBM_CFLAGS@ \
@LIBDRM_AMDGPU_CFLAGS@ \ @LIBDRM_AMDGPU_CFLAGS@ \
@LIBDRM_CFLAGS@ \
@XORG_CFLAGS@ \ @XORG_CFLAGS@ \
@LIBUDEV_CFLAGS@ @LIBUDEV_CFLAGS@ \
$(DRM_SUBDIR_INCDIR)
if LIBUDEV if LIBUDEV
amdgpu_drv_la_LIBADD += $(LIBUDEV_LIBS) amdgpu_drv_la_LIBADD += $(LIBUDEV_LIBS)

View File

@@ -36,8 +36,8 @@
#include <errno.h> #include <errno.h>
#include <libgen.h> #include <libgen.h>
#include <string.h> #include <string.h>
#include <drm/drm_fourcc.h> #include <drm_fourcc.h>
#include <drm/amdgpu_drm.h> #include <amdgpu_drm.h>
#include <unistd.h> #include <unistd.h>
#include <poll.h> #include <poll.h>

View File

@@ -15,6 +15,20 @@ srcs = [
'drmmode_display.c', 'drmmode_display.c',
] ]
# Check for DRM header location (Linux uses drm/ subdirectory, BSD may not)
drm_args = []
drm_incdir = libdrm_dep.get_variable(pkgconfig: 'includedir')
if meson.get_compiler('c').has_header('drm_fourcc.h') and \
meson.get_compiler('c').has_header('amdgpu_drm.h')
# Headers found without drm/ subdirectory (BSD)
elif meson.get_compiler('c').has_header('drm/drm_fourcc.h') and \
meson.get_compiler('c').has_header('drm/amdgpu_drm.h')
# Headers found with drm/ subdirectory (Linux)
drm_args = ['-I' + drm_incdir]
else
error('libdrm headers not found - libdrm required')
endif
amdgpu_drv_libs = [ amdgpu_drv_libs = [
fontsproto_dep, fontsproto_dep,
gbm_dep, gbm_dep,
@@ -37,6 +51,7 @@ shared_module(
srcs, srcs,
include_directories: include_directories('..'), include_directories: include_directories('..'),
dependencies: amdgpu_drv_libs, dependencies: amdgpu_drv_libs,
c_args: drm_args,
install: true, install: true,
install_dir: join_paths(moduledir, 'drivers'), install_dir: join_paths(moduledir, 'drivers'),
name_prefix: '', name_prefix: '',