raven/base/libmygpo-qt/0001-Minimal-changes-to-make-Qt6-compilation-possible.patch

154 lines
6.1 KiB
Diff

From 42e19dcb6b7c07460f05aa1d4586d5c76236c6d0 Mon Sep 17 00:00:00 2001
From: Tuomas Nurmi <tuomas@norsumanageri.org>
Date: Mon, 8 Jul 2024 17:03:32 +0300
Subject: [PATCH] Minimal changes to make Qt6 compilation possible
Untested. Compiles, with a bunch of deprecation warnings.
There's likely room for improvement all around.
---
CMakeLists.txt | 24 +++++++++---------------
libmygpo-qt.pc.in | 1 -
src/CMakeLists.txt | 4 ++--
src/DeviceList.cpp | 2 +-
tests/CMakeLists.txt | 12 +++++++++---
5 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8a79ddc..920e841 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,10 +5,10 @@ project( libmygpo-qt )
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII" )
-option(BUILD_WITH_QT4 "Build libmygpo-qt with Qt4" OFF)
+option(BUILD_WITH_QT6 "Build libmygpo-qt with Qt6" OFF)
option(MYGPO_BUILD_TESTS "Build all unit tests" ON)
-if( NOT BUILD_WITH_QT4 )
+if( NOT BUILD_WITH_QT6 )
if( MYGPO_BUILD_TESTS )
find_package(Qt5 REQUIRED COMPONENTS Core Network Test CONFIG)
else()
@@ -23,27 +23,21 @@ if( NOT BUILD_WITH_QT4 )
# pkg-config names of QtCore and QtNetwork are Qt5Core and Qt5Network for
# Qt5
set(MYGPO_QT_MAJOR_VERSION "5")
- set(MYGPO_QT4_QJSON_DEP "")
else()
- message(STATUS "Could not find Qt5, searching for Qt4 instead...")
- message(STATUS "Qt4 Support is deprecated, building with Qt4 is no longer officially supported")
+ message(STATUS "Could not find Qt5, searching for Qt6 instead...")
if( MYGPO_BUILD_TESTS )
- find_package( Qt4 COMPONENTS QtCore QtNetwork QtTest REQUIRED )
+ find_package( Qt6 COMPONENTS Core Network Test REQUIRED )
else( MYGPO_BUILD_TESTS )
- find_package( Qt4 COMPONENTS QtCore QtNetwork REQUIRED )
+ find_package( Qt6 COMPONENTS Core Network REQUIRED )
endif()
- set( QT_DONT_USE_QTGUI TRUE )
- include( ${QT_USE_FILE} )
+ set(MYGPO_QT_VERSION_SUFFIX 6)
macro(qt_wrap_cpp)
- qt4_wrap_cpp(${ARGN})
+ qt6_wrap_cpp(${ARGN})
endmacro()
- set(MYGPO_QT_MAJOR_VERSION "")
- set(MYGPO_QT4_QJSON_DEP "Requires.private: QJson")
+ set(MYGPO_QT_MAJOR_VERSION "6")
- # QJson is only required for Qt4
- find_package(QJSON REQUIRED)
endif()
# Don't use absolute path in Mygpo-qtTargets-$buildType.cmake
@@ -51,7 +45,7 @@ endif()
# set(QT_USE_IMPORTED_TARGETS TRUE)
set( MYGPO_QT_VERSION_MAJOR "1" )
-set( MYGPO_QT_VERSION_MINOR "1" )
+set( MYGPO_QT_VERSION_MINOR "2" )
set( MYGPO_QT_VERSION_PATCH "0" )
set( MYGPO_QT_VERSION "${MYGPO_QT_VERSION_MAJOR}.${MYGPO_QT_VERSION_MINOR}.${MYGPO_QT_VERSION_PATCH}" )
diff --git a/libmygpo-qt.pc.in b/libmygpo-qt.pc.in
index 8403e48..520bd52 100644
--- a/libmygpo-qt.pc.in
+++ b/libmygpo-qt.pc.in
@@ -8,6 +8,5 @@ Description: libmygpo-qt is a C++/Qt Library that wraps the gpodder.net WebAPI
URL: http://wiki.gpodder.org/wiki/Libmygpo-qt
Version: @MYGPO_QT_VERSION@
Requires: Qt@MYGPO_QT_MAJOR_VERSION@Core Qt@MYGPO_QT_MAJOR_VERSION@Network
-@MYGPO_QT4_QJSON_DEP@
Libs: -L${libdir} -lmygpo-qt@MYGPO_QT_VERSION_SUFFIX@
Cflags: -I${includedir}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 253e81e..9d1989c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -81,10 +81,10 @@ add_library( ${MYGPO_QT_TARGET_NAME} SHARED ${LIBMYGPO_QT_SRC} ${LIBMYGPO_QT_MOC
set_target_properties( ${MYGPO_QT_TARGET_NAME} PROPERTIES VERSION ${MYGPO_QT_VERSION} SOVERSION ${MYGPO_QT_SONAME} DEFINE_SYMBOL MYGPO_MAKEDLL)
-if( NOT BUILD_WITH_QT4 )
+if( NOT BUILD_WITH_QT6 )
target_link_libraries( ${MYGPO_QT_TARGET_NAME} Qt5::Core Qt5::Network)
else()
- target_link_libraries( ${MYGPO_QT_TARGET_NAME} ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QJSON_LIBRARIES})
+ target_link_libraries( ${MYGPO_QT_TARGET_NAME} Qt6::Core Qt6::Network)
endif()
install( TARGETS ${MYGPO_QT_TARGET_NAME} EXPORT ${MYGPO_QT_TARGET_NAME}Export DESTINATION ${LIB_INSTALL_DIR} )
diff --git a/src/DeviceList.cpp b/src/DeviceList.cpp
index e972318..92e29cc 100644
--- a/src/DeviceList.cpp
+++ b/src/DeviceList.cpp
@@ -64,7 +64,7 @@ bool DeviceListPrivate::parse( const QVariant& data )
DevicePtr ptr( new Device( var, this ) );
m_devicesList.append( ptr );
QVariant v;
- v.setValue<DevicePtr>( ptr );
+ v.setValue<DevicePtr>( QSharedPointer<mygpo::Device>(ptr) );
devList.append( v );
}
m_devices = devList;
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 4f77158..ce63689 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -11,14 +11,18 @@ include_directories( ${QJSON_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CU
# UrlBuilder library
add_library( UrlBuilder ${TESTOBJECTS_SRCDIR}/UrlBuilder.cpp ${TESTOBJECTS_SRCDIR}/Config.cpp )
-if( NOT BUILD_WITH_QT4 )
+if( NOT BUILD_WITH_QT6 )
target_link_libraries( UrlBuilder Qt5::Core )
+else()
+ target_link_libraries( UrlBuilder Qt6::Core )
endif()
# JSONCreator library
QT_WRAP_CPP(LIBMYGPO_QT_MOC_SRC ${TESTOBJECTS_SRCDIR}/EpisodeAction.h ${TESTOBJECTS_SRCDIR}/EpisodeAction_p.h )
add_library( JsonCreator ${TESTOBJECTS_SRCDIR}/JsonCreator.cpp ${TESTOBJECTS_SRCDIR}/EpisodeAction.cpp ${TESTOBJECTS_SRCDIR}/qjsonwrapper/Json.cpp ${LIBMYGPO_QT_MOC_SRC})
-if( NOT BUILD_WITH_QT4 )
+if( NOT BUILD_WITH_QT6 )
target_link_libraries( JsonCreator Qt5::Core Qt5::Network )
+else()
+ target_link_libraries( JsonCreator Qt6::Core Qt6::Network )
endif()
set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} )
@@ -29,8 +33,10 @@ macro(add_libmygpo_test _source)
add_executable(${_name} ${_source} ${${_name}_MOC_SRC})
target_link_libraries(${_name} ${QT_QTCORE_LIBRARY} ${QT_QTTEST_LIBRARY} ${QT_QTNETWORK_LIBRARY})
add_test(${_name}-test ${EXECUTABLE_OUTPUT_PATH}/${_name})
- if( NOT BUILD_WITH_QT4 )
+ if( NOT BUILD_WITH_QT6 )
target_link_libraries(${_name} Qt5::Network Qt5::Test)
+ else()
+ target_link_libraries(${_name} Qt6::Network Qt6::Test)
endif()
endmacro(add_libmygpo_test)