Add option to compile with Qt 6

This commit is contained in:
Jonas Kvinge 2020-07-18 04:47:54 +02:00
parent 4307183817
commit f5b245c72d
11 changed files with 253 additions and 118 deletions

View File

@ -10,38 +10,46 @@ endif()
set(SINGLEAPP-SOURCES singleapplication.cpp singleapplication_p.cpp) set(SINGLEAPP-SOURCES singleapplication.cpp singleapplication_p.cpp)
set(SINGLEAPP-MOC-HEADERS singleapplication.h singleapplication_p.h) 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}) add_library(singleapplication STATIC ${SINGLEAPP-SOURCES} ${SINGLEAPP-SOURCES-MOC})
target_include_directories(singleapplication SYSTEM PRIVATE target_include_directories(singleapplication SYSTEM PRIVATE
${Qt5Core_INCLUDE_DIRS} ${QtCore_INCLUDE_DIRS}
${Qt5Widgets_INCLUDE_DIRS} ${QtWidgets_INCLUDE_DIRS}
${Qt5Network_INCLUDE_DIRS} ${QtNetwork_INCLUDE_DIRS}
) )
target_include_directories(singleapplication PRIVATE target_include_directories(singleapplication PRIVATE
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}
) )
target_link_libraries(singleapplication PRIVATE target_link_libraries(singleapplication PRIVATE
${Qt5Core_LIBRARIES} ${QtCore_LIBRARIES}
${Qt5Widgets_LIBRARIES} ${QtWidgets_LIBRARIES}
${Qt5Network_LIBRARIES} ${QtNetwork_LIBRARIES}
) )
set(SINGLECOREAPP-SOURCES singlecoreapplication.cpp singlecoreapplication_p.cpp) set(SINGLECOREAPP-SOURCES singlecoreapplication.cpp singlecoreapplication_p.cpp)
set(SINGLECOREAPP-MOC-HEADERS singlecoreapplication.h singlecoreapplication_p.h) 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}) add_library(singlecoreapplication STATIC ${SINGLECOREAPP-SOURCES} ${SINGLECOREAPP-SOURCES-MOC})
target_include_directories(singlecoreapplication SYSTEM PRIVATE target_include_directories(singlecoreapplication SYSTEM PRIVATE
${Qt5Core_INCLUDE_DIRS} ${QtCore_INCLUDE_DIRS}
${Qt5Network_INCLUDE_DIRS} ${QtNetwork_INCLUDE_DIRS}
) )
target_include_directories(singlecoreapplication PRIVATE target_include_directories(singlecoreapplication PRIVATE
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}
) )
target_link_libraries(singlecoreapplication PRIVATE target_link_libraries(singlecoreapplication PRIVATE
${Qt5Core_LIBRARIES} ${QtCore_LIBRARIES}
${Qt5Network_LIBRARIES} ${QtNetwork_LIBRARIES}
) )
configure_file(config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h") configure_file(config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h")

View File

