Skip to content

Commit

Permalink
Merge branch '1.5'
Browse files Browse the repository at this point in the history
  • Loading branch information
lnjX committed Apr 7, 2023
2 parents c8e13f6 + b44a7ee commit ab4bdf2
Show file tree
Hide file tree
Showing 26 changed files with 279 additions and 164 deletions.
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,20 @@ QXmpp 1.6.0 (UNRELEASED)

*under development*

QXmpp 1.5.4 (Apr 07, 2023)
--------------------------

Fixes:
- OMEMO fixes (@melvo)
- Fix use-after-move in EntityTimeManager (@lnjX)
- EME: Always send encryption name text (@melvo)
- Fix interpretation of empty to/from address in the client (@lnjX)
- MSVC related build fixes (@JBBgameich)

Misc:
- Support installing QXmpp with Qt 5 and Qt 6 in parallel (@lnjX)
- Support building QXmppOmemo statically (@lnjX)

QXmpp 1.5.3 (Mar 11, 2023)
--------------------------

Expand Down
52 changes: 43 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/modules")

# Qt
if(NOT DEFINED QT_VERSION_MAJOR)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Network Xml)
endif()
Expand All @@ -26,9 +30,6 @@ if(${QT_VERSION_MAJOR} EQUAL 6)
find_package(Qt6Core5Compat)
endif()

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

include(GNUInstallDirs)

option(BUILD_SHARED "Build shared library" ON)
Expand All @@ -40,6 +41,9 @@ option(BUILD_OMEMO "Build the OMEMO module" OFF)
option(WITH_GSTREAMER "Build with GStreamer support for Jingle" OFF)
option(WITH_QCA "Build with QCA for OMEMO or encrypted file sharing" ${Qca-qt${QT_VERSION_MAJOR}_FOUND})

set(QXMPP_TARGET QXmppQt${QT_VERSION_MAJOR})
set(QXMPPOMEMO_TARGET QXmppOmemoQt${QT_VERSION_MAJOR})

add_definitions(
-DQT_DISABLE_DEPRECATED_BEFORE=0x050F00
-DQURL_NO_CAST_FROM_STRING
Expand Down Expand Up @@ -82,30 +86,60 @@ endif()

include(CMakePackageConfigHelpers)

# Normal QXmppQt5/6 package
configure_package_config_file(
QXmppConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/QXmppConfig.cmake
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/qxmpp"
${CMAKE_CURRENT_BINARY_DIR}/${QXMPP_TARGET}Config.cmake
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${QXMPP_TARGET}"
)

write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/QXmppConfigVersion.cmake
${CMAKE_CURRENT_BINARY_DIR}/${QXMPP_TARGET}ConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)

install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/${QXMPP_TARGET}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${QXMPP_TARGET}ConfigVersion.cmake
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${QXMPP_TARGET}"
COMPONENT Devel
)

# QXmpp package with Qt version autodetect
configure_package_config_file(
cmake/QXmppQtAutoConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/QXmppConfig.cmake
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/QXmpp"
)

install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/QXmppConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/QXmppConfigVersion.cmake
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/qxmpp"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/QXmpp"
COMPONENT Devel
)
install(
FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/QXmppQtAutoConfigVersion.cmake
RENAME QXmppConfigVersion.cmake
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/QXmpp"
COMPONENT Devel
)

# Generate qxmpp.pc
# Generate QXmppQt5/6.pc
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qxmpp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/qxmpp.pc @ONLY)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/qxmpp.pc
RENAME QXmppQt${QT_VERSION_MAJOR}.pc
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
COMPONENT Devel
)

# "qxmpp.pc" for backwards-compatibility
if(QT_VERSION_MAJOR EQUAL 5)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/qxmpp.pc
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
COMPONENT Devel
)
endif()

12 changes: 6 additions & 6 deletions QXmppConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
@PACKAGE_INIT@

