From 0038aca1f6a44f91ae503de78ea625c76eaea74f Mon Sep 17 00:00:00 2001 From: vae Date: Tue, 11 May 2021 21:35:12 +0300 Subject: [PATCH] build: WIP CMakeLists refactoring continue - add FindSignal --- CMakeLists.txt | 120 +++++++++++---------- cmake/FindSignal.cmake | 15 +++ core/CMakeLists.txt | 7 -- core/handlers/CMakeLists.txt | 2 +- core/passwordStorageEngines/CMakeLists.txt | 26 ++--- plugins/CMakeLists.txt | 30 +----- shared/CMakeLists.txt | 36 +++---- ui/models/CMakeLists.txt | 54 +++++----- ui/utils/CMakeLists.txt | 50 ++++----- ui/widgets/CMakeLists.txt | 38 +++---- ui/widgets/vcard/CMakeLists.txt | 14 +-- 11 files changed, 188 insertions(+), 204 deletions(-) create mode 100644 cmake/FindSignal.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index e1b7f0c..bf6e062 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,13 +15,77 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") include(GNUInstallDirs) +option(SYSTEM_QXMPP "Use system qxmpp lib" ON) +option(WITH_KWALLET "Build KWallet support module" ON) +option(WITH_KIO "Build KIO support module" ON) + +# Dependencies + +## Qt find_package(Qt5Widgets CONFIG REQUIRED COMPONENTS Widgets DBus Core) -find_package(Qt5LinguistTools) find_package(Qt5Core CONFIG REQUIRED) find_package(Qt5Gui CONFIG REQUIRED) find_package(Qt5Network CONFIG REQUIRED) find_package(Qt5Xml CONFIG REQUIRED) +find_package(Qt5LinguistTools) + find_package(LMDB REQUIRED) +find_package(Signal REQUIRED) + +## QXmpp +if (SYSTEM_QXMPP) + find_package(QXmpp CONFIG) + + if (NOT QXmpp_FOUND) + set(SYSTEM_QXMPP OFF) + message("QXmpp package wasn't found, trying to build with bundled QXmpp") + else() + message("Building with system QXmpp") + endif() +endif() + +if(NOT SYSTEM_QXMPP) + add_subdirectory(external/qxmpp) +endif() + +## KIO +if (WITH_KIO) + find_package(KF5KIO CONFIG) + + if (NOT KF5KIO_FOUND) + set(WITH_KIO OFF) + message("KIO package wasn't found, KIO support modules wouldn't be built") + else() + add_definitions(-DWITH_KIO) + message("Building with support of KIO") + endif() +endif() + +## KWallet +if (WITH_KWALLET) + find_package(KF5Wallet CONFIG) + + if (NOT KF5Wallet_FOUND) + set(WITH_KWALLET OFF) + message("KWallet package wasn't found, KWallet support module wouldn't be built") + else() + add_definitions(-DWITH_KWALLET) + message("Building with support of KWallet") + endif() +endif() + +# Linking +target_link_libraries(squawk PRIVATE Qt5::Widgets) +target_link_libraries(squawk PRIVATE Qt5::DBus) +target_link_libraries(squawk PRIVATE Qt5::Network) +target_link_libraries(squawk PRIVATE Qt5::Gui) +target_link_libraries(squawk PRIVATE Qt5::Xml) +target_link_libraries(squawk PRIVATE qxmpp) +target_link_libraries(squawk PRIVATE lmdb) +target_link_libraries(squawk PRIVATE simpleCrypt) +target_link_libraries(squawk PRIVATE uuid) + +# Build type if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug) @@ -51,61 +115,9 @@ set(TS_FILES qt5_add_translation(QM_FILES ${TS_FILES}) add_custom_target(translations ALL DEPENDS ${QM_FILES}) -qt5_use_modules(squawk LINK_PUBLIC Core Widgets) qt5_add_resources(RCC resources/resources.qrc) -option(SYSTEM_QXMPP "Use system qxmpp lib" ON) -option(WITH_KWALLET "Build KWallet support module" ON) -option(WITH_KIO "Build KIO support module" ON) - -if (SYSTEM_QXMPP) - find_package(QXmpp CONFIG) - - if (NOT QXmpp_FOUND) - set(SYSTEM_QXMPP OFF) - message("QXmpp package wasn't found, trying to build with bundled QXmpp") - else() - message("Building with system QXmpp") - endif() -endif() - -if(NOT SYSTEM_QXMPP) - add_subdirectory(external/qxmpp) -endif() - -if (WITH_KWALLET) - find_package(KF5Wallet CONFIG) - - if (NOT KF5Wallet_FOUND) - set(WITH_KWALLET OFF) - message("KWallet package wasn't found, KWallet support module wouldn't be built") - else() - add_definitions(-DWITH_KWALLET) - message("Building with support of KWallet") - endif() -endif() - target_sources(squawk PRIVATE ${RCC}) -target_link_libraries(squawk PRIVATE Qt5::Widgets) -target_link_libraries(squawk PRIVATE Qt5::DBus) -target_link_libraries(squawk PRIVATE Qt5::Network) -target_link_libraries(squawk PRIVATE Qt5::Gui) -target_link_libraries(squawk PRIVATE Qt5::Xml) -target_link_libraries(squawk PRIVATE qxmpp) -target_link_libraries(squawk PRIVATE lmdb) -target_link_libraries(squawk PRIVATE simpleCrypt) - -if (WITH_KIO) - find_package(KF5KIO CONFIG) - - if (NOT KF5KIO_FOUND) - set(WITH_KIO OFF) - message("KIO package wasn't found, KIO support modules wouldn't be built") - else() - add_definitions(-DWITH_KIO) - message("Building with support of KIO") - endif() -endif() add_subdirectory(ui) add_subdirectory(core) @@ -113,8 +125,6 @@ add_subdirectory(plugins) add_subdirectory(external/simpleCrypt) -target_link_libraries(squawk PRIVATE uuid) - add_dependencies(${CMAKE_PROJECT_NAME} translations) # Install the executable diff --git a/cmake/FindSignal.cmake b/cmake/FindSignal.cmake new file mode 100644 index 0000000..752fed7 --- /dev/null +++ b/cmake/FindSignal.cmake @@ -0,0 +1,15 @@ +find_path(Signal_INCLUDE_DIR NAMES signal/signal_protocol.h) +find_library(Signal_LIBRARY signal-protocol-c) +mark_as_advanced(Signal_INCLUDE_DIR Signal_LIBRARY) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Signal REQUIRED_VARS Signal_LIBRARY Signal_INCLUDE_DIR) + +if (Signal_FOUND AND NOT TARGET Signal::Signal) + add_library(Signal::Signal UNKNOWN IMPORTED) + set_target_properties(Signal::Signal PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${Signal_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${Signal_INCLUDE_DIR}" + ) +endif () diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 3454204..3b160e2 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -25,10 +25,3 @@ target_sources(squawk PRIVATE add_subdirectory(handlers) add_subdirectory(passwordStorageEngines) - -#if(SYSTEM_QXMPP) -# get_target_property(QXMPP_INTERFACE_INCLUDE_DIRECTORIES QXmpp::QXmpp INTERFACE_INCLUDE_DIRECTORIES) -# target_include_directories(squawk PRIVATE ${QXMPP_INTERFACE_INCLUDE_DIRECTORIES}) -#endif() - -# Use the Widgets module from Qt 5. diff --git a/core/handlers/CMakeLists.txt b/core/handlers/CMakeLists.txt index ebae4b3..6da2ef3 100644 --- a/core/handlers/CMakeLists.txt +++ b/core/handlers/CMakeLists.txt @@ -3,4 +3,4 @@ target_sources(squawk PRIVATE messagehandler.h rosterhandler.cpp rosterhandler.h - ) \ No newline at end of file + ) diff --git a/core/passwordStorageEngines/CMakeLists.txt b/core/passwordStorageEngines/CMakeLists.txt index 7275d4f..da2834c 100644 --- a/core/passwordStorageEngines/CMakeLists.txt +++ b/core/passwordStorageEngines/CMakeLists.txt @@ -1,21 +1,9 @@ -target_sources(squawk PRIVATE - wrappers/kwallet.cpp - kwallet.cpp - kwallet.h - ) - if (WITH_KWALLET) -# get_target_property(KWALLET_INTERFACE_INCLUDE_DIRECTORIES KF5::Wallet INTERFACE_INCLUDE_DIRECTORIES) -# get_target_property(Qt5GUI_INTERFACE_INCLUDE_DIRECTORIES Qt5::Gui INTERFACE_INCLUDE_DIRECTORIES) -# -# target_include_directories(squawk PRIVATE ${KWALLET_INTERFACE_INCLUDE_DIRECTORIES}) -# target_include_directories(squawk PRIVATE ${Qt5GUI_INTERFACE_INCLUDE_DIRECTORIES}) + target_sources(squawk PRIVATE + wrappers/kwallet.cpp + kwallet.cpp + kwallet.h + ) - target_link_libraries(squawk PUBLIC Qt5::Core Qt5::Gui KF5::Wallet) - -# target_include_directories(kwalletWrapper PUBLIC ${KWALLET_INTERFACE_INCLUDE_DIRECTORIES}) -# target_include_directories(kwalletWrapper PUBLIC ${Qt5GUI_INTERFACE_INCLUDE_DIRECTORIES}) - -# target_link_libraries(kwalletWrapper KF5::Wallet) -# target_link_libraries(kwalletWrapper Qt5::Core) -endif() + target_link_libraries(squawk PUBLIC KF5::Wallet) +endif () diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 69a5e94..97b3b46 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -1,26 +1,4 @@ -cmake_minimum_required(VERSION 3.3) -project(plugins) - -if (WITH_KIO) - set(CMAKE_AUTOMOC ON) - - find_package(Qt5Core CONFIG REQUIRED) - - set(openFileManagerWindowJob_SRC - openfilemanagerwindowjob.cpp - ) - - add_library(openFileManagerWindowJob SHARED ${openFileManagerWindowJob_SRC}) - - get_target_property(Qt5CORE_INTERFACE_INCLUDE_DIRECTORIES Qt5::Core INTERFACE_INCLUDE_DIRECTORIES) - get_target_property(KIO_WIDGETS_INTERFACE_INCLUDE_DIRECTORIES KF5::KIOWidgets INTERFACE_INCLUDE_DIRECTORIES) - get_target_property(CORE_ADDONS_INTERFACE_INCLUDE_DIRECTORIES KF5::CoreAddons INTERFACE_INCLUDE_DIRECTORIES) - target_include_directories(openFileManagerWindowJob PUBLIC ${KIO_WIDGETS_INTERFACE_INCLUDE_DIRECTORIES}) - target_include_directories(openFileManagerWindowJob PUBLIC ${CORE_ADDONS_INTERFACE_INCLUDE_DIRECTORIES}) - target_include_directories(openFileManagerWindowJob PUBLIC ${Qt5CORE_INTERFACE_INCLUDE_DIRECTORIES}) - - target_link_libraries(openFileManagerWindowJob KF5::KIOWidgets) - target_link_libraries(openFileManagerWindowJob Qt5::Core) - - install(TARGETS openFileManagerWindowJob DESTINATION ${CMAKE_INSTALL_LIBDIR}) -endif() +if (WITH_KIO) + target_sources(squawk PRIVATE openfilemanagerwindowjob.cpp) + target_link_libraries(squawk PRIVATE KF5::KIOWidgets) +endif () diff --git a/shared/CMakeLists.txt b/shared/CMakeLists.txt index edd769a..a36b516 100644 --- a/shared/CMakeLists.txt +++ b/shared/CMakeLists.txt @@ -1,19 +1,19 @@ target_sources(squawk PRIVATE - ${CMAKE_CURRENT_LIST_DIR}/enums.h - ${CMAKE_CURRENT_LIST_DIR}/global.cpp - ${CMAKE_CURRENT_LIST_DIR}/global.h - ${CMAKE_CURRENT_LIST_DIR}/exception.cpp - ${CMAKE_CURRENT_LIST_DIR}/exception.h - ${CMAKE_CURRENT_LIST_DIR}/icons.cpp - ${CMAKE_CURRENT_LIST_DIR}/icons.h - ${CMAKE_CURRENT_LIST_DIR}/message.cpp - ${CMAKE_CURRENT_LIST_DIR}/message.h - ${CMAKE_CURRENT_LIST_DIR}/messageinfo.cpp - ${CMAKE_CURRENT_LIST_DIR}/messageinfo.h - ${CMAKE_CURRENT_LIST_DIR}/order.h - ${CMAKE_CURRENT_LIST_DIR}/shared.h - ${CMAKE_CURRENT_LIST_DIR}/utils.cpp - ${CMAKE_CURRENT_LIST_DIR}/utils.h - ${CMAKE_CURRENT_LIST_DIR}/vcard.cpp - ${CMAKE_CURRENT_LIST_DIR}/vcard.h -) \ No newline at end of file + enums.h + global.cpp + global.h + exception.cpp + exception.h + icons.cpp + icons.h + message.cpp + message.h + messageinfo.cpp + messageinfo.h + order.h + shared.h + utils.cpp + utils.h + vcard.cpp + vcard.h + ) diff --git a/ui/models/CMakeLists.txt b/ui/models/CMakeLists.txt index fcd80d9..98ef1c3 100644 --- a/ui/models/CMakeLists.txt +++ b/ui/models/CMakeLists.txt @@ -1,28 +1,28 @@ target_sources(squawk PRIVATE - ${CMAKE_CURRENT_LIST_DIR}/abstractparticipant.cpp - ${CMAKE_CURRENT_LIST_DIR}/abstractparticipant.h - ${CMAKE_CURRENT_LIST_DIR}/account.cpp - ${CMAKE_CURRENT_LIST_DIR}/account.h - ${CMAKE_CURRENT_LIST_DIR}/accounts.cpp - ${CMAKE_CURRENT_LIST_DIR}/accounts.h - ${CMAKE_CURRENT_LIST_DIR}/contact.cpp - ${CMAKE_CURRENT_LIST_DIR}/contact.h - ${CMAKE_CURRENT_LIST_DIR}/element.cpp - ${CMAKE_CURRENT_LIST_DIR}/element.h - ${CMAKE_CURRENT_LIST_DIR}/group.cpp - ${CMAKE_CURRENT_LIST_DIR}/group.h - ${CMAKE_CURRENT_LIST_DIR}/item.cpp - ${CMAKE_CURRENT_LIST_DIR}/item.h - ${CMAKE_CURRENT_LIST_DIR}/messagefeed.cpp - ${CMAKE_CURRENT_LIST_DIR}/messagefeed.h - ${CMAKE_CURRENT_LIST_DIR}/participant.cpp - ${CMAKE_CURRENT_LIST_DIR}/participant.h - ${CMAKE_CURRENT_LIST_DIR}/presence.cpp - ${CMAKE_CURRENT_LIST_DIR}/presence.h - ${CMAKE_CURRENT_LIST_DIR}/reference.cpp - ${CMAKE_CURRENT_LIST_DIR}/reference.h - ${CMAKE_CURRENT_LIST_DIR}/room.cpp - ${CMAKE_CURRENT_LIST_DIR}/room.h - ${CMAKE_CURRENT_LIST_DIR}/roster.cpp - ${CMAKE_CURRENT_LIST_DIR}/roster.h -) \ No newline at end of file + abstractparticipant.cpp + abstractparticipant.h + account.cpp + account.h + accounts.cpp + accounts.h + contact.cpp + contact.h + element.cpp + element.h + group.cpp + group.h + item.cpp + item.h + messagefeed.cpp + messagefeed.h + participant.cpp + participant.h + presence.cpp + presence.h + reference.cpp + reference.h + room.cpp + room.h + roster.cpp + roster.h + ) \ No newline at end of file diff --git a/ui/utils/CMakeLists.txt b/ui/utils/CMakeLists.txt index 93eb4c7..5ad5cb7 100644 --- a/ui/utils/CMakeLists.txt +++ b/ui/utils/CMakeLists.txt @@ -1,26 +1,26 @@ target_sources(squawk PRIVATE - ${CMAKE_CURRENT_LIST_DIR}/badge.cpp - ${CMAKE_CURRENT_LIST_DIR}/badge.h - ${CMAKE_CURRENT_LIST_DIR}/comboboxdelegate.cpp - ${CMAKE_CURRENT_LIST_DIR}/comboboxdelegate.h - ${CMAKE_CURRENT_LIST_DIR}/exponentialblur.cpp - ${CMAKE_CURRENT_LIST_DIR}/exponentialblur.h - ${CMAKE_CURRENT_LIST_DIR}/feedview.cpp - ${CMAKE_CURRENT_LIST_DIR}/feedview.h - ${CMAKE_CURRENT_LIST_DIR}/flowlayout.cpp - ${CMAKE_CURRENT_LIST_DIR}/flowlayout.h - ${CMAKE_CURRENT_LIST_DIR}/image.cpp - ${CMAKE_CURRENT_LIST_DIR}/image.h - ${CMAKE_CURRENT_LIST_DIR}/message.cpp - ${CMAKE_CURRENT_LIST_DIR}/message.h - ${CMAKE_CURRENT_LIST_DIR}/messagedelegate.cpp - ${CMAKE_CURRENT_LIST_DIR}/messagedelegate.h - ${CMAKE_CURRENT_LIST_DIR}/messageline.cpp - ${CMAKE_CURRENT_LIST_DIR}/messageline.h - ${CMAKE_CURRENT_LIST_DIR}/progress.cpp - ${CMAKE_CURRENT_LIST_DIR}/progress.h - ${CMAKE_CURRENT_LIST_DIR}/resizer.cpp - ${CMAKE_CURRENT_LIST_DIR}/resizer.h - ${CMAKE_CURRENT_LIST_DIR}/shadowoverlay.cpp - ${CMAKE_CURRENT_LIST_DIR}/shadowoverlay.h -) \ No newline at end of file + badge.cpp + badge.h + comboboxdelegate.cpp + comboboxdelegate.h + exponentialblur.cpp + exponentialblur.h + feedview.cpp + feedview.h + flowlayout.cpp + flowlayout.h + image.cpp + image.h + message.cpp + message.h + messagedelegate.cpp + messagedelegate.h + messageline.cpp + messageline.h + progress.cpp + progress.h + resizer.cpp + resizer.h + shadowoverlay.cpp + shadowoverlay.h + ) diff --git a/ui/widgets/CMakeLists.txt b/ui/widgets/CMakeLists.txt index dd1bf95..0cacf6f 100644 --- a/ui/widgets/CMakeLists.txt +++ b/ui/widgets/CMakeLists.txt @@ -1,23 +1,23 @@ target_sources(squawk PRIVATE - ${CMAKE_CURRENT_LIST_DIR}/account.cpp - ${CMAKE_CURRENT_LIST_DIR}/account.h - ${CMAKE_CURRENT_LIST_DIR}/account.ui - ${CMAKE_CURRENT_LIST_DIR}/accounts.cpp - ${CMAKE_CURRENT_LIST_DIR}/accounts.h - ${CMAKE_CURRENT_LIST_DIR}/accounts.ui - ${CMAKE_CURRENT_LIST_DIR}/chat.cpp - ${CMAKE_CURRENT_LIST_DIR}/chat.h - ${CMAKE_CURRENT_LIST_DIR}/conversation.cpp - ${CMAKE_CURRENT_LIST_DIR}/conversation.h - ${CMAKE_CURRENT_LIST_DIR}/conversation.ui - ${CMAKE_CURRENT_LIST_DIR}/joinconference.cpp - ${CMAKE_CURRENT_LIST_DIR}/joinconference.h - ${CMAKE_CURRENT_LIST_DIR}/joinconference.ui - ${CMAKE_CURRENT_LIST_DIR}/newcontact.cpp - ${CMAKE_CURRENT_LIST_DIR}/newcontact.h - ${CMAKE_CURRENT_LIST_DIR}/newcontact.ui - ${CMAKE_CURRENT_LIST_DIR}/room.cpp - ${CMAKE_CURRENT_LIST_DIR}/room.h + account.cpp + account.h + account.ui + accounts.cpp + accounts.h + accounts.ui + chat.cpp + chat.h + conversation.cpp + conversation.h + conversation.ui + joinconference.cpp + joinconference.h + joinconference.ui + newcontact.cpp + newcontact.h + newcontact.ui + room.cpp + room.h ) add_subdirectory(vcard) diff --git a/ui/widgets/vcard/CMakeLists.txt b/ui/widgets/vcard/CMakeLists.txt index c5c53a3..51cbaab 100644 --- a/ui/widgets/vcard/CMakeLists.txt +++ b/ui/widgets/vcard/CMakeLists.txt @@ -1,9 +1,9 @@ target_sources(squawk PRIVATE - ${CMAKE_CURRENT_LIST_DIR}/emailsmodel.cpp - ${CMAKE_CURRENT_LIST_DIR}/emailsmodel.h - ${CMAKE_CURRENT_LIST_DIR}/phonesmodel.cpp - ${CMAKE_CURRENT_LIST_DIR}/phonesmodel.h - ${CMAKE_CURRENT_LIST_DIR}/vcard.cpp - ${CMAKE_CURRENT_LIST_DIR}/vcard.h - ${CMAKE_CURRENT_LIST_DIR}/vcard.ui + emailsmodel.cpp + emailsmodel.h + phonesmodel.cpp + phonesmodel.h + vcard.cpp + vcard.h + vcard.ui )