From 62a08d490a1e75e3ef5d08f3fb37e65c1563e706 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
Date: Sun, 1 Apr 2018 11:51:42 +0200
Subject: [PATCH 1/4] Make Qt5 build default and simplify logic, add missing
 deps

---
 CMakeLists.txt | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index be88967a..e628611c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,19 +27,19 @@ set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${PROJECT_SOURCE_DIR}/cmake/Module
 # setup qt stuff
 set(CMAKE_AUTOMOC ON)
 
-option(BUILD_WITH_QT4 "Build liblastfm with Qt4 no matter if Qt5 was found" OFF)
+option(BUILD_WITH_QT4 "Build liblastfm with Qt4" OFF)
 
-if( NOT BUILD_WITH_QT4 )
-    # try Qt5 first, and prefer that if found
-    find_package(Qt5Core QUIET)
-endif()
+if(NOT BUILD_WITH_QT4)
+    find_package(Qt5 REQUIRED COMPONENTS Core Network Xml CONFIG)
+
+    if(BUILD_FINGERPRINT)
+        find_package(Qt5Sql REQUIRED CONFIG)
+    endif()
 
-if(Qt5Core_DIR)
     set(LASTFM_LIB_VERSION_SUFFIX 5)
-    message(STATUS "Found Qt5! Please keep in mind, this is highly experimental and not our main development target..")
     include_directories(${Qt5Core_INCLUDE_DIRS})
     if(UNIX AND NOT APPLE)
-        find_package(Qt5DBus REQUIRED)
+        find_package(Qt5DBus REQUIRED CONFIG)
     endif()
 
 #     macro(qt_wrap_ui)

From ff32d56e5e1bd8b1f86a8e9840c778249ff19118 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
Date: Sun, 1 Apr 2018 11:56:48 +0200
Subject: [PATCH 2/4] Make use of FeatureSummary

---
 CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e628611c..dcdfd91d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,7 @@ option(BUILD_TESTS "Build liblastfm tests" ON)
 
 # installation dirs
 include(GNUInstallDirs)
+include(FeatureSummary)
 
 #cmake module path
 set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${PROJECT_SOURCE_DIR}/cmake/Modules")
@@ -97,3 +98,5 @@ if(BUILD_TESTS)
     enable_testing()
     add_subdirectory(tests)
 endif()
+
+feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)

From 5762278b29c1ab6559dcca7a1e8fbad1d75134da Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
Date: Sun, 1 Apr 2018 12:06:48 +0200
Subject: [PATCH 3/4] Cleanup include dirs

---
 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index dcdfd91d..52589b50 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,10 +38,10 @@ if(NOT BUILD_WITH_QT4)
     endif()
 
     set(LASTFM_LIB_VERSION_SUFFIX 5)
-    include_directories(${Qt5Core_INCLUDE_DIRS})
     if(UNIX AND NOT APPLE)
         find_package(Qt5DBus REQUIRED CONFIG)
     endif()
+    include_directories(Qt5::Core Qt5::Network Qt5::Xml)
 
 #     macro(qt_wrap_ui)
 #         qt5_wrap_ui(${ARGN})

From aeb0cbc56376021444a56a984613faacefedfea9 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
Date: Sun, 15 Apr 2018 21:31:14 +0200
Subject: [PATCH 4/4] Fix build with Qt 5.11_beta3 (drop qt5_use_modules)

---
 CMakeLists.txt                 |  3 --
 src/CMakeLists.txt             | 63 +++++++++++++++++++++++-------------------
 src/fingerprint/CMakeLists.txt | 20 ++++++++------
 tests/lastfm_add_test.cmake    | 16 ++++++-----
 4 files changed, 55 insertions(+), 47 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 52589b50..c8bc89d9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,9 +57,6 @@ if(NOT BUILD_WITH_QT4)
 #     endmacro()
 else()
     find_package(Qt4 COMPONENTS QtCore QtNetwork QtXml REQUIRED)