@ -125,10 +125,8 @@ pkg_search_module(LIBPLIST libplist-2.0 libplist)
find_package(Gettext) find_package(Gettext)
find_package(FFTW3) find_package(FFTW3)
# QT option(WITH_QT6 "Use Qt 6" OFF)
set(QT_MIN_VERSION 5.6)
set(QT_COMPONENTS Core Concurrent Widgets Network Sql) set(QT_COMPONENTS Core Concurrent Widgets Network Sql)
if(X11_FOUND) if(X11_FOUND)
list(APPEND QT_COMPONENTS X11Extras) list(APPEND QT_COMPONENTS X11Extras)
endif() endif()
@ -142,32 +140,71 @@ if(WIN32)
list(APPEND QT_COMPONENTS WinExtras) list(APPEND QT_COMPONENTS WinExtras)
endif() endif()
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS ${QT_COMPONENTS}) if(WITH_QT6)
list(APPEND QT_COMPONENTS Core5Compat)
set(QT_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Concurrent_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Sql_LIBRARIES}) find_package(Qt6 REQUIRED COMPONENTS ${QT_COMPONENTS})
set(QT_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} ${Qt5Concurrent_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Sql_INCLUDE_DIRS}) set(QtCore_LIBRARIES Qt6::Core)
set(QtConcurrent_LIBRARIES Qt6::Concurrent)
if(Qt5DBus_FOUND) set(QtWidgets_LIBRARIES Qt6::Widgets)
list(APPEND QT_LIBRARIES ${Qt5DBus_LIBRARIES}) set(QtNetwork_LIBRARIES Qt6::Network)
list(APPEND QT_INCLUDE_DIRS ${Qt5DBus_INCLUDE_DIRS}) set(QtSql_LIBRARIES Qt6::Sql)
get_target_property(QT_DBUSXML2CPP_EXECUTABLE Qt5::qdbusxml2cpp LOCATION) set(QT_LIBRARIES Qt6::Core Qt6::Concurrent Qt6::Widgets Qt6::Network Qt6::Sql Qt6::Core5Compat)
endif() if(Qt6DBus_FOUND)
if(Qt5X11Extras_FOUND) set(QtDBus_LIBRARIES Qt6::DBus)
list(APPEND QT_LIBRARIES ${Qt5X11Extras_LIBRARIES}) list(APPEND QT_LIBRARIES Qt6::DBus)
list(APPEND QT_INCLUDE_DIRS ${Qt5X11Extras_INCLUDE_DIRS}) get_target_property(QT_DBUSXML2CPP_EXECUTABLE Qt6::qdbusxml2cpp LOCATION)
endif() endif()
if(Qt5MacExtras_FOUND) if(Qt6X11Extras_FOUND)
list(APPEND QT_LIBRARIES ${Qt5MacExtras_LIBRARIES}) set(QtX11Extras_LIBRARIES Qt6::X11Extras)
list(APPEND QT_INCLUDE_DIRS ${Qt5MacExtras_INCLUDE_DIRS}) list(APPEND QT_LIBRARIES Qt6::X11Extras)
endif() endif()
if(Qt5WinExtras_FOUND) if(Qt6MacExtras_FOUND)
list(APPEND QT_LIBRARIES ${Qt5WinExtras_LIBRARIES}) set(QtMacExtras_LIBRARIES Qt6::MacExtras)
list(APPEND QT_INCLUDE_DIRS ${Qt5WinExtras_INCLUDE_DIRS}) list(APPEND QT_LIBRARIES Qt6::MacExtras)
endif() endif()
if(Qt6WinExtras_FOUND)
find_package(Qt5 ${QT_MIN_VERSION} QUIET COMPONENTS LinguistTools CONFIG) set(QtWinExtras_LIBRARIES Qt6::WinExtras)
if (Qt5LinguistTools_FOUND) list(APPEND QT_LIBRARIES Qt6::WinExtras)
set(QT_LCONVERT_EXECUTABLE Qt5::lconvert) 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() endif()
if(X11_FOUND) if(X11_FOUND)
@ -333,8 +370,8 @@ endif(USE_BUNDLE AND NOT USE_BUNDLE_DIR)
if(NOT CMAKE_CROSSCOMPILING) if(NOT CMAKE_CROSSCOMPILING)
set(CMAKE_REQUIRED_FLAGS "--std=c++11") set(CMAKE_REQUIRED_FLAGS "--std=c++11")
set(CMAKE_REQUIRED_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Sql_LIBRARIES}) set(CMAKE_REQUIRED_LIBRARIES ${QtCore_LIBRARIES} ${QtSql_LIBRARIES})
set(CMAKE_REQUIRED_INCLUDES ${Qt5Core_INCLUDE_DIRS} ${Qt5Sql_INCLUDE_DIRS}) set(CMAKE_REQUIRED_INCLUDES ${QtCore_INCLUDE_DIRS} ${QtSql_INCLUDE_DIRS})
check_cxx_source_runs(" check_cxx_source_runs("
#include <QSqlDatabase> #include <QSqlDatabase>
#include <QSqlQuery> #include <QSqlQuery>

View File

@ -2,7 +2,7 @@
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/jonaskvinge) [![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) ![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) * [POSIX thread (pthread)](http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html)
* [GLib](https://developer.gnome.org/glib/) * [GLib](https://developer.gnome.org/glib/)
* [Protobuf library and compiler](https://developers.google.com/protocol-buffers/) * [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.8 or higher (or Qt 6) 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 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) * [SQLite 3.9 or newer with FTS5](https://www.sqlite.org)
* [Chromaprint library](https://acoustid.org/chromaprint) * [Chromaprint library](https://acoustid.org/chromaprint)
* [ALSA library (linux)](https://www.alsa-project.org/) * [ALSA library (linux)](https://www.alsa-project.org/)

View File

@ -15,7 +15,11 @@ macro(optional_source TOGGLE)
list(APPEND OTHER_SOURCES ${OPTIONAL_SOURCE_HEADERS}) list(APPEND OTHER_SOURCES ${OPTIONAL_SOURCE_HEADERS})
set(_uic_sources) 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_SOURCES ${_uic_sources})
list(APPEND OTHER_UIC_SOURCES ${_uic_sources}) list(APPEND OTHER_UIC_SOURCES ${_uic_sources})
endif(${TOGGLE}) endif(${TOGGLE})

View File

@ -9,7 +9,7 @@ link_directories(
${GSTREAMER_BASE_LIBRARY_DIRS} ${GSTREAMER_BASE_LIBRARY_DIRS}
${GSTREAMER_AUDIO_LIBRARY_DIRS} ${GSTREAMER_AUDIO_LIBRARY_DIRS}
${FFTW3_LIBRARY_DIRS} ${FFTW3_LIBRARY_DIRS}
${Qt5Core_LIBRARY_DIRS} ${QtCore_LIBRARY_DIRS}
) )
add_library(gstmoodbar STATIC ${SOURCES}) add_library(gstmoodbar STATIC ${SOURCES})
@ -21,7 +21,7 @@ target_include_directories(gstmoodbar SYSTEM PRIVATE
${GSTREAMER_BASE_INCLUDE_DIRS} ${GSTREAMER_BASE_INCLUDE_DIRS}
${GSTREAMER_AUDIO_INCLUDE_DIRS} ${GSTREAMER_AUDIO_INCLUDE_DIRS}
${FFTW3_INCLUDE_DIR} ${FFTW3_INCLUDE_DIR}
${Qt5Core_INCLUDE_DIRS} ${QtCore_INCLUDE_DIRS}
) )
target_include_directories(gstmoodbar PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(gstmoodbar PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
@ -33,5 +33,5 @@ target_link_libraries(gstmoodbar PRIVATE
${GSTREAMER_BASE_LIBRARIES} ${GSTREAMER_BASE_LIBRARIES}
${GSTREAMER_AUDIO_LIBRARIES} ${GSTREAMER_AUDIO_LIBRARIES}
${FFTW3_FFTW_LIBRARY} ${FFTW3_FFTW_LIBRARY}
${Qt5Core_LIBRARIES} ${QtCore_LIBRARIES}
) )

View File

@ -20,20 +20,24 @@ if(APPLE)
list(APPEND SOURCES core/scoped_nsautorelease_pool.mm) list(APPEND SOURCES core/scoped_nsautorelease_pool.mm)
endif(APPLE) endif(APPLE)
qt5_wrap_cpp(MOC ${HEADERS}) if(WITH_QT6)
qt6_wrap_cpp(MOC ${HEADERS})
else()
qt5_wrap_cpp(MOC ${HEADERS})
endif()
link_directories( link_directories(
${GLIB_LIBRARY_DIRS} ${GLIB_LIBRARY_DIRS}
${Qt5Core_LIBRARY_DIRS} ${QtCore_LIBRARY_DIRS}
${Qt5Network_LIBRARY_DIRS} ${QtNetwork_LIBRARY_DIRS}
) )
add_library(libstrawberry-common STATIC ${SOURCES} ${MOC}) add_library(libstrawberry-common STATIC ${SOURCES} ${MOC})
target_include_directories(libstrawberry-common SYSTEM PRIVATE target_include_directories(libstrawberry-common SYSTEM PRIVATE
${GLIB_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS}
${Qt5Core_INCLUDE_DIRS} ${QtCore_INCLUDE_DIRS}
${Qt5Network_INCLUDE_DIRS} ${QtNetwork_INCLUDE_DIRS}
) )
target_include_directories(libstrawberry-common PRIVATE target_include_directories(libstrawberry-common PRIVATE
@ -46,8 +50,8 @@ target_include_directories(libstrawberry-common PRIVATE
target_link_libraries(libstrawberry-common PRIVATE target_link_libraries(libstrawberry-common PRIVATE
${CMAKE_THREAD_LIBS_INIT} ${CMAKE_THREAD_LIBS_INIT}
${GLIB_LIBRARIES} ${GLIB_LIBRARIES}
${Qt5Core_LIBRARIES} ${QtCore_LIBRARIES}
${Qt5Network_LIBRARIES} ${QtNetwork_LIBRARIES}
) )
if(Backtrace_FOUND) if(Backtrace_FOUND)

View File

@ -17,8 +17,8 @@ add_library(libstrawberry-tagreader STATIC ${PROTO_SOURCES} ${SOURCES})
target_include_directories(libstrawberry-tagreader SYSTEM PRIVATE target_include_directories(libstrawberry-tagreader SYSTEM PRIVATE
${GLIB_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS}
${PROTOBUF_INCLUDE_DIRS} ${PROTOBUF_INCLUDE_DIRS}
${Qt5Core_INCLUDE_DIRS} ${QtCore_INCLUDE_DIRS}
${Qt5Network_INCLUDE_DIRS} ${QtNetwork_INCLUDE_DIRS}
) )
target_include_directories(libstrawberry-tagreader PRIVATE target_include_directories(libstrawberry-tagreader PRIVATE
@ -34,6 +34,7 @@ target_link_libraries(libstrawberry-tagreader PRIVATE
${GLIB_LIBRARIES} ${GLIB_LIBRARIES}
${PROTOBUF_LIBRARY} ${PROTOBUF_LIBRARY}
${TAGLIB_LIBRARIES} ${TAGLIB_LIBRARIES}
${Qt5Core_LIBRARIES} ${QtCore_LIBRARIES}
${QtNetwork_LIBRARIES}
libstrawberry-common libstrawberry-common
) )

View File

@ -37,7 +37,6 @@
class QTextCodec; class QTextCodec;
#ifndef USE_SYSTEM_TAGLIB #ifndef USE_SYSTEM_TAGLIB
using namespace Strawberry_TagLib; using namespace Strawberry_TagLib;
#endif #endif

View File

@ -4,14 +4,19 @@ set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(SOURCES main.cpp tagreaderworker.cpp) set(SOURCES main.cpp tagreaderworker.cpp)
qt5_wrap_cpp(MOC ${HEADERS}) if(WITH_QT6)
qt5_add_resources(QRC data/data.qrc) 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( link_directories(
${GLIB_LIBRARY_DIRS} ${GLIB_LIBRARY_DIRS}
${TAGLIB_LIBRARY_DIRS} ${TAGLIB_LIBRARY_DIRS}
${Qt5Core_LIBRARY_DIRS} ${QtCore_LIBRARY_DIRS}
${Qt5Network_LIBRARY_DIRS} ${QtNetwork_LIBRARY_DIRS}
) )
add_executable(strawberry-tagreader ${SOURCES} ${MOC} ${QRC}) 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 target_include_directories(strawberry-tagreader SYSTEM PRIVATE
${GLIB_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS}
${PROTOBUF_INCLUDE_DIRS} ${PROTOBUF_INCLUDE_DIRS}
${Qt5Core_INCLUDE_DIRS} ${QtCore_INCLUDE_DIRS}
${Qt5Network_INCLUDE_DIRS} ${QtNetwork_INCLUDE_DIRS}
) )
target_include_directories(strawberry-tagreader PRIVATE target_include_directories(strawberry-tagreader PRIVATE
@ -34,8 +39,8 @@ target_include_directories(strawberry-tagreader PRIVATE
target_link_libraries(strawberry-tagreader PRIVATE target_link_libraries(strawberry-tagreader PRIVATE
${GLIB_LIBRARIES} ${GLIB_LIBRARIES}
${TAGLIB_LIBRARIES} ${TAGLIB_LIBRARIES}
${Qt5Core_LIBRARIES} ${QtCore_LIBRARIES}
${Qt5Network_LIBRARIES} ${QtNetwork_LIBRARIES}
libstrawberry-common libstrawberry-common
libstrawberry-tagreader libstrawberry-tagreader
) )

View File

@ -552,31 +552,63 @@ if(UNIX AND HAVE_DBUS)
HEADERS device/udisks2lister.h HEADERS device/udisks2lister.h
) )
# MPRIS 2.0 DBUS interfaces if (WITH_QT6)
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 # MPRIS 2.0 DBUS interfaces
qt5_add_dbus_adaptor(SOURCES qt6_add_dbus_adaptor(SOURCES
dbus/org.mpris.MediaPlayer2.Playlists.xml dbus/org.mpris.MediaPlayer2.Player.xml
core/mpris2.h mpris::Mpris2 core/mpris2_playlists Mpris2Playlists) 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 # MPRIS 2.1 DBUS interfaces
qt5_add_dbus_interface(SOURCES qt6_add_dbus_adaptor(SOURCES
dbus/org.freedesktop.Notifications.xml dbus/org.mpris.MediaPlayer2.Playlists.xml
dbus/notification) core/mpris2.h mpris::Mpris2 core/mpris2_playlists Mpris2Playlists)
# org.gnome.SettingsDaemon interface # org.freedesktop.Notifications DBUS interface
qt5_add_dbus_interface(SOURCES qt6_add_dbus_interface(SOURCES
dbus/org.gnome.SettingsDaemon.MediaKeys.xml dbus/org.freedesktop.Notifications.xml
dbus/gnomesettingsdaemon) 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 # org.freedesktop.Avahi.Server interface
add_custom_command( add_custom_command(
@ -617,21 +649,39 @@ if(UNIX AND HAVE_DBUS)
PROPERTIES NO_NAMESPACE dbus/udisks2drive INCLUDE dbus/metatypes.h) PROPERTIES NO_NAMESPACE dbus/udisks2drive INCLUDE dbus/metatypes.h)
set_source_files_properties(dbus/org.freedesktop.UDisks2.Job.xml set_source_files_properties(dbus/org.freedesktop.UDisks2.Job.xml
PROPERTIES NO_NAMESPACE dbus/udisks2job INCLUDE dbus/metatypes.h) PROPERTIES NO_NAMESPACE dbus/udisks2job INCLUDE dbus/metatypes.h)
qt5_add_dbus_interface(SOURCES if(WITH_QT6)
dbus/org.freedesktop.DBus.ObjectManager.xml qt6_add_dbus_interface(SOURCES
dbus/objectmanager) dbus/org.freedesktop.DBus.ObjectManager.xml
qt5_add_dbus_interface(SOURCES dbus/objectmanager)
dbus/org.freedesktop.UDisks2.Filesystem.xml qt6_add_dbus_interface(SOURCES
dbus/udisks2filesystem) dbus/org.freedesktop.UDisks2.Filesystem.xml
qt5_add_dbus_interface(SOURCES dbus/udisks2filesystem)
dbus/org.freedesktop.UDisks2.Block.xml qt6_add_dbus_interface(SOURCES
dbus/udisks2block) dbus/org.freedesktop.UDisks2.Block.xml
qt5_add_dbus_interface(SOURCES dbus/udisks2block)
dbus/org.freedesktop.UDisks2.Drive.xml qt6_add_dbus_interface(SOURCES
dbus/udisks2drive) dbus/org.freedesktop.UDisks2.Drive.xml
qt5_add_dbus_interface(SOURCES dbus/udisks2drive)
dbus/org.freedesktop.UDisks2.Job.xml qt6_add_dbus_interface(SOURCES
dbus/udisks2job) 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(HAVE_UDISKS2)
endif(UNIX AND HAVE_DBUS) 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}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
qt5_wrap_cpp(MOC ${HEADERS}) if(WITH_QT6)
qt5_wrap_ui(UIC ${UI}) qt6_wrap_cpp(MOC ${HEADERS})
qt5_add_resources(QRC ${RESOURCES}) 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) if(HAVE_TRANSLATIONS)

View File

@ -1,6 +1,13 @@
enable_testing() 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_package(GTest REQUIRED)
find_library(GMOCK_LIBRARY gmock 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) 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( link_directories(
${SQLITE_LIBRARY_DIRS} ${SQLITE_LIBRARY_DIRS}
@ -60,18 +71,22 @@ target_include_directories(test_utils PRIVATE
target_link_libraries(test_utils PRIVATE target_link_libraries(test_utils PRIVATE
${GTEST_BOTH_LIBRARIES} ${GTEST_BOTH_LIBRARIES}
${GMOCK_LIBRARY} ${GMOCK_LIBRARY}
${Qt5Core_LIBRARIES} ${QtCore_LIBRARIES}
${Qt5Widgets_LIBRARIES} ${QtWidgets_LIBRARIES}
${Qt5Network_LIBRARIES} ${QtNetwork_LIBRARIES}
${Qt5Sql_LIBRARIES} ${QtSql_LIBRARIES}
${Qt5Test_LIBRARIES} ${QtTest_LIBRARIES}
) )
add_custom_target(strawberry_tests echo "Running Strawberry tests" WORKING_DIRECTORY ${CURRENT_BINARY_DIR}) 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_custom_target(build_tests WORKING_DIRECTORY ${CURRENT_BINARY_DIR})
add_dependencies(strawberry_tests build_tests) 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) 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}) 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 ${CMAKE_BINARY_DIR}/ext/libstrawberry-tagreader
${TAGLIB_INCLUDE_DIRS} ${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) target_link_libraries(${TEST_NAME} PRIVATE test_utils)
set(GUI_REQUIRED ${gui_required}) set(GUI_REQUIRED ${gui_required})
if(GUI_REQUIRED) if(GUI_REQUIRED)