Skip to content

Commit

Permalink
kde-frameworks/plasma: Fix build with USE -X
Browse files Browse the repository at this point in the history
Upstream commit d674a99d19efcad866a773fe6c848a7626a61c0a

Bug: https://bugs.gentoo.org/813450
Signed-off-by: Andreas Sturmlechner <[email protected]>
  • Loading branch information
a17r committed Sep 24, 2022
1 parent 1f3699d commit e991c3a
Show file tree
Hide file tree
Showing 2 changed files with 144 additions and 3 deletions.
140 changes: 140 additions & 0 deletions kde-frameworks/plasma/files/plasma-5.98.0-without_x11.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
From d674a99d19efcad866a773fe6c848a7626a61c0a Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <[email protected]>
Date: Tue, 2 Aug 2022 10:52:59 +0200
Subject: [PATCH] Add CMake option to build WITHOUT_X11

We want to be able to build without X11 support even if some of the used
libraries may not work w/o X11 themselves yet or need to be built with
X11 support for other reverse dependencies.

HAVE_X11 already exists and is set automagically so far, but using
-DCMAKE_DISABLE_FIND_PACKAGE_X11 will break if any dependencies list X11
as required in their cmake config.

Introducing this option means there is no behavior change by default,
cmake will just skip finding X11 or adding unwanted features if the
option is enabled.

Signed-off-by: Andreas Sturmlechner <[email protected]>
---
CMakeLists.txt | 51 ++++++++++---------
.../core/config-x11.h.cmake | 1 +
src/plasmaquick/CMakeLists.txt | 8 +--
src/plasmaquick/dialog.cpp | 1 +
4 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3b6405725..15698543f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -88,28 +88,33 @@ set_package_properties(KF5DocTools PROPERTIES DESCRIPTION "Tools to generate doc
TYPE OPTIONAL
)

-#optional features
-find_package(X11 MODULE)
-set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries"
- URL "https://www.x.org/"
- TYPE OPTIONAL
- )
-find_package(XCB MODULE COMPONENTS XCB COMPOSITE DAMAGE SHAPE XFIXES RENDER)
-set_package_properties(XCB PROPERTIES DESCRIPTION "X protocol C-language Binding"
- URL "https://xcb.freedesktop.org/"
- TYPE OPTIONAL
- )
-if(X11_FOUND AND XCB_XCB_FOUND)
- set(HAVE_X11 1)
- if (QT_MAJOR_VERSION STREQUAL "5")
- find_package(Qt5X11Extras ${REQUIRED_QT_VERSION} NO_MODULE)
- elseif (QT_MAJOR_VERSION STREQUAL "6")
- find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED Gui) # qtx11extras_p.h
- endif()
- #X11_Xrender discovery is done by FindX11
- #add_feature_info("X Rendering Extension (libXrender)" X11_Xrender_FOUND "Support for compositing, rendering operations, and alpha-blending. STRONGLY RECOMMENDED")
-else()
- set(HAVE_X11 0)
+option(WITHOUT_X11 "Build without X11 support (skips finding X11)." OFF)
+if(NOT WITHOUT_X11)
+ #optional features
+ find_package(X11 MODULE)
+ set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries"
+ URL "https://www.x.org/"
+ TYPE OPTIONAL
+ )
+ find_package(XCB MODULE COMPONENTS XCB COMPOSITE DAMAGE SHAPE XFIXES RENDER)
+ set_package_properties(XCB PROPERTIES DESCRIPTION "X protocol C-language Binding"
+ URL "https://xcb.freedesktop.org/"
+ TYPE OPTIONAL
+ )
+ if(X11_FOUND AND XCB_XCB_FOUND)
+ set(HAVE_X11 1)
+ if (QT_MAJOR_VERSION STREQUAL "5")
+ find_package(Qt5X11Extras ${REQUIRED_QT_VERSION} NO_MODULE)
+ elseif (QT_MAJOR_VERSION STREQUAL "6")
+ find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED Gui) # qtx11extras_p.h
+ endif()
+ #X11_Xrender discovery is done by FindX11
+ #add_feature_info("X Rendering Extension (libXrender)" X11_Xrender_FOUND "Support for compositing, rendering operations, and alpha-blending. STRONGLY RECOMMENDED")
+ set(HAVE_XCB_SHAPE ${XCB_SHAPE_FOUND})
+ else()
+ set(HAVE_X11 0)
+ set(HAVE_XCB_SHAPE 0)
+ endif()
endif()

