From 25bdad805bb9e16032baf4480e9c1e432ddef49b Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Wed, 19 Jun 2024 21:28:31 -0400 Subject: [PATCH] gdk: add a "poison" macro to hide GDK_WINDOWING_* Many packages perform automagic dependencies on gdk's backend implementations by checking if the macro is defined and then using the code it unlocks, rather than having a buildsystem option such as -Dwayland=true. It's unfeasible to patch every such package's source code to add configure options and respect them. Instead add a truly filthy hack and permit gtk itself to selectively show or hide the windowing system in use. By default, we assume this macro is never defined. It should only ever be defined inside an ebuild, as such: ``` use wayland || append-cflags -DGENTOO_GTK_HIDE_WAYLAND use X || append-cflags -DGENTOO_GTK_HIDE_X11 ``` When seen, this will prevent code using "#ifdef GDK_WINDOWING_*" from seeing the define, so the automagic dependency won't be picked up. It will also cause any attempt to #include the backend-specific headers to bug out. Bug: https://bugs.gentoo.org/624960 Signed-off-by: Eli Schwartz --- gdk/gdkconfig.h.meson | 7 +++++++ gdk/wayland/gdkwayland.h | 4 ++++ gdk/x11/gdkx.h | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/gdk/gdkconfig.h.meson b/gdk/gdkconfig.h.meson index 7db19e0470..6bee207e94 100644 --- a/gdk/gdkconfig.h.meson +++ b/gdk/gdkconfig.h.meson @@ -10,9 +10,16 @@ G_BEGIN_DECLS +#ifndef GENTOO_GTK_HIDE_X11 #mesondefine GDK_WINDOWING_X11 +#endif + #mesondefine GDK_WINDOWING_BROADWAY + +#ifndef GENTOO_GTK_HIDE_WAYLAND #mesondefine GDK_WINDOWING_WAYLAND +#endif + #mesondefine GDK_WINDOWING_WIN32 #mesondefine GDK_WINDOWING_QUARTZ diff --git a/gdk/wayland/gdkwayland.h b/gdk/wayland/gdkwayland.h index 2b79295add..5f0e9cfa81 100644 --- a/gdk/wayland/gdkwayland.h +++ b/gdk/wayland/gdkwayland.h @@ -25,6 +25,10 @@ #ifndef __GDK_WAYLAND_H__ #define __GDK_WAYLAND_H__ +#ifdef GENTOO_GTK_HIDE_WAYLAND + #error "A Gentoo ebuild has hidden wayland and it cannot be used in this compilation unit. Please file a bug if you see this error." +#endif + #include #define __GDKWAYLAND_H_INSIDE__ diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h index 1f64bccb6d..256c83015e 100644 --- a/gdk/x11/gdkx.h +++ b/gdk/x11/gdkx.h @@ -25,6 +25,10 @@ #ifndef __GDK_X_H__ #define __GDK_X_H__ +#ifdef GENTOO_GTK_HIDE_X11 + #error "A Gentoo ebuild has hidden x11 and it cannot be used in this compilation unit. Please file a bug if you see this error." +#endif + #include #include -- 2.44.2