set(_QXmpp_FIND_PARTS_REQUIRED)
if(QXmpp_FIND_REQUIRED)
if(QXmppQt@QT_VERSION_MAJOR@_FIND_REQUIRED)
set(_QXmpp_FIND_PARTS_REQUIRED REQUIRED)
endif()
set(_QXmpp_FIND_PARTS_QUIET)
if(QXmpp_FIND_QUIETLY)
if(QXmppQt@QT_VERSION_MAJOR@_FIND_QUIETLY)
set(_QXmpp_FIND_PARTS_QUIET QUIET)
endif()

Expand All @@ -20,13 +20,13 @@ find_dependency(Qt@QT_VERSION_MAJOR@Xml)

include("${CMAKE_CURRENT_LIST_DIR}/QXmpp.cmake")

foreach(module ${QXmpp_FIND_COMPONENTS})
find_package(QXmpp${module}
${QXmpp_FIND_VERSION}
foreach(module ${QXmppQt@QT_VERSION_MAJOR@_FIND_COMPONENTS})
find_package(QXmpp${module}Qt@QT_VERSION_MAJOR@
${QXmppQt@QT_VERSION_MAJOR@_FIND_VERSION}
${_QXmpp_FIND_PARTS_REQUIRED}
${_QXmpp_FIND_PARTS_QUIET}
)
set(QXmpp_${module}_FOUND ${QXmpp${module}_FOUND})
set(QXmppQt@QT_VERSION_MAJOR@_${module}_FOUND ${QXmpp${module}Qt@QT_VERSION_MAJOR@_FOUND})
endforeach()

check_required_components(QXmpp)
37 changes: 37 additions & 0 deletions cmake/QXmppQtAutoConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# SPDX-FileCopyrightText: 2023 Linus Jahn <[email protected]>
#
# SPDX-License-Identifier: CC0-1.0

@PACKAGE_INIT@

# Detect Qt version
if(NOT DEFINED QT_VERSION_MAJOR)
if(TARGET Qt6::Core)
set(QT_VERSION_MAJOR 6)
elseif(TARGET Qt5::Core)
set(QT_VERSION_MAJOR 5)
else()
# default to Qt 6
set(QT_VERSION_MAJOR 6)
endif()
endif()

set(_QXmpp_FIND_PARTS_REQUIRED)
if(QXmpp_FIND_REQUIRED)
set(_QXmpp_FIND_PARTS_REQUIRED REQUIRED)
endif()
set(_QXmpp_FIND_PARTS_QUIET)
if(QXmpp_FIND_QUIETLY)
set(_QXmpp_FIND_PARTS_QUIET QUIET)
endif()

# Pass through arguments to QXmppQt5/6
include(CMakeFindDependencyMacro)
find_package(QXmppQt${QT_VERSION_MAJOR}
${QXmpp_FIND_VERSION}
${_QXmpp_FIND_PARTS_REQUIRED}
${_QXmpp_FIND_PARTS_QUIET}
COMPONENTS ${QXmpp_FIND_COMPONENTS}
)

set(QXmpp_FOUND ${QXmppQt${QT_VERSION_MAJOR}_FOUND})
8 changes: 8 additions & 0 deletions cmake/QXmppQtAutoConfigVersion.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# SPDX-FileCopyrightText: 2023 Linus Jahn <[email protected]>
#
# SPDX-License-Identifier: CC0-1.0

set(PACKAGE_VERSION "")
# Allow all requested versions here, the actual check is going to be done in QXmppQt5/6.
set(PACKAGE_VERSION_COMPATIBLE TRUE)

1 change: 0 additions & 1 deletion doc/Doxyfile.in
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ PROJECT_NUMBER = "Version: @PROJECT_VERSION@"
INPUT = @PROJECT_SOURCE_DIR@/doc/index.doc \
@PROJECT_SOURCE_DIR@/doc/using.doc \
@PROJECT_SOURCE_DIR@/doc/xep.doc \
@CMAKE_BINARY_DIR@/src/base/QXmppBuildConstants.h \
@PROJECT_SOURCE_DIR@/src
HTML_EXTRA_FILES = @PROJECT_SOURCE_DIR@/doc/doap.xml \
@PROJECT_SOURCE_DIR@/doc/doap-rendering/doap.xsl \
Expand Down
2 changes: 1 addition & 1 deletion examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

macro(add_simple_example EXAMPLE_NAME)
add_executable(${EXAMPLE_NAME} example_${EXAMPLE_NAME}/example_${EXAMPLE_NAME}.cpp)
target_link_libraries(${EXAMPLE_NAME} qxmpp)
target_link_libraries(${EXAMPLE_NAME} ${QXMPP_TARGET})
endmacro()

include_directories(${PROJECT_SOURCE_DIR}/src/base)
Expand Down
2 changes: 1 addition & 1 deletion examples/example_5_rpcInterface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
# SPDX-License-Identifier: CC0-1.0

add_executable(5_rpcInterface main.cpp remoteinterface.cpp)
target_link_libraries(5_rpcInterface qxmpp)
target_link_libraries(5_rpcInterface ${QXMPP_TARGET})
2 changes: 1 addition & 1 deletion examples/example_6_rpcClient/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
# SPDX-License-Identifier: CC0-1.0

add_executable(6_rpcClient main.cpp rpcClient.cpp)
target_link_libraries(6_rpcClient qxmpp)
target_link_libraries(6_rpcClient ${QXMPP_TARGET})
2 changes: 1 addition & 1 deletion examples/example_9_vCard/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui)