-
-    macro(qt5_use_modules)
-    endmacro()
 endif()
 
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0f872fbd..22ce506c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -3,16 +3,6 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/global.h.in ${CMAKE_CURRENT_BINARY_DI
 
 add_definitions(${QT_DEFINITIONS})
 include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})
-set(liblastfm_LIBRARIES
-    ${QT_QTCORE_LIBRARY}
-    ${QT_QTNETWORK_LIBRARY}
-    ${QT_QTXML_LIBRARY}
-)
-
-list(APPEND liblastfm_QT5_MODULES
-    Xml
-    Network
-)
 
 set(liblastfm_SOURCES
         ws.cpp
@@ -49,15 +39,11 @@ if(WIN32)
     if(NOT MINGW)
         add_definitions("-D_ATL_DLL -D_CRT_SECURE_NO_WARNINGS")
 
-        list(APPEND liblastfm_SOURCES
+        set(liblastfm_SOURCES ${liblastfm_SOURCES}
             win/WNetworkConnectionMonitor_win.cpp
             win/WmiSink.cpp
             win/NdisEvents.cpp
         )
-        list(APPEND liblastfm_LIBRARIES
-            winhttp
-            wbemuuid
-        )
     endif()
 endif()
 
@@ -67,30 +53,51 @@ if(APPLE)
     #set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5)
     #set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX${CMAKE_OSX_DEPLOYMENT_TARGET}.sdk")
 
-    list(APPEND liblastfm_SOURCES
+    set(liblastfm_SOURCES ${liblastfm_SOURCES}
         mac/MNetworkConnectionMonitor_mac.cpp
     )
-
-    find_library(SYSTEMCONFIGURATION_LIBRARY SystemConfiguration)
-    find_library(COREFOUNDATION_LIBRARY CoreFoundation)
-    list(APPEND liblastfm_LIBRARIES
-        ${COREFOUNDATION_LIBRARY}
-        ${SYSTEMCONFIGURATION_LIBRARY}
-    )
 endif()
 
 if(UNIX AND NOT APPLE)
-    list(APPEND liblastfm_SOURCES
+    set(liblastfm_SOURCES ${liblastfm_SOURCES}
         linux/LNetworkConnectionMonitor_linux.cpp
     )
-    list(APPEND liblastfm_LIBRARIES ${QT_QTDBUS_LIBRARY})
-    list(APPEND liblastfm_QT5_MODULES DBus)
 endif()
 
 add_library(${LASTFM_LIB_TARGET_NAME} SHARED ${liblastfm_SOURCES})
-qt5_use_modules(${LASTFM_LIB_TARGET_NAME} ${liblastfm_QT5_MODULES})
 
-target_link_libraries(${LASTFM_LIB_TARGET_NAME} ${liblastfm_LIBRARIES})
+if(Qt5Core_DIR)
+    target_link_libraries(${LASTFM_LIB_TARGET_NAME} Qt5::Network Qt5::Xml)
+    if(UNIX AND NOT APPLE)
+        target_link_libraries(${LASTFM_LIB_TARGET_NAME} Qt5::DBus)
+    endif()
+else()
+    target_link_libraries(${LASTFM_LIB_TARGET_NAME}
+        ${QT_QTCORE_LIBRARY}
+        ${QT_QTNETWORK_LIBRARY}
+        ${QT_QTXML_LIBRARY}
+    )
+    if(UNIX AND NOT APPLE)
+        target_link_libraries(${LASTFM_LIB_TARGET_NAME} ${QT_QTDBUS_LIBRARY})
+    endif()
+endif()
+
+if(WIN32 AND NOT MINGW)
+    target_link_libraries(${LASTFM_LIB_TARGET_NAME}
+        winhttp
+        wbemuuid
+    )
+endif()
+
+if(APPLE)
+    find_library(SYSTEMCONFIGURATION_LIBRARY SystemConfiguration)
+    find_library(COREFOUNDATION_LIBRARY CoreFoundation)
+    target_link_libraries(${LASTFM_LIB_TARGET_NAME}
+        ${COREFOUNDATION_LIBRARY}
+        ${SYSTEMCONFIGURATION_LIBRARY}
+    )
+endif()
+
 set_target_properties(${LASTFM_LIB_TARGET_NAME} PROPERTIES
     VERSION ${LASTFM_VERSION_STRING}
     SOVERSION ${LASTFM_SOVERSION}
diff --git a/src/fingerprint/CMakeLists.txt b/src/fingerprint/CMakeLists.txt
index 126f8d90..4a74e0dc 100644
--- a/src/fingerprint/CMakeLists.txt
+++ b/src/fingerprint/CMakeLists.txt
@@ -26,21 +26,23 @@ set(lastfm_fingerprint_HEADERS
 
 add_library(${FINGERPRINT_LIB_TARGET_NAME} SHARED ${lastfm_fingerprint_SOURCES})
 
-target_link_libraries(${FINGERPRINT_LIB_TARGET_NAME}
-    ${LASTFM_LIB_TARGET_NAME}
-    ${QT_QTSQL_LIBRARY}
-    ${QT_QTCORE_LIBRARY}
-    ${LIBSAMPLERATE_LIBRARY}
-    ${LIBFFTW3_LIBRARY}
-)
-
 set_target_properties(${FINGERPRINT_LIB_TARGET_NAME} PROPERTIES
     COMPILE_DEFINITIONS LASTFM_FINGERPRINT_LIB
     VERSION ${LASTFM_VERSION_STRING}
     SOVERSION ${LASTFM_SOVERSION}
 )
 
-qt5_use_modules(${FINGERPRINT_LIB_TARGET_NAME} Network Sql Xml)
+target_link_libraries(${FINGERPRINT_LIB_TARGET_NAME}
+    ${LASTFM_LIB_TARGET_NAME}
+    ${LIBSAMPLERATE_LIBRARY}
+    ${LIBFFTW3_LIBRARY}
+)
+
+if(Qt5Core_DIR)
+    target_link_libraries(${FINGERPRINT_LIB_TARGET_NAME} Qt5::Network Qt5::Sql Qt5::Xml)
+else()
+    target_link_libraries(${FINGERPRINT_LIB_TARGET_NAME} ${QT_QTCORE_LIBRARY} ${QT_QTSQL_LIBRARY})
+endif()
 
 install(TARGETS ${FINGERPRINT_LIB_TARGET_NAME}
     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
diff --git a/tests/lastfm_add_test.cmake b/tests/lastfm_add_test.cmake
index a4a16864..2f0664d9 100644
--- a/tests/lastfm_add_test.cmake
+++ b/tests/lastfm_add_test.cmake
@@ -6,13 +6,15 @@ macro(lastfm_add_test test_class)
     configure_file(Test${LASTFM_TEST_CLASS}.h Test${LASTFM_TEST_CLASS}.h)
     add_executable(${LASTFM_TEST_CLASS}Test Test${LASTFM_TEST_CLASS}.cpp)
 
-    qt5_use_modules(${LASTFM_TEST_CLASS}Test Core Test Xml Network)
-
-    target_link_libraries(${LASTFM_TEST_CLASS}Test
-        ${LASTFM_LIB_TARGET_NAME}
-        ${QT_QTTEST_LIBRARY}
-        ${QT_QTCORE_LIBRARY}
-    )
+    if(Qt5Core_DIR)
+        target_link_libraries(${LASTFM_TEST_CLASS}Test Qt5::Core Qt5::Test Qt5::Xml Qt5::Network
+            ${LASTFM_LIB_TARGET_NAME}
+        )
+    else()
+        target_link_libraries(${LASTFM_TEST_CLASS}Test ${QT_QTCORE_LIBRARY} ${QT_QTTEST_LIBRARY}
+            ${LASTFM_LIB_TARGET_NAME}
+        )
+    endif()
 
     add_test(NAME ${LASTFM_TEST_CLASS}Test COMMAND ${LASTFM_TEST_CLASS}Test)
 endmacro()
