From 009bcaea7e796067a3f7688e65524a9c508bc402 Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Fri, 28 Apr 2023 00:48:40 -0700 Subject: [PATCH] [WPE] Make libgbm and libdrm conditional dependencies https://bugs.webkit.org/show_bug.cgi?id=255393 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed by Žan Doberšek. Like in 248522@main for GTK. * Source/cmake/OptionsWPE.cmake: - Make libgbm and libdrm conditional dependencies Canonical link: https://commits.webkit.org/263491@main --- Source/cmake/OptionsWPE.cmake | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/Source/cmake/OptionsWPE.cmake b/Source/cmake/OptionsWPE.cmake index b755b0150beb..2f5ceec877b4 100644 --- a/Source/cmake/OptionsWPE.cmake +++ b/Source/cmake/OptionsWPE.cmake @@ -14,11 +14,9 @@ set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string") find_package(Cairo 1.16.0 REQUIRED) find_package(Fontconfig 2.13.0 REQUIRED) find_package(Freetype 2.9.0 REQUIRED) -find_package(GBM REQUIRED) find_package(HarfBuzz 1.4.2 REQUIRED COMPONENTS ICU) find_package(ICU 61.2 REQUIRED COMPONENTS data i18n uc) find_package(JPEG REQUIRED) -find_package(LibDRM REQUIRED) find_package(LibEpoxy 1.4.0 REQUIRED) find_package(LibGcrypt 1.6.0 REQUIRED) find_package(LibXml2 2.8.0 REQUIRED) @@ -97,6 +95,7 @@ WEBKIT_OPTION_DEFINE(ENABLE_INTROSPECTION "Whether to enable GObject introspecti WEBKIT_OPTION_DEFINE(ENABLE_JOURNALD_LOG "Whether to enable journald logging" PUBLIC ON) WEBKIT_OPTION_DEFINE(ENABLE_WPE_QT_API "Whether to enable support for the Qt5/QML plugin" PUBLIC ${ENABLE_DEVELOPER_MODE}) WEBKIT_OPTION_DEFINE(ENABLE_WPE_1_1_API "Whether to build WPE 1.1 instead of WPE 2.0" PUBLIC OFF) +WEBKIT_OPTION_DEFINE(USE_GBM "Whether to enable usage of GBM and libdrm." PUBLIC ON) WEBKIT_OPTION_DEFINE(USE_JPEGXL "Whether to enable support for JPEG-XL images." PUBLIC ${ENABLE_EXPERIMENTAL_FEATURES}) WEBKIT_OPTION_DEFINE(USE_LCMS "Whether to enable support for image color management using libcms2." PUBLIC ON) WEBKIT_OPTION_DEFINE(USE_OPENJPEG "Whether to enable support for JPEG2000 images." PUBLIC ON) @@ -355,7 +354,6 @@ SET_AND_EXPOSE_TO_BUILD(HAVE_ACCESSIBILITY ${ENABLE_ACCESSIBILITY}) SET_AND_EXPOSE_TO_BUILD(USE_ATSPI ${ENABLE_ACCESSIBILITY}) SET_AND_EXPOSE_TO_BUILD(USE_CAIRO TRUE) SET_AND_EXPOSE_TO_BUILD(USE_EGL TRUE) -SET_AND_EXPOSE_TO_BUILD(USE_GBM TRUE) SET_AND_EXPOSE_TO_BUILD(USE_GCRYPT TRUE) SET_AND_EXPOSE_TO_BUILD(USE_LIBEPOXY TRUE) SET_AND_EXPOSE_TO_BUILD(USE_LIBWPE TRUE) @@ -376,13 +374,30 @@ endif () SET_AND_EXPOSE_TO_BUILD(USE_TEXTURE_MAPPER TRUE) SET_AND_EXPOSE_TO_BUILD(USE_TEXTURE_MAPPER_GL TRUE) -SET_AND_EXPOSE_TO_BUILD(USE_TEXTURE_MAPPER_DMABUF TRUE) SET_AND_EXPOSE_TO_BUILD(USE_COORDINATED_GRAPHICS TRUE) SET_AND_EXPOSE_TO_BUILD(USE_NICOSIA TRUE) SET_AND_EXPOSE_TO_BUILD(USE_ANGLE ${ENABLE_WEBGL}) SET_AND_EXPOSE_TO_BUILD(USE_THEME_ADWAITA TRUE) SET_AND_EXPOSE_TO_BUILD(HAVE_OS_DARK_MODE_SUPPORT 1) +if (USE_GBM) + # ANGLE-backed WebGL depends on DMABuf support, which at the moment is leveraged + # through libgbm and libdrm dependencies. When libgbm is enabled, make + # libdrm a requirement and define the USE_LIBGBM and USE_TEXTURE_MAPPER_DMABUF + # macros. When not available, ANGLE will be used in slower software-rasterization mode. + find_package(GBM) + if (NOT GBM_FOUND) + message(FATAL_ERROR "GBM is required for USE_GBM") + endif () + + find_package(LibDRM) + if (NOT LIBDRM_FOUND) + message(FATAL_ERROR "libdrm is required for USE_GBM") + endif () + + SET_AND_EXPOSE_TO_BUILD(USE_TEXTURE_MAPPER_DMABUF TRUE) +endif () + # GUri is available in GLib since version 2.66, but we only want to use it if version is >= 2.67.1. if (PC_GLIB_VERSION VERSION_GREATER "2.67.1" OR PC_GLIB_VERSION STREQUAL "2.67.1") SET_AND_EXPOSE_TO_BUILD(HAVE_GURI 1)