From f5b245c72d812d1e60fbf8af3083a1acb65b5ea3 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sat, 18 Jul 2020 04:47:54 +0200 Subject: [PATCH] Add option to compile with Qt 6 --- 3rdparty/singleapplication/CMakeLists.txt | 32 +++-- CMakeLists.txt | 99 ++++++++++----- README.md | 6 +- cmake/OptionalSource.cmake | 6 +- ext/gstmoodbar/CMakeLists.txt | 6 +- ext/libstrawberry-common/CMakeLists.txt | 18 +-- ext/libstrawberry-tagreader/CMakeLists.txt | 7 +- ext/libstrawberry-tagreader/tagreader.h | 1 - ext/strawberry-tagreader/CMakeLists.txt | 21 ++-- src/CMakeLists.txt | 136 +++++++++++++++------ tests/CMakeLists.txt | 39 ++++-- 11 files changed, 253 insertions(+), 118 deletions(-) diff --git a/3rdparty/singleapplication/CMakeLists.txt b/3rdparty/singleapplication/CMakeLists.txt index f3455394..4f204fac 100644 --- a/3rdparty/singleapplication/CMakeLists.txt +++ b/3rdparty/singleapplication/CMakeLists.txt @@ -10,38 +10,46 @@ endif() set(SINGLEAPP-SOURCES singleapplication.cpp singleapplication_p.cpp) set(SINGLEAPP-MOC-HEADERS singleapplication.h singleapplication_p.h) -QT5_WRAP_CPP(SINGLEAPP-SOURCES-MOC ${SINGLEAPP-MOC-HEADERS}) +if(WITH_QT6) + qt6_wrap_cpp(SINGLEAPP-SOURCES-MOC ${SINGLEAPP-MOC-HEADERS}) +else() + qt5_wrap_cpp(SINGLEAPP-SOURCES-MOC ${SINGLEAPP-MOC-HEADERS}) +endif() add_library(singleapplication STATIC ${SINGLEAPP-SOURCES} ${SINGLEAPP-SOURCES-MOC}) target_include_directories(singleapplication SYSTEM PRIVATE - ${Qt5Core_INCLUDE_DIRS} - ${Qt5Widgets_INCLUDE_DIRS} - ${Qt5Network_INCLUDE_DIRS} + ${QtCore_INCLUDE_DIRS} + ${QtWidgets_INCLUDE_DIRS} + ${QtNetwork_INCLUDE_DIRS} ) target_include_directories(singleapplication PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) target_link_libraries(singleapplication PRIVATE - ${Qt5Core_LIBRARIES} - ${Qt5Widgets_LIBRARIES} - ${Qt5Network_LIBRARIES} + ${QtCore_LIBRARIES} + ${QtWidgets_LIBRARIES} + ${QtNetwork_LIBRARIES} ) set(SINGLECOREAPP-SOURCES singlecoreapplication.cpp singlecoreapplication_p.cpp) set(SINGLECOREAPP-MOC-HEADERS singlecoreapplication.h singlecoreapplication_p.h) -QT5_WRAP_CPP(SINGLECOREAPP-SOURCES-MOC ${SINGLECOREAPP-MOC-HEADERS}) +if(WITH_QT6) + qt6_wrap_cpp(SINGLECOREAPP-SOURCES-MOC ${SINGLECOREAPP-MOC-HEADERS}) +else() + qt5_wrap_cpp(SINGLECOREAPP-SOURCES-MOC ${SINGLECOREAPP-MOC-HEADERS}) +endif() add_library(singlecoreapplication STATIC ${SINGLECOREAPP-SOURCES} ${SINGLECOREAPP-SOURCES-MOC}) target_include_directories(singlecoreapplication SYSTEM PRIVATE - ${Qt5Core_INCLUDE_DIRS} - ${Qt5Network_INCLUDE_DIRS} + ${QtCore_INCLUDE_DIRS} + ${QtNetwork_INCLUDE_DIRS} ) target_include_directories(singlecoreapplication PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) target_link_libraries(singlecoreapplication PRIVATE - ${Qt5Core_LIBRARIES} - ${Qt5Network_LIBRARIES} + ${QtCore_LIBRARIES} + ${QtNetwork_LIBRARIES} ) configure_file(config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h") diff --git a/CMakeLists.txt b/CMakeLists.txt index 927f42f7..9bfa1ff0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -125,10 +125,8 @@ pkg_search_module(LIBPLIST libplist-2.0 libplist) find_package(Gettext) find_package(FFTW3) -# QT -set(QT_MIN_VERSION 5.6) +option(WITH_QT6 "Use Qt 6" OFF) set(QT_COMPONENTS Core Concurrent Widgets Network Sql) - if(X11_FOUND) list(APPEND QT_COMPONENTS X11Extras) endif() @@ -142,32 +140,71 @@ if(WIN32) list(APPEND QT_COMPONENTS WinExtras) endif() -find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS ${QT_COMPONENTS}) - -set(QT_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Concurrent_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Sql_LIBRARIES}) -set(QT_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} ${Qt5Concurrent_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Sql_INCLUDE_DIRS}) - -if(Qt5DBus_FOUND) - list(APPEND QT_LIBRARIES ${Qt5DBus_LIBRARIES}) - list(APPEND QT_INCLUDE_DIRS ${Qt5DBus_INCLUDE_DIRS}) - get_target_property(QT_DBUSXML2CPP_EXECUTABLE Qt5::qdbusxml2cpp LOCATION) -endif() -if(Qt5X11Extras_FOUND) - list(APPEND QT_LIBRARIES ${Qt5X11Extras_LIBRARIES}) - list(APPEND QT_INCLUDE_DIRS ${Qt5X11Extras_INCLUDE_DIRS}) -endif() -if(Qt5MacExtras_FOUND) - list(APPEND QT_LIBRARIES ${Qt5MacExtras_LIBRARIES}) - list(APPEND QT_INCLUDE_DIRS ${Qt5MacExtras_INCLUDE_DIRS}) -endif() -if(Qt5WinExtras_FOUND) - list(APPEND QT_LIBRARIES ${Qt5WinExtras_LIBRARIES}) - list(APPEND QT_INCLUDE_DIRS ${Qt5WinExtras_INCLUDE_DIRS}) -endif() - -find_package(Qt5 ${QT_MIN_VERSION} QUIET COMPONENTS LinguistTools CONFIG) -if (Qt5LinguistTools_FOUND) - set(QT_LCONVERT_EXECUTABLE Qt5::lconvert) +if(WITH_QT6) + list(APPEND QT_COMPONENTS Core5Compat) + find_package(Qt6 REQUIRED COMPONENTS ${QT_COMPONENTS}) + set(QtCore_LIBRARIES Qt6::Core) + set(QtConcurrent_LIBRARIES Qt6::Concurrent) + set(QtWidgets_LIBRARIES Qt6::Widgets) + set(QtNetwork_LIBRARIES Qt6::Network) + set(QtSql_LIBRARIES Qt6::Sql) + set(QT_LIBRARIES Qt6::Core Qt6::Concurrent Qt6::Widgets Qt6::Network Qt6::Sql Qt6::Core5Compat) + if(Qt6DBus_FOUND) + set(QtDBus_LIBRARIES Qt6::DBus) + list(APPEND QT_LIBRARIES Qt6::DBus) + get_target_property(QT_DBUSXML2CPP_EXECUTABLE Qt6::qdbusxml2cpp LOCATION) + endif() + if(Qt6X11Extras_FOUND) + set(QtX11Extras_LIBRARIES Qt6::X11Extras) + list(APPEND QT_LIBRARIES Qt6::X11Extras) + endif() + if(Qt6MacExtras_FOUND) + set(QtMacExtras_LIBRARIES Qt6::MacExtras) + list(APPEND QT_LIBRARIES Qt6::MacExtras) + endif() + if(Qt6WinExtras_FOUND) + set(QtWinExtras_LIBRARIES Qt6::WinExtras) + list(APPEND QT_LIBRARIES Qt6::WinExtras) + endif() + find_package(Qt6 QUIET COMPONENTS LinguistTools CONFIG) + if (Qt6LinguistTools_FOUND) + set(QT_LCONVERT_EXECUTABLE Qt6::lconvert) + endif() +else() + set(QT_MIN_VERSION 5.8) + find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS ${QT_COMPONENTS}) + set(QtCore_LIBRARIES ${Qt5Core_LIBRARIES}) + set(QtConcurrent_LIBRARIES ${Qt5Concurrent_LIBRARIES}) + set(QtWidgets_LIBRARIES ${Qt5Widgets_LIBRARIES}) + set(QtNetwork_LIBRARIES ${Qt5Network_LIBRARIES}) + set(QtSql_LIBRARIES ${Qt5Sql_LIBRARIES}) + set(QT_LIBRARIES ${QtCore_LIBRARIES} ${QtConcurrent_LIBRARIES} ${QtWidgets_LIBRARIES} ${QtNetwork_LIBRARIES} ${QtSql_LIBRARIES}) + set(QT_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} ${Qt5Concurrent_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Sql_INCLUDE_DIRS}) + if(Qt5DBus_FOUND) + set(QtDBus_LIBRARIES ${Qt5DBus_LIBRARIES}) + list(APPEND QT_LIBRARIES ${Qt5DBus_LIBRARIES}) + list(APPEND QT_INCLUDE_DIRS ${Qt5DBus_INCLUDE_DIRS}) + get_target_property(QT_DBUSXML2CPP_EXECUTABLE Qt5::qdbusxml2cpp LOCATION) + endif() + if(Qt5X11Extras_FOUND) + set(QtX11Extras_LIBRARIES ${Qt5X11Extras_LIBRARIES}) + list(APPEND QT_LIBRARIES ${Qt5X11Extras_LIBRARIES}) + list(APPEND QT_INCLUDE_DIRS ${Qt5X11Extras_INCLUDE_DIRS}) + endif() + if(Qt5MacExtras_FOUND) + set(QtMacExtras_LIBRARIES ${Qt5MacExtras_LIBRARIES}) + list(APPEND QT_LIBRARIES ${Qt5MacExtras_LIBRARIES}) + list(APPEND QT_INCLUDE_DIRS ${Qt5MacExtras_INCLUDE_DIRS}) + endif() + if(Qt5WinExtras_FOUND) + set(QtWinExtras_LIBRARIES ${Qt5WinExtras_LIBRARIES}) + list(APPEND QT_LIBRARIES ${Qt5WinExtras_LIBRARIES}) + list(APPEND QT_INCLUDE_DIRS ${Qt5WinExtras_INCLUDE_DIRS}) + endif() + find_package(Qt5 ${QT_MIN_VERSION} QUIET COMPONENTS LinguistTools CONFIG) + if (Qt5LinguistTools_FOUND) + set(QT_LCONVERT_EXECUTABLE Qt5::lconvert) + endif() endif() if(X11_FOUND) @@ -333,8 +370,8 @@ endif(USE_BUNDLE AND NOT USE_BUNDLE_DIR) if(NOT CMAKE_CROSSCOMPILING) set(CMAKE_REQUIRED_FLAGS "--std=c++11") - set(CMAKE_REQUIRED_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Sql_LIBRARIES}) - set(CMAKE_REQUIRED_INCLUDES ${Qt5Core_INCLUDE_DIRS} ${Qt5Sql_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_LIBRARIES ${QtCore_LIBRARIES} ${QtSql_LIBRARIES}) + set(CMAKE_REQUIRED_INCLUDES ${QtCore_INCLUDE_DIRS} ${QtSql_INCLUDE_DIRS}) check_cxx_source_runs(" #include #include diff --git a/README.md b/README.md index b46a6363..1cbfd98b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/jonaskvinge) ======================= -Strawberry is a music player and music collection organizer. It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles. It's written in C++ using the Qt 5 framework. +Strawberry is a music player and music collection organizer. It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles. It's written in C++ using the Qt 5 or 6 toolkit. ![Browse](https://www.strawberrymusicplayer.org/pictures/screenshot-002-large.png) @@ -63,8 +63,8 @@ To build Strawberry from source you need the following installed on your system * [POSIX thread (pthread)](http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html) * [GLib](https://developer.gnome.org/glib/) * [Protobuf library and compiler](https://developers.google.com/protocol-buffers/) -* [Qt 5.6 or higher with components Core, Gui, Widgets, Concurrent, Network and Sql](https://www.qt.io/) -* [Qt 5 components X11Extras and DBus for Linux/BSD, MacExtras for macOS and WinExtras for Windows](https://www.qt.io/) +* [Qt 5.8 or higher (or Qt 6) with components Core, Gui, Widgets, Concurrent, Network and Sql](https://www.qt.io/) +* [Qt components X11Extras and DBus for Linux/BSD, MacExtras for macOS and WinExtras for Windows](https://www.qt.io/) * [SQLite 3.9 or newer with FTS5](https://www.sqlite.org) * [Chromaprint library](https://acoustid.org/chromaprint) * [ALSA library (linux)](https://www.alsa-project.org/) diff --git a/cmake/OptionalSource.cmake b/cmake/OptionalSource.cmake index d543e21f..82ce26dd 100644 --- a/cmake/OptionalSource.cmake +++ b/cmake/OptionalSource.cmake @@ -15,7 +15,11 @@ macro(optional_source TOGGLE) list(APPEND OTHER_SOURCES ${OPTIONAL_SOURCE_HEADERS}) set(_uic_sources) - qt5_wrap_ui(_uic_sources ${OPTIONAL_SOURCE_UI}) + if(WITH_QT6) + qt6_wrap_ui(_uic_sources ${OPTIONAL_SOURCE_UI}) + else() + qt5_wrap_ui(_uic_sources ${OPTIONAL_SOURCE_UI}) + endif() list(APPEND OTHER_SOURCES ${_uic_sources}) list(APPEND OTHER_UIC_SOURCES ${_uic_sources}) endif(${TOGGLE}) diff --git a/ext/gstmoodbar/CMakeLists.txt b/ext/gstmoodbar/CMakeLists.txt index 87ebdb58..cd06532b 100644 --- a/ext/gstmoodbar/CMakeLists.txt +++ b/ext/gstmoodbar/CMakeLists.txt @@ -9,7 +9,7 @@ link_directories( ${GSTREAMER_BASE_LIBRARY_DIRS} ${GSTREAMER_AUDIO_LIBRARY_DIRS} ${FFTW3_LIBRARY_DIRS} - ${Qt5Core_LIBRARY_DIRS} + ${QtCore_LIBRARY_DIRS} ) add_library(gstmoodbar STATIC ${SOURCES}) @@ -21,7 +21,7 @@ target_include_directories(gstmoodbar SYSTEM PRIVATE ${GSTREAMER_BASE_INCLUDE_DIRS} ${GSTREAMER_AUDIO_INCLUDE_DIRS} ${FFTW3_INCLUDE_DIR} - ${Qt5Core_INCLUDE_DIRS} + ${QtCore_INCLUDE_DIRS} ) target_include_directories(gstmoodbar PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) @@ -33,5 +33,5 @@ target_link_libraries(gstmoodbar PRIVATE ${GSTREAMER_BASE_LIBRARIES} ${GSTREAMER_AUDIO_LIBRARIES} ${FFTW3_FFTW_LIBRARY} - ${Qt5Core_LIBRARIES} + ${QtCore_LIBRARIES} ) diff --git a/ext/libstrawberry-common/CMakeLists.txt b/ext/libstrawberry-common/CMakeLists.txt index 000f9d99..e2b5998f 100644 --- a/ext/libstrawberry-common/CMakeLists.txt +++ b/ext/libstrawberry-common/CMakeLists.txt @@ -20,20 +20,24 @@ if(APPLE) list(APPEND SOURCES core/scoped_nsautorelease_pool.mm) endif(APPLE) -qt5_wrap_cpp(MOC ${HEADERS}) +if(WITH_QT6) + qt6_wrap_cpp(MOC ${HEADERS}) +else() + qt5_wrap_cpp(MOC ${HEADERS}) +endif() link_directories( ${GLIB_LIBRARY_DIRS} - ${Qt5Core_LIBRARY_DIRS} - ${Qt5Network_LIBRARY_DIRS} + ${QtCore_LIBRARY_DIRS} + ${QtNetwork_LIBRARY_DIRS} ) add_library(libstrawberry-common STATIC ${SOURCES} ${MOC}) target_include_directories(libstrawberry-common SYSTEM PRIVATE ${GLIB_INCLUDE_DIRS} - ${Qt5Core_INCLUDE_DIRS} - ${Qt5Network_INCLUDE_DIRS} + ${QtCore_INCLUDE_DIRS} + ${QtNetwork_INCLUDE_DIRS} ) target_include_directories(libstrawberry-common PRIVATE @@ -46,8 +50,8 @@ target_include_directories(libstrawberry-common PRIVATE target_link_libraries(libstrawberry-common PRIVATE ${CMAKE_THREAD_LIBS_INIT} ${GLIB_LIBRARIES} - ${Qt5Core_LIBRARIES} - ${Qt5Network_LIBRARIES} + ${QtCore_LIBRARIES} + ${QtNetwork_LIBRARIES} ) if(Backtrace_FOUND) diff --git a/ext/libstrawberry-tagreader/CMakeLists.txt b/ext/libstrawberry-tagreader/CMakeLists.txt index 04e9b274..af8c6c73 100644 --- a/ext/libstrawberry-tagreader/CMakeLists.txt +++ b/ext/libstrawberry-tagreader/CMakeLists.txt @@ -17,8 +17,8 @@ add_library(libstrawberry-tagreader STATIC ${PROTO_SOURCES} ${SOURCES}) target_include_directories(libstrawberry-tagreader SYSTEM PRIVATE ${GLIB_INCLUDE_DIRS} ${PROTOBUF_INCLUDE_DIRS} - ${Qt5Core_INCLUDE_DIRS} - ${Qt5Network_INCLUDE_DIRS} + ${QtCore_INCLUDE_DIRS} + ${QtNetwork_INCLUDE_DIRS} ) target_include_directories(libstrawberry-tagreader PRIVATE @@ -34,6 +34,7 @@ target_link_libraries(libstrawberry-tagreader PRIVATE ${GLIB_LIBRARIES} ${PROTOBUF_LIBRARY} ${TAGLIB_LIBRARIES} - ${Qt5Core_LIBRARIES} + ${QtCore_LIBRARIES} + ${QtNetwork_LIBRARIES} libstrawberry-common ) diff --git a/ext/libstrawberry-tagreader/tagreader.h b/ext/libstrawberry-tagreader/tagreader.h index b35c73db..dbb9af70 100644 --- a/ext/libstrawberry-tagreader/tagreader.h +++ b/ext/libstrawberry-tagreader/tagreader.h @@ -37,7 +37,6 @@ class QTextCodec; - #ifndef USE_SYSTEM_TAGLIB using namespace Strawberry_TagLib; #endif diff --git a/ext/strawberry-tagreader/CMakeLists.txt b/ext/strawberry-tagreader/CMakeLists.txt index f0b35cc5..c0d377f2 100644 --- a/ext/strawberry-tagreader/CMakeLists.txt +++ b/ext/strawberry-tagreader/CMakeLists.txt @@ -4,14 +4,19 @@ set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(SOURCES main.cpp tagreaderworker.cpp) -qt5_wrap_cpp(MOC ${HEADERS}) -qt5_add_resources(QRC data/data.qrc) +if(WITH_QT6) + qt6_wrap_cpp(MOC ${HEADERS}) + qt6_add_resources(QRC data/data.qrc) +else() + qt5_wrap_cpp(MOC ${HEADERS}) + qt5_add_resources(QRC data/data.qrc) +endif() link_directories( ${GLIB_LIBRARY_DIRS} ${TAGLIB_LIBRARY_DIRS} - ${Qt5Core_LIBRARY_DIRS} - ${Qt5Network_LIBRARY_DIRS} + ${QtCore_LIBRARY_DIRS} + ${QtNetwork_LIBRARY_DIRS} ) add_executable(strawberry-tagreader ${SOURCES} ${MOC} ${QRC}) @@ -19,8 +24,8 @@ add_executable(strawberry-tagreader ${SOURCES} ${MOC} ${QRC}) target_include_directories(strawberry-tagreader SYSTEM PRIVATE ${GLIB_INCLUDE_DIRS} ${PROTOBUF_INCLUDE_DIRS} - ${Qt5Core_INCLUDE_DIRS} - ${Qt5Network_INCLUDE_DIRS} + ${QtCore_INCLUDE_DIRS} + ${QtNetwork_INCLUDE_DIRS} ) target_include_directories(strawberry-tagreader PRIVATE @@ -34,8 +39,8 @@ target_include_directories(strawberry-tagreader PRIVATE target_link_libraries(strawberry-tagreader PRIVATE ${GLIB_LIBRARIES} ${TAGLIB_LIBRARIES} - ${Qt5Core_LIBRARIES} - ${Qt5Network_LIBRARIES} + ${QtCore_LIBRARIES} + ${QtNetwork_LIBRARIES} libstrawberry-common libstrawberry-tagreader ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ce886673..df8bcdf9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -552,31 +552,63 @@ if(UNIX AND HAVE_DBUS) HEADERS device/udisks2lister.h ) - # MPRIS 2.0 DBUS interfaces - qt5_add_dbus_adaptor(SOURCES - dbus/org.mpris.MediaPlayer2.Player.xml - core/mpris2.h mpris::Mpris2 core/mpris2_player Mpris2Player) - qt5_add_dbus_adaptor(SOURCES - dbus/org.mpris.MediaPlayer2.xml - core/mpris2.h mpris::Mpris2 core/mpris2_root Mpris2Root) - qt5_add_dbus_adaptor(SOURCES - dbus/org.mpris.MediaPlayer2.TrackList.xml - core/mpris2.h mpris::Mpris2 core/mpris2_tracklist Mpris2TrackList) + if (WITH_QT6) - # MPRIS 2.1 DBUS interfaces - qt5_add_dbus_adaptor(SOURCES - dbus/org.mpris.MediaPlayer2.Playlists.xml - core/mpris2.h mpris::Mpris2 core/mpris2_playlists Mpris2Playlists) + # MPRIS 2.0 DBUS interfaces + qt6_add_dbus_adaptor(SOURCES + dbus/org.mpris.MediaPlayer2.Player.xml + core/mpris2.h mpris::Mpris2 core/mpris2_player Mpris2Player) + qt6_add_dbus_adaptor(SOURCES + dbus/org.mpris.MediaPlayer2.xml + core/mpris2.h mpris::Mpris2 core/mpris2_root Mpris2Root) + qt6_add_dbus_adaptor(SOURCES + dbus/org.mpris.MediaPlayer2.TrackList.xml + core/mpris2.h mpris::Mpris2 core/mpris2_tracklist Mpris2TrackList) - # org.freedesktop.Notifications DBUS interface - qt5_add_dbus_interface(SOURCES - dbus/org.freedesktop.Notifications.xml - dbus/notification) + # MPRIS 2.1 DBUS interfaces + qt6_add_dbus_adaptor(SOURCES + dbus/org.mpris.MediaPlayer2.Playlists.xml + core/mpris2.h mpris::Mpris2 core/mpris2_playlists Mpris2Playlists) - # org.gnome.SettingsDaemon interface - qt5_add_dbus_interface(SOURCES - dbus/org.gnome.SettingsDaemon.MediaKeys.xml - dbus/gnomesettingsdaemon) + # org.freedesktop.Notifications DBUS interface + qt6_add_dbus_interface(SOURCES + dbus/org.freedesktop.Notifications.xml + dbus/notification) + + # org.gnome.SettingsDaemon interface + qt6_add_dbus_interface(SOURCES + dbus/org.gnome.SettingsDaemon.MediaKeys.xml + dbus/gnomesettingsdaemon) + + else() + + # MPRIS 2.0 DBUS interfaces + qt5_add_dbus_adaptor(SOURCES + dbus/org.mpris.MediaPlayer2.Player.xml + core/mpris2.h mpris::Mpris2 core/mpris2_player Mpris2Player) + qt5_add_dbus_adaptor(SOURCES + dbus/org.mpris.MediaPlayer2.xml + core/mpris2.h mpris::Mpris2 core/mpris2_root Mpris2Root) + qt5_add_dbus_adaptor(SOURCES + dbus/org.mpris.MediaPlayer2.TrackList.xml + core/mpris2.h mpris::Mpris2 core/mpris2_tracklist Mpris2TrackList) + + # MPRIS 2.1 DBUS interfaces + qt5_add_dbus_adaptor(SOURCES + dbus/org.mpris.MediaPlayer2.Playlists.xml + core/mpris2.h mpris::Mpris2 core/mpris2_playlists Mpris2Playlists) + + # org.freedesktop.Notifications DBUS interface + qt5_add_dbus_interface(SOURCES + dbus/org.freedesktop.Notifications.xml + dbus/notification) + + # org.gnome.SettingsDaemon interface + qt5_add_dbus_interface(SOURCES + dbus/org.gnome.SettingsDaemon.MediaKeys.xml + dbus/gnomesettingsdaemon) + + endif() # org.freedesktop.Avahi.Server interface add_custom_command( @@ -617,21 +649,39 @@ if(UNIX AND HAVE_DBUS) PROPERTIES NO_NAMESPACE dbus/udisks2drive INCLUDE dbus/metatypes.h) set_source_files_properties(dbus/org.freedesktop.UDisks2.Job.xml PROPERTIES NO_NAMESPACE dbus/udisks2job INCLUDE dbus/metatypes.h) - qt5_add_dbus_interface(SOURCES - dbus/org.freedesktop.DBus.ObjectManager.xml - dbus/objectmanager) - qt5_add_dbus_interface(SOURCES - dbus/org.freedesktop.UDisks2.Filesystem.xml - dbus/udisks2filesystem) - qt5_add_dbus_interface(SOURCES - dbus/org.freedesktop.UDisks2.Block.xml - dbus/udisks2block) - qt5_add_dbus_interface(SOURCES - dbus/org.freedesktop.UDisks2.Drive.xml - dbus/udisks2drive) - qt5_add_dbus_interface(SOURCES - dbus/org.freedesktop.UDisks2.Job.xml - dbus/udisks2job) + if(WITH_QT6) + qt6_add_dbus_interface(SOURCES + dbus/org.freedesktop.DBus.ObjectManager.xml + dbus/objectmanager) + qt6_add_dbus_interface(SOURCES + dbus/org.freedesktop.UDisks2.Filesystem.xml + dbus/udisks2filesystem) + qt6_add_dbus_interface(SOURCES + dbus/org.freedesktop.UDisks2.Block.xml + dbus/udisks2block) + qt6_add_dbus_interface(SOURCES + dbus/org.freedesktop.UDisks2.Drive.xml + dbus/udisks2drive) + qt6_add_dbus_interface(SOURCES + dbus/org.freedesktop.UDisks2.Job.xml + dbus/udisks2job) + else() + qt5_add_dbus_interface(SOURCES + dbus/org.freedesktop.DBus.ObjectManager.xml + dbus/objectmanager) + qt5_add_dbus_interface(SOURCES + dbus/org.freedesktop.UDisks2.Filesystem.xml + dbus/udisks2filesystem) + qt5_add_dbus_interface(SOURCES + dbus/org.freedesktop.UDisks2.Block.xml + dbus/udisks2block) + qt5_add_dbus_interface(SOURCES + dbus/org.freedesktop.UDisks2.Drive.xml + dbus/udisks2drive) + qt5_add_dbus_interface(SOURCES + dbus/org.freedesktop.UDisks2.Job.xml + dbus/udisks2job) + endif() endif(HAVE_UDISKS2) endif(UNIX AND HAVE_DBUS) @@ -872,9 +922,15 @@ optional_source(HAVE_MOODBAR configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h) -qt5_wrap_cpp(MOC ${HEADERS}) -qt5_wrap_ui(UIC ${UI}) -qt5_add_resources(QRC ${RESOURCES}) +if(WITH_QT6) + qt6_wrap_cpp(MOC ${HEADERS}) + qt6_wrap_ui(UIC ${UI}) + qt6_add_resources(QRC ${RESOURCES}) +else() + qt5_wrap_cpp(MOC ${HEADERS}) + qt5_wrap_ui(UIC ${UI}) + qt5_add_resources(QRC ${RESOURCES}) +endif() if(HAVE_TRANSLATIONS) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 44b7ea58..47820675 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,6 +1,13 @@ enable_testing() -find_package(Qt5 ${QT_MIN_VERSION} COMPONENTS Test REQUIRED) +if(WITH_QT6) + find_package(Qt6 COMPONENTS Test REQUIRED) + set(QtTest_LIBRARIES Qt6::Test) +else() + find_package(Qt5 ${QT_MIN_VERSION} COMPONENTS Test REQUIRED) + set(QtTest_LIBRARIES ${Qt5Test_LIBRARIES}) +endif() + find_package(GTest REQUIRED) find_library(GMOCK_LIBRARY gmock REQUIRED) @@ -15,7 +22,11 @@ set(TESTUTILS-SOURCES set(TESTUTILS-MOC-HEADERS src/mock_networkaccessmanager.h src/test_utils.h src/testobjectdecorators.h) -qt5_wrap_cpp(TESTUTILS-SOURCES-MOC ${TESTUTILS-MOC-HEADERS}) +if(WITH_QT6) + qt6_wrap_cpp(TESTUTILS-SOURCES-MOC ${TESTUTILS-MOC-HEADERS}) +else() + qt5_wrap_cpp(TESTUTILS-SOURCES-MOC ${TESTUTILS-MOC-HEADERS}) +endif() link_directories( ${SQLITE_LIBRARY_DIRS} @@ -60,18 +71,22 @@ target_include_directories(test_utils PRIVATE target_link_libraries(test_utils PRIVATE ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} - ${Qt5Core_LIBRARIES} - ${Qt5Widgets_LIBRARIES} - ${Qt5Network_LIBRARIES} - ${Qt5Sql_LIBRARIES} - ${Qt5Test_LIBRARIES} + ${QtCore_LIBRARIES} + ${QtWidgets_LIBRARIES} + ${QtNetwork_LIBRARIES} + ${QtSql_LIBRARIES} + ${QtTest_LIBRARIES} ) add_custom_target(strawberry_tests echo "Running Strawberry tests" WORKING_DIRECTORY ${CURRENT_BINARY_DIR}) add_custom_target(build_tests WORKING_DIRECTORY ${CURRENT_BINARY_DIR}) add_dependencies(strawberry_tests build_tests) -qt5_add_resources(TEST-RESOURCE-SOURCES data/testdata.qrc) +if(WITH_QT6) + qt6_add_resources(TEST-RESOURCE-SOURCES data/testdata.qrc) +else() + qt5_add_resources(TEST-RESOURCE-SOURCES data/testdata.qrc) +endif() add_library(test_gui_main STATIC EXCLUDE_FROM_ALL ${TEST-RESOURCE-SOURCES} src/main.cpp) target_include_directories(test_gui_main SYSTEM PRIVATE ${QT_INCLUDE_DIRS}) @@ -119,7 +134,13 @@ macro(add_test_file test_source gui_required) ${CMAKE_BINARY_DIR}/ext/libstrawberry-tagreader ${TAGLIB_INCLUDE_DIRS} ) - target_link_libraries(${TEST_NAME} PRIVATE ${Qt5Core_LIBRARIES} ${Qt5Sql_LIBRARIES} ${Qt5Test_LIBRARIES}) + target_link_libraries(${TEST_NAME} PRIVATE + ${QtCore_LIBRARIES} + ${QtWidgets_LIBRARIES} + ${QtNetwork_LIBRARIES} + ${QtSql_LIBRARIES} + ${QtTest_LIBRARIES} + ) target_link_libraries(${TEST_NAME} PRIVATE test_utils) set(GUI_REQUIRED ${gui_required}) if(GUI_REQUIRED)