summaryrefslogtreecommitdiff
path: root/x11-misc/qt5ct/files/qt5ct-1.9-no-qtpaths.patch
blob: 76da1168c7ca08d8299a70aec29f130f74f09a60 (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
From 5ffc06d5e735fcf9bdf5b92874292bccc88acd28 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <asturm@gentoo.org>
Date: Mon, 14 Apr 2025 22:50:08 +0200
Subject: [PATCH] CMake: Make translations optional

 - Use FeatureSummary to list found dependencies in CMake output
 - Make it possible to build without translations by making LinguistTools optional
 - When Qt5LinguistTools is optional, then qtpaths would remain as a rather costly dependency on Qt5Tools just to establish PLUGINDIR
   Hence allow distributions/users to set PLUGINDIR manually and only fallback to qtpaths if not set
 - Lowercase some cmake commands for consistency
 - Append `src` to source directory when generating translations, otherwise build directories could be parsed too

(partially cherry-picked from qt6ct 66c08b191b15ab71b206c3bbea4dcb19a26ab874)

Thanks-to: Jonas Kvinge <jonas@jkvinge.net>
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
---
 CMakeLists.txt           | 45 +++++++++++++++++++++-------------------
 src/qt5ct/CMakeLists.txt |  5 ++++-
 2 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 59256fd..814757e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,13 +3,14 @@ cmake_minimum_required(VERSION 3.11.0)
 project(qt5ct LANGUAGES CXX)
 
 include(GNUInstallDirs)
+include(FeatureSummary)
 
-CONFIGURE_FILE(
+configure_file(
   "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
   IMMEDIATE @ONLY)
 
-ADD_CUSTOM_TARGET(uninstall
+add_custom_target(uninstall
   "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
 
 set(CMAKE_CXX_STANDARD 11)
@@ -25,9 +26,9 @@ set(QT_MINIMUM_VERSION "5.15.0")
 
 option(DISABLE_DBUS "disable D-Bus support (global menu and D-Bus tray icon implementation)" OFF)
 
-ADD_DEFINITIONS(-DQT_DISABLE_DEPRECATED_BEFORE=0x050C00 -DUSE_WIDGETS)
+add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050C00 -DUSE_WIDGETS)
 
-find_package(Qt5 ${QT_MINIMUM_VERSION} COMPONENTS Widgets Concurrent LinguistTools REQUIRED)
+find_package(Qt5 ${QT_MINIMUM_VERSION} REQUIRED COMPONENTS Core Widgets Concurrent OPTIONAL_COMPONENTS LinguistTools)
 find_package(Qt5Gui ${QT_MINIMUM_VERSION} CONFIG REQUIRED Private)
 
 if(NOT DISABLE_DBUS)
@@ -37,29 +38,29 @@ else()
     message(STATUS "D-Bus support: Disabled")
 endif()
 
-get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease IMPORTED_LOCATION)
-
-if(QT_LRELEASE_EXECUTABLE)
-    message(STATUS "Found lrelease executable: " ${QT_LRELEASE_EXECUTABLE})
-else()
-    message(FATAL_ERROR "Could NOT find lrelease executable")
+if(Qt5LinguistTools_FOUND)
+    message(STATUS "Generating translations ...")
+    get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease IMPORTED_LOCATION)
+    execute_process(COMMAND find ${CMAKE_CURRENT_SOURCE_DIR}/src -name *.ts COMMAND xargs ${QT_LRELEASE_EXECUTABLE} -silent)
 endif()
 
-get_filename_component(QT_QTPATHS_EXECUTABLE ${QT_LRELEASE_EXECUTABLE} DIRECTORY)
-set(QT_QTPATHS_EXECUTABLE ${QT_QTPATHS_EXECUTABLE}/qtpaths)
+if(Qt5LinguistTools_FOUND AND NOT PLUGINDIR)
+    get_filename_component(QT_QTPATHS_EXECUTABLE ${QT_LRELEASE_EXECUTABLE} DIRECTORY)
+    set(QT_QTPATHS_EXECUTABLE ${QT_QTPATHS_EXECUTABLE}/qtpaths)
 
-if(EXISTS ${QT_QTPATHS_EXECUTABLE})
-    message(STATUS "Found qtpaths executable: " ${QT_QTPATHS_EXECUTABLE})
-else()
-    message(FATAL_ERROR "Could NOT find qtpaths executable")
+    if(EXISTS ${QT_QTPATHS_EXECUTABLE})
+        message(STATUS "Found qtpaths executable: " ${QT_QTPATHS_EXECUTABLE})
+    else()
+        message(FATAL_ERROR "Could NOT find qtpaths executable")
+    endif()
+
+    execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} --plugin-dir OUTPUT_VARIABLE PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
+elseif(NOT Qt5LinguistTools_FOUND AND NOT PLUGINDIR)
+    message(FATAL_ERROR "PLUGINDIR not provided and Qt5LinguistTools not found - aborting.")
 endif()
 
-execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} --plugin-dir OUTPUT_VARIABLE PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
 message(STATUS "Plugin path: " ${PLUGINDIR})
 
-message(STATUS "Generating translations ...")
-execute_process(COMMAND find ${CMAKE_CURRENT_SOURCE_DIR} -name *.ts COMMAND xargs ${QT_LRELEASE_EXECUTABLE} -silent)
-
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/qt5ct-common)
 
 add_link_options(-Wl,--no-undefined)
@@ -108,4 +109,6 @@ if(UNIX)
         ARGS -rf ${CMAKE_CURRENT_BINARY_DIR}/doc/html
         TARGET distclean
     )
-endif(UNIX)
+endif()
+
+feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff --git a/src/qt5ct/CMakeLists.txt b/src/qt5ct/CMakeLists.txt
index 78535e3..3249e21 100644
--- a/src/qt5ct/CMakeLists.txt
+++ b/src/qt5ct/CMakeLists.txt
@@ -24,9 +24,12 @@ set(app_SRCS
   qsseditordialog.ui
   qsspage.ui
   troubleshootingpage.ui
-  translations/translations.qrc
 )
 
+if(Qt5LinguistTools_FOUND)
+  list(APPEND app_SRCS translations/translations.qrc)
+endif()
+
 add_executable(qt5ct ${app_SRCS})
 target_link_libraries(qt5ct PRIVATE Qt5::Widgets Qt5::Concurrent Qt5::WidgetsPrivate qt5ct-common)
 install(TARGETS qt5ct DESTINATION ${CMAKE_INSTALL_BINDIR})
-- 
2.49.0