Warning, /network/tokodon/src/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2021 Carl Schwan <carlschwan@kde.org>
0002 # SPDX-License-Identifier: BSD-2-Clause
0003 
0004 qt_add_qml_module(tokodon_static
0005         STATIC
0006         URI org.kde.tokodon
0007         VERSION 1.0)
0008 
0009 ecm_qt_declare_logging_category(tokodon_static
0010     HEADER tokodon_debug.h
0011     IDENTIFIER TOKODON_LOG
0012     CATEGORY_NAME org.kde.tokodon
0013     DESCRIPTION "tokodon"
0014     DEFAULT_SEVERITY Warning
0015     EXPORT TOKODON
0016 )
0017 
0018 ecm_qt_declare_logging_category(tokodon_static
0019     HEADER tokodon_http_debug.h
0020     IDENTIFIER TOKODON_HTTP
0021     CATEGORY_NAME org.kde.tokodon.http
0022     DESCRIPTION "Tokodon request"
0023     EXPORT TOKODON
0024 )
0025 
0026 target_sources(tokodon_static
0027     PRIVATE
0028     # Account
0029     account/abstractaccount.cpp
0030     account/abstractaccount.h
0031     account/accountmanager.cpp
0032     account/accountmanager.h
0033     account/announcementmodel.cpp
0034     account/announcementmodel.h
0035     account/featuredtagsmodel.cpp
0036     account/featuredtagsmodel.h
0037     account/account.cpp
0038     account/account.h
0039     account/preferences.cpp
0040     account/preferences.h
0041     account/identity.cpp
0042     account/identity.h
0043     account/listsmodel.cpp
0044     account/listsmodel.h
0045     account/socialgraphmodel.cpp
0046     account/socialgraphmodel.h
0047     account/relationship.cpp
0048     account/rulesmodel.cpp
0049     account/rulesmodel.h
0050     account/profileeditor.cpp
0051     account/notificationhandler.cpp
0052     account/notificationhandler.h
0053 
0054     # Editor
0055     editor/posteditorbackend.cpp
0056     editor/posteditorbackend.h
0057     editor/attachmenteditormodel.cpp
0058     editor/attachmenteditormodel.h
0059     editor/polltimemodel.cpp
0060     editor/polltimemodel.h
0061     editor/languagemodel.cpp
0062     editor/languagemodel.h
0063     editor/listeditorbackend.cpp
0064     editor/listeditorbackend.h
0065     editor/polleditorbackend.cpp
0066     editor/polleditorbackend.h
0067     editor/reporteditorbackend.cpp
0068     editor/reporteditorbackend.h
0069 
0070     # Conversation view
0071     conversation/conversationmodel.cpp
0072     conversation/conversationmodel.h
0073 
0074     # Timeline
0075     timeline/post.cpp
0076     timeline/post.h
0077     timeline/poll.cpp
0078     timeline/poll.h
0079     timeline/tag.h
0080     timeline/tag.cpp
0081     timeline/accountmodel.cpp
0082     timeline/accountmodel.h
0083     timeline/threadmodel.cpp
0084     timeline/threadmodel.h
0085     timeline/timelinemodel.cpp
0086     timeline/timelinemodel.h
0087     timeline/tagstimelinemodel.cpp
0088     timeline/tagstimelinemodel.h
0089     timeline/maintimelinemodel.cpp
0090     timeline/maintimelinemodel.h
0091     timeline/abstracttimelinemodel.cpp
0092     timeline/abstracttimelinemodel.h
0093     timeline/tagsmodel.h
0094     timeline/tagsmodel.cpp
0095     timeline/abstractlistmodel.cpp
0096     timeline/abstractlistmodel.h
0097 
0098     # Search
0099     search/searchmodel.cpp
0100     search/searchmodel.h
0101 
0102     # Misc utils
0103     utils/blurhash.cpp
0104     utils/blurhash.hpp
0105     utils/blurhashimageprovider.cpp
0106     utils/blurhashimageprovider.h
0107     utils/filehelper.cpp
0108     utils/filehelper.h
0109     utils/filetransferjob.cpp
0110     utils/filetransferjob.h
0111     utils/clipboard.cpp
0112     utils/clipboard.h
0113     utils/navigation.cpp
0114     utils/navigation.h
0115     utils/emojimodel.cpp
0116     utils/emojimodel.h
0117     utils/emojis.h
0118     utils/emojitones.cpp
0119     utils/emojitones.h
0120     utils/emojitones_data.h
0121     utils/messagefiltercontainer.cpp
0122     utils/messagefiltercontainer.h
0123     utils/mpvplayer.cpp
0124     utils/mpvplayer.h
0125     utils/textpreprocessing.cpp
0126     utils/textpreprocessing.h
0127     utils/utils.cpp
0128     utils/utils.h
0129     utils/colorschemer.cpp
0130     utils/colorschemer.h
0131     utils/customemoji.cpp
0132     utils/customemoji.h
0133     utils/windowcontroller.cpp
0134     utils/windowcontroller.h
0135 
0136     # Network related classes
0137     network/networkrequestprogress.cpp
0138     network/networkrequestprogress.h
0139     network/networkaccessmanagerfactory.cpp
0140     network/networkaccessmanagerfactory.h
0141     network/networkcontroller.cpp
0142     network/networkcontroller.h
0143 
0144     # Admin
0145     admin/accounttoolmodel.cpp
0146     admin/accounttoolmodel.h
0147     admin/adminaccountinfo.cpp
0148     admin/adminaccountinfo.h
0149     admin/federationtoolmodel.cpp
0150     admin/federationtoolmodel.h
0151     admin/federationinfo.h
0152     admin/federationinfo.cpp
0153     admin/ipinfo.cpp
0154     admin/ipinfo.h
0155     admin/iprulestoolmodel.cpp
0156     admin/iprulestoolmodel.h
0157     admin/emailblocktoolmodel.cpp
0158     admin/emailblocktoolmodel.h
0159     admin/emailinfo.cpp
0160     admin/emailinfo.h
0161     admin/reporttoolmodel.cpp
0162     admin/reporttoolmodel.h
0163     admin/reportinfo.h
0164     admin/reportinfo.cpp
0165 
0166     # Notification models
0167     notification/notificationgroupingmodel.cpp
0168     notification/notificationgroupingmodel.h
0169     notification/notificationmodel.cpp
0170     notification/notificationmodel.h
0171 )
0172 
0173 qt_target_qml_sources(tokodon_static
0174     QML_FILES
0175         # Components
0176         content/ui/Components/Emoji/EmojiDelegate.qml
0177         content/ui/Components/Emoji/EmojiGrid.qml
0178         content/ui/Components/Emoji/EmojiPicker.qml
0179         content/ui/Components/Emoji/EmojiTonesPicker.qml
0180         content/ui/Components/FocusedImage.qml
0181         content/ui/Components/PopupShadow.qml
0182         content/ui/Components/UserCard.qml
0183 
0184         # Login Flow
0185         content/ui/LoginFlow/AuthorizationPage.qml
0186         content/ui/LoginFlow/LoginIssuePage.qml
0187         content/ui/LoginFlow/LoginPage.qml
0188         content/ui/LoginFlow/RegistrationPage.qml
0189         content/ui/LoginFlow/RulesPage.qml
0190         content/ui/LoginFlow/ServersPage.qml
0191         content/ui/LoginFlow/WelcomePage.qml
0192 
0193         # Moderation Tools
0194         content/ui/ModerationTools/AccountToolPage.qml
0195         content/ui/ModerationTools/EmailBlockToolPage.qml
0196         content/ui/ModerationTools/FederationToolPage.qml
0197         content/ui/ModerationTools/IpRulePage.qml
0198         content/ui/ModerationTools/MainAccountToolPage.qml
0199         content/ui/ModerationTools/MainFederationToolPage.qml
0200         content/ui/ModerationTools/MainIpRulePage.qml
0201         content/ui/ModerationTools/MainReportToolPage.qml
0202         content/ui/ModerationTools/ModerationToolPage.qml
0203         content/ui/ModerationTools/ReportToolPage.qml
0204 
0205         # Notifications
0206         content/ui/Notifications/GroupInteractionLabel.qml
0207         content/ui/Notifications/UserInteractionLabel.qml
0208 
0209         # Settings
0210         content/ui/Settings/AboutKDEPage.qml
0211         content/ui/Settings/AboutPage.qml
0212         content/ui/Settings/AccountsPage.qml
0213         content/ui/Settings/AppearancePage.qml
0214         content/ui/Settings/NetworkProxyPage.qml
0215         content/ui/Settings/NotificationsPage.qml
0216         content/ui/Settings/ProfileEditor.qml
0217         content/ui/Settings/SettingsPage.qml
0218         content/ui/Settings/SonnetPage.qml
0219 
0220         # Composer
0221         content/ui/StatusComposer/EditorAttachmentGrid.qml
0222         content/ui/StatusComposer/AttachmentInfoDialog.qml
0223         content/ui/StatusComposer/ComposerPoll.qml
0224         content/ui/StatusComposer/EmojiDialog.qml
0225         content/ui/StatusComposer/StatusComposer.qml
0226         content/ui/StatusComposer/StatusPreview.qml
0227 
0228         # Delegate
0229         content/ui/StatusDelegate/AttachmentGrid.qml
0230         content/ui/StatusDelegate/ImageMenu.qml
0231         content/ui/StatusDelegate/InformationBar.qml
0232         content/ui/StatusDelegate/InlineIdentityInfo.qml
0233         content/ui/StatusDelegate/InteractionButton.qml
0234         content/ui/StatusDelegate/LinkPreview.qml
0235         content/ui/StatusDelegate/MediaContainer.qml
0236         content/ui/StatusDelegate/OverflowMenu.qml
0237         content/ui/StatusDelegate/PostContent.qml
0238         content/ui/StatusDelegate/PostInfoBar.qml
0239         content/ui/StatusDelegate/StandaloneTags.qml
0240         content/ui/StatusDelegate/StatusDelegate.qml
0241         content/ui/StatusDelegate/StatusPoll.qml
0242         content/ui/StatusDelegate/UserInteractionLabel.qml
0243         content/ui/StatusDelegate/VideoAttachment.qml
0244 
0245         # Other
0246         content/ui/AccountInfo.qml
0247         content/ui/AnnouncementsPage.qml
0248         content/ui/ConversationDelegate.qml
0249         content/ui/ConversationPage.qml
0250         content/ui/EditListPage.qml
0251         content/ui/ExplorePage.qml
0252         content/ui/FollowDelegate.qml
0253         content/ui/FullScreenImage.qml
0254         content/ui/LanguageSelector.qml
0255         content/ui/ListPage.qml
0256         content/ui/ListsPage.qml
0257         content/ui/Main.qml
0258         content/ui/MastoPage.qml
0259         content/ui/NotificationPage.qml
0260         content/ui/ReportDialog.qml
0261         content/ui/SearchField.qml
0262         content/ui/SearchPage.qml
0263         content/ui/SearchView.qml
0264         content/ui/ShareDialog.qml
0265         content/ui/SocialGraphPage.qml
0266         content/ui/StandaloneComposer.qml
0267         content/ui/ThreadPage.qml
0268         content/ui/TimelinePage.qml
0269         content/ui/UserInfo.qml
0270 )
0271 
0272 set_source_files_properties(../org.kde.tokodon.svg PROPERTIES
0273     QT_RESOURCE_ALIAS /org.kde.tokodon.svg
0274 )
0275 
0276 qt_target_qml_sources(tokodon_static
0277     PREFIX /
0278     RESOURCES
0279         content/elephant.svg
0280         ../org.kde.tokodon.svg
0281 )
0282 
0283 if (NOT ANDROID)
0284     install(DIRECTORY icons/ DESTINATION ${KDE_INSTALL_FULL_ICONDIR}/hicolor/scalable/actions)
0285 else()
0286     install(DIRECTORY icons/ DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/kirigami/breeze-internal/icons/)
0287 endif()
0288 
0289 target_include_directories(tokodon_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/search)
0290 target_include_directories(tokodon_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/timeline)
0291 target_include_directories(tokodon_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/account)
0292 target_include_directories(tokodon_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/utils)
0293 target_include_directories(tokodon_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/notification)
0294 target_include_directories(tokodon_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/network)
0295 target_include_directories(tokodon_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/admin)
0296 target_include_directories(tokodon_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/conversation)
0297 target_include_directories(tokodon_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/editor)
0298 
0299 if (BUILD_TESTING)
0300     qt_target_qml_sources(tokodon_static
0301             QML_FILES
0302             content/ui/Debug/DebugPage.qml
0303     )
0304 endif()
0305 
0306 if(ANDROID)
0307     target_sources(tokodon_static
0308         PRIVATE
0309         utils/androidutils.cpp
0310         utils/androidutils.h
0311     )
0312     qt_target_qml_sources(tokodon_static
0313         QML_FILES
0314         content/ui/Android/ShareAction.qml
0315         content/ui/Android/ShareMenu.qml
0316     )
0317     set_source_files_properties(content/ui/Android/ShareAction.qml PROPERTIES
0318         QT_RESOURCE_ALIAS content/ui/ShareAction.qml
0319     )
0320     set_source_files_properties(content/ui/Android/ShareMenu.qml PROPERTIES
0321         QT_RESOURCE_ALIAS content/ui/ShareMenu.qml
0322     )
0323 else()
0324     qt_target_qml_sources(tokodon_static
0325         QML_FILES
0326         content/ui/ShareAction.qml
0327         content/ui/ShareMenu.qml
0328     )
0329 endif()
0330 
0331 kconfig_add_kcfg_files(tokodon_static GENERATE_MOC config.kcfgc accountconfig.kcfgc)
0332 target_link_libraries(tokodon_static
0333     PUBLIC
0334         Qt::Quick
0335         Qt::Qml
0336         Qt::Gui
0337         Qt::Network
0338         Qt::WebSockets
0339         Qt::QuickControls2
0340         Qt::WebView
0341         KF6::I18n
0342         KF6::Kirigami
0343         KF6::KirigamiPlatform
0344         KF6::Notifications
0345         KF6::ConfigCore
0346         KF6::ConfigGui
0347         KF6::CoreAddons
0348         KF6::ColorScheme
0349         MpvQt::MpvQt
0350         ${QTKEYCHAIN_LIBRARIES}
0351 )
0352 target_compile_options(tokodon_static PRIVATE -fexceptions)
0353 
0354 if (TARGET KF6::KIOWidgets)
0355     target_compile_definitions(tokodon_static PUBLIC -DHAVE_KIO)
0356     target_link_libraries(tokodon_static PUBLIC KF6::KIOWidgets)
0357 endif()
0358 
0359 if (TARGET KUnifiedPush)
0360     target_sources(tokodon_static PRIVATE
0361             utils/ecdh.cpp
0362             utils/ecdh.h)
0363     target_compile_definitions(tokodon_static PUBLIC -DHAVE_KUNIFIEDPUSH)
0364     target_link_libraries(tokodon_static PUBLIC KUnifiedPush OpenSSL::Crypto)
0365 endif()
0366 
0367 if (SAILFISHOS)
0368     target_compile_definitions(tokodon_static PUBLIC -DSAILFISHOS)
0369 endif()
0370 
0371 if(TOKODON_FLATPAK)
0372     target_compile_definitions(tokodon_static PUBLIC TOKODON_FLATPAK)
0373 endif()
0374 
0375 if (BUILD_TESTING)
0376     add_subdirectory(autotests)
0377 endif()
0378 
0379 add_executable(tokodon
0380     main.cpp
0381 )
0382 
0383 target_include_directories(tokodon PRIVATE ${CMAKE_BINARY_DIR})
0384 target_link_libraries(tokodon PRIVATE tokodon_static tokodon_staticplugin)
0385 
0386 if(ANDROID)
0387     target_link_libraries(tokodon PRIVATE Qt::Svg OpenSSL::SSL)
0388     kirigami_package_breeze_icons(ICONS
0389             "help-about"
0390             "im-user"
0391             "im-invisible-user"
0392             "im-kick-user"
0393             "mail-attachment"
0394             "mail-attachment-symbolic"
0395             "dialog-cancel"
0396             "preferences-desktop-emoticons"
0397             "document-open"
0398             "document-save"
0399             "document-send"
0400             "dialog-close"
0401             "edit-delete-remove"
0402             "code-context"
0403             "document-edit"
0404             "list-user-add"
0405             "list-add-user"
0406             "user-others"
0407             "media-playback-pause"
0408             "media-playback-start"
0409             "go-up"
0410             "go-down"
0411             "list-add"
0412             "irc-join-channel"
0413             "settings-configure"
0414             "configure"
0415             "rating"
0416             "rating-unrated"
0417             "search"
0418             "mail-replied-symbolic"
0419             "edit-copy"
0420             "gtk-quit"
0421             "compass"
0422             "network-connect"
0423             "notifications"
0424             "kstars_xplanet"
0425             "kstars_planets"
0426             "system-users"
0427             "go-home-large"
0428             "view-hidden"
0429             "favorite"
0430             "cell_edit"
0431             "office-chart-bar"
0432             "im-ban-kick-user"
0433             "user-group-properties"
0434             "microphone-sensitivity-muted"
0435             "cards-block"
0436             "system-search"
0437             "bookmarks"
0438             "checkmark"
0439             "lock"
0440             "edit-clear"
0441             "approved"
0442             "delete"
0443             "user-identity"
0444             "download"
0445             "edit-reset"
0446             "dialog-ok"
0447             "gnumeric-graphguru"
0448             "mail-message"
0449             "bookmark-new"
0450             "window-unpin"
0451             "pin"
0452             "edit-entry"
0453             "edit-cut"
0454             "system-switch-user"
0455             "note"
0456             "view-list-text"
0457             "view-filter"
0458             "preferences-desktop-theme-global"
0459             "preferences-desktop-notification"
0460             "preferences-system-users"
0461             "kde"
0462             "cloud-upload"
0463             "expand"
0464             "view-web-browser-dom-tree"
0465             "window"
0466             "emblem-shared-symbolic"
0467             "data-warning"
0468             "arrow-up"
0469             "arrow-down"
0470             "zoom-out"
0471             "zoom-in"
0472             "object-rotate-left"
0473             "object-rotate-right"
0474             "add-subtitle"
0475             "unlock"
0476             "dialog-warning-symbolic"
0477             "list-remove-user"
0478             )
0479 else()
0480     target_link_libraries(tokodon PRIVATE Qt::Widgets)
0481 endif()
0482 
0483 if (TARGET KF6::DBusAddons)
0484     target_link_libraries(tokodon PRIVATE KF6::DBusAddons KF6::WindowSystem)
0485     target_compile_definitions(tokodon PRIVATE -DHAVE_KDBUSADDONS)
0486 endif ()
0487 
0488 if(ANDROID)
0489     target_sources(tokodon PRIVATE notifyrc.qrc)
0490 
0491     ecm_add_android_apk(tokodon ANDROID_DIR ${CMAKE_SOURCE_DIR}/android)
0492 else()
0493     install(FILES tokodon.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR})
0494 
0495     if (TARGET KUnifiedPush)
0496         configure_file(org.kde.tokodon.service.in ${CMAKE_CURRENT_BINARY_DIR}/org.kde.tokodon.service)
0497         install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.tokodon.service DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR})
0498     endif()
0499 endif()
0500 
0501 install(TARGETS tokodon ${KF6_INSTALL_TARGETS_DEFAULT_ARGS})
0502 
0503 if(BUILD_TESTING)
0504     add_definitions(-DDATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/autotests/data" )
0505 
0506     add_executable(tokodon-offline
0507             main.cpp
0508             autotests/mockaccount.cpp)
0509     target_compile_definitions(tokodon-offline PUBLIC TEST_MODE=1)
0510     target_link_libraries(tokodon-offline PRIVATE tokodon_static tokodon_staticplugin)
0511     target_include_directories(tokodon-offline PRIVATE ${CMAKE_BINARY_DIR})
0512 
0513     if (TARGET KF6::DBusAddons)
0514         target_link_libraries(tokodon-offline PRIVATE KF6::DBusAddons KF6::WindowSystem)
0515         target_compile_definitions(tokodon-offline PRIVATE -DHAVE_KDBUSADDONS)
0516     endif ()
0517 
0518     install(TARGETS tokodon-offline ${KF6_INSTALL_TARGETS_DEFAULT_ARGS})
0519 endif()
0520 
0521 if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT TOKODON_FLATPAK)
0522     add_subdirectory(purpose)
0523 endif ()