diff options
| author | Niels Ole Salscheider <niels_ole@salscheider-online.de> | 2018-06-23 17:20:47 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-06-23 17:20:47 +0200 |
| commit | ed6b199dff15ddb4c6bd72d1565501e9f1a2bf87 (patch) | |
| tree | 7bbb53c40ecf53fe9464b53b7966dd7726eeac5e /src/CMakeLists.txt | |
| parent | ea83c77a5a4524cc9778336b10eff60979582980 (diff) | |
| parent | 31f0a42073b68823e85835ec3e25114d79705a04 (diff) | |
| download | qxmpp-ed6b199dff15ddb4c6bd72d1565501e9f1a2bf87.tar.gz | |
Merge pull request #131 from olesalscheider/cmake
Add CMake build system, drop Qt4 support
Diffstat (limited to 'src/CMakeLists.txt')
| -rw-r--r-- | src/CMakeLists.txt | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..628c0ae5 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,239 @@ +add_definitions(-DQXMPP_BUILD) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/base) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/client) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/server) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/base/QXmppGlobal.h.in ${CMAKE_CURRENT_BINARY_DIR}/base/QXmppGlobal.h @ONLY) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/base) + +set(INSTALL_HEADER_FILES + ${CMAKE_CURRENT_BINARY_DIR}/base/QXmppGlobal.h + + # Base + base/QXmppArchiveIq.h + base/QXmppBindIq.h + base/QXmppBookmarkSet.h + base/QXmppByteStreamIq.h + base/QXmppDataForm.h + base/QXmppDiscoveryIq.h + base/QXmppElement.h + base/QXmppEntityTimeIq.h + base/QXmppIbbIq.h + base/QXmppIq.h + base/QXmppJingleIq.h + base/QXmppLogger.h + base/QXmppMamIq.h + base/QXmppMessage.h + base/QXmppMucIq.h + base/QXmppNonSASLAuth.h + base/QXmppPingIq.h + base/QXmppPresence.h + base/QXmppPubSubIq.h + base/QXmppRegisterIq.h + base/QXmppResultSet.h + base/QXmppRosterIq.h + base/QXmppRpcIq.h + base/QXmppRtcpPacket.h + base/QXmppRtpChannel.h + base/QXmppRtpPacket.h + base/QXmppSessionIq.h + base/QXmppSocks.h + base/QXmppStanza.h + base/QXmppStream.h + base/QXmppStreamFeatures.h + base/QXmppStun.h + base/QXmppUtils.h + base/QXmppVCardIq.h + base/QXmppVersionIq.h + + # Client + client/QXmppArchiveManager.h + client/QXmppBookmarkManager.h + client/QXmppCallManager.h + client/QXmppCarbonManager.h + client/QXmppClient.h + client/QXmppClientExtension.h + client/QXmppConfiguration.h + client/QXmppDiscoveryManager.h + client/QXmppEntityTimeManager.h + client/QXmppInvokable.h + client/QXmppMamManager.h + client/QXmppMessageReceiptManager.h + client/QXmppMucManager.h + client/QXmppOutgoingClient.h + client/QXmppRemoteMethod.h + client/QXmppRosterManager.h + client/QXmppRpcManager.h + client/QXmppTransferManager.h + client/QXmppTransferManager_p.h + client/QXmppVCardManager.h + client/QXmppVersionManager.h + + # Server + server/QXmppDialback.h + server/QXmppIncomingClient.h + server/QXmppIncomingServer.h + server/QXmppOutgoingServer.h + server/QXmppPasswordChecker.h + server/QXmppServer.h + server/QXmppServerExtension.h + server/QXmppServerPlugin.h +) + +set(SOURCE_FILES + # Base + base/QXmppArchiveIq.cpp + base/QXmppBindIq.cpp + base/QXmppBookmarkSet.cpp + base/QXmppByteStreamIq.cpp + base/QXmppCodec.cpp + base/QXmppConstants.cpp + base/QXmppDataForm.cpp + base/QXmppDiscoveryIq.cpp + base/QXmppElement.cpp + base/QXmppEntityTimeIq.cpp + base/QXmppIbbIq.cpp + base/QXmppIq.cpp + base/QXmppJingleIq.cpp + base/QXmppLogger.cpp + base/QXmppMamIq.cpp + base/QXmppMessage.cpp + base/QXmppMucIq.cpp + base/QXmppNonSASLAuth.cpp + base/QXmppPingIq.cpp + base/QXmppPresence.cpp + base/QXmppPubSubIq.cpp + base/QXmppRegisterIq.cpp + base/QXmppResultSet.cpp + base/QXmppRosterIq.cpp + base/QXmppRpcIq.cpp + base/QXmppRtcpPacket.cpp + base/QXmppRtpChannel.cpp + base/QXmppRtpPacket.cpp + base/QXmppSasl.cpp + base/QXmppSessionIq.cpp + base/QXmppSocks.cpp + base/QXmppStanza.cpp + base/QXmppStream.cpp + base/QXmppStreamFeatures.cpp + base/QXmppStreamInitiationIq.cpp + base/QXmppStreamManagement.cpp + base/QXmppStun.cpp + base/QXmppUtils.cpp + base/QXmppVCardIq.cpp + base/QXmppVersionIq.cpp + + # Client + client/QXmppDiscoveryManager.cpp + client/QXmppArchiveManager.cpp + client/QXmppBookmarkManager.cpp + client/QXmppCallManager.cpp + client/QXmppCarbonManager.cpp + client/QXmppClient.cpp + client/QXmppClientExtension.cpp + client/QXmppConfiguration.cpp + client/QXmppEntityTimeManager.cpp + client/QXmppInvokable.cpp + client/QXmppMamManager.cpp + client/QXmppMessageReceiptManager.cpp + client/QXmppMucManager.cpp + client/QXmppOutgoingClient.cpp + client/QXmppRemoteMethod.cpp + client/QXmppRosterManager.cpp + client/QXmppRpcManager.cpp + client/QXmppTransferManager.cpp + client/QXmppVCardManager.cpp + client/QXmppVersionManager.cpp + + # Server + server/QXmppDialback.cpp + server/QXmppIncomingClient.cpp + server/QXmppIncomingServer.cpp + server/QXmppOutgoingServer.cpp + server/QXmppPasswordChecker.cpp + server/QXmppServer.cpp + server/QXmppServerExtension.cpp + server/QXmppServerPlugin.cpp +) + +option(WITH_SPEEX "Support the Speex codec" OFF) +option(WITH_OPUS "Support the Opus codec" OFF) +option(WITH_THEORA "Support the Theora codec" OFF) +option(WITH_VPX "Support the VPX codec" OFF) + +if(WITH_SPEEX) + find_package(Speex REQUIRED) + include_directories(${Speex_INCLUDE_DIRS}) + set(MULTIMEDIA_LIBS ${MULTIMEDIA_LIBS} ${Speex_LIBRARIES}) + add_definitions(-DQXMPP_USE_SPEEX) +endif() +if(WITH_OPUS) + find_package(Opus REQUIRED) + include_directories(${Opus_INCLUDE_DIRS}) + set(MULTIMEDIA_LIBS ${MULTIMEDIA_LIBS} ${Opus_LIBRARIES}) + add_definitions(-DQXMPP_USE_OPUS) +endif() +if(WITH_THEORA) + find_package(Theora REQUIRED) + include_directories(${Theora_INCLUDE_DIRS}) + set(MULTIMEDIA_LIBS ${MULTIMEDIA_LIBS} ${Theora_LIBRARIES}) + add_definitions(-DQXMPP_USE_THEORA) +endif() +if(WITH_VPX) + find_package(VPX REQUIRED) + include_directories(${VPX_INCLUDE_DIRS}) + set(MULTIMEDIA_LIBS ${MULTIMEDIA_LIBS} ${VPX_LIBRARIES}) + add_definitions(-DQXMPP_USE_VPX) +endif() + +add_library(qxmpp SHARED ${SOURCE_FILES}) + +set_target_properties(qxmpp PROPERTIES + VERSION ${VERSION_STRING} + SOVERSION ${SO_VERSION} + EXPORT_NAME QXmpp +) + +target_include_directories(qxmpp + PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/base> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/client> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/server> + $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/base> + $<INSTALL_INTERFACE:include/qmake> +) + +target_link_libraries(qxmpp + PUBLIC + Qt5::Core + Qt5::Network + Qt5::Xml + PRIVATE + ${MULTIMEDIA_LIBS} +) + +install( + TARGETS qxmpp + DESTINATION "${CMAKE_INSTALL_LIBDIR}" + EXPORT QXmppTarget +) + +install( + EXPORT QXmppTarget + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/qxmpp" + FILE QXmpp.cmake + NAMESPACE QXmpp:: + COMPONENT Devel +) + +export( + TARGETS qxmpp + FILE QXmpp.cmake +) + +install( + FILES ${INSTALL_HEADER_FILES} + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/qxmpp" +) + |
