154 lines
6.1 KiB
Diff
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)
|
|
|