find_package(OpenGL)
@@ -125,7 +130,7 @@ set_package_properties(EGL PROPERTIES
)

get_target_property(QtGui_Enabled_Features Qt${QT_MAJOR_VERSION}::Gui QT_ENABLED_PUBLIC_FEATURES)
-if(OpenGL_GLX_FOUND AND X11_FOUND AND (QtGui_Enabled_Features MATCHES "opengl"))
+if(OpenGL_GLX_FOUND AND HAVE_X11 AND (QtGui_Enabled_Features MATCHES "opengl"))
add_feature_info(GLX OpenGL_GLX_FOUND "OpenGL GLX libraries.")
set(HAVE_GLX 1)
else()
diff --git a/src/declarativeimports/core/config-x11.h.cmake b/src/declarativeimports/core/config-x11.h.cmake
index 2f543d547..ad1b45099 100644
--- a/src/declarativeimports/core/config-x11.h.cmake
+++ b/src/declarativeimports/core/config-x11.h.cmake
@@ -1,2 +1,3 @@
#cmakedefine01 HAVE_X11
#cmakedefine01 HAVE_XCB_COMPOSITE
+#cmakedefine01 HAVE_XCB_SHAPE
diff --git a/src/plasmaquick/CMakeLists.txt b/src/plasmaquick/CMakeLists.txt
index 37bbc5097..dd2442e70 100644
--- a/src/plasmaquick/CMakeLists.txt
+++ b/src/plasmaquick/CMakeLists.txt
@@ -1,9 +1,3 @@
-if(HAVE_X11 AND XCB_XCB_FOUND AND XCB_SHAPE_FOUND)
- add_definitions(-DHAVE_XCB_SHAPE=1)
-else()
- add_definitions(-DHAVE_XCB_SHAPE=0)
-endif()
-
add_library(KF5PlasmaQuick SHARED)
add_library(KF5::PlasmaQuick ALIAS KF5PlasmaQuick)

@@ -81,7 +75,7 @@ if(HAVE_X11)
target_link_libraries(KF5PlasmaQuick PRIVATE Qt6::GuiPrivate)
endif()

- if(XCB_SHAPE_FOUND)
+ if(HAVE_XCB_SHAPE)
target_link_libraries(KF5PlasmaQuick PRIVATE XCB::SHAPE)
endif()
endif()
diff --git a/src/plasmaquick/dialog.cpp b/src/plasmaquick/dialog.cpp
index 452e36523..2eabd5fb7 100644
--- a/src/plasmaquick/dialog.cpp
+++ b/src/plasmaquick/dialog.cpp
@@ -11,6 +11,7 @@
#include "../declarativeimports/core/framesvgitem.h"
#include "appletquickitem.h"
#include "config-plasma.h"
+#include "../declarativeimports/core/config-x11.h"
#include "configview.h"
#include "dialogshadows_p.h"
#include "view.h"
--
GitLab

Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ RDEPEND="
=kde-frameworks/kpackage-${PVCUT}*:5
=kde-frameworks/kservice-${PVCUT}*:5
=kde-frameworks/kwidgetsaddons-${PVCUT}*:5
=kde-frameworks/kwindowsystem-${PVCUT}*:5
=kde-frameworks/kwindowsystem-${PVCUT}*:5[X?]
=kde-frameworks/kxmlgui-${PVCUT}*:5
!gles2-only? ( media-libs/libglvnd[X?] )
wayland? (
Expand All @@ -59,14 +59,15 @@ DEPEND="${RDEPEND}
"
BDEPEND="man? ( >=kde-frameworks/kdoctools-${PVCUT}:5 )"

PATCHES=( "${FILESDIR}/${P}-without_x11.patch" )

src_configure() {
local mycmakeargs=(
$(cmake_use_find_package !gles2-only OpenGL)
$(cmake_use_find_package man KF5DocTools)
$(cmake_use_find_package wayland EGL)
$(cmake_use_find_package wayland KF5Wayland)
$(cmake_use_find_package X X11)
$(cmake_use_find_package X XCB)
-DWITHOUT_X11=$(usex !X)
)

ecm_src_configure
Expand Down

0 comments on commit e991c3a

Please sign in to comment.