summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/quassel-qt-5.11.patch
blob: 545f8b7610982caf7a653286841899dff17b90e4 (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
https://github.com/quassel/quassel/commit/92f4dca367c3a6f0536a1e0f3fbb44bb6ed4da62.patch
This can be removed after quassel 0.12.5.

From 92f4dca367c3a6f0536a1e0f3fbb44bb6ed4da62 Mon Sep 17 00:00:00 2001
From: Manuel Nickschas <sputnick@quassel-irc.org>
Date: Thu, 3 May 2018 23:19:34 +0200
Subject: [PATCH] cmake: Fix build with Qt 5.11

Qt 5.11 removes the qt5_use_modules function, so add a copy. If
present, the Qt-provided function will be used instead.

Closes GH-355.
---
 cmake/QuasselMacros.cmake | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/cmake/QuasselMacros.cmake b/cmake/QuasselMacros.cmake
index 652c0042d..d77ba1cfb 100644
--- a/cmake/QuasselMacros.cmake
+++ b/cmake/QuasselMacros.cmake
@@ -5,6 +5,9 @@
 # The qt4_use_modules function was taken from CMake's Qt4Macros.cmake:
 # (C) 2005-2009 Kitware, Inc.
 #
+# The qt5_use_modules function was taken from Qt 5.10.1 (and modified):
+# (C) 2005-2011 Kitware, Inc.
+#
 # Redistribution and use is allowed according to the terms of the BSD license.
 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
 
@@ -43,6 +46,41 @@ function(qt4_use_modules _target _link_type)
     endforeach()
 endfunction()
 
+# Qt 5.11 removed the qt5_use_modules function, so we need to provide it until we can switch to a modern CMake version.
+# If present, the Qt-provided version will be used automatically instead.
+function(qt5_use_modules _target _link_type)
+    if (NOT TARGET ${_target})
+        message(FATAL_ERROR "The first argument to qt5_use_modules must be an existing target.")
+    endif()
+    if ("${_link_type}" STREQUAL "LINK_PUBLIC" OR "${_link_type}" STREQUAL "LINK_PRIVATE" )
+        set(_qt5_modules ${ARGN})
+        set(_qt5_link_type ${_link_type})
+    else()
+        set(_qt5_modules ${_link_type} ${ARGN})
+    endif()
+
+    if ("${_qt5_modules}" STREQUAL "")
+        message(FATAL_ERROR "qt5_use_modules requires at least one Qt module to use.")
+    endif()
+    foreach(_module ${_qt5_modules})
+        if (NOT Qt5${_module}_FOUND)
+            find_package(Qt5${_module} PATHS "${_Qt5_COMPONENT_PATH}" NO_DEFAULT_PATH)
+            if (NOT Qt5${_module}_FOUND)
+                message(FATAL_ERROR "Can not use \"${_module}\" module which has not yet been found.")
+            endif()
+        endif()
+        target_link_libraries(${_target} ${_qt5_link_type} ${Qt5${_module}_LIBRARIES})
+        set_property(TARGET ${_target} APPEND PROPERTY INCLUDE_DIRECTORIES ${Qt5${_module}_INCLUDE_DIRS})
+        set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS ${Qt5${_module}_COMPILE_DEFINITIONS})
+        if (Qt5_POSITION_INDEPENDENT_CODE
+                AND (CMAKE_VERSION VERSION_LESS 2.8.12
+                    AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
+                    OR CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)))
+            set_property(TARGET ${_target} PROPERTY POSITION_INDEPENDENT_CODE ${Qt5_POSITION_INDEPENDENT_CODE})
+        endif()
+    endforeach()
+endfunction()
+
 # Some wrappers for simplifying dual-Qt support
 
 function(qt_use_modules)