aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
authorNiels Ole Salscheider <niels_ole@salscheider-online.de>2018-06-23 17:20:47 +0200
committerGitHub <noreply@github.com>2018-06-23 17:20:47 +0200
commited6b199dff15ddb4c6bd72d1565501e9f1a2bf87 (patch)
tree7bbb53c40ecf53fe9464b53b7966dd7726eeac5e /src/CMakeLists.txt
parentea83c77a5a4524cc9778336b10eff60979582980 (diff)
parent31f0a42073b68823e85835ec3e25114d79705a04 (diff)
downloadqxmpp-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.txt239
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"
+)
+