summaryrefslogtreecommitdiff
path: root/games-util/lgogdownloader/files/lgogdownloader-qt6.patch
blob: 5d1652bcbdd7e41b1de9d83771d322d9b6828594 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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