From bfad22211f340b889e82f6f80a0f59bd4fc882f1 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 5 Jul 2026 14:01:44 +0300 Subject: [PATCH] ports: Add libdrm port --- ports/libdrm/build.sh | 34 +++++++++++ .../patches/0001-add-banan-os-support.patch | 60 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100755 ports/libdrm/build.sh create mode 100644 ports/libdrm/patches/0001-add-banan-os-support.patch diff --git a/ports/libdrm/build.sh b/ports/libdrm/build.sh new file mode 100755 index 00000000..d982cf76 --- /dev/null +++ b/ports/libdrm/build.sh @@ -0,0 +1,34 @@ +#!/bin/bash ../install.sh + +NAME='libdrm' +VERSION='2.4.134' +DOWNLOAD_URL="https://dri.freedesktop.org/libdrm/libdrm-$VERSION.tar.xz#ac5e74d157830eb8bee44c6a6bf3ad49774ef0dd2a72bdad74a8f20308b52a95" +_DEPENDENCIES=('mesa') +CONFIGURE_OPTIONS=( + '-Dprefix=/usr' + '-Dbuildtype=release' + '-Dintel=disabled' + '-Dradeon=disabled' + '-Damdgpu=disabled' + '-Dnouveau=disabled' + '-Dvmwgfx=disabled' + '-Domap=disabled' + '-Dexynos=disabled' + '-Dfreedreno=disabled' + '-Dtegra=disabled' + '-Dvc4=disabled' + '-Detnaviv=disabled' + '-Dtests=false' +) + +configure() { + meson setup --reconfigure --cross-file "$MESON_CROSS_FILE" "${CONFIGURE_OPTIONS[@]}" build || exit 1 +} + +build() { + meson compile -C build || exit 1 +} + +install() { + meson install --destdir="$DESTDIR" -C build || exit 1 +} diff --git a/ports/libdrm/patches/0001-add-banan-os-support.patch b/ports/libdrm/patches/0001-add-banan-os-support.patch new file mode 100644 index 00000000..008a834a --- /dev/null +++ b/ports/libdrm/patches/0001-add-banan-os-support.patch @@ -0,0 +1,60 @@ +diff -ruN libdrm-2.4.134/include/drm/drm.h libdrm-2.4.134-banan_os/include/drm/drm.h +--- libdrm-2.4.134/include/drm/drm.h 2026-05-29 11:49:42.000000000 +0300 ++++ libdrm-2.4.134-banan_os/include/drm/drm.h 2026-07-05 09:48:55.334130492 +0300 +@@ -44,7 +44,44 @@ + #else /* One of the BSDs */ + + #include ++#ifdef __banan_os__ ++#define _IOC_NRBITS 8 ++#define _IOC_TYPEBITS 8 ++#define _IOC_SIZEBITS 14 ++#define _IOC_DIRBITS 2 ++ ++#define _IOC_NRMASK ((1 << _IOC_NRBITS ) - 1) ++#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS) - 1) ++#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS) - 1) ++#define _IOC_DIRMASK ((1 << _IOC_DIRBITS ) - 1) ++ ++#define _IOC_NRSHIFT 0 ++#define _IOC_TYPESHIFT (_IOC_NRSHIFT + _IOC_NRBITS ) ++#define _IOC_SIZESHIFT (_IOC_TYPESHIFT + _IOC_TYPEBITS) ++#define _IOC_DIRSHIFT (_IOC_SIZESHIFT + _IOC_SIZEBITS) ++ ++#define _IOC_NONE 0U ++#define _IOC_WRITE 1U ++#define _IOC_READ 2U ++ ++#define _IOC(dir, type, nr, size) \ ++ (((dir) << _IOC_DIRSHIFT ) | \ ++ ((size) << _IOC_SIZESHIFT) | \ ++ ((type) << _IOC_TYPESHIFT) | \ ++ ((nr) << _IOC_NRSHIFT )) ++ ++#define _IO(type, nr) _IOC(_IOC_NONE, (type), (nr), 0) ++#define _IOR(type, nr, size) _IOC(_IOC_READ, (type), (nr), sizeof(size)) ++#define _IOW(type, nr, size) _IOC(_IOC_WRITE, (type), (nr), sizeof(size)) ++#define _IOWR(type, nr, size) _IOC(_IOC_READ|_IOC_WRITE, (type), (nr), sizeof(size)) ++ ++#define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT ) & _IOC_DIRMASK ) ++#define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK) ++#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT ) & _IOC_NRMASK ) ++#define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK) ++#else + #include ++#endif + #include + typedef int8_t __s8; + typedef uint8_t __u8; +diff -ruN libdrm-2.4.134/xf86drm.h libdrm-2.4.134-banan_os/xf86drm.h +--- libdrm-2.4.134/xf86drm.h 2026-05-29 11:49:42.000000000 +0300 ++++ libdrm-2.4.134-banan_os/xf86drm.h 2026-07-05 09:48:55.351883389 +0300 +@@ -47,7 +47,7 @@ + #define DRM_MAX_MINOR 64 /* deprecated */ + #endif + +-#if defined(__linux__) ++#if defined(__linux__) || defined(__banan_os__) + + #define DRM_IOCTL_NR(n) _IOC_NR(n) + #define DRM_IOC_VOID _IOC_NONE