file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_gen") # Set the required flags found in TelepathyDefaults set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VISIBILITY_HIDDEN_FLAGS} ${COMPILER_COVERAGE_FLAGS} ${DEPRECATED_DECLARATIONS_FLAGS}") set(LD_FLAGS "${LD_FLAGS} ${VISIBILITY_HIDDEN_FLAGS} ${COMPILER_COVERAGE_FLAGS} ${DEPRECATED_DECLARATIONS_FLAGS}") configure_file(global.h.in ${CMAKE_CURRENT_BINARY_DIR}/global.h) # Sources for Tp-Qt set(telepathy_qt_SRCS abstract-client.cpp abstract-interface.cpp account-factory.cpp account-manager.cpp account-property-filter.cpp account-set-internal.h account-set.cpp account.cpp avatar.cpp call-channel.cpp call-content-media-description.cpp call-content.cpp call-content.cpp call-stream-endpoint.cpp call-stream.cpp call-stream.cpp capabilities-base.cpp captcha-authentication.cpp captcha.cpp channel-class-spec.cpp channel-dispatch-operation.cpp channel-dispatcher.cpp channel-factory.cpp channel-internal.h channel-request.cpp channel.cpp client-registrar-internal.h client-registrar.cpp client.cpp connection-capabilities.cpp connection-factory.cpp connection-internal.h connection-manager-internal.h connection-manager.cpp connection.cpp contact-capabilities.cpp contact-factory.cpp contact-manager-roster.cpp contact-manager.cpp contact-messenger.cpp contact-search-channel.cpp contact.cpp dbus-proxy-factory-internal.h dbus-proxy-factory.cpp dbus-proxy.cpp dbus-tube-channel.cpp dbus.cpp debug-internal.h debug-receiver.cpp debug.cpp fake-handler-manager-internal.cpp fake-handler-manager-internal.h feature.cpp file-transfer-channel-creation-properties.cpp file-transfer-channel.cpp fixed-feature-factory.cpp future-internal.h future.cpp handled-channel-notifier.cpp incoming-dbus-tube-channel.cpp incoming-file-transfer-channel.cpp incoming-stream-tube-channel.cpp key-file.cpp key-file.h location-info.cpp manager-file.cpp manager-file.h media-session-handler.cpp media-stream-handler.cpp message-content-part.cpp message.cpp object.cpp optional-interface-factory.cpp outgoing-dbus-tube-channel.cpp outgoing-file-transfer-channel.cpp outgoing-stream-tube-channel.cpp pending-account.cpp pending-captchas.cpp pending-channel-request-internal.h pending-channel-request.cpp pending-channel.cpp pending-connection.cpp pending-contact-attributes.cpp pending-contact-info.cpp pending-contacts.cpp pending-dbus-tube-connection.cpp pending-debug-message-list.cpp pending-handles.cpp pending-operation.cpp pending-ready.cpp pending-send-message.cpp pending-stream-tube-connection.cpp pending-string-list.cpp pending-string.cpp pending-variant-map.cpp pending-variant.cpp presence.cpp profile-manager.cpp profile.cpp properties.cpp protocol-info.cpp protocol-parameter.cpp readiness-helper.cpp ready-object.cpp referenced-handles.cpp request-temporary-handler-internal.cpp request-temporary-handler-internal.h requestable-channel-class-spec.cpp room-list-channel.cpp server-authentication-channel.cpp simple-call-observer.cpp simple-observer-internal.h simple-observer.cpp simple-stream-tube-handler.cpp simple-text-observer-internal.h simple-text-observer.cpp stream-tube-channel.cpp stream-tube-client-internal.h stream-tube-client.cpp stream-tube-server-internal.h stream-tube-server.cpp streamed-media-channel.cpp text-channel.cpp tls-certificate.cpp tube-channel.cpp types-internal.h types.cpp utils.cpp ) # Exported headers for Tp-Qt set(telepathy_qt_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/global.h AbstractClient AbstractClientApprover AbstractClientHandler AbstractClientObserver AbstractInterface Account AccountCapabilityFilter AccountFactory AccountFilter AccountInterface AccountInterfaceAddressingInterface AccountInterfaceAvatarInterface AccountInterfaceStorageInterface AccountManager AccountManagerInterface AccountPropertyFilter AccountSet AndFilter AuthenticationTLSCertificateInterface AvatarData AvatarSpec CallChannel CallContent CallContentInterface CallContentInterfaceAudioControlInterface CallContentInterfaceDTMFInterface CallContentInterfaceMediaInterface CallContentInterfaceVideoControlInterface CallContentMediaDescription CallContentMediaDescriptionInterface CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface CallContentMediaDescriptionInterfaceRTCPFeedbackInterface CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface CallStream CallStreamEndpoint CallStreamEndpoint CallStreamEndpointInterface CallStreamInterface CallStreamInterfaceMediaInterface Callbacks CapabilitiesBase Captcha CaptchaAuthentication Channel ChannelClassFeatures ChannelClassSpec ChannelClassSpecList ChannelDispatchOperation ChannelDispatchOperationInterface ChannelDispatcher ChannelDispatcherInterface ChannelFactory ChannelInterface ChannelInterfaceAnonymityInterface ChannelInterfaceCallStateInterface ChannelInterfaceCaptchaAuthenticationInterface ChannelInterfaceChatStateInterface ChannelInterfaceConferenceInterface ChannelInterfaceDTMFInterface ChannelInterfaceDestroyableInterface ChannelInterfaceFileTransferMetadataInterface ChannelInterfaceGroupInterface ChannelInterfaceHoldInterface ChannelInterfaceMediaSignallingInterface ChannelInterfaceMessagesInterface ChannelInterfacePasswordInterface ChannelInterfaceRoomConfigInterface ChannelInterfaceRoomInterface ChannelInterfaceSASLAuthenticationInterface ChannelInterfaceSMSInterface ChannelInterfaceSecurableInterface ChannelInterfaceServicePointInterface ChannelInterfaceSubjectInterface ChannelInterfaceTubeInterface ChannelRequest ChannelRequestHints ChannelRequestInterface ChannelTypeCallInterface ChannelTypeContactListInterface ChannelTypeContactSearchInterface ChannelTypeDBusTubeInterface ChannelTypeFileTransferInterface ChannelTypeRoomListInterface ChannelTypeServerAuthenticationInterface ChannelTypeServerTLSConnectionInterface ChannelTypeStreamTubeInterface ChannelTypeStreamedMediaInterface ChannelTypeTextInterface ChannelTypeTubeInterface ChannelTypeTubesInterface Client ClientApproverInterface ClientHandlerInterface ClientInterface ClientInterfaceRequestsInterface ClientObserverInterface ClientRegistrar Connection ConnectionCapabilities ConnectionFactory ConnectionInterface ConnectionInterfaceAddressingInterface ConnectionInterfaceAliasingInterface ConnectionInterfaceAnonymityInterface ConnectionInterfaceAvatarsInterface ConnectionInterfaceBalanceInterface ConnectionInterfaceCapabilitiesInterface ConnectionInterfaceCellularInterface ConnectionInterfaceClientTypesInterface ConnectionInterfaceContactBlockingInterface ConnectionInterfaceContactCapabilitiesInterface ConnectionInterfaceContactGroupsInterface ConnectionInterfaceContactInfoInterface ConnectionInterfaceContactListInterface ConnectionInterfaceContactsInterface ConnectionInterfaceLocationInterface ConnectionInterfaceMailNotificationInterface ConnectionInterfacePowerSavingInterface ConnectionInterfacePresenceInterface ConnectionInterfaceRequestsInterface ConnectionInterfaceServicePointInterface ConnectionInterfaceSimplePresenceInterface ConnectionLowlevel ConnectionManager ConnectionManagerInterface ConnectionManagerLowlevel Constants Contact ContactCapabilities ContactFactory ContactManager ContactMessenger ContactSearchChannel DBus DBusDaemonInterface DBusProxy DBusProxyFactory DBusTubeChannel Debug DebugReceiver Feature Features FileTransferChannel FileTransferChannelCreationProperties Filter FixedFeatureFactory Functors GenericCapabilityFilter GenericPropertyFilter Global HandledChannelNotifier IncomingDBusTubeChannel IncomingFileTransferChannel IncomingStreamTubeChannel IntrospectableInterface LocationInfo MediaSessionHandler MediaSessionHandlerInterface MediaStreamHandler MediaStreamHandlerInterface Message MessageContentPart MessageContentPartList MethodInvocationContext NotFilter Object OptionalInterfaceFactory OrFilter OutgoingDBusTubeChannel OutgoingFileTransferChannel OutgoingStreamTubeChannel PeerInterface PendingAccount PendingCallContent PendingCaptchas PendingChannel PendingChannelRequest PendingComposite PendingConnection PendingContactAttributes PendingContactInfo PendingContacts PendingDBusTubeConnection PendingDebugMessageList PendingFailure PendingHandles PendingOperation PendingReady PendingSendMessage PendingStreamTubeConnection PendingStreamedMediaStreams PendingString PendingStringList PendingSuccess PendingVariant PendingVariantMap PendingVoid Presence PresenceSpec PresenceSpecList Profile ProfileManager Properties PropertiesInterface PropertiesInterfaceInterface ProtocolInfo ProtocolInfoList ProtocolInterface ProtocolInterfaceAddressingInterface ProtocolInterfaceAvatarsInterface ProtocolInterfacePresenceInterface ProtocolParameter ProtocolParameterList ReadinessHelper ReadyObject ReceivedMessage RefCounted ReferencedHandles ReferencedHandlesIterator RequestableChannelClassSpec RequestableChannelClassSpecList RoomListChannel ServerAuthenticationChannel SharedPtr SharedPtr SimpleCallObserver SimpleObserver SimpleTextObserver StatefulDBusProxy StatelessDBusProxy StreamTubeChannel StreamTubeClient StreamTubeServer StreamedMediaChannel StreamedMediaStream TextChannel TubeChannel Types Utils abstract-client.h abstract-interface.h account-capability-filter.h account-factory.h account-filter.h account-manager.h account-property-filter.h account-set.h account.h and-filter.h avatar.h call-channel.h call-content-media-description.h call-content.h call-stream-endpoint.h call-stream.h callbacks.h capabilities-base.h captcha-authentication.h captcha.h channel-class-features.h channel-class-spec.h channel-dispatch-operation.h channel-dispatcher.h channel-factory.h channel-request.h channel.h client-registrar.h client.h connection-capabilities.h connection-factory.h connection-lowlevel.h connection-manager-lowlevel.h connection-manager.h connection.h constants.h contact-capabilities.h contact-factory.h contact-manager.h contact-messenger.h contact-search-channel.h contact.h dbus-proxy-factory.h dbus-proxy.h dbus-tube-channel.h dbus.h debug-receiver.h debug.h feature.h file-transfer-channel-creation-properties.h file-transfer-channel.h filter.h fixed-feature-factory.h functors.h generic-capability-filter.h generic-property-filter.h handled-channel-notifier.h incoming-dbus-tube-channel.h incoming-file-transfer-channel.h incoming-stream-tube-channel.h location-info.h media-session-handler.h media-stream-handler.h message-content-part.h message.h method-invocation-context.h not-filter.h object.h optional-interface-factory.h or-filter.h outgoing-dbus-tube-channel.h outgoing-file-transfer-channel.h outgoing-stream-tube-channel.h pending-account.h pending-captchas.h pending-channel-request.h pending-channel.h pending-connection.h pending-contact-attributes.h pending-contact-info.h pending-contacts.h pending-dbus-tube-connection.h pending-debug-message-list.h pending-handles.h pending-operation.h pending-ready.h pending-send-message.h pending-stream-tube-connection.h pending-string-list.h pending-string.h pending-variant-map.h pending-variant.h presence.h profile-manager.h profile.h properties.h protocol-info.h protocol-parameter.h readiness-helper.h ready-object.h referenced-handles.h requestable-channel-class-spec.h room-list-channel.h server-authentication-channel.h shared-ptr.h simple-call-observer.h simple-observer.h simple-pending-operations.h simple-text-observer.h stream-tube-channel.h stream-tube-client.h stream-tube-server.h streamed-media-channel.h text-channel.h tls-certificate.h tube-channel.h types.h utils.h ) # Generated headers which will be installed and exported set(telepathy_qt_gen_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-account-manager.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-account.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-content-media-description.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-content.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-stream-endpoint.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-stream.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel-dispatch-operation.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel-dispatcher.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel-request.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-client.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection-manager.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-dbus.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-debug-receiver.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-media-session-handler.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-media-stream-handler.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-properties.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-tls-certificate.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/constants.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h ) # Headers file moc will be run on set(telepathy_qt_MOC_SRCS abstract-interface.h account-factory.h account-manager.h account-set-internal.h account-set.h account.h call-channel.h call-content.h call-stream.h captcha-authentication-internal.h captcha-authentication.h channel-dispatch-operation-internal.h channel-dispatch-operation.h channel-factory.h channel-internal.h channel-request.h channel.h client-registrar-internal.h client-registrar.h connection-internal.h connection-lowlevel.h connection-manager-internal.h connection-manager-lowlevel.h connection-manager.h connection.h contact-manager-internal.h contact-manager.h contact-messenger.h contact-search-channel-internal.h contact-search-channel.h contact.h dbus-proxy-factory-internal.h dbus-proxy-factory.h dbus-proxy.h dbus-tube-channel.h debug-receiver.h fake-handler-manager-internal.h file-transfer-channel.h fixed-feature-factory.h handled-channel-notifier.h incoming-dbus-tube-channel.h incoming-file-transfer-channel.h incoming-stream-tube-channel.h object.h outgoing-dbus-tube-channel.h outgoing-file-transfer-channel.h outgoing-stream-tube-channel-internal.h outgoing-stream-tube-channel.h pending-account.h pending-captchas.h pending-channel-request-internal.h pending-channel-request.h pending-channel.h pending-connection.h pending-contact-attributes.h pending-contact-info.h pending-contacts-internal.h pending-contacts.h pending-dbus-tube-connection.h pending-debug-message-list.h pending-handles.h pending-operation.h pending-ready.h pending-send-message.h pending-stream-tube-connection.h pending-string-list.h pending-string.h pending-variant-map.h pending-variant.h profile-manager.h readiness-helper.h request-temporary-handler-internal.h room-list-channel.h server-authentication-channel.h simple-call-observer.h simple-observer-internal.h simple-observer.h simple-pending-operations.h simple-stream-tube-handler.h simple-text-observer-internal.h simple-text-observer.h stream-tube-channel.h stream-tube-client-internal.h stream-tube-client.h stream-tube-server-internal.h stream-tube-server.h streamed-media-channel.h text-channel.h tube-channel.h ) # Sources for test library, used by tests to test some unexported functionality set(telepathy_qt_test_backdoors_SRCS key-file.cpp manager-file.cpp test-backdoors.cpp utils.cpp ) # Generate the spec files for both stable and future spec set(gen_stable_spec_xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/stable-spec.xml) set(gen_future_spec_xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-spec.xml) tpqt_xincludator(stable-ifaces-includator ${CMAKE_CURRENT_SOURCE_DIR}/stable-interfaces.xml ${gen_stable_spec_xml}) tpqt_xincludator(future-ifaces-includator ${CMAKE_CURRENT_SOURCE_DIR}/future-interfaces.xml ${gen_future_spec_xml}) add_custom_target(all-generated-sources) tpqt_constants_gen(stable-constants ${gen_stable_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/constants.h --namespace=Tp --define-prefix=TP_QT_ --must-define=IN_TP_QT_HEADER DEPENDS stable-ifaces-includator) tpqt_constants_gen(future-constants ${gen_future_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-constants.h --namespace=TpFuture --define-prefix=TP_QT_FUTURE_ DEPENDS future-ifaces-includator) tpqt_types_gen(stable-typesgen ${gen_stable_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/types-body.hpp Tp TelepathyQt/types.h TelepathyQt/Types --must-define=IN_TP_QT_HEADER --visibility=TP_QT_EXPORT DEPENDS stable-constants) tpqt_types_gen(future-typesgen ${gen_future_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types-body.hpp TpFuture TelepathyQt/future-internal.h TelepathyQt/future-internal.h DEPENDS future-constants) # Add the generated types to the library's sources list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/types-body.hpp) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-constants.h) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types.h) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types-body.hpp) # For each spec, both stable and future, generate a cli file and add it to the sources (including mocs). set(SPECS account account-manager call-content call-content-media-description call-stream call-stream-endpoint channel channel-dispatch-operation channel-dispatcher channel-request client connection connection-manager dbus debug-receiver media-session-handler media-stream-handler properties tls-certificate ) foreach(spec ${SPECS}) tpqt_xincludator(${spec}-spec-xincludator ${CMAKE_CURRENT_SOURCE_DIR}/${spec}.xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/spec-${spec}.xml DEPENDS stable-typesgen) set(NEW_FILES ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}-body.hpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}.moc.hpp) list(APPEND telepathy_qt_SRCS ${NEW_FILES}) list(APPEND telepathy_qt_generated_specs_mocs "moc-cli-${spec}.moc.hpp") set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true) endforeach() set(FUTURE_SPECS channel channel-dispatcher misc) foreach(spec ${FUTURE_SPECS}) tpqt_xincludator(${spec}-future-xincludator ${CMAKE_CURRENT_SOURCE_DIR}/future-${spec}.xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.xml DEPENDS stable-typesgen future-typesgen) set(NEW_FILES ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}-body.hpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.moc.hpp) list(APPEND telepathy_qt_SRCS ${NEW_FILES}) list(APPEND telepathy_qt_generated_specs_mocs "moc-future-${spec}.moc.hpp") set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true) endforeach() # The escape character in MSVC is ^ if(MSVC) set(TYPES_INCLUDE ^ ) else() set(TYPES_INCLUDE '' ) endif() # Use the client generator for generating headers out of specs tpqt_client_generator(account clientaccount AccountManager Tp::Client --mainiface=Tp::Client::AccountInterface DEPENDS account-spec-xincludator) tpqt_client_generator(account-manager clientam AccountManager Tp::Client --mainiface=Tp::Client::AccountManagerInterface DEPENDS account-manager-spec-xincludator) tpqt_client_generator(call-content clientcall CallContent Tp::Client --mainiface=Tp::Client::CallContentInterface DEPENDS call-content-spec-xincludator) tpqt_client_generator(call-content-media-description clientcall CallContentMediaDescriptionInterface Tp::Client --mainiface=Tp::Client::CallContentMediaDescriptionInterface DEPENDS call-content-media-description-spec-xincludator) tpqt_client_generator(call-stream clientcall CallStream Tp::Client --mainiface=Tp::Client::CallStreamInterface DEPENDS call-stream-spec-xincludator) tpqt_client_generator(call-stream-endpoint clientcall CallStreamEndpoint Tp::Client --mainiface=Tp::Client::CallStreamEndpointInterface DEPENDS call-stream-endpoint-spec-xincludator) tpqt_client_generator(channel clientchannel Channel Tp::Client --mainiface=Tp::Client::ChannelInterface DEPENDS channel-spec-xincludator) tpqt_client_generator(channel-dispatcher clientchanneldispatcher ChannelDispatcher Tp::Client --mainiface=Tp::Client::ChannelDispatcherInterface DEPENDS channel-dispatcher-spec-xincludator) tpqt_client_generator(channel-dispatch-operation clientchanneldispatchoperation ChannelDispatchOperation Tp::Client --mainiface=Tp::Client::ChannelDispatchOperationInterface DEPENDS channel-dispatch-operation-spec-xincludator) tpqt_client_generator(channel-request clientchannelrequest ChannelRequest Tp::Client --mainiface=Tp::Client::ChannelRequestInterface DEPENDS channel-request-spec-xincludator) tpqt_client_generator(client clientclient Client Tp::Client --mainiface=Tp::Client::ClientInterface DEPENDS client-spec-xincludator) tpqt_client_generator(connection clientconn Connection Tp::Client --mainiface=Tp::Client::ConnectionInterface DEPENDS connection-spec-xincludator) tpqt_client_generator(connection-manager clientcm ConnectionManager Tp::Client --mainiface=Tp::Client::ConnectionManagerInterface DEPENDS connection-manager-spec-xincludator) tpqt_client_generator(dbus clientdbus DBus Tp::Client::DBus DEPENDS dbus-spec-xincludator) tpqt_client_generator(debug-receiver clientdebug DebugReceiver Tp::Client --mainiface=Tp::Client::DebugInterface DEPENDS debug-receiver-spec-xincludator) tpqt_client_generator(media-session-handler clientmsesh MediaSessionHandler Tp::Client --mainiface=Tp::Client::MediaSessionHandlerInterface DEPENDS media-session-handler-spec-xincludator) tpqt_client_generator(media-stream-handler clientmstrh MediaStreamHandler Tp::Client --mainiface=Tp::Client::MediaStreamHandlerInterface DEPENDS media-stream-handler-spec-xincludator) tpqt_client_generator(properties clientprops Properties Tp::Client DEPENDS properties-spec-xincludator) tpqt_client_generator(tls-certificate clienttls TLSCertificate Tp::Client DEPENDS tls-certificate-spec-xincludator) tpqt_future_client_generator(channel TpFuture::Client --mainiface=Tp::Client::ChannelInterface DEPENDS channel-future-xincludator) tpqt_future_client_generator(channel-dispatcher TpFuture::Client --mainiface=Tp::Client::ChannelDispatcherInterface DEPENDS channel-dispatcher-future-xincludator) tpqt_future_client_generator(misc TpFuture::Client DEPENDS misc-future-xincludator) if (TARGET doxygen-doc) add_dependencies(doxygen-doc all-generated-sources) endif () # Create the library if (ENABLE_COMPILER_COVERAGE) add_library(telepathy-qt${QT_VERSION_MAJOR} STATIC ${telepathy_qt_SRCS}) else () add_library(telepathy-qt${QT_VERSION_MAJOR} SHARED ${telepathy_qt_SRCS}) endif () add_library(TelepathyQt${QT_VERSION_MAJOR}::Core ALIAS telepathy-qt${QT_VERSION_MAJOR}) # We are building Telepathy-Qt target_compile_definitions(telepathy-qt${QT_VERSION_MAJOR} PRIVATE BUILDING_TP_QT) # Library used by tests to test some unexported functionality add_library(telepathy-qt-test-backdoors STATIC ${telepathy_qt_test_backdoors_SRCS}) target_include_directories(telepathy-qt-test-backdoors PUBLIC $ $ $ $ ) add_dependencies(telepathy-qt-test-backdoors stable-constants) add_dependencies(telepathy-qt-test-backdoors stable-typesgen) # generate client moc files foreach(moc_src ${telepathy_qt_MOC_SRCS}) set(generated_file _gen/${moc_src}) string(REPLACE ".h" ".moc.hpp" generated_file ${generated_file}) tpqt_generate_moc_i_target_deps(${CMAKE_CURRENT_SOURCE_DIR}/${moc_src} ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} ${telepathy_qt_generated_specs_mocs}) list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/${generated_file}) string(REPLACE ".h" ".moc.hpp" moc_src ${moc_src}) add_dependencies(telepathy-qt${QT_VERSION_MAJOR} "moc-${moc_src}") endforeach() # Link target_link_libraries(telepathy-qt${QT_VERSION_MAJOR} PUBLIC Qt5::Core Qt5::DBus Qt5::Network ) target_link_libraries(telepathy-qt${QT_VERSION_MAJOR} PRIVATE Qt5::Xml ) target_link_libraries(telepathy-qt${QT_VERSION_MAJOR} PUBLIC ${TP_QT_LIBRARY_LINKER_FLAGS}) target_include_directories(telepathy-qt${QT_VERSION_MAJOR} PUBLIC $ $ $ $ ) # Link - Library used by tests to test some unexported functionality target_link_libraries(telepathy-qt-test-backdoors PUBLIC Qt5::Core Qt5::DBus Qt5::Network Qt5::Xml ) target_link_libraries(telepathy-qt-test-backdoors PUBLIC ${TP_QT_LIBRARY_LINKER_FLAGS}) if (ENABLE_COMPILER_COVERAGE) target_link_libraries(telepathy-qt${QT_VERSION_MAJOR} PRIVATE gcov) target_link_libraries(telepathy-qt-test-backdoors PRIVATE gcov) endif () # Set the correct version number set_target_properties(telepathy-qt${QT_VERSION_MAJOR} PROPERTIES EXPORT_NAME Core SOVERSION ${TP_QT_ABI_VERSION} VERSION ${TP_QT_LIBRARY_VERSION}) # Install header files install(FILES ${telepathy_qt_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt COMPONENT headers) install(FILES ${telepathy_qt_gen_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt/_gen COMPONENT headers) # Install the library install(TARGETS telepathy-qt${QT_VERSION_MAJOR} EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT mainlibrary LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT mainlibrary ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT libs) # pkg-config files, only if we are not using windows if (NOT WIN32) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQt.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}.pc) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQt-uninstalled.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}-uninstalled.pc) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig COMPONENT pkgconfig) endif () # Find out the correct installation directory set(_TelepathyQtConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/TelepathyQt${QT_VERSION_MAJOR}) # CMake Version and config files include(CMakePackageConfigHelpers) # Configure the actual Config file configure_package_config_file(TelepathyQtConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Config.cmake" INSTALL_DESTINATION ${_TelepathyQtConfig_INSTALL_DIR} PATH_VARS CMAKE_INSTALL_PREFIX INCLUDE_INSTALL_DIR LIB_INSTALL_DIR NO_CHECK_REQUIRED_COMPONENTS_MACRO) # this file is used by to check if the installed version can be used. write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ConfigVersion.cmake VERSION ${PACKAGE_VERSION} COMPATIBILITY SameMajorVersion) install(EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets DESTINATION ${_TelepathyQtConfig_INSTALL_DIR} NAMESPACE TelepathyQt${QT_VERSION_MAJOR}:: COMPONENT headers) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ConfigVersion.cmake ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Config.cmake DESTINATION ${_TelepathyQtConfig_INSTALL_DIR} COMPONENT headers) add_subdirectory(Farstream) if(ENABLE_SERVICE_SUPPORT) # lets build tp-qt service side support as a separate library until we can guarantee API/ABI # stability set(telepathy_qt_service_SRCS abstract-adaptor.cpp base-call.cpp base-channel.cpp base-connection-manager.cpp base-connection.cpp base-debug.cpp base-protocol.cpp dbus-error.cpp dbus-object.cpp dbus-service.cpp io-device.cpp ) set(telepathy_qt_service_HEADERS AbstractAdaptor AbstractDBusServiceInterface AbstractProtocolInterface BaseCall BaseChannel BaseConnection BaseConnectionManager BaseDebug BaseProtocol BaseProtocolAddressingInterface BaseProtocolAvatarsInterface BaseProtocolPresenceInterface DBusError DBusObject DBusService IODevice ServiceTypes abstract-adaptor.h base-call.h base-channel.h base-connection-manager.h base-connection.h base-debug.h base-protocol.h dbus-error.h dbus-object.h dbus-service.h io-device.h service-types.h ) # Generated headers which will be installed and exported set(telepathy_qt_service_gen_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-call.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-channel.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-connection-manager.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-connection.h ) # Headers file moc will be run on set(telepathy_qt_service_MOC_SRCS abstract-adaptor.h base-call-internal.h base-call.h base-channel-internal.h base-channel.h base-connection-internal.h base-connection-manager-internal.h base-connection-manager.h base-connection.h base-debug-internal.h base-debug.h base-protocol-internal.h base-protocol.h dbus-object.h dbus-service.h io-device.h ) add_custom_target(all-generated-service-sources) set(SPECS svc-call svc-channel svc-connection svc-connection-manager svc-debug ) foreach(spec ${SPECS}) tpqt_xincludator(${spec}-spec-xincludator ${CMAKE_CURRENT_SOURCE_DIR}/${spec}.xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/spec-${spec}.xml DEPENDS stable-typesgen) set(NEW_FILES ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.cpp ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.moc.hpp) list(APPEND telepathy_qt_service_SRCS ${NEW_FILES}) list(APPEND telepathy_qt_service_generated_specs_mocs "moc-${spec}.moc.hpp") set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true) endforeach() tpqt_service_generator(svc-channel servicechannel Channel Tp::Service DEPENDS svc-channel-spec-xincludator) tpqt_service_generator(svc-call servicecall Channel Tp::Service DEPENDS svc-call-spec-xincludator) tpqt_service_generator(svc-connection serviceconn Connection Tp::Service DEPENDS svc-connection-spec-xincludator) tpqt_service_generator(svc-connection-manager servicecm ConnectionManager Tp::Service DEPENDS svc-connection-manager-spec-xincludator) tpqt_service_generator(svc-debug servicecm Debug Tp::Service DEPENDS svc-debug-spec-xincludator) if (TARGET doxygen-doc) add_dependencies(doxygen-doc all-generated-service-sources) endif () # Create the library #if (ENABLE_COMPILER_COVERAGE) # add_library(telepathy-qt${QT_VERSION_MAJOR}-service STATIC ${telepathy_qt_service_SRCS}) #else (ENABLE_COMPILER_COVERAGE) # add_library(telepathy-qt${QT_VERSION_MAJOR}-service SHARED ${telepathy_qt_service_SRCS}) #endif (ENABLE_COMPILER_COVERAGE) if(FORCE_STATIC_SERVICE_LIBRARY) set(SERVICE_LIBRARY_TYPE STATIC) else() set(SERVICE_LIBRARY_TYPE SHARED) endif() add_library(telepathy-qt${QT_VERSION_MAJOR}-service ${SERVICE_LIBRARY_TYPE} ${telepathy_qt_service_SRCS}) add_library(TelepathyQt${QT_VERSION_MAJOR}::Service ALIAS telepathy-qt${QT_VERSION_MAJOR}-service) add_dependencies(telepathy-qt${QT_VERSION_MAJOR}-service stable-typesgen future-typesgen) # generate service moc files foreach(moc_src ${telepathy_qt_service_MOC_SRCS}) set(generated_file _gen/${moc_src}) string(REPLACE ".h" ".moc.hpp" generated_file ${generated_file}) tpqt_generate_moc_i_target_deps(${CMAKE_CURRENT_SOURCE_DIR}/${moc_src} ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} ${telepathy_qt_service_generated_specs_mocs}) list(APPEND telepathy_qt_service_SRCS ${CMAKE_CURRENT_BINARY_DIR}/${generated_file}) string(REPLACE ".h" ".moc.hpp" moc_src ${moc_src}) add_dependencies(telepathy-qt${QT_VERSION_MAJOR}-service "moc-${moc_src}") endforeach() # Link target_link_libraries(telepathy-qt${QT_VERSION_MAJOR}-service PUBLIC Qt5::Core Qt5::DBus telepathy-qt${QT_VERSION_MAJOR}) # Set the correct version number set_target_properties(telepathy-qt${QT_VERSION_MAJOR}-service PROPERTIES EXPORT_NAME Service SOVERSION ${TP_QT_SERVICE_ABI_VERSION} VERSION ${TP_QT_LIBRARY_VERSION}) # Install the library install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-service EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT service LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT service ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT service_libs) # Install headers install(FILES ${telepathy_qt_service_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt COMPONENT service_headers) install(FILES ${telepathy_qt_service_gen_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt/_gen COMPONENT service_headers) # pkg-config files, only if not on windows if (NOT WIN32) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtService.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service.pc) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtService-uninstalled.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service-uninstalled.pc) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig COMPONENT pkgconfig) endif () set(_TelepathyQtServiceConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/TelepathyQt${QT_VERSION_MAJOR}Service) # Configure the actual Config file configure_package_config_file(TelepathyQtServiceConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfig.cmake" INSTALL_DESTINATION ${_TelepathyQtServiceConfig_INSTALL_DIR} PATH_VARS CMAKE_INSTALL_PREFIX INCLUDE_INSTALL_DIR LIB_INSTALL_DIR NO_CHECK_REQUIRED_COMPONENTS_MACRO) # this file is used by to check if the installed version can be used. write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfigVersion.cmake VERSION ${PACKAGE_VERSION} COMPATIBILITY SameMajorVersion) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfigVersion.cmake ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfig.cmake DESTINATION ${_TelepathyQtServiceConfig_INSTALL_DIR} COMPONENT headers) endif()