games-util/lgogdownloader: Add Qt6 support with patch

Closes: https://bugs.gentoo.org/926661
Signed-off-by: James Le Cuirot <chewi@gentoo.org>
This commit is contained in:
James Le Cuirot 2024-03-15 22:53:46 +00:00
parent f27ecc4111
commit 937f03b7fe
No known key found for this signature in database
GPG Key ID: 1226415D00DD3137
3 changed files with 117 additions and 14 deletions

View File

@ -0,0 +1,73 @@
From 3f223684cbe1367c68b2b68301eeaaf644a4c0be Mon Sep 17 00:00:00 2001
From: James Le Cuirot <chewi@gentoo.org>
Date: Thu, 14 Mar 2024 22:12:02 +0000
Subject: [PATCH] Add support for Qt6 (as well as Qt5)
No actual code changes were necessary.
I have partly followed
https://doc.qt.io/qt-6/cmake-qt5-and-qt6-compatibility.html, but the
versionless targets only work from Qt 5.15 onwards. The suggested
workaround chooses 5 over 6 and does not appear to work properly when
one of the required components is missing. Using the versionless
approach with an additional variable for the targets seems to work best.
If necessary, Qt 5 can be forced over 6 by passing
`-DCMAKE_DISABLE_FIND_PACKAGE_Qt6=ON`.
I have tested this by tweaking the code to force the GUI to appear.
---
CMakeLists.txt | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0fe7568..9f489c1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -45,8 +45,12 @@ file(GLOB SRC_FILES
)
if(USE_QT_GUI)
- find_package(Qt5Widgets CONFIG REQUIRED)
- find_package(Qt5WebEngineWidgets CONFIG REQUIRED)
+ set(QT Qt6)
+ find_package(Qt6 COMPONENTS Widgets WebEngineWidgets CONFIG)
+ if(NOT Qt6_FOUND)
+ set(QT Qt5)
+ find_package(Qt5 REQUIRED COMPONENTS Widgets WebEngineWidgets CONFIG)
+ endif()
file(GLOB QT_GUI_SRC_FILES
src/gui_login.cpp
@@ -140,11 +144,17 @@ file(REMOVE ${CMAKE_BINARY_DIR}/test_atomic.cpp)
if(USE_QT_GUI)
target_link_libraries(${PROJECT_NAME}
- PRIVATE Qt5::Widgets
- PRIVATE Qt5::WebEngineWidgets
+ PRIVATE ${QT}::Widgets
+ PRIVATE ${QT}::WebEngineWidgets
)
endif(USE_QT_GUI)
+if(Qt6_FOUND)
+ set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17)
+else()
+ set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)
+endif(Qt6_FOUND)
+
if(MSVC)
# Force to always compile with W4
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
@@ -154,7 +164,7 @@ if(MSVC)
endif()
elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# Update if necessary
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wno-long-long -fexceptions")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-long-long -fexceptions")
endif()
set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
--
2.43.2

View File

@ -1,4 +1,4 @@
# Copyright 1999-2023 Gentoo Authors
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@ -11,25 +11,42 @@ SRC_URI="https://github.com/Sude-/${PN}/releases/download/v${PV}/${P}.tar.gz"
LICENSE="WTFPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="gui"
IUSE="gui qt5 qt6"
REQUIRED_USE="gui? ( ^^ ( qt5 qt6 ) )"
RDEPEND=">=app-crypt/rhash-1.3.3-r2:0=
RDEPEND="
>=app-crypt/rhash-1.3.3-r2:0=
dev-cpp/htmlcxx:0=
dev-libs/boost:=[zlib]
>=dev-libs/jsoncpp-1.7:0=
dev-libs/tinyxml2:0=
>=net-misc/curl-7.55:0=[ssl]
gui? ( dev-qt/qtwebengine:5=[widgets] )"
gui? (
qt5? ( dev-qt/qtwebengine:5[widgets] )
qt6? ( dev-qt/qtwebengine:6[widgets] )
)
"
DEPEND="${RDEPEND}"
DEPEND="
${RDEPEND}
"
BDEPEND="sys-apps/help2man
virtual/pkgconfig"
BDEPEND="
sys-apps/help2man
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-qt6.patch
)
src_configure() {
local mycmakeargs=(
-DUSE_QT_GUI=$(usex gui)
)
use gui && mycmakeargs+=(
-DCMAKE_DISABLE_FIND_PACKAGE_Qt6=$(usex qt5)
)
cmake_src_configure
}

View File

@ -1,4 +1,4 @@
# Copyright 1999-2023 Gentoo Authors
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@ -10,25 +10,38 @@ HOMEPAGE="https://sites.google.com/site/gogdownloader/"
EGIT_REPO_URI="https://github.com/Sude-/lgogdownloader.git"
LICENSE="WTFPL-2"
SLOT="0"
IUSE="gui"
IUSE="gui qt5 qt6"
REQUIRED_USE="gui? ( ^^ ( qt5 qt6 ) )"
RDEPEND=">=app-crypt/rhash-1.3.3-r2:0=
RDEPEND="
>=app-crypt/rhash-1.3.3-r2:0=
dev-cpp/htmlcxx:0=
dev-libs/boost:=[zlib]
>=dev-libs/jsoncpp-1.7:0=
dev-libs/tinyxml2:0=
>=net-misc/curl-7.55:0=[ssl]
gui? ( dev-qt/qtwebengine:5=[widgets] )"
gui? (
qt5? ( dev-qt/qtwebengine:5[widgets] )
qt6? ( dev-qt/qtwebengine:6[widgets] )
)
"
DEPEND="${RDEPEND}"
DEPEND="
${RDEPEND}
"
BDEPEND="sys-apps/help2man
virtual/pkgconfig"
BDEPEND="
sys-apps/help2man
virtual/pkgconfig
"
src_configure() {
local mycmakeargs=(
-DUSE_QT_GUI=$(usex gui)
)
use gui && mycmakeargs+=(
-DCMAKE_DISABLE_FIND_PACKAGE_Qt6=$(usex qt5)
)
cmake_src_configure
}