diff --git a/x11-toolkits/gtk40/Makefile b/x11-toolkits/gtk40/Makefile index 04ebc8e3351e..679f7e153da2 100644 --- a/x11-toolkits/gtk40/Makefile +++ b/x11-toolkits/gtk40/Makefile @@ -1,109 +1,111 @@ PORTNAME= gtk PORTVERSION= 4.14.4 +PORTREVISION= 1 CATEGORIES= x11-toolkits MASTER_SITES= GNOME PKGNAMESUFFIX= 4 DIST_SUBDIR= gnome MAINTAINER= desktop@FreeBSD.org COMMENT= Gimp Toolkit for X11 GUI (current stable version) WWW= https://www.gtk.org/ LICENSE= LGPL20 PORTSCOUT= limit:1,even -BUILD_DEPENDS= sassc>0:textproc/sassc +BUILD_DEPENDS= ${LOCALBASE}/include/libdrm/drm_fourcc.h:graphics/libdrm \ + sassc>0:textproc/sassc LIB_DEPENDS= libepoxy.so:graphics/libepoxy \ libpng.so:graphics/png \ libtiff.so:graphics/tiff \ libfribidi.so:converters/fribidi \ libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libgraphene-1.0.so:graphics/graphene \ libharfbuzz.so:print/harfbuzz RUN_DEPENDS= hicolor-icon-theme>=0:misc/hicolor-icon-theme \ adwaita-icon-theme>=0:x11-themes/adwaita-icon-theme USES= compiler:c11 cpe gettext gnome jpeg localbase meson \ ninja pathfix perl5 python pkgconfig tar:xz CPE_VENDOR= gnome USE_LDCONFIG= yes USE_PERL5= build USE_GNOME= atk cairo gdkpixbuf2 introspection:build pango \ librsvg2:run MESON_ARGS= -Dbuild-testsuite=false LDFLAGS+= -lexecinfo BINARY_ALIAS= python3=${PYTHON_CMD} LIBVERSION= 1.1400.4 PLIST_SUB+= LIBVERSION=${LIBVERSION} GLIB_SCHEMAS= org.gtk.Demo4.gschema.xml \ org.gtk.gtk4.Settings.ColorChooser.gschema.xml \ org.gtk.gtk4.Settings.Debug.gschema.xml \ org.gtk.gtk4.Settings.EmojiChooser.gschema.xml \ org.gtk.gtk4.Settings.FileChooser.gschema.xml OPTIONS_DEFINE= CUPS COLORD DEBUG BROADWAY GSTREAMER VULKAN WAYLAND X11 OPTIONS_DEFAULT=CUPS COLORD BROADWAY GSTREAMER VULKAN WAYLAND X11 OPTIONS_SUB= yes BROADWAY_DESC= Enable GDK Broadway backend for showing GTK in the webbrowser using HTML5 and web sockets. BROADWAY_MESON_TRUE= broadway-backend COLORD_DESC= Color profile support COLORD_LIB_DEPENDS= libcolord.so:graphics/colord COLORD_MESON_ENABLED= colord CUPS_LIB_DEPENDS= libcups.so:print/cups CUPS_MESON_ENABLED= print-cups GSTREAMER_DESC= GStreamer multimedia backend GSTREAMER_MESON_ENABLED=media-gstreamer GSTREAMER_USES= gstreamer GSTREAMER_USE= GSTREAMER=bad,gl VULKAN_DESC= GDK Vulkan renderer backend VULKAN_BUILD_DEPENDS= glslc:graphics/shaderc \ vulkan-headers>0:graphics/vulkan-headers VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader VULKAN_RUN_DEPENDS= vulkan-headers>0:graphics/vulkan-headers VULKAN_MESON_ENABLED= vulkan VULKAN_CFLAGS= -Wno-error=int-conversion # https://gitlab.gnome.org/GNOME/gtk/-/issues/6033 WAYLAND_DESC= GDK Wayland backend WAYLAND_MESON_TRUE= wayland-backend WAYLAND_BUILD_DEPENDS= wayland-protocols>=0:graphics/wayland-protocols WAYLAND_LIB_DEPENDS= libwayland-egl.so:graphics/wayland \ libxkbcommon.so:x11/libxkbcommon WAYLAND_RUN_DEPENDS= gsettings-desktop-schemas>=0:devel/gsettings-desktop-schemas \ wayland-protocols>=0:graphics/wayland-protocols WAYLAND_USES= gl WAYLAND_USE= GL=egl X11_DESC= GDK X11 backend X11_MESON_TRUE= x11-backend X11_USES= xorg X11_USE= XORG=x11,xcomposite,xcursor,xdamage,xext,xfixes,xi,xinerama,xrandr,xrender pre-build: @${RM} -r ${WRKSRC}/docs/gtk.info* post-install: @${MKDIR} ${STAGEDIR}${PREFIX}/lib/gtk-4.0/engines @${MKDIR} ${STAGEDIR}${PREFIX}/lib/gtk-4.0/loaders @${MKDIR} ${STAGEDIR}${PREFIX}/lib/gtk-4.0/modules @${MKDIR} ${STAGEDIR}${PREFIX}/lib/gtk-4.0/${GTK4_VERSION}/engines @${MKDIR} ${STAGEDIR}${PREFIX}/lib/gtk-4.0/${GTK4_VERSION}/loaders @${MKDIR} ${STAGEDIR}${PREFIX}/lib/gtk-4.0/${GTK4_VERSION}/modules pre-test: @if [ ! -e ${WRKDIR}/.meson_build_tests ]; then \ ${RM} ${CONFIGURE_COOKIE} ${BUILD_COOKIE}; \ ${MAKE} -C${.CURDIR} build MESON_ARGS="${MESON_ARGS} --reconfigure -Dbuild-testsuite=true"; \ ${TOUCH} ${WRKDIR}/.meson_build_tests; \ fi .include diff --git a/x11-toolkits/gtk40/files/patch-dmabuf b/x11-toolkits/gtk40/files/patch-dmabuf new file mode 100644 index 000000000000..b1fa7e5a1c85 --- /dev/null +++ b/x11-toolkits/gtk40/files/patch-dmabuf @@ -0,0 +1,70 @@ +--- dma-buf-compat.h.orig 2024-08-27 18:15:44 UTC ++++ dma-buf-compat.h +@@ -0,0 +1,22 @@ ++#ifdef __linux__ ++#include ++#else ++typedef uint64_t __u64; ++ ++// From https://github.com/evadot/drm-subtree or https://reviews.freebsd.org/D23085 ++struct dma_buf_sync ++{ ++ __u64 flags; ++}; ++ ++#define DMA_BUF_SYNC_READ (1 << 0) ++#define DMA_BUF_SYNC_WRITE (2 << 0) ++#define DMA_BUF_SYNC_RW (DMA_BUF_SYNC_READ | DMA_BUF_SYNC_WRITE) ++#define DMA_BUF_SYNC_START (0 << 2) ++#define DMA_BUF_SYNC_END (1 << 2) ++#define DMA_BUF_SYNC_VALID_FLAGS_MASK \ ++ (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END) ++ ++#define DMA_BUF_BASE 'b' ++#define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) ++#endif +--- gdk/gdkdmabuf.c.orig 2024-08-27 18:17:03 UTC ++++ gdk/gdkdmabuf.c +@@ -28,8 +28,8 @@ + #ifdef HAVE_DMABUF + #include + #include +-#include + #include ++#include "../dma-buf-compat.h" + + typedef struct _GdkDrmFormatInfo GdkDrmFormatInfo; + +--- gsk/gpu/gskgpudownloadop.c.orig 2024-08-27 18:18:39 UTC ++++ gsk/gpu/gskgpudownloadop.c +@@ -16,7 +16,7 @@ + #include "gdk/gdkglcontextprivate.h" + + #ifdef HAVE_DMABUF +-#include ++#include "../../dma-buf-compat.h" + #endif + + typedef struct _GskGpuDownloadOp GskGpuDownloadOp; +--- gsk/gpu/gskvulkanimage.c.orig 2024-08-27 18:18:26 UTC ++++ gsk/gpu/gskvulkanimage.c +@@ -15,7 +15,7 @@ + #include + #include + #ifdef HAVE_DMABUF +-#include ++#include <../../dma-buf-compat.h> + #endif + + struct _GskVulkanImage +--- meson.build.orig 2024-08-27 18:19:59 UTC ++++ meson.build +@@ -636,7 +636,7 @@ cdata.set('HAVE_DRM_FOURCC_H', libdrm_dep.found()) + libdrm_dep = libdrm_dep.partial_dependency(includes: true, compile_args: true) + cdata.set('HAVE_DRM_FOURCC_H', libdrm_dep.found()) + +-cdata.set('HAVE_DMABUF', cc.has_header('linux/dma-buf.h')) ++cdata.set('HAVE_DMABUF', true) + + cloudproviders_dep = dependency('cloudproviders', + required: get_option('cloudproviders'),