Add support for Elliptic Curve keys for CertFP
[quassel.git] / cmake / QuasselMacros.cmake
index eb9dca6..d77ba1c 100644 (file)
@@ -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.
 
@@ -14,8 +17,7 @@
 
 # CMake gained this function in 2.8.10. To be able to use older versions, we've copied
 # this here. If present, the function from CMake will take precedence and our copy will be ignored.
-function(quassel_qt4_use_modules _target _link_type)
-    message("SPUT calling")
+function(qt4_use_modules _target _link_type)
     if ("${_link_type}" STREQUAL "LINK_PUBLIC" OR "${_link_type}" STREQUAL "LINK_PRIVATE")
         set(modules ${ARGN})
         set(link_type ${_link_type})
@@ -44,10 +46,45 @@ function(quassel_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)
-    if (WITH_QT5)
+    if (USE_QT5)
         qt5_use_modules(${ARGN})
     else()
         qt4_use_modules(${ARGN})
@@ -55,7 +92,7 @@ function(qt_use_modules)
 endfunction()
 
 function(qt_wrap_ui _var)
-    if (WITH_QT5)
+    if (USE_QT5)
         qt5_wrap_ui(var ${ARGN})
     else()
         qt4_wrap_ui(var ${ARGN})
@@ -64,7 +101,7 @@ function(qt_wrap_ui _var)
 endfunction()
 
 function(qt_add_resources _var)
-    if (WITH_QT5)
+    if (USE_QT5)
         qt5_add_resources(var ${ARGN})
     else()
         qt4_add_resources(var ${ARGN})
@@ -73,7 +110,7 @@ function(qt_add_resources _var)
 endfunction()
 
 function(qt_add_dbus_interface _var)
-    if (WITH_QT5)
+    if (USE_QT5)
         qt5_add_dbus_interface(var ${ARGN})
     else()
         qt4_add_dbus_interface(var ${ARGN})
@@ -82,7 +119,7 @@ function(qt_add_dbus_interface _var)
 endfunction()
 
 function(qt_add_dbus_adaptor _var)
-    if (WITH_QT5)
+    if (USE_QT5)
         qt5_add_dbus_adaptor(var ${ARGN})
     else()
         qt4_add_dbus_adaptor(var ${ARGN})