From c498aad87e42405ca25cb6f2f1b4068ed1862c27 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
Date: Sun, 17 Feb 2019 23:51:03 +0100
Subject: [PATCH] Un-break optional Qt/KF detection

And if we enable an option, make the necessary libraries REQUIRED.
---
 core/cmake/rules/RulesKDEFramework.cmake | 60 ++++--------------------
 core/cmake/rules/RulesQtFramework.cmake  | 51 +++++---------------
 core/cmake/rules/RulesX11.cmake          |  7 +--
 3 files changed, 20 insertions(+), 98 deletions(-)

diff --git a/core/cmake/rules/RulesKDEFramework.cmake b/core/cmake/rules/RulesKDEFramework.cmake
index 775ae32fec..ec438f9673 100644
--- a/core/cmake/rules/RulesKDEFramework.cmake
+++ b/core/cmake/rules/RulesKDEFramework.cmake
@@ -26,43 +26,18 @@ find_package(KF${QT_VERSION_MAJOR} ${KF${QT_VERSION_MAJOR}_MIN_VERSION} QUIET
 )
 
 if(ENABLE_KFILEMETADATASUPPORT)
-
-    find_package(KF${QT_VERSION_MAJOR} ${KF${QT_VERSION_MAJOR}_MIN_VERSION} QUIET
-                                        OPTIONAL_COMPONENTS
-                                        FileMetaData            # For Plasma desktop file indexer support.
-    )
-
+    # For Plasma desktop file indexer support.
+    find_package(KF${QT_VERSION_MAJOR}FileMetaData ${KF${QT_VERSION_MAJOR}_MIN_VERSION} REQUIRED)
 endif()
 
 if(ENABLE_AKONADICONTACTSUPPORT)
-
+    find_package(KF${QT_VERSION_MAJOR}Contacts ${KF${QT_VERSION_MAJOR}_MIN_VERSION} REQUIRED) # API for contacts/address book data.
+    find_package(KPim${QT_VERSION_MAJOR}Akonadi ${AKONADI_MIN_VERSION} REQUIRED)
     if(Qt6_FOUND)
-
-        find_package(KPim${QT_VERSION_MAJOR} ${AKONADI_MIN_VERSION} QUIET
-                                                OPTIONAL_COMPONENTS
-                                                Akonadi
-                                                AkonadiContactCore  # For KDE Mail Contacts support.
-        )
-        find_package(KF${QT_VERSION_MAJOR} ${AKONADI_MIN_VERSION} QUIET
-                                                OPTIONAL_COMPONENTS
-                                                Contacts            # API for contacts/address book data.
-        )
-        find_package(KPim${QT_VERSION_MAJOR}Akonadi ${AKONADI_MIN_VERSION} QUIET)
-        find_package(KPim${QT_VERSION_MAJOR}AkonadiContactCore ${AKONADI_MIN_VERSION} QUIET)
-
+        find_package(KPim${QT_VERSION_MAJOR}AkonadiContactCore ${AKONADI_MIN_VERSION} REQUIRED)
     else()
-
-        find_package(KF${QT_VERSION_MAJOR} ${AKONADI_MIN_VERSION} QUIET
-                                                OPTIONAL_COMPONENTS
-                                                Akonadi
-                                                AkonadiContact      # For KDE Mail Contacts support.
-                                                Contacts            # API for contacts/address book data.
-        )
-        find_package(KPim${QT_VERSION_MAJOR}Akonadi ${AKONADI_MIN_VERSION} QUIET)
-        find_package(KPim${QT_VERSION_MAJOR}AkonadiContact ${AKONADI_MIN_VERSION} QUIET)
-
+        find_package(KPim${QT_VERSION_MAJOR}AkonadiContact ${AKONADI_MIN_VERSION} REQUIRED) # For KDE Mail Contacts support.
     endif()
-
 endif()
 
 if(Qt6_FOUND)
@@ -71,17 +46,11 @@ if(Qt6_FOUND)
 
 else()
 
-    find_package(KF${QT_VERSION_MAJOR} ${KSANE_MIN_VERSION} QUIET
-                                       OPTIONAL_COMPONENTS
-                                       Sane                      # For digital scanner support.
-    )
+    find_package(KF${QT_VERSION_MAJOR}Sane ${KSANE_MIN_VERSION} QUIET) # For digital scanner support.
 
 endif()
 
-find_package(KF${QT_VERSION_MAJOR} ${CALENDAR_MIN_VERSION} QUIET
-                                         OPTIONAL_COMPONENTS
-                                         CalendarCore           # For Calendar tool.
-)
+find_package(KF${QT_VERSION_MAJOR}CalendarCore ${CALENDAR_MIN_VERSION} QUIET) # For Calendar tool.
 
 if ("${KF${QT_VERSION_MAJOR}CalendarCore_VERSION}" VERSION_GREATER 5.6.40)
 