add_executable(9_vCard example_9_vCard.cpp)
target_link_libraries(9_vCard Qt${QT_VERSION_MAJOR}::Gui qxmpp)
target_link_libraries(9_vCard Qt${QT_VERSION_MAJOR}::Gui ${QXMPP_TARGET})
35 changes: 18 additions & 17 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -276,28 +276,28 @@ set(SOURCE_FILES
)

if(BUILD_SHARED)
add_library(qxmpp SHARED ${SOURCE_FILES})
add_library(${QXMPP_TARGET} SHARED ${SOURCE_FILES})
else()
add_library(qxmpp STATIC ${SOURCE_FILES})
add_library(${QXMPP_TARGET} STATIC ${SOURCE_FILES})
endif()

set_target_properties(qxmpp PROPERTIES
set_target_properties(${QXMPP_TARGET} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${SO_VERSION}
EXPORT_NAME QXmpp
)

target_include_directories(qxmpp
target_include_directories(${QXMPP_TARGET}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/base>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/client>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/server>
$<INSTALL_INTERFACE:include/qxmpp>
$<INSTALL_INTERFACE:include/${QXMPP_TARGET}>
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
)

target_link_libraries(qxmpp
target_link_libraries(${QXMPP_TARGET}
PUBLIC
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Network
Expand All @@ -316,21 +316,21 @@ if(WITH_GSTREAMER)
client/QXmppCallStream.h
)

target_sources(qxmpp
target_sources(${QXMPP_TARGET}
PRIVATE
client/QXmppCall.cpp
client/QXmppCallManager.cpp
client/QXmppCallStream.cpp
)

target_link_libraries(qxmpp
target_link_libraries(${QXMPP_TARGET}
PRIVATE
${GLIB2_LIBRARIES}
${GOBJECT_LIBRARIES}
${GSTREAMER_LIBRARY}
)

target_include_directories(qxmpp
target_include_directories(${QXMPP_TARGET}
PRIVATE
${GLIB2_INCLUDE_DIR}
${GOBJECT_INCLUDE_DIR}
Expand All @@ -340,13 +340,13 @@ endif()

if(BUILD_OMEMO)
# required to be used in QXmppMessage
target_sources(qxmpp PRIVATE base/QXmppOmemoDataBase.cpp)
target_sources(${QXMPP_TARGET} PRIVATE base/QXmppOmemoDataBase.cpp)
endif()

if(WITH_QCA)
target_sources(qxmpp PRIVATE client/QXmppEncryptedFileSharingProvider.cpp client/QXmppFileEncryption.cpp client/QcaInitializer.cpp)
target_sources(${QXMPP_TARGET} PRIVATE client/QXmppEncryptedFileSharingProvider.cpp client/QXmppFileEncryption.cpp client/QcaInitializer.cpp)
set(INSTALL_HEADER_FILES ${INSTALL_HEADER_FILES} client/QXmppEncryptedFileSharingProvider.h)
target_link_libraries(qxmpp PRIVATE qca-qt${QT_VERSION_MAJOR})
target_link_libraries(${QXMPP_TARGET} PRIVATE qca-qt${QT_VERSION_MAJOR})
endif()

# qxmpp_export.h generation
Expand All @@ -363,12 +363,13 @@ set(QXMPP_CUSTOM_EXPORT_CONTENT "
#define QXMPP_VERSION_PATCH ${PROJECT_VERSION_PATCH}
")

generate_export_header(qxmpp
generate_export_header(${QXMPP_TARGET}
BASE_NAME qxmpp
CUSTOM_CONTENT_FROM_VARIABLE QXMPP_CUSTOM_EXPORT_CONTENT
)

install(
TARGETS qxmpp
TARGETS ${QXMPP_TARGET}
EXPORT QXmppTarget
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
Expand All @@ -377,20 +378,20 @@ install(

install(
EXPORT QXmppTarget
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/qxmpp"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${QXMPP_TARGET}"
FILE QXmpp.cmake
NAMESPACE QXmpp::
COMPONENT Devel
)

export(
TARGETS qxmpp
TARGETS ${QXMPP_TARGET}
FILE QXmpp.cmake
)

install(
FILES ${INSTALL_HEADER_FILES} ${CMAKE_CURRENT_BINARY_DIR}/qxmpp_export.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/qxmpp"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${QXMPP_TARGET}"
)

# submodules
Expand Down
4 changes: 2 additions & 2 deletions src/base/QXmppMamIq.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
class QXmppMamQueryIqPrivate;
class QXmppMamResultIqPrivate;

class QXmppMamQueryIq : public QXmppIq
class QXMPP_EXPORT QXmppMamQueryIq : public QXmppIq
{
public:
QXmppMamQueryIq();
Expand Down Expand Up @@ -46,7 +46,7 @@ class QXmppMamQueryIq : public QXmppIq
QSharedDataPointer<QXmppMamQueryIqPrivate> d;
};

class QXmppMamResultIq : public QXmppIq
class QXMPP_EXPORT QXmppMamResultIq : public QXmppIq
{
public:
QXmppMamResultIq();
Expand Down
2 changes: 1 addition & 1 deletion src/base/QXmppPubSubIq_p.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ void PubSubIq<T>::parseItems(const QDomElement &queryElement)
childElement = childElement.nextSiblingElement(QStringLiteral("item"))) {
T item;
item.parse(childElement);
m_items << std::move(item);
m_items.push_back(std::move(item));
}
}

Expand Down
3 changes: 2 additions & 1 deletion src/client/QXmppMamManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,8 @@ QXmppTask<QXmppMamManager::RetrieveResult> QXmppMamManager::retrieveMessages(con
// because some decryptMessage() jobs could finish instantly
state.runningDecryptionJobs = encryptedCount;

for (auto i = 0; i < state.messages.size(); i++) {
int size = state.messages.size();
for (auto i = 0; i < size; i++) {
if (!messagesEncrypted[i]) {
continue;
}
Expand Down
2 changes: 1 addition & 1 deletion src/client/QXmppMamManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class QXMPP_EXPORT QXmppMamManager : public QXmppClientExtension
Q_OBJECT

public:
struct RetrievedMessages
struct QXMPP_EXPORT RetrievedMessages
{
QXmppMamResultIq result;
QVector<QXmppMessage> messages;
Expand Down
Loading

0 comments on commit ab4bdf2

Please sign in to comment.