diff --git a/CMakeLists.txt b/CMakeLists.txt index 55df5d541..1ca3e6a58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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() @@ -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) @@ -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 @@ -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() + diff --git a/QXmppConfig.cmake.in b/QXmppConfig.cmake.in index 2d2303cfd..4fae49ec1 100644 --- a/QXmppConfig.cmake.in +++ b/QXmppConfig.cmake.in @@ -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() @@ -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) diff --git a/cmake/QXmppQtAutoConfig.cmake.in b/cmake/QXmppQtAutoConfig.cmake.in new file mode 100644 index 000000000..58c99a965 --- /dev/null +++ b/cmake/QXmppQtAutoConfig.cmake.in @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: 2023 Linus Jahn +# +# 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}) diff --git a/cmake/QXmppQtAutoConfigVersion.cmake b/cmake/QXmppQtAutoConfigVersion.cmake new file mode 100644 index 000000000..5f2b3f10e --- /dev/null +++ b/cmake/QXmppQtAutoConfigVersion.cmake @@ -0,0 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Linus Jahn +# +# 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) + diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 0a1de8a2f..8f83ce27f 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -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) diff --git a/examples/example_5_rpcInterface/CMakeLists.txt b/examples/example_5_rpcInterface/CMakeLists.txt index c58fdc40d..b18299adb 100644 --- a/examples/example_5_rpcInterface/CMakeLists.txt +++ b/examples/example_5_rpcInterface/CMakeLists.txt @@ -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}) diff --git a/examples/example_6_rpcClient/CMakeLists.txt b/examples/example_6_rpcClient/CMakeLists.txt index 2c19a92cf..8ad4de2ef 100644 --- a/examples/example_6_rpcClient/CMakeLists.txt +++ b/examples/example_6_rpcClient/CMakeLists.txt @@ -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}) diff --git a/examples/example_9_vCard/CMakeLists.txt b/examples/example_9_vCard/CMakeLists.txt index 2fc4ba637..d187f9f6a 100644 --- a/examples/example_9_vCard/CMakeLists.txt +++ b/examples/example_9_vCard/CMakeLists.txt @@ -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}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 54120b8a0..e4b354299 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -271,28 +271,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 $ $ $ - $ + $ 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 @@ -311,21 +311,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} @@ -335,13 +335,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 @@ -358,12 +358,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} @@ -372,20 +373,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 diff --git a/src/omemo/CMakeLists.txt b/src/omemo/CMakeLists.txt index 89e1f06c5..ce6ccafb8 100644 --- a/src/omemo/CMakeLists.txt +++ b/src/omemo/CMakeLists.txt @@ -4,8 +4,8 @@ include(CMakePackageConfigHelpers) -set(OMEMO_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/QXmppOmemo") -set(OMEMO_HEADER_DIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}/qxmpp/omemo") +set(OMEMO_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${QXMPPOMEMO_TARGET}") +set(OMEMO_HEADER_DIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}/${QXMPP_TARGET}/Omemo") set(OMEMO_INSTALL_HEADER_FILES QXmppOmemoManager.h QXmppOmemoMemoryStorage.h @@ -20,17 +20,17 @@ set(OMEMO_SOURCE_FILES QXmppOmemoStorage.cpp ) -add_library(QXmppOmemo SHARED ${OMEMO_SOURCE_FILES}) +add_library(${QXMPPOMEMO_TARGET} SHARED ${OMEMO_SOURCE_FILES}) -target_link_libraries(QXmppOmemo +target_link_libraries(${QXMPPOMEMO_TARGET} PUBLIC - qxmpp + ${QXMPP_TARGET} Qt${QT_VERSION_MAJOR}::Core PRIVATE PkgConfig::OmemoC qca-qt${QT_VERSION_MAJOR} ) -target_include_directories(QXmppOmemo +target_include_directories(${QXMPPOMEMO_TARGET} PUBLIC ${OMEMO_HEADER_DIR} PRIVATE @@ -39,21 +39,21 @@ target_include_directories(QXmppOmemo ${PROJECT_BINARY_DIR}/src ) -generate_export_header(QXmppOmemo) +generate_export_header(${QXMPPOMEMO_TARGET} BASE_NAME qxmppomemo) install( FILES ${OMEMO_INSTALL_HEADER_FILES} ${CMAKE_CURRENT_BINARY_DIR}/qxmppomemo_export.h DESTINATION ${OMEMO_HEADER_DIR} ) -set_target_properties(QXmppOmemo PROPERTIES +set_target_properties(${QXMPPOMEMO_TARGET} PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${SO_VERSION} EXPORT_NAME Omemo ) install( - TARGETS QXmppOmemo + TARGETS ${QXMPPOMEMO_TARGET} EXPORT QXmppOmemoTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} @@ -69,25 +69,25 @@ install( ) export( - TARGETS QXmppOmemo + TARGETS ${QXMPPOMEMO_TARGET} FILE QXmppOmemo.cmake ) configure_package_config_file( QXmppOmemoConfig.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/QXmppOmemoConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${QXMPPOMEMO_TARGET}Config.cmake INSTALL_DESTINATION ${OMEMO_CMAKE_DIR} ) write_basic_package_version_file( - ${CMAKE_CURRENT_BINARY_DIR}/QXmppOmemoConfigVersion.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${QXMPPOMEMO_TARGET}ConfigVersion.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion ) install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/QXmppOmemoConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/QXmppOmemoConfigVersion.cmake + FILES ${CMAKE_CURRENT_BINARY_DIR}/${QXMPPOMEMO_TARGET}Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${QXMPPOMEMO_TARGET}ConfigVersion.cmake DESTINATION ${OMEMO_CMAKE_DIR} COMPONENT Devel ) diff --git a/src/omemo/QXmppOmemoConfig.cmake.in b/src/omemo/QXmppOmemoConfig.cmake.in index 5363c0f5e..68596637a 100644 --- a/src/omemo/QXmppOmemoConfig.cmake.in +++ b/src/omemo/QXmppOmemoConfig.cmake.in @@ -5,8 +5,8 @@ @PACKAGE_INIT@ include(CMakeFindDependencyMacro) -find_dependency(QXmpp) +find_dependency(QXmppQt@QT_VERSION_MAJOR@) include("${CMAKE_CURRENT_LIST_DIR}/QXmppOmemo.cmake") -check_required_components(QXmppOmemo) +check_required_components(QXmppOmemoQt@QT_VERSION_MAJOR@) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c1991ea07..201c3fd54 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -9,9 +9,9 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test) macro(add_simple_test TEST_NAME) add_executable(tst_${TEST_NAME} ${TEST_NAME}/tst_${TEST_NAME}.cpp ${ARGN}) add_test(tst_${TEST_NAME} tst_${TEST_NAME}) - target_link_libraries(tst_${TEST_NAME} Qt${QT_VERSION_MAJOR}::Test qxmpp) + target_link_libraries(tst_${TEST_NAME} Qt${QT_VERSION_MAJOR}::Test ${QXMPP_TARGET}) if(BUILD_OMEMO) - target_link_libraries(tst_${TEST_NAME} QXmppOmemo) + target_link_libraries(tst_${TEST_NAME} ${QXMPPOMEMO_TARGET}) endif() endmacro() diff --git a/tests/qxmpphttpuploadmanager/CMakeLists.txt b/tests/qxmpphttpuploadmanager/CMakeLists.txt index ceb88b1d7..3858a7e79 100644 --- a/tests/qxmpphttpuploadmanager/CMakeLists.txt +++ b/tests/qxmpphttpuploadmanager/CMakeLists.txt @@ -5,4 +5,4 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_executable(tst_qxmpphttpuploadmanager tst_qxmpphttpuploadmanager.cpp tst_qxmpphttpuploadmanager.qrc ../TestClient.h) add_test(tst_qxmpphttpuploadmanager tst_qxmpphttpuploadmanager) -target_link_libraries(tst_qxmpphttpuploadmanager Qt${QT_VERSION_MAJOR}::Test qxmpp) +target_link_libraries(tst_qxmpphttpuploadmanager Qt${QT_VERSION_MAJOR}::Test ${QXMPP_TARGET}) diff --git a/tests/qxmpptransfermanager/CMakeLists.txt b/tests/qxmpptransfermanager/CMakeLists.txt index 2c9f40008..bb512489b 100644 --- a/tests/qxmpptransfermanager/CMakeLists.txt +++ b/tests/qxmpptransfermanager/CMakeLists.txt @@ -5,4 +5,4 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_executable(tst_qxmpptransfermanager tst_qxmpptransfermanager.cpp tst_qxmpptransfermanager.qrc) add_test(tst_qxmpptransfermanager tst_qxmpptransfermanager) -target_link_libraries(tst_qxmpptransfermanager Qt${QT_VERSION_MAJOR}::Test qxmpp) +target_link_libraries(tst_qxmpptransfermanager Qt${QT_VERSION_MAJOR}::Test ${QXMPP_TARGET}) diff --git a/tests/qxmpputils/CMakeLists.txt b/tests/qxmpputils/CMakeLists.txt index 9ea884c66..c23378340 100644 --- a/tests/qxmpputils/CMakeLists.txt +++ b/tests/qxmpputils/CMakeLists.txt @@ -5,4 +5,4 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_executable(tst_qxmpputils tst_qxmpputils.cpp tst_qxmpputils.qrc) add_test(tst_qxmpputils tst_qxmpputils) -target_link_libraries(tst_qxmpputils Qt${QT_VERSION_MAJOR}::Test qxmpp) +target_link_libraries(tst_qxmpputils Qt${QT_VERSION_MAJOR}::Test ${QXMPP_TARGET})