@@ -89,19 +58,6 @@ if ("${KF${QT_VERSION_MAJOR}CalendarCore_VERSION}" VERSION_GREATER 5.6.40)
 
 endif()
 
-if(ENABLE_AKONADICONTACTSUPPORT AND
-   (NOT (KPim${QT_VERSION_MAJOR}AkonadiContact_FOUND OR KPim${QT_VERSION_MAJOR}AkonadiContactCore_FOUND) OR NOT KF${QT_VERSION_MAJOR}Contacts_FOUND))
-
-    set(ENABLE_AKONADICONTACTSUPPORT OFF)
-
-endif()
-
-if(ENABLE_KFILEMETADATASUPPORT AND NOT KF${QT_VERSION_MAJOR}FileMetaData_FOUND)
-
-    set(ENABLE_KFILEMETADATASUPPORT OFF)
-
-endif()
-
 # Check if KIO have been compiled with KIOWidgets. digiKam only needs this one.
 
 if(ENABLE_KIO)
diff --git a/core/cmake/rules/RulesQtFramework.cmake b/core/cmake/rules/RulesQtFramework.cmake
index 9fa839c414..9267c6651e 100644
--- a/core/cmake/rules/RulesQtFramework.cmake
+++ b/core/cmake/rules/RulesQtFramework.cmake
@@ -18,38 +18,17 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED
              Svg
 )
 
-find_package(Qt${QT_VERSION_MAJOR} REQUIRED
-                                   NO_MODULE
-                                   COMPONENTS
-                                   WebEngineWidgets
-)
+find_package(Qt${QT_VERSION_MAJOR}WebEngineWidgets REQUIRED NO_MODULE)
 
-find_package(Qt${QT_VERSION_MAJOR}
-             OPTIONAL_COMPONENTS
-             DBus
-             OpenGL
-)
+find_package(Qt${QT_VERSION_MAJOR}DBus)
+find_package(Qt${QT_VERSION_MAJOR}OpenGL)
 
 if(Qt6_FOUND)
-
-    find_package(Qt${QT_VERSION_MAJOR} REQUIRED
-                 NO_MODULE COMPONENTS
-                 StateMachine
-                 SvgWidgets
-    )
-
-    find_package(Qt${QT_VERSION_MAJOR}
-                 OPTIONAL_COMPONENTS
-                 OpenGLWidgets
-    )
-
+    find_package(Qt${QT_VERSION_MAJOR}StateMachine REQUIRED NO_MODULE)
+    find_package(Qt${QT_VERSION_MAJOR}SvgWidgets REQUIRED NO_MODULE)
+    find_package(Qt${QT_VERSION_MAJOR}OpenGLWidgets)
 else()
-
-    find_package(Qt${QT_VERSION_MAJOR}
-                 OPTIONAL_COMPONENTS
-                 XmlPatterns                # For Rajce plugin
-    )
-
+    find_package(Qt${QT_VERSION_MAJOR}XmlPatterns) # For Rajce plugin
 endif()
 
 if(ENABLE_DBUS)
@@ -65,17 +44,9 @@ endif()
 # Qt Dependencies For unit tests and CLI test tools
 
 if(BUILD_TESTING)
+    find_package(Qt${QT_VERSION_MAJOR}Test REQUIRED NO_MODULE)
 
-    find_package(Qt${QT_VERSION_MAJOR} REQUIRED
-                                       NO_MODULE
-                                       COMPONENTS
-                                       Test
-    )
-
-    find_package(Qt${QT_VERSION_MAJOR}
-                 QUIET
-                 OPTIONAL_COMPONENTS
-                 Qml WebView  # Optional, for 'sialis' O2 library test tool.
-    )
-
+    # Optional, for 'sialis' O2 library test tool.
+    find_package(Qt${QT_VERSION_MAJOR}Qml QUIET NO_MODULE)
+    find_package(Qt${QT_VERSION_MAJOR}WebView QUIET NO_MODULE)
 endif()
diff --git a/core/cmake/rules/RulesX11.cmake b/core/cmake/rules/RulesX11.cmake
index d7830f3923..4401a57c87 100644
--- a/core/cmake/rules/RulesX11.cmake
+++ b/core/cmake/rules/RulesX11.cmake
@@ -11,12 +11,7 @@ find_package(X11)
 if(X11_FOUND)
 
     if(NOT Qt6_FOUND)
-
-        find_package(Qt5 ${QT_MIN_VERSION} NO_MODULE
-                                           COMPONENTS
-                                           X11Extras
-        )
-
+        find_package(Qt5X11Extras ${QT_MIN_VERSION} NO_MODULE)
     endif()
 
     set(HAVE_X11 TRUE)
-- 
2.45.2

