Warning, /network/tokodon/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 cmake_minimum_required(VERSION 3.16) 0005 0006 # KDE Applications version, managed by release script. 0007 set(RELEASE_SERVICE_VERSION_MAJOR "24") 0008 set(RELEASE_SERVICE_VERSION_MINOR "04") 0009 set(RELEASE_SERVICE_VERSION_MICRO "70") 0010 set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") 0011 0012 project(tokodon VERSION ${RELEASE_SERVICE_VERSION}) 0013 0014 option(SAILFISHOS "Build for sailfishOS" OFF) 0015 0016 set(KF_MIN_VERSION "5.240.0") 0017 set(QT_MIN_VERSION "6.5") 0018 if (ANDROID) 0019 set(QT_MIN_VERSION "5.15.10") 0020 endif() 0021 0022 find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) 0023 0024 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) 0025 0026 set(CMAKE_CXX_STANDARD 17) 0027 set(CMAKE_CXX_STANDARD_REQUIRED ON) 0028 0029 include(FeatureSummary) 0030 include(ECMSetupVersion) 0031 include(KDEInstallDirs) 0032 include(ECMFindQmlModule) 0033 include(KDEClangFormat) 0034 include(ECMQtDeclareLoggingCategory) 0035 include(KDECMakeSettings) 0036 include(KDECompilerSettings NO_POLICY_SCOPE) 0037 include(ECMAddTests) 0038 include(KDEGitCommitHooks) 0039 0040 if (ANDROID) 0041 include(ECMAddAndroidApk) 0042 endif () 0043 0044 ecm_setup_version(${PROJECT_VERSION} 0045 VARIABLE_PREFIX TOKODON 0046 VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/tokodon-version.h 0047 ) 0048 0049 find_package(Qt6 ${QT_MIN_VERSION} NO_MODULE COMPONENTS Widgets Core Quick Gui QuickControls2 Svg WebSockets Test WebView) 0050 set_package_properties(Qt6 PROPERTIES 0051 TYPE REQUIRED 0052 PURPOSE "Required application components" 0053 ) 0054 qt_policy(SET QTP0001 NEW) 0055 0056 find_package(KF6 ${KF_MIN_VERSION} COMPONENTS Kirigami KirigamiPlatform I18n Notifications Config CoreAddons ColorScheme) 0057 set_package_properties(KF6 PROPERTIES 0058 TYPE REQUIRED 0059 PURPOSE "Required application components" 0060 ) 0061 0062 find_package(KF6KirigamiAddons 0.11.40 REQUIRED) 0063 set_package_properties(KF6KirigamiAddons PROPERTIES 0064 TYPE REQUIRED 0065 PURPOSE "Required application components and runtime dependency" 0066 ) 0067 0068 find_package(Qt6Keychain) 0069 set_package_properties(Qt6Keychain PROPERTIES 0070 TYPE REQUIRED 0071 PURPOSE "Secure storage of account secrets" 0072 ) 0073 0074 find_package(KUnifiedPush QUIET) 0075 set_package_properties(KUnifiedPush PROPERTIES 0076 TYPE OPTIONAL 0077 PURPOSE "Push notification support" 0078 URL "https://invent.kde.org/libraries/kunifiedpush" 0079 ) 0080 0081 if (TARGET KUnifiedPush) 0082 find_package(OpenSSL REQUIRED) 0083 set_package_properties(OpenSSL PROPERTIES 0084 PURPOSE "Generate push notification keys" 0085 ) 0086 endif() 0087 0088 if (ANDROID AND NOT TARGET OpenSSL::SSL) 0089 find_package(OpenSSL) 0090 set_package_properties(OpenSSL PROPERTIES 0091 TYPE REQUIRED 0092 PURPOSE "Encrypted communications" 0093 ) 0094 endif() 0095 0096 if (SAILFISHOS OR ANDROID) 0097 find_package(QQC2BreezeStyle) 0098 set_package_properties(QQC2BreezeStyle PROPERTIES 0099 PURPOSE "Preferred Qt Quick Controls style" 0100 ) 0101 else() 0102 find_package(KF6QQC2DesktopStyle REQUIRED) 0103 set_package_properties(KF6QQC2DesktopStyle PROPERTIES 0104 PURPOSE "Preferred Qt Quick Controls style" 0105 ) 0106 endif() 0107 0108 if (UNIX AND NOT APPLE AND NOT ANDROID) 0109 find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS KIO) 0110 set_package_properties(KF6KIO PROPERTIES 0111 PURPOSE "Sharing content and downloading files" 0112 ) 0113 endif () 0114 0115 if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT TOKODON_FLATPAK) 0116 find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS Purpose) 0117 set_package_properties(KF6Purpose PROPERTIES 0118 PURPOSE "Sharing content from other KDE applications" 0119 ) 0120 endif () 0121 0122 if (NOT ANDROID AND NOT WIN32 AND NOT APPLE) 0123 find_package(KF6DBusAddons ${KF_MIN_VERSION} REQUIRED) 0124 set_package_properties(KF6DBusAddons PROPERTIES 0125 PURPOSE "Single application support" 0126 ) 0127 find_package(KF6WindowSystem ${KF_MIN_VERSION} REQUIRED) 0128 set_package_properties(KF6WindowSystem PROPERTIES 0129 PURPOSE "Misc windowing operations" 0130 ) 0131 endif () 0132 0133 find_package(MpvQt REQUIRED) 0134 0135 ecm_find_qmlmodule(org.kde.kitemmodels 1.0) 0136 ecm_find_qmlmodule(org.kde.sonnet 1.0) 0137 0138 add_definitions(-DQT_NO_FOREACH -DQT_NO_KEYWORDS) 0139 0140 add_subdirectory(src) 0141 0142 ki18n_install(po) 0143 0144 if (ANDROID) 0145 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/android/version.gradle.in ${CMAKE_BINARY_DIR}/version.gradle) 0146 kirigami_package_breeze_icons(ICONS bookmarks) 0147 endif() 0148 0149 install(FILES org.kde.tokodon.desktop DESTINATION ${KDE_INSTALL_APPDIR}) 0150 install(FILES org.kde.tokodon.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) 0151 install(FILES org.kde.tokodon.svg DESTINATION ${KDE_INSTALL_FULL_ICONDIR}/hicolor/scalable/apps) 0152 0153 ecm_qt_install_logging_categories( 0154 EXPORT TOKODON 0155 FILE tokodon.categories 0156 SORT DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} 0157 ) 0158 0159 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) 0160 0161 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES src/*.cpp src/*.h) 0162 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) 0163 0164